From 7b9685c955a09f2f3d3b78e8bc5cace6aeed67e4 Mon Sep 17 00:00:00 2001 From: Srujan Gurram Date: Sun, 29 Dec 2024 21:29:54 +0530 Subject: [PATCH] fixes ts --- .output/chrome-mv3/background.js | 2491 +++++++++++++++++ .../chrome-mv3/chunks/reload-html-BxzUToPe.js | 95 + .output/chrome-mv3/icon-128.png | Bin 0 -> 7516 bytes .output/chrome-mv3/icon-16.png | Bin 0 -> 683 bytes .output/chrome-mv3/icon-32.png | Bin 0 -> 1668 bytes .output/chrome-mv3/icon-48.png | Bin 0 -> 2724 bytes .output/chrome-mv3/manifest.json | 92 + .output/chrome-mv3/robot.png | Bin 0 -> 100654 bytes .output/chrome-mv3/settings.html | 16 + .output/chrome-mv3/sidebar.html | 16 + .wxt/tsconfig.json | 29 +- .wxt/types/globals.d.ts | 15 + .wxt/types/i18n.d.ts | 81 + .wxt/types/imports.d.ts | 52 + .wxt/types/paths.d.ts | 20 + .wxt/wxt.d.ts | 6 + tsconfig.json | 2 +- 17 files changed, 2913 insertions(+), 2 deletions(-) create mode 100644 .output/chrome-mv3/background.js create mode 100644 .output/chrome-mv3/chunks/reload-html-BxzUToPe.js create mode 100644 .output/chrome-mv3/icon-128.png create mode 100644 .output/chrome-mv3/icon-16.png create mode 100644 .output/chrome-mv3/icon-32.png create mode 100644 .output/chrome-mv3/icon-48.png create mode 100644 .output/chrome-mv3/manifest.json create mode 100644 .output/chrome-mv3/robot.png create mode 100644 .output/chrome-mv3/settings.html create mode 100644 .output/chrome-mv3/sidebar.html create mode 100644 .wxt/types/globals.d.ts create mode 100644 .wxt/types/i18n.d.ts create mode 100644 .wxt/types/imports.d.ts create mode 100644 .wxt/types/paths.d.ts create mode 100644 .wxt/wxt.d.ts diff --git a/.output/chrome-mv3/background.js b/.output/chrome-mv3/background.js new file mode 100644 index 000000000..f6f552ee0 --- /dev/null +++ b/.output/chrome-mv3/background.js @@ -0,0 +1,2491 @@ +var background = function() { + "use strict"; + function defineBackground(arg) { + if (arg == null || typeof arg === "function") return { main: arg }; + return arg; + } + var _MatchPattern = class { + constructor(matchPattern) { + if (matchPattern === "") { + this.isAllUrls = true; + this.protocolMatches = [..._MatchPattern.PROTOCOLS]; + this.hostnameMatch = "*"; + this.pathnameMatch = "*"; + } else { + const groups = /(.*):\/\/(.*?)(\/.*)/.exec(matchPattern); + if (groups == null) + throw new InvalidMatchPattern(matchPattern, "Incorrect format"); + const [_, protocol, hostname, pathname] = groups; + validateProtocol(matchPattern, protocol); + validateHostname(matchPattern, hostname); + this.protocolMatches = protocol === "*" ? ["http", "https"] : [protocol]; + this.hostnameMatch = hostname; + this.pathnameMatch = pathname; + } + } + includes(url) { + if (this.isAllUrls) + return true; + const u = typeof url === "string" ? new URL(url) : url instanceof Location ? new URL(url.href) : url; + return !!this.protocolMatches.find((protocol) => { + if (protocol === "http") + return this.isHttpMatch(u); + if (protocol === "https") + return this.isHttpsMatch(u); + if (protocol === "file") + return this.isFileMatch(u); + if (protocol === "ftp") + return this.isFtpMatch(u); + if (protocol === "urn") + return this.isUrnMatch(u); + }); + } + isHttpMatch(url) { + return url.protocol === "http:" && this.isHostPathMatch(url); + } + isHttpsMatch(url) { + return url.protocol === "https:" && this.isHostPathMatch(url); + } + isHostPathMatch(url) { + if (!this.hostnameMatch || !this.pathnameMatch) + return false; + const hostnameMatchRegexs = [ + this.convertPatternToRegex(this.hostnameMatch), + this.convertPatternToRegex(this.hostnameMatch.replace(/^\*\./, "")) + ]; + const pathnameMatchRegex = this.convertPatternToRegex(this.pathnameMatch); + return !!hostnameMatchRegexs.find((regex) => regex.test(url.hostname)) && pathnameMatchRegex.test(url.pathname); + } + isFileMatch(url) { + throw Error("Not implemented: file:// pattern matching. Open a PR to add support"); + } + isFtpMatch(url) { + throw Error("Not implemented: ftp:// pattern matching. Open a PR to add support"); + } + isUrnMatch(url) { + throw Error("Not implemented: urn:// pattern matching. Open a PR to add support"); + } + convertPatternToRegex(pattern) { + const escaped = this.escapeForRegex(pattern); + const starsReplaced = escaped.replace(/\\\*/g, ".*"); + return RegExp(`^${starsReplaced}$`); + } + escapeForRegex(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + } + }; + var MatchPattern = _MatchPattern; + MatchPattern.PROTOCOLS = ["http", "https", "file", "ftp", "urn"]; + var InvalidMatchPattern = class extends Error { + constructor(matchPattern, reason) { + super(`Invalid match pattern "${matchPattern}": ${reason}`); + } + }; + function validateProtocol(matchPattern, protocol) { + if (!MatchPattern.PROTOCOLS.includes(protocol) && protocol !== "*") + throw new InvalidMatchPattern( + matchPattern, + `${protocol} not a valid protocol (${MatchPattern.PROTOCOLS.join(", ")})` + ); + } + function validateHostname(matchPattern, hostname) { + if (hostname.includes(":")) + throw new InvalidMatchPattern(matchPattern, `Hostname cannot include a port`); + if (hostname.includes("*") && hostname.length > 1 && !hostname.startsWith("*.")) + throw new InvalidMatchPattern( + matchPattern, + `If using a wildcard (*), it must go at the start of the hostname` + ); + } + const logoText = " ____ _\n/ ___| _ _ _ __ ___(_) __ _\n\\___ \\| | | | '_ \\ / __| |/ _` |\n ___) | |_| | | | | (__| | (_| |\n|____/ \\__, |_| |_|\\___|_|\\__,_|\n |___/"; + const msgText = (msg) => ` +${" ".repeat(14 - msg.length / 2)}[${msg}]`; + const backgroundLog = () => { + console.log(logoText, msgText("Background Loaded")); + }; + background; + function getDefaultExportFromCjs(x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x; + } + var lib = {}; + var dedent = { exports: {} }; + var hasRequiredDedent; + function requireDedent() { + if (hasRequiredDedent) return dedent.exports; + hasRequiredDedent = 1; + (function(module) { + function dedent2(strings) { + var raw = void 0; + if (typeof strings === "string") { + raw = [strings]; + } else { + raw = strings.raw; + } + var result2 = ""; + for (var i = 0; i < raw.length; i++) { + result2 += raw[i].replace(/\\\n[ \t]*/g, "").replace(/\\`/g, "`"); + if (i < (arguments.length <= 1 ? 0 : arguments.length - 1)) { + result2 += arguments.length <= i + 1 ? void 0 : arguments[i + 1]; + } + } + var lines = result2.split("\n"); + var mindent = null; + lines.forEach(function(l) { + var m = l.match(/^(\s+)\S+/); + if (m) { + var indent = m[1].length; + if (!mindent) { + mindent = indent; + } else { + mindent = Math.min(mindent, indent); + } + } + }); + if (mindent !== null) { + result2 = lines.map(function(l) { + return l[0] === " " ? l.slice(mindent) : l; + }).join("\n"); + } + result2 = result2.trim(); + return result2.replace(/\\n/g, "\n"); + } + { + module.exports = dedent2; + } + })(dedent); + return dedent.exports; + } + var objectorarray; + var hasRequiredObjectorarray; + function requireObjectorarray() { + if (hasRequiredObjectorarray) return objectorarray; + hasRequiredObjectorarray = 1; + objectorarray = (val) => { + return val != null && typeof val === "object" && val.constructor !== RegExp; + }; + return objectorarray; + } + var parse; + var hasRequiredParse; + function requireParse() { + if (hasRequiredParse) return parse; + hasRequiredParse = 1; + function Parse(data) { + if (!(this instanceof Parse)) { + return new Parse(data); + } + this.err = null; + this.value = null; + try { + this.value = JSON.parse(data); + } catch (err) { + this.err = err; + } + } + parse = Parse; + return parse; + } + var hasRequiredLib; + function requireLib() { + if (hasRequiredLib) return lib; + hasRequiredLib = 1; + var __importDefault = lib.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(lib, "__esModule", { value: true }); + const dedent_1 = __importDefault(requireDedent()); + const objectorarray_1 = __importDefault(requireObjectorarray()); + const fast_json_parse_1 = __importDefault(requireParse()); + const ENDENT_ID = "twhZNwxI1aFG3r4"; + function endent2(strings, ...values) { + let result2 = ""; + for (let i = 0; i < strings.length; i++) { + result2 += strings[i]; + if (i < values.length) { + let value = values[i]; + let isJson = false; + if (fast_json_parse_1.default(value).value) { + value = fast_json_parse_1.default(value).value; + isJson = true; + } + if (value && value[ENDENT_ID] || isJson) { + let rawlines = result2.split("\n"); + let l = rawlines[rawlines.length - 1].search(/\S/); + let endentation = l > 0 ? " ".repeat(l) : ""; + let valueJson = isJson ? JSON.stringify(value, null, 2) : value[ENDENT_ID]; + let valueLines = valueJson.split("\n"); + valueLines.forEach((l2, index) => { + if (index > 0) { + result2 += "\n" + endentation + l2; + } else { + result2 += l2; + } + }); + } else if (typeof value === "string" && value.includes("\n")) { + let endentations = result2.match(/(?:^|\n)( *)$/); + if (typeof value === "string") { + let endentation = endentations ? endentations[1] : ""; + result2 += value.split("\n").map((str, i2) => { + str = ENDENT_ID + str; + return i2 === 0 ? str : `${endentation}${str}`; + }).join("\n"); + } else { + result2 += value; + } + } else { + result2 += value; + } + } + } + result2 = dedent_1.default(result2); + return result2.split(ENDENT_ID).join(""); + } + endent2.pretty = (data) => { + return objectorarray_1.default(data) ? { [ENDENT_ID]: JSON.stringify(data, null, 2) } : data; + }; + lib.default = endent2; + return lib; + } + var libExports = requireLib(); + const endent = /* @__PURE__ */ getDefaultExportFromCjs(libExports); + function commonjsRequire(path) { + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.'); + } + var object_hash = { exports: {} }; + var hasRequiredObject_hash; + function requireObject_hash() { + if (hasRequiredObject_hash) return object_hash.exports; + hasRequiredObject_hash = 1; + (function(module, exports) { + !function(e) { + module.exports = e(); + }(function() { + return function r(o, i, u) { + function s(n, e2) { + if (!i[n]) { + if (!o[n]) { + var t = "function" == typeof commonjsRequire && commonjsRequire; + if (!e2 && t) return t(n, true); + if (a) return a(n, true); + throw new Error("Cannot find module '" + n + "'"); + } + e2 = i[n] = { exports: {} }; + o[n][0].call(e2.exports, function(e3) { + var t2 = o[n][1][e3]; + return s(t2 || e3); + }, e2, e2.exports, r, o, i, u); + } + return i[n].exports; + } + for (var a = "function" == typeof commonjsRequire && commonjsRequire, e = 0; e < u.length; e++) s(u[e]); + return s; + }({ 1: [function(w, b, m) { + !(function(e, n, s, c, d, h, p, g, y) { + var r = w("crypto"); + function t(e2, t2) { + t2 = u(e2, t2); + var n2; + return void 0 === (n2 = "passthrough" !== t2.algorithm ? r.createHash(t2.algorithm) : new l()).write && (n2.write = n2.update, n2.end = n2.update), f(t2, n2).dispatch(e2), n2.update || n2.end(""), n2.digest ? n2.digest("buffer" === t2.encoding ? void 0 : t2.encoding) : (e2 = n2.read(), "buffer" !== t2.encoding ? e2.toString(t2.encoding) : e2); + } + (m = b.exports = t).sha1 = function(e2) { + return t(e2); + }, m.keys = function(e2) { + return t(e2, { excludeValues: true, algorithm: "sha1", encoding: "hex" }); + }, m.MD5 = function(e2) { + return t(e2, { algorithm: "md5", encoding: "hex" }); + }, m.keysMD5 = function(e2) { + return t(e2, { algorithm: "md5", encoding: "hex", excludeValues: true }); + }; + var o = r.getHashes ? r.getHashes().slice() : ["sha1", "md5"], i = (o.push("passthrough"), ["buffer", "hex", "binary", "base64"]); + function u(e2, t2) { + var n2 = {}; + if (n2.algorithm = (t2 = t2 || {}).algorithm || "sha1", n2.encoding = t2.encoding || "hex", n2.excludeValues = !!t2.excludeValues, n2.algorithm = n2.algorithm.toLowerCase(), n2.encoding = n2.encoding.toLowerCase(), n2.ignoreUnknown = true === t2.ignoreUnknown, n2.respectType = false !== t2.respectType, n2.respectFunctionNames = false !== t2.respectFunctionNames, n2.respectFunctionProperties = false !== t2.respectFunctionProperties, n2.unorderedArrays = true === t2.unorderedArrays, n2.unorderedSets = false !== t2.unorderedSets, n2.unorderedObjects = false !== t2.unorderedObjects, n2.replacer = t2.replacer || void 0, n2.excludeKeys = t2.excludeKeys || void 0, void 0 === e2) throw new Error("Object argument required."); + for (var r2 = 0; r2 < o.length; ++r2) o[r2].toLowerCase() === n2.algorithm.toLowerCase() && (n2.algorithm = o[r2]); + if (-1 === o.indexOf(n2.algorithm)) throw new Error('Algorithm "' + n2.algorithm + '" not supported. supported values: ' + o.join(", ")); + if (-1 === i.indexOf(n2.encoding) && "passthrough" !== n2.algorithm) throw new Error('Encoding "' + n2.encoding + '" not supported. supported values: ' + i.join(", ")); + return n2; + } + function a(e2) { + if ("function" == typeof e2) return null != /^function\s+\w*\s*\(\s*\)\s*{\s+\[native code\]\s+}$/i.exec(Function.prototype.toString.call(e2)); + } + function f(o2, t2, i2) { + i2 = i2 || []; + function u2(e2) { + return t2.update ? t2.update(e2, "utf8") : t2.write(e2, "utf8"); + } + return { dispatch: function(e2) { + return this["_" + (null === (e2 = o2.replacer ? o2.replacer(e2) : e2) ? "null" : typeof e2)](e2); + }, _object: function(t3) { + var n2, e2 = Object.prototype.toString.call(t3), r2 = /\[object (.*)\]/i.exec(e2); + r2 = (r2 = r2 ? r2[1] : "unknown:[" + e2 + "]").toLowerCase(); + if (0 <= (e2 = i2.indexOf(t3))) return this.dispatch("[CIRCULAR:" + e2 + "]"); + if (i2.push(t3), void 0 !== s && s.isBuffer && s.isBuffer(t3)) return u2("buffer:"), u2(t3); + if ("object" === r2 || "function" === r2 || "asyncfunction" === r2) return e2 = Object.keys(t3), o2.unorderedObjects && (e2 = e2.sort()), false === o2.respectType || a(t3) || e2.splice(0, 0, "prototype", "__proto__", "constructor"), o2.excludeKeys && (e2 = e2.filter(function(e3) { + return !o2.excludeKeys(e3); + })), u2("object:" + e2.length + ":"), n2 = this, e2.forEach(function(e3) { + n2.dispatch(e3), u2(":"), o2.excludeValues || n2.dispatch(t3[e3]), u2(","); + }); + if (!this["_" + r2]) { + if (o2.ignoreUnknown) return u2("[" + r2 + "]"); + throw new Error('Unknown object type "' + r2 + '"'); + } + this["_" + r2](t3); + }, _array: function(e2, t3) { + t3 = void 0 !== t3 ? t3 : false !== o2.unorderedArrays; + var n2 = this; + if (u2("array:" + e2.length + ":"), !t3 || e2.length <= 1) return e2.forEach(function(e3) { + return n2.dispatch(e3); + }); + var r2 = [], t3 = e2.map(function(e3) { + var t4 = new l(), n3 = i2.slice(); + return f(o2, t4, n3).dispatch(e3), r2 = r2.concat(n3.slice(i2.length)), t4.read().toString(); + }); + return i2 = i2.concat(r2), t3.sort(), this._array(t3, false); + }, _date: function(e2) { + return u2("date:" + e2.toJSON()); + }, _symbol: function(e2) { + return u2("symbol:" + e2.toString()); + }, _error: function(e2) { + return u2("error:" + e2.toString()); + }, _boolean: function(e2) { + return u2("bool:" + e2.toString()); + }, _string: function(e2) { + u2("string:" + e2.length + ":"), u2(e2.toString()); + }, _function: function(e2) { + u2("fn:"), a(e2) ? this.dispatch("[native]") : this.dispatch(e2.toString()), false !== o2.respectFunctionNames && this.dispatch("function-name:" + String(e2.name)), o2.respectFunctionProperties && this._object(e2); + }, _number: function(e2) { + return u2("number:" + e2.toString()); + }, _xml: function(e2) { + return u2("xml:" + e2.toString()); + }, _null: function() { + return u2("Null"); + }, _undefined: function() { + return u2("Undefined"); + }, _regexp: function(e2) { + return u2("regex:" + e2.toString()); + }, _uint8array: function(e2) { + return u2("uint8array:"), this.dispatch(Array.prototype.slice.call(e2)); + }, _uint8clampedarray: function(e2) { + return u2("uint8clampedarray:"), this.dispatch(Array.prototype.slice.call(e2)); + }, _int8array: function(e2) { + return u2("int8array:"), this.dispatch(Array.prototype.slice.call(e2)); + }, _uint16array: function(e2) { + return u2("uint16array:"), this.dispatch(Array.prototype.slice.call(e2)); + }, _int16array: function(e2) { + return u2("int16array:"), this.dispatch(Array.prototype.slice.call(e2)); + }, _uint32array: function(e2) { + return u2("uint32array:"), this.dispatch(Array.prototype.slice.call(e2)); + }, _int32array: function(e2) { + return u2("int32array:"), this.dispatch(Array.prototype.slice.call(e2)); + }, _float32array: function(e2) { + return u2("float32array:"), this.dispatch(Array.prototype.slice.call(e2)); + }, _float64array: function(e2) { + return u2("float64array:"), this.dispatch(Array.prototype.slice.call(e2)); + }, _arraybuffer: function(e2) { + return u2("arraybuffer:"), this.dispatch(new Uint8Array(e2)); + }, _url: function(e2) { + return u2("url:" + e2.toString()); + }, _map: function(e2) { + u2("map:"); + e2 = Array.from(e2); + return this._array(e2, false !== o2.unorderedSets); + }, _set: function(e2) { + u2("set:"); + e2 = Array.from(e2); + return this._array(e2, false !== o2.unorderedSets); + }, _file: function(e2) { + return u2("file:"), this.dispatch([e2.name, e2.size, e2.type, e2.lastModfied]); + }, _blob: function() { + if (o2.ignoreUnknown) return u2("[blob]"); + throw Error('Hashing Blob objects is currently not supported\n(see https://github.com/puleos/object-hash/issues/26)\nUse "options.replacer" or "options.ignoreUnknown"\n'); + }, _domwindow: function() { + return u2("domwindow"); + }, _bigint: function(e2) { + return u2("bigint:" + e2.toString()); + }, _process: function() { + return u2("process"); + }, _timer: function() { + return u2("timer"); + }, _pipe: function() { + return u2("pipe"); + }, _tcp: function() { + return u2("tcp"); + }, _udp: function() { + return u2("udp"); + }, _tty: function() { + return u2("tty"); + }, _statwatcher: function() { + return u2("statwatcher"); + }, _securecontext: function() { + return u2("securecontext"); + }, _connection: function() { + return u2("connection"); + }, _zlib: function() { + return u2("zlib"); + }, _context: function() { + return u2("context"); + }, _nodescript: function() { + return u2("nodescript"); + }, _httpparser: function() { + return u2("httpparser"); + }, _dataview: function() { + return u2("dataview"); + }, _signal: function() { + return u2("signal"); + }, _fsevent: function() { + return u2("fsevent"); + }, _tlswrap: function() { + return u2("tlswrap"); + } }; + } + function l() { + return { buf: "", write: function(e2) { + this.buf += e2; + }, end: function(e2) { + this.buf += e2; + }, read: function() { + return this.buf; + } }; + } + m.writeToStream = function(e2, t2, n2) { + return void 0 === n2 && (n2 = t2, t2 = {}), f(t2 = u(e2, t2), n2).dispatch(e2); + }; + }).call(this, w("lYpoI2"), "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}, w("buffer").Buffer, arguments[3], arguments[4], arguments[5], arguments[6], "/fake_9a5aa49d.js", "/"); + }, { buffer: 3, crypto: 5, lYpoI2: 11 }], 2: [function(e, t, f) { + !(function(e2, t2, n, r, o, i, u, s, a) { + !function(e3) { + var a2 = "undefined" != typeof Uint8Array ? Uint8Array : Array, t3 = "+".charCodeAt(0), n2 = "/".charCodeAt(0), r2 = "0".charCodeAt(0), o2 = "a".charCodeAt(0), i2 = "A".charCodeAt(0), u2 = "-".charCodeAt(0), s2 = "_".charCodeAt(0); + function f2(e4) { + e4 = e4.charCodeAt(0); + return e4 === t3 || e4 === u2 ? 62 : e4 === n2 || e4 === s2 ? 63 : e4 < r2 ? -1 : e4 < r2 + 10 ? e4 - r2 + 26 + 26 : e4 < i2 + 26 ? e4 - i2 : e4 < o2 + 26 ? e4 - o2 + 26 : void 0; + } + e3.toByteArray = function(e4) { + var t4, n3; + if (0 < e4.length % 4) throw new Error("Invalid string. Length must be a multiple of 4"); + var r3 = e4.length, r3 = "=" === e4.charAt(r3 - 2) ? 2 : "=" === e4.charAt(r3 - 1) ? 1 : 0, o3 = new a2(3 * e4.length / 4 - r3), i3 = 0 < r3 ? e4.length - 4 : e4.length, u3 = 0; + function s3(e5) { + o3[u3++] = e5; + } + for (t4 = 0; t4 < i3; t4 += 4, 0) s3((16711680 & (n3 = f2(e4.charAt(t4)) << 18 | f2(e4.charAt(t4 + 1)) << 12 | f2(e4.charAt(t4 + 2)) << 6 | f2(e4.charAt(t4 + 3)))) >> 16), s3((65280 & n3) >> 8), s3(255 & n3); + return 2 == r3 ? s3(255 & (n3 = f2(e4.charAt(t4)) << 2 | f2(e4.charAt(t4 + 1)) >> 4)) : 1 == r3 && (s3((n3 = f2(e4.charAt(t4)) << 10 | f2(e4.charAt(t4 + 1)) << 4 | f2(e4.charAt(t4 + 2)) >> 2) >> 8 & 255), s3(255 & n3)), o3; + }, e3.fromByteArray = function(e4) { + var t4, n3, r3, o3, i3 = e4.length % 3, u3 = ""; + function s3(e5) { + return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e5); + } + for (t4 = 0, r3 = e4.length - i3; t4 < r3; t4 += 3) n3 = (e4[t4] << 16) + (e4[t4 + 1] << 8) + e4[t4 + 2], u3 += s3((o3 = n3) >> 18 & 63) + s3(o3 >> 12 & 63) + s3(o3 >> 6 & 63) + s3(63 & o3); + switch (i3) { + case 1: + u3 = (u3 += s3((n3 = e4[e4.length - 1]) >> 2)) + s3(n3 << 4 & 63) + "=="; + break; + case 2: + u3 = (u3 = (u3 += s3((n3 = (e4[e4.length - 2] << 8) + e4[e4.length - 1]) >> 10)) + s3(n3 >> 4 & 63)) + s3(n3 << 2 & 63) + "="; + } + return u3; + }; + }(void 0 === f ? this.base64js = {} : f); + }).call(this, e("lYpoI2"), "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}, e("buffer").Buffer, arguments[3], arguments[4], arguments[5], arguments[6], "/node_modules/gulp-browserify/node_modules/base64-js/lib/b64.js", "/node_modules/gulp-browserify/node_modules/base64-js/lib"); + }, { buffer: 3, lYpoI2: 11 }], 3: [function(O, e, H) { + !(function(e2, n, f, r, h, p, g, y, w) { + var a = O("base64-js"), i = O("ieee754"); + function f(e3, t2, n2) { + if (!(this instanceof f)) return new f(e3, t2, n2); + var r2, o2, i2, u2, s2 = typeof e3; + if ("base64" === t2 && "string" == s2) for (e3 = (u2 = e3).trim ? u2.trim() : u2.replace(/^\s+|\s+$/g, ""); e3.length % 4 != 0; ) e3 += "="; + if ("number" == s2) r2 = j(e3); + else if ("string" == s2) r2 = f.byteLength(e3, t2); + else { + if ("object" != s2) throw new Error("First argument needs to be a number, array or string."); + r2 = j(e3.length); + } + if (f._useTypedArrays ? o2 = f._augment(new Uint8Array(r2)) : ((o2 = this).length = r2, o2._isBuffer = true), f._useTypedArrays && "number" == typeof e3.byteLength) o2._set(e3); + else if (C(u2 = e3) || f.isBuffer(u2) || u2 && "object" == typeof u2 && "number" == typeof u2.length) for (i2 = 0; i2 < r2; i2++) f.isBuffer(e3) ? o2[i2] = e3.readUInt8(i2) : o2[i2] = e3[i2]; + else if ("string" == s2) o2.write(e3, 0, t2); + else if ("number" == s2 && !f._useTypedArrays && !n2) for (i2 = 0; i2 < r2; i2++) o2[i2] = 0; + return o2; + } + function b(e3, t2, n2, r2) { + return f._charsWritten = c(function(e4) { + for (var t3 = [], n3 = 0; n3 < e4.length; n3++) t3.push(255 & e4.charCodeAt(n3)); + return t3; + }(t2), e3, n2, r2); + } + function m(e3, t2, n2, r2) { + return f._charsWritten = c(function(e4) { + for (var t3, n3, r3 = [], o2 = 0; o2 < e4.length; o2++) n3 = e4.charCodeAt(o2), t3 = n3 >> 8, n3 = n3 % 256, r3.push(n3), r3.push(t3); + return r3; + }(t2), e3, n2, r2); + } + function v(e3, t2, n2) { + var r2 = ""; + n2 = Math.min(e3.length, n2); + for (var o2 = t2; o2 < n2; o2++) r2 += String.fromCharCode(e3[o2]); + return r2; + } + function o(e3, t2, n2, r2) { + r2 || (d("boolean" == typeof n2, "missing or invalid endian"), d(null != t2, "missing offset"), d(t2 + 1 < e3.length, "Trying to read beyond buffer length")); + var o2, r2 = e3.length; + if (!(r2 <= t2)) return n2 ? (o2 = e3[t2], t2 + 1 < r2 && (o2 |= e3[t2 + 1] << 8)) : (o2 = e3[t2] << 8, t2 + 1 < r2 && (o2 |= e3[t2 + 1])), o2; + } + function u(e3, t2, n2, r2) { + r2 || (d("boolean" == typeof n2, "missing or invalid endian"), d(null != t2, "missing offset"), d(t2 + 3 < e3.length, "Trying to read beyond buffer length")); + var o2, r2 = e3.length; + if (!(r2 <= t2)) return n2 ? (t2 + 2 < r2 && (o2 = e3[t2 + 2] << 16), t2 + 1 < r2 && (o2 |= e3[t2 + 1] << 8), o2 |= e3[t2], t2 + 3 < r2 && (o2 += e3[t2 + 3] << 24 >>> 0)) : (t2 + 1 < r2 && (o2 = e3[t2 + 1] << 16), t2 + 2 < r2 && (o2 |= e3[t2 + 2] << 8), t2 + 3 < r2 && (o2 |= e3[t2 + 3]), o2 += e3[t2] << 24 >>> 0), o2; + } + function _(e3, t2, n2, r2) { + if (r2 || (d("boolean" == typeof n2, "missing or invalid endian"), d(null != t2, "missing offset"), d(t2 + 1 < e3.length, "Trying to read beyond buffer length")), !(e3.length <= t2)) return r2 = o(e3, t2, n2, true), 32768 & r2 ? -1 * (65535 - r2 + 1) : r2; + } + function E(e3, t2, n2, r2) { + if (r2 || (d("boolean" == typeof n2, "missing or invalid endian"), d(null != t2, "missing offset"), d(t2 + 3 < e3.length, "Trying to read beyond buffer length")), !(e3.length <= t2)) return r2 = u(e3, t2, n2, true), 2147483648 & r2 ? -1 * (4294967295 - r2 + 1) : r2; + } + function I(e3, t2, n2, r2) { + return r2 || (d("boolean" == typeof n2, "missing or invalid endian"), d(t2 + 3 < e3.length, "Trying to read beyond buffer length")), i.read(e3, t2, n2, 23, 4); + } + function A(e3, t2, n2, r2) { + return r2 || (d("boolean" == typeof n2, "missing or invalid endian"), d(t2 + 7 < e3.length, "Trying to read beyond buffer length")), i.read(e3, t2, n2, 52, 8); + } + function s(e3, t2, n2, r2, o2) { + o2 || (d(null != t2, "missing value"), d("boolean" == typeof r2, "missing or invalid endian"), d(null != n2, "missing offset"), d(n2 + 1 < e3.length, "trying to write beyond buffer length"), Y(t2, 65535)); + o2 = e3.length; + if (!(o2 <= n2)) for (var i2 = 0, u2 = Math.min(o2 - n2, 2); i2 < u2; i2++) e3[n2 + i2] = (t2 & 255 << 8 * (r2 ? i2 : 1 - i2)) >>> 8 * (r2 ? i2 : 1 - i2); + } + function l(e3, t2, n2, r2, o2) { + o2 || (d(null != t2, "missing value"), d("boolean" == typeof r2, "missing or invalid endian"), d(null != n2, "missing offset"), d(n2 + 3 < e3.length, "trying to write beyond buffer length"), Y(t2, 4294967295)); + o2 = e3.length; + if (!(o2 <= n2)) for (var i2 = 0, u2 = Math.min(o2 - n2, 4); i2 < u2; i2++) e3[n2 + i2] = t2 >>> 8 * (r2 ? i2 : 3 - i2) & 255; + } + function B(e3, t2, n2, r2, o2) { + o2 || (d(null != t2, "missing value"), d("boolean" == typeof r2, "missing or invalid endian"), d(null != n2, "missing offset"), d(n2 + 1 < e3.length, "Trying to write beyond buffer length"), F(t2, 32767, -32768)), e3.length <= n2 || s(e3, 0 <= t2 ? t2 : 65535 + t2 + 1, n2, r2, o2); + } + function L(e3, t2, n2, r2, o2) { + o2 || (d(null != t2, "missing value"), d("boolean" == typeof r2, "missing or invalid endian"), d(null != n2, "missing offset"), d(n2 + 3 < e3.length, "Trying to write beyond buffer length"), F(t2, 2147483647, -2147483648)), e3.length <= n2 || l(e3, 0 <= t2 ? t2 : 4294967295 + t2 + 1, n2, r2, o2); + } + function U(e3, t2, n2, r2, o2) { + o2 || (d(null != t2, "missing value"), d("boolean" == typeof r2, "missing or invalid endian"), d(null != n2, "missing offset"), d(n2 + 3 < e3.length, "Trying to write beyond buffer length"), D(t2, 34028234663852886e22, -34028234663852886e22)), e3.length <= n2 || i.write(e3, t2, n2, r2, 23, 4); + } + function x(e3, t2, n2, r2, o2) { + o2 || (d(null != t2, "missing value"), d("boolean" == typeof r2, "missing or invalid endian"), d(null != n2, "missing offset"), d(n2 + 7 < e3.length, "Trying to write beyond buffer length"), D(t2, 17976931348623157e292, -17976931348623157e292)), e3.length <= n2 || i.write(e3, t2, n2, r2, 52, 8); + } + H.Buffer = f, H.SlowBuffer = f, H.INSPECT_MAX_BYTES = 50, f.poolSize = 8192, f._useTypedArrays = function() { + try { + var e3 = new ArrayBuffer(0), t2 = new Uint8Array(e3); + return t2.foo = function() { + return 42; + }, 42 === t2.foo() && "function" == typeof t2.subarray; + } catch (e4) { + return false; + } + }(), f.isEncoding = function(e3) { + switch (String(e3).toLowerCase()) { + case "hex": + case "utf8": + case "utf-8": + case "ascii": + case "binary": + case "base64": + case "raw": + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + return true; + default: + return false; + } + }, f.isBuffer = function(e3) { + return !(null == e3 || !e3._isBuffer); + }, f.byteLength = function(e3, t2) { + var n2; + switch (e3 += "", t2 || "utf8") { + case "hex": + n2 = e3.length / 2; + break; + case "utf8": + case "utf-8": + n2 = T(e3).length; + break; + case "ascii": + case "binary": + case "raw": + n2 = e3.length; + break; + case "base64": + n2 = M(e3).length; + break; + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + n2 = 2 * e3.length; + break; + default: + throw new Error("Unknown encoding"); + } + return n2; + }, f.concat = function(e3, t2) { + if (d(C(e3), "Usage: Buffer.concat(list, [totalLength])\nlist should be an Array."), 0 === e3.length) return new f(0); + if (1 === e3.length) return e3[0]; + if ("number" != typeof t2) for (o2 = t2 = 0; o2 < e3.length; o2++) t2 += e3[o2].length; + for (var n2 = new f(t2), r2 = 0, o2 = 0; o2 < e3.length; o2++) { + var i2 = e3[o2]; + i2.copy(n2, r2), r2 += i2.length; + } + return n2; + }, f.prototype.write = function(e3, t2, n2, r2) { + isFinite(t2) ? isFinite(n2) || (r2 = n2, n2 = void 0) : (a2 = r2, r2 = t2, t2 = n2, n2 = a2), t2 = Number(t2) || 0; + var o2, i2, u2, s2, a2 = this.length - t2; + switch ((!n2 || a2 < (n2 = Number(n2))) && (n2 = a2), r2 = String(r2 || "utf8").toLowerCase()) { + case "hex": + o2 = function(e4, t3, n3, r3) { + n3 = Number(n3) || 0; + var o3 = e4.length - n3; + (!r3 || o3 < (r3 = Number(r3))) && (r3 = o3), d((o3 = t3.length) % 2 == 0, "Invalid hex string"), o3 / 2 < r3 && (r3 = o3 / 2); + for (var i3 = 0; i3 < r3; i3++) { + var u3 = parseInt(t3.substr(2 * i3, 2), 16); + d(!isNaN(u3), "Invalid hex string"), e4[n3 + i3] = u3; + } + return f._charsWritten = 2 * i3, i3; + }(this, e3, t2, n2); + break; + case "utf8": + case "utf-8": + i2 = this, u2 = t2, s2 = n2, o2 = f._charsWritten = c(T(e3), i2, u2, s2); + break; + case "ascii": + case "binary": + o2 = b(this, e3, t2, n2); + break; + case "base64": + i2 = this, u2 = t2, s2 = n2, o2 = f._charsWritten = c(M(e3), i2, u2, s2); + break; + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + o2 = m(this, e3, t2, n2); + break; + default: + throw new Error("Unknown encoding"); + } + return o2; + }, f.prototype.toString = function(e3, t2, n2) { + var r2, o2, i2, u2, s2 = this; + if (e3 = String(e3 || "utf8").toLowerCase(), t2 = Number(t2) || 0, (n2 = void 0 !== n2 ? Number(n2) : s2.length) === t2) return ""; + switch (e3) { + case "hex": + r2 = function(e4, t3, n3) { + var r3 = e4.length; + (!t3 || t3 < 0) && (t3 = 0); + (!n3 || n3 < 0 || r3 < n3) && (n3 = r3); + for (var o3 = "", i3 = t3; i3 < n3; i3++) o3 += k(e4[i3]); + return o3; + }(s2, t2, n2); + break; + case "utf8": + case "utf-8": + r2 = function(e4, t3, n3) { + var r3 = "", o3 = ""; + n3 = Math.min(e4.length, n3); + for (var i3 = t3; i3 < n3; i3++) e4[i3] <= 127 ? (r3 += N(o3) + String.fromCharCode(e4[i3]), o3 = "") : o3 += "%" + e4[i3].toString(16); + return r3 + N(o3); + }(s2, t2, n2); + break; + case "ascii": + case "binary": + r2 = v(s2, t2, n2); + break; + case "base64": + o2 = s2, u2 = n2, r2 = 0 === (i2 = t2) && u2 === o2.length ? a.fromByteArray(o2) : a.fromByteArray(o2.slice(i2, u2)); + break; + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + r2 = function(e4, t3, n3) { + for (var r3 = e4.slice(t3, n3), o3 = "", i3 = 0; i3 < r3.length; i3 += 2) o3 += String.fromCharCode(r3[i3] + 256 * r3[i3 + 1]); + return o3; + }(s2, t2, n2); + break; + default: + throw new Error("Unknown encoding"); + } + return r2; + }, f.prototype.toJSON = function() { + return { type: "Buffer", data: Array.prototype.slice.call(this._arr || this, 0) }; + }, f.prototype.copy = function(e3, t2, n2, r2) { + if (t2 = t2 || 0, (r2 = r2 || 0 === r2 ? r2 : this.length) !== (n2 = n2 || 0) && 0 !== e3.length && 0 !== this.length) { + d(n2 <= r2, "sourceEnd < sourceStart"), d(0 <= t2 && t2 < e3.length, "targetStart out of bounds"), d(0 <= n2 && n2 < this.length, "sourceStart out of bounds"), d(0 <= r2 && r2 <= this.length, "sourceEnd out of bounds"), r2 > this.length && (r2 = this.length); + var o2 = (r2 = e3.length - t2 < r2 - n2 ? e3.length - t2 + n2 : r2) - n2; + if (o2 < 100 || !f._useTypedArrays) for (var i2 = 0; i2 < o2; i2++) e3[i2 + t2] = this[i2 + n2]; + else e3._set(this.subarray(n2, n2 + o2), t2); + } + }, f.prototype.slice = function(e3, t2) { + var n2 = this.length; + if (e3 = S(e3, n2, 0), t2 = S(t2, n2, n2), f._useTypedArrays) return f._augment(this.subarray(e3, t2)); + for (var r2 = t2 - e3, o2 = new f(r2, void 0, true), i2 = 0; i2 < r2; i2++) o2[i2] = this[i2 + e3]; + return o2; + }, f.prototype.get = function(e3) { + return console.log(".get() is deprecated. Access using array indexes instead."), this.readUInt8(e3); + }, f.prototype.set = function(e3, t2) { + return console.log(".set() is deprecated. Access using array indexes instead."), this.writeUInt8(e3, t2); + }, f.prototype.readUInt8 = function(e3, t2) { + if (t2 || (d(null != e3, "missing offset"), d(e3 < this.length, "Trying to read beyond buffer length")), !(e3 >= this.length)) return this[e3]; + }, f.prototype.readUInt16LE = function(e3, t2) { + return o(this, e3, true, t2); + }, f.prototype.readUInt16BE = function(e3, t2) { + return o(this, e3, false, t2); + }, f.prototype.readUInt32LE = function(e3, t2) { + return u(this, e3, true, t2); + }, f.prototype.readUInt32BE = function(e3, t2) { + return u(this, e3, false, t2); + }, f.prototype.readInt8 = function(e3, t2) { + if (t2 || (d(null != e3, "missing offset"), d(e3 < this.length, "Trying to read beyond buffer length")), !(e3 >= this.length)) return 128 & this[e3] ? -1 * (255 - this[e3] + 1) : this[e3]; + }, f.prototype.readInt16LE = function(e3, t2) { + return _(this, e3, true, t2); + }, f.prototype.readInt16BE = function(e3, t2) { + return _(this, e3, false, t2); + }, f.prototype.readInt32LE = function(e3, t2) { + return E(this, e3, true, t2); + }, f.prototype.readInt32BE = function(e3, t2) { + return E(this, e3, false, t2); + }, f.prototype.readFloatLE = function(e3, t2) { + return I(this, e3, true, t2); + }, f.prototype.readFloatBE = function(e3, t2) { + return I(this, e3, false, t2); + }, f.prototype.readDoubleLE = function(e3, t2) { + return A(this, e3, true, t2); + }, f.prototype.readDoubleBE = function(e3, t2) { + return A(this, e3, false, t2); + }, f.prototype.writeUInt8 = function(e3, t2, n2) { + n2 || (d(null != e3, "missing value"), d(null != t2, "missing offset"), d(t2 < this.length, "trying to write beyond buffer length"), Y(e3, 255)), t2 >= this.length || (this[t2] = e3); + }, f.prototype.writeUInt16LE = function(e3, t2, n2) { + s(this, e3, t2, true, n2); + }, f.prototype.writeUInt16BE = function(e3, t2, n2) { + s(this, e3, t2, false, n2); + }, f.prototype.writeUInt32LE = function(e3, t2, n2) { + l(this, e3, t2, true, n2); + }, f.prototype.writeUInt32BE = function(e3, t2, n2) { + l(this, e3, t2, false, n2); + }, f.prototype.writeInt8 = function(e3, t2, n2) { + n2 || (d(null != e3, "missing value"), d(null != t2, "missing offset"), d(t2 < this.length, "Trying to write beyond buffer length"), F(e3, 127, -128)), t2 >= this.length || (0 <= e3 ? this.writeUInt8(e3, t2, n2) : this.writeUInt8(255 + e3 + 1, t2, n2)); + }, f.prototype.writeInt16LE = function(e3, t2, n2) { + B(this, e3, t2, true, n2); + }, f.prototype.writeInt16BE = function(e3, t2, n2) { + B(this, e3, t2, false, n2); + }, f.prototype.writeInt32LE = function(e3, t2, n2) { + L(this, e3, t2, true, n2); + }, f.prototype.writeInt32BE = function(e3, t2, n2) { + L(this, e3, t2, false, n2); + }, f.prototype.writeFloatLE = function(e3, t2, n2) { + U(this, e3, t2, true, n2); + }, f.prototype.writeFloatBE = function(e3, t2, n2) { + U(this, e3, t2, false, n2); + }, f.prototype.writeDoubleLE = function(e3, t2, n2) { + x(this, e3, t2, true, n2); + }, f.prototype.writeDoubleBE = function(e3, t2, n2) { + x(this, e3, t2, false, n2); + }, f.prototype.fill = function(e3, t2, n2) { + if (t2 = t2 || 0, n2 = n2 || this.length, d("number" == typeof (e3 = "string" == typeof (e3 = e3 || 0) ? e3.charCodeAt(0) : e3) && !isNaN(e3), "value is not a number"), d(t2 <= n2, "end < start"), n2 !== t2 && 0 !== this.length) { + d(0 <= t2 && t2 < this.length, "start out of bounds"), d(0 <= n2 && n2 <= this.length, "end out of bounds"); + for (var r2 = t2; r2 < n2; r2++) this[r2] = e3; + } + }, f.prototype.inspect = function() { + for (var e3 = [], t2 = this.length, n2 = 0; n2 < t2; n2++) if (e3[n2] = k(this[n2]), n2 === H.INSPECT_MAX_BYTES) { + e3[n2 + 1] = "..."; + break; + } + return ""; + }, f.prototype.toArrayBuffer = function() { + if ("undefined" == typeof Uint8Array) throw new Error("Buffer.toArrayBuffer not supported in this browser"); + if (f._useTypedArrays) return new f(this).buffer; + for (var e3 = new Uint8Array(this.length), t2 = 0, n2 = e3.length; t2 < n2; t2 += 1) e3[t2] = this[t2]; + return e3.buffer; + }; + var t = f.prototype; + function S(e3, t2, n2) { + return "number" != typeof e3 ? n2 : t2 <= (e3 = ~~e3) ? t2 : 0 <= e3 || 0 <= (e3 += t2) ? e3 : 0; + } + function j(e3) { + return (e3 = ~~Math.ceil(+e3)) < 0 ? 0 : e3; + } + function C(e3) { + return (Array.isArray || function(e4) { + return "[object Array]" === Object.prototype.toString.call(e4); + })(e3); + } + function k(e3) { + return e3 < 16 ? "0" + e3.toString(16) : e3.toString(16); + } + function T(e3) { + for (var t2 = [], n2 = 0; n2 < e3.length; n2++) { + var r2 = e3.charCodeAt(n2); + if (r2 <= 127) t2.push(e3.charCodeAt(n2)); + else for (var o2 = n2, i2 = (55296 <= r2 && r2 <= 57343 && n2++, encodeURIComponent(e3.slice(o2, n2 + 1)).substr(1).split("%")), u2 = 0; u2 < i2.length; u2++) t2.push(parseInt(i2[u2], 16)); + } + return t2; + } + function M(e3) { + return a.toByteArray(e3); + } + function c(e3, t2, n2, r2) { + for (var o2 = 0; o2 < r2 && !(o2 + n2 >= t2.length || o2 >= e3.length); o2++) t2[o2 + n2] = e3[o2]; + return o2; + } + function N(e3) { + try { + return decodeURIComponent(e3); + } catch (e4) { + return String.fromCharCode(65533); + } + } + function Y(e3, t2) { + d("number" == typeof e3, "cannot write a non-number as a number"), d(0 <= e3, "specified a negative value for writing an unsigned value"), d(e3 <= t2, "value is larger than maximum value for type"), d(Math.floor(e3) === e3, "value has a fractional component"); + } + function F(e3, t2, n2) { + d("number" == typeof e3, "cannot write a non-number as a number"), d(e3 <= t2, "value larger than maximum allowed value"), d(n2 <= e3, "value smaller than minimum allowed value"), d(Math.floor(e3) === e3, "value has a fractional component"); + } + function D(e3, t2, n2) { + d("number" == typeof e3, "cannot write a non-number as a number"), d(e3 <= t2, "value larger than maximum allowed value"), d(n2 <= e3, "value smaller than minimum allowed value"); + } + function d(e3, t2) { + if (!e3) throw new Error(t2 || "Failed assertion"); + } + f._augment = function(e3) { + return e3._isBuffer = true, e3._get = e3.get, e3._set = e3.set, e3.get = t.get, e3.set = t.set, e3.write = t.write, e3.toString = t.toString, e3.toLocaleString = t.toString, e3.toJSON = t.toJSON, e3.copy = t.copy, e3.slice = t.slice, e3.readUInt8 = t.readUInt8, e3.readUInt16LE = t.readUInt16LE, e3.readUInt16BE = t.readUInt16BE, e3.readUInt32LE = t.readUInt32LE, e3.readUInt32BE = t.readUInt32BE, e3.readInt8 = t.readInt8, e3.readInt16LE = t.readInt16LE, e3.readInt16BE = t.readInt16BE, e3.readInt32LE = t.readInt32LE, e3.readInt32BE = t.readInt32BE, e3.readFloatLE = t.readFloatLE, e3.readFloatBE = t.readFloatBE, e3.readDoubleLE = t.readDoubleLE, e3.readDoubleBE = t.readDoubleBE, e3.writeUInt8 = t.writeUInt8, e3.writeUInt16LE = t.writeUInt16LE, e3.writeUInt16BE = t.writeUInt16BE, e3.writeUInt32LE = t.writeUInt32LE, e3.writeUInt32BE = t.writeUInt32BE, e3.writeInt8 = t.writeInt8, e3.writeInt16LE = t.writeInt16LE, e3.writeInt16BE = t.writeInt16BE, e3.writeInt32LE = t.writeInt32LE, e3.writeInt32BE = t.writeInt32BE, e3.writeFloatLE = t.writeFloatLE, e3.writeFloatBE = t.writeFloatBE, e3.writeDoubleLE = t.writeDoubleLE, e3.writeDoubleBE = t.writeDoubleBE, e3.fill = t.fill, e3.inspect = t.inspect, e3.toArrayBuffer = t.toArrayBuffer, e3; + }; + }).call(this, O("lYpoI2"), "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}, O("buffer").Buffer, arguments[3], arguments[4], arguments[5], arguments[6], "/node_modules/gulp-browserify/node_modules/buffer/index.js", "/node_modules/gulp-browserify/node_modules/buffer"); + }, { "base64-js": 2, buffer: 3, ieee754: 10, lYpoI2: 11 }], 4: [function(c, d, e) { + !(function(e2, t, a, n, r, o, i, u, s) { + var a = c("buffer").Buffer, f = 4, l = new a(f); + l.fill(0); + d.exports = { hash: function(e3, t2, n2, r2) { + for (var o2 = t2(function(e4, t3) { + e4.length % f != 0 && (n3 = e4.length + (f - e4.length % f), e4 = a.concat([e4, l], n3)); + for (var n3, r3 = [], o3 = t3 ? e4.readInt32BE : e4.readInt32LE, i3 = 0; i3 < e4.length; i3 += f) r3.push(o3.call(e4, i3)); + return r3; + }(e3 = a.isBuffer(e3) ? e3 : new a(e3), r2), 8 * e3.length), t2 = r2, i2 = new a(n2), u2 = t2 ? i2.writeInt32BE : i2.writeInt32LE, s2 = 0; s2 < o2.length; s2++) u2.call(i2, o2[s2], 4 * s2, true); + return i2; + } }; + }).call(this, c("lYpoI2"), "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}, c("buffer").Buffer, arguments[3], arguments[4], arguments[5], arguments[6], "/node_modules/gulp-browserify/node_modules/crypto-browserify/helpers.js", "/node_modules/gulp-browserify/node_modules/crypto-browserify"); + }, { buffer: 3, lYpoI2: 11 }], 5: [function(v, e, _) { + !(function(l, c, u, d, h, p, g, y, w) { + var u = v("buffer").Buffer, e2 = v("./sha"), t = v("./sha256"), n = v("./rng"), b = { sha1: e2, sha256: t, md5: v("./md5") }, s = 64, a = new u(s); + function r(e3, n2) { + var r2 = b[e3 = e3 || "sha1"], o2 = []; + return r2 || i("algorithm:", e3, "is not yet supported"), { update: function(e4) { + return u.isBuffer(e4) || (e4 = new u(e4)), o2.push(e4), e4.length, this; + }, digest: function(e4) { + var t2 = u.concat(o2), t2 = n2 ? function(e5, t3, n3) { + u.isBuffer(t3) || (t3 = new u(t3)), u.isBuffer(n3) || (n3 = new u(n3)), t3.length > s ? t3 = e5(t3) : t3.length < s && (t3 = u.concat([t3, a], s)); + for (var r3 = new u(s), o3 = new u(s), i2 = 0; i2 < s; i2++) r3[i2] = 54 ^ t3[i2], o3[i2] = 92 ^ t3[i2]; + return n3 = e5(u.concat([r3, n3])), e5(u.concat([o3, n3])); + }(r2, n2, t2) : r2(t2); + return o2 = null, e4 ? t2.toString(e4) : t2; + } }; + } + function i() { + var e3 = [].slice.call(arguments).join(" "); + throw new Error([e3, "we accept pull requests", "http://github.com/dominictarr/crypto-browserify"].join("\n")); + } + a.fill(0), _.createHash = function(e3) { + return r(e3); + }, _.createHmac = r, _.randomBytes = function(e3, t2) { + if (!t2 || !t2.call) return new u(n(e3)); + try { + t2.call(this, void 0, new u(n(e3))); + } catch (e4) { + t2(e4); + } + }; + var o, f = ["createCredentials", "createCipher", "createCipheriv", "createDecipher", "createDecipheriv", "createSign", "createVerify", "createDiffieHellman", "pbkdf2"], m = function(e3) { + _[e3] = function() { + i("sorry,", e3, "is not implemented yet"); + }; + }; + for (o in f) m(f[o]); + }).call(this, v("lYpoI2"), "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}, v("buffer").Buffer, arguments[3], arguments[4], arguments[5], arguments[6], "/node_modules/gulp-browserify/node_modules/crypto-browserify/index.js", "/node_modules/gulp-browserify/node_modules/crypto-browserify"); + }, { "./md5": 6, "./rng": 7, "./sha": 8, "./sha256": 9, buffer: 3, lYpoI2: 11 }], 6: [function(w, b, e) { + !(function(e2, r, o, i, u, a, f, l, y) { + var t = w("./helpers"); + function n(e3, t2) { + e3[t2 >> 5] |= 128 << t2 % 32, e3[14 + (t2 + 64 >>> 9 << 4)] = t2; + for (var n2 = 1732584193, r2 = -271733879, o2 = -1732584194, i2 = 271733878, u2 = 0; u2 < e3.length; u2 += 16) { + var s2 = n2, a2 = r2, f2 = o2, l2 = i2, n2 = c(n2, r2, o2, i2, e3[u2 + 0], 7, -680876936), i2 = c(i2, n2, r2, o2, e3[u2 + 1], 12, -389564586), o2 = c(o2, i2, n2, r2, e3[u2 + 2], 17, 606105819), r2 = c(r2, o2, i2, n2, e3[u2 + 3], 22, -1044525330); + n2 = c(n2, r2, o2, i2, e3[u2 + 4], 7, -176418897), i2 = c(i2, n2, r2, o2, e3[u2 + 5], 12, 1200080426), o2 = c(o2, i2, n2, r2, e3[u2 + 6], 17, -1473231341), r2 = c(r2, o2, i2, n2, e3[u2 + 7], 22, -45705983), n2 = c(n2, r2, o2, i2, e3[u2 + 8], 7, 1770035416), i2 = c(i2, n2, r2, o2, e3[u2 + 9], 12, -1958414417), o2 = c(o2, i2, n2, r2, e3[u2 + 10], 17, -42063), r2 = c(r2, o2, i2, n2, e3[u2 + 11], 22, -1990404162), n2 = c(n2, r2, o2, i2, e3[u2 + 12], 7, 1804603682), i2 = c(i2, n2, r2, o2, e3[u2 + 13], 12, -40341101), o2 = c(o2, i2, n2, r2, e3[u2 + 14], 17, -1502002290), n2 = d(n2, r2 = c(r2, o2, i2, n2, e3[u2 + 15], 22, 1236535329), o2, i2, e3[u2 + 1], 5, -165796510), i2 = d(i2, n2, r2, o2, e3[u2 + 6], 9, -1069501632), o2 = d(o2, i2, n2, r2, e3[u2 + 11], 14, 643717713), r2 = d(r2, o2, i2, n2, e3[u2 + 0], 20, -373897302), n2 = d(n2, r2, o2, i2, e3[u2 + 5], 5, -701558691), i2 = d(i2, n2, r2, o2, e3[u2 + 10], 9, 38016083), o2 = d(o2, i2, n2, r2, e3[u2 + 15], 14, -660478335), r2 = d(r2, o2, i2, n2, e3[u2 + 4], 20, -405537848), n2 = d(n2, r2, o2, i2, e3[u2 + 9], 5, 568446438), i2 = d(i2, n2, r2, o2, e3[u2 + 14], 9, -1019803690), o2 = d(o2, i2, n2, r2, e3[u2 + 3], 14, -187363961), r2 = d(r2, o2, i2, n2, e3[u2 + 8], 20, 1163531501), n2 = d(n2, r2, o2, i2, e3[u2 + 13], 5, -1444681467), i2 = d(i2, n2, r2, o2, e3[u2 + 2], 9, -51403784), o2 = d(o2, i2, n2, r2, e3[u2 + 7], 14, 1735328473), n2 = h(n2, r2 = d(r2, o2, i2, n2, e3[u2 + 12], 20, -1926607734), o2, i2, e3[u2 + 5], 4, -378558), i2 = h(i2, n2, r2, o2, e3[u2 + 8], 11, -2022574463), o2 = h(o2, i2, n2, r2, e3[u2 + 11], 16, 1839030562), r2 = h(r2, o2, i2, n2, e3[u2 + 14], 23, -35309556), n2 = h(n2, r2, o2, i2, e3[u2 + 1], 4, -1530992060), i2 = h(i2, n2, r2, o2, e3[u2 + 4], 11, 1272893353), o2 = h(o2, i2, n2, r2, e3[u2 + 7], 16, -155497632), r2 = h(r2, o2, i2, n2, e3[u2 + 10], 23, -1094730640), n2 = h(n2, r2, o2, i2, e3[u2 + 13], 4, 681279174), i2 = h(i2, n2, r2, o2, e3[u2 + 0], 11, -358537222), o2 = h(o2, i2, n2, r2, e3[u2 + 3], 16, -722521979), r2 = h(r2, o2, i2, n2, e3[u2 + 6], 23, 76029189), n2 = h(n2, r2, o2, i2, e3[u2 + 9], 4, -640364487), i2 = h(i2, n2, r2, o2, e3[u2 + 12], 11, -421815835), o2 = h(o2, i2, n2, r2, e3[u2 + 15], 16, 530742520), n2 = p(n2, r2 = h(r2, o2, i2, n2, e3[u2 + 2], 23, -995338651), o2, i2, e3[u2 + 0], 6, -198630844), i2 = p(i2, n2, r2, o2, e3[u2 + 7], 10, 1126891415), o2 = p(o2, i2, n2, r2, e3[u2 + 14], 15, -1416354905), r2 = p(r2, o2, i2, n2, e3[u2 + 5], 21, -57434055), n2 = p(n2, r2, o2, i2, e3[u2 + 12], 6, 1700485571), i2 = p(i2, n2, r2, o2, e3[u2 + 3], 10, -1894986606), o2 = p(o2, i2, n2, r2, e3[u2 + 10], 15, -1051523), r2 = p(r2, o2, i2, n2, e3[u2 + 1], 21, -2054922799), n2 = p(n2, r2, o2, i2, e3[u2 + 8], 6, 1873313359), i2 = p(i2, n2, r2, o2, e3[u2 + 15], 10, -30611744), o2 = p(o2, i2, n2, r2, e3[u2 + 6], 15, -1560198380), r2 = p(r2, o2, i2, n2, e3[u2 + 13], 21, 1309151649), n2 = p(n2, r2, o2, i2, e3[u2 + 4], 6, -145523070), i2 = p(i2, n2, r2, o2, e3[u2 + 11], 10, -1120210379), o2 = p(o2, i2, n2, r2, e3[u2 + 2], 15, 718787259), r2 = p(r2, o2, i2, n2, e3[u2 + 9], 21, -343485551), n2 = g(n2, s2), r2 = g(r2, a2), o2 = g(o2, f2), i2 = g(i2, l2); + } + return Array(n2, r2, o2, i2); + } + function s(e3, t2, n2, r2, o2, i2) { + return g((t2 = g(g(t2, e3), g(r2, i2))) << o2 | t2 >>> 32 - o2, n2); + } + function c(e3, t2, n2, r2, o2, i2, u2) { + return s(t2 & n2 | ~t2 & r2, e3, t2, o2, i2, u2); + } + function d(e3, t2, n2, r2, o2, i2, u2) { + return s(t2 & r2 | n2 & ~r2, e3, t2, o2, i2, u2); + } + function h(e3, t2, n2, r2, o2, i2, u2) { + return s(t2 ^ n2 ^ r2, e3, t2, o2, i2, u2); + } + function p(e3, t2, n2, r2, o2, i2, u2) { + return s(n2 ^ (t2 | ~r2), e3, t2, o2, i2, u2); + } + function g(e3, t2) { + var n2 = (65535 & e3) + (65535 & t2); + return (e3 >> 16) + (t2 >> 16) + (n2 >> 16) << 16 | 65535 & n2; + } + b.exports = function(e3) { + return t.hash(e3, n, 16); + }; + }).call(this, w("lYpoI2"), "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}, w("buffer").Buffer, arguments[3], arguments[4], arguments[5], arguments[6], "/node_modules/gulp-browserify/node_modules/crypto-browserify/md5.js", "/node_modules/gulp-browserify/node_modules/crypto-browserify"); + }, { "./helpers": 4, buffer: 3, lYpoI2: 11 }], 7: [function(e, l, t) { + !(function(e2, t2, n, r, o, i, u, s, f) { + l.exports = function(e3) { + for (var t3, n2 = new Array(e3), r2 = 0; r2 < e3; r2++) 0 == (3 & r2) && (t3 = 4294967296 * Math.random()), n2[r2] = t3 >>> ((3 & r2) << 3) & 255; + return n2; + }; + }).call(this, e("lYpoI2"), "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}, e("buffer").Buffer, arguments[3], arguments[4], arguments[5], arguments[6], "/node_modules/gulp-browserify/node_modules/crypto-browserify/rng.js", "/node_modules/gulp-browserify/node_modules/crypto-browserify"); + }, { buffer: 3, lYpoI2: 11 }], 8: [function(c, d, e) { + !(function(e2, t, n, r, o, s, a, f, l) { + var i = c("./helpers"); + function u(l2, c2) { + l2[c2 >> 5] |= 128 << 24 - c2 % 32, l2[15 + (c2 + 64 >> 9 << 4)] = c2; + for (var e3, t2, n2, r2 = Array(80), o2 = 1732584193, i2 = -271733879, u2 = -1732584194, s2 = 271733878, d2 = -1009589776, h = 0; h < l2.length; h += 16) { + for (var p = o2, g = i2, y = u2, w = s2, b = d2, a2 = 0; a2 < 80; a2++) { + r2[a2] = a2 < 16 ? l2[h + a2] : v(r2[a2 - 3] ^ r2[a2 - 8] ^ r2[a2 - 14] ^ r2[a2 - 16], 1); + var f2 = m(m(v(o2, 5), (f2 = i2, t2 = u2, n2 = s2, (e3 = a2) < 20 ? f2 & t2 | ~f2 & n2 : !(e3 < 40) && e3 < 60 ? f2 & t2 | f2 & n2 | t2 & n2 : f2 ^ t2 ^ n2)), m(m(d2, r2[a2]), (e3 = a2) < 20 ? 1518500249 : e3 < 40 ? 1859775393 : e3 < 60 ? -1894007588 : -899497514)), d2 = s2, s2 = u2, u2 = v(i2, 30), i2 = o2, o2 = f2; + } + o2 = m(o2, p), i2 = m(i2, g), u2 = m(u2, y), s2 = m(s2, w), d2 = m(d2, b); + } + return Array(o2, i2, u2, s2, d2); + } + function m(e3, t2) { + var n2 = (65535 & e3) + (65535 & t2); + return (e3 >> 16) + (t2 >> 16) + (n2 >> 16) << 16 | 65535 & n2; + } + function v(e3, t2) { + return e3 << t2 | e3 >>> 32 - t2; + } + d.exports = function(e3) { + return i.hash(e3, u, 20, true); + }; + }).call(this, c("lYpoI2"), "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}, c("buffer").Buffer, arguments[3], arguments[4], arguments[5], arguments[6], "/node_modules/gulp-browserify/node_modules/crypto-browserify/sha.js", "/node_modules/gulp-browserify/node_modules/crypto-browserify"); + }, { "./helpers": 4, buffer: 3, lYpoI2: 11 }], 9: [function(c, d, e) { + !(function(e2, t, n, r, u, s, a, f, l) { + function b(e3, t2) { + var n2 = (65535 & e3) + (65535 & t2); + return (e3 >> 16) + (t2 >> 16) + (n2 >> 16) << 16 | 65535 & n2; + } + function o(e3, l2) { + var c2, d2 = new Array(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), t2 = new Array(1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225), n2 = new Array(64); + e3[l2 >> 5] |= 128 << 24 - l2 % 32, e3[15 + (l2 + 64 >> 9 << 4)] = l2; + for (var r2, o2, h = 0; h < e3.length; h += 16) { + for (var i2 = t2[0], u2 = t2[1], s2 = t2[2], p = t2[3], a2 = t2[4], g = t2[5], y = t2[6], w = t2[7], f2 = 0; f2 < 64; f2++) n2[f2] = f2 < 16 ? e3[f2 + h] : b(b(b((o2 = n2[f2 - 2], m(o2, 17) ^ m(o2, 19) ^ v(o2, 10)), n2[f2 - 7]), (o2 = n2[f2 - 15], m(o2, 7) ^ m(o2, 18) ^ v(o2, 3))), n2[f2 - 16]), c2 = b(b(b(b(w, m(o2 = a2, 6) ^ m(o2, 11) ^ m(o2, 25)), a2 & g ^ ~a2 & y), d2[f2]), n2[f2]), r2 = b(m(r2 = i2, 2) ^ m(r2, 13) ^ m(r2, 22), i2 & u2 ^ i2 & s2 ^ u2 & s2), w = y, y = g, g = a2, a2 = b(p, c2), p = s2, s2 = u2, u2 = i2, i2 = b(c2, r2); + t2[0] = b(i2, t2[0]), t2[1] = b(u2, t2[1]), t2[2] = b(s2, t2[2]), t2[3] = b(p, t2[3]), t2[4] = b(a2, t2[4]), t2[5] = b(g, t2[5]), t2[6] = b(y, t2[6]), t2[7] = b(w, t2[7]); + } + return t2; + } + var i = c("./helpers"), m = function(e3, t2) { + return e3 >>> t2 | e3 << 32 - t2; + }, v = function(e3, t2) { + return e3 >>> t2; + }; + d.exports = function(e3) { + return i.hash(e3, o, 32, true); + }; + }).call(this, c("lYpoI2"), "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}, c("buffer").Buffer, arguments[3], arguments[4], arguments[5], arguments[6], "/node_modules/gulp-browserify/node_modules/crypto-browserify/sha256.js", "/node_modules/gulp-browserify/node_modules/crypto-browserify"); + }, { "./helpers": 4, buffer: 3, lYpoI2: 11 }], 10: [function(e, t, f) { + !(function(e2, t2, n, r, o, i, u, s, a) { + f.read = function(e3, t3, n2, r2, o2) { + var i2, u2, l = 8 * o2 - r2 - 1, c = (1 << l) - 1, d = c >> 1, s2 = -7, a2 = n2 ? o2 - 1 : 0, f2 = n2 ? -1 : 1, o2 = e3[t3 + a2]; + for (a2 += f2, i2 = o2 & (1 << -s2) - 1, o2 >>= -s2, s2 += l; 0 < s2; i2 = 256 * i2 + e3[t3 + a2], a2 += f2, s2 -= 8) ; + for (u2 = i2 & (1 << -s2) - 1, i2 >>= -s2, s2 += r2; 0 < s2; u2 = 256 * u2 + e3[t3 + a2], a2 += f2, s2 -= 8) ; + if (0 === i2) i2 = 1 - d; + else { + if (i2 === c) return u2 ? NaN : 1 / 0 * (o2 ? -1 : 1); + u2 += Math.pow(2, r2), i2 -= d; + } + return (o2 ? -1 : 1) * u2 * Math.pow(2, i2 - r2); + }, f.write = function(e3, t3, l, n2, r2, c) { + var o2, i2, u2 = 8 * c - r2 - 1, s2 = (1 << u2) - 1, a2 = s2 >> 1, d = 23 === r2 ? Math.pow(2, -24) - Math.pow(2, -77) : 0, f2 = n2 ? 0 : c - 1, h = n2 ? 1 : -1, c = t3 < 0 || 0 === t3 && 1 / t3 < 0 ? 1 : 0; + for (t3 = Math.abs(t3), isNaN(t3) || t3 === 1 / 0 ? (i2 = isNaN(t3) ? 1 : 0, o2 = s2) : (o2 = Math.floor(Math.log(t3) / Math.LN2), t3 * (n2 = Math.pow(2, -o2)) < 1 && (o2--, n2 *= 2), 2 <= (t3 += 1 <= o2 + a2 ? d / n2 : d * Math.pow(2, 1 - a2)) * n2 && (o2++, n2 /= 2), s2 <= o2 + a2 ? (i2 = 0, o2 = s2) : 1 <= o2 + a2 ? (i2 = (t3 * n2 - 1) * Math.pow(2, r2), o2 += a2) : (i2 = t3 * Math.pow(2, a2 - 1) * Math.pow(2, r2), o2 = 0)); 8 <= r2; e3[l + f2] = 255 & i2, f2 += h, i2 /= 256, r2 -= 8) ; + for (o2 = o2 << r2 | i2, u2 += r2; 0 < u2; e3[l + f2] = 255 & o2, f2 += h, o2 /= 256, u2 -= 8) ; + e3[l + f2 - h] |= 128 * c; + }; + }).call(this, e("lYpoI2"), "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}, e("buffer").Buffer, arguments[3], arguments[4], arguments[5], arguments[6], "/node_modules/gulp-browserify/node_modules/ieee754/index.js", "/node_modules/gulp-browserify/node_modules/ieee754"); + }, { buffer: 3, lYpoI2: 11 }], 11: [function(e, h, t) { + !(function(e2, t2, n, r, o, f, l, c, d) { + var i, u, s; + function a() { + } + (e2 = h.exports = {}).nextTick = (u = "undefined" != typeof window && window.setImmediate, s = "undefined" != typeof window && window.postMessage && window.addEventListener, u ? function(e3) { + return window.setImmediate(e3); + } : s ? (i = [], window.addEventListener("message", function(e3) { + var t3 = e3.source; + t3 !== window && null !== t3 || "process-tick" !== e3.data || (e3.stopPropagation(), 0 < i.length && i.shift()()); + }, true), function(e3) { + i.push(e3), window.postMessage("process-tick", "*"); + }) : function(e3) { + setTimeout(e3, 0); + }), e2.title = "browser", e2.browser = true, e2.env = {}, e2.argv = [], e2.on = a, e2.addListener = a, e2.once = a, e2.off = a, e2.removeListener = a, e2.removeAllListeners = a, e2.emit = a, e2.binding = function(e3) { + throw new Error("process.binding is not supported"); + }, e2.cwd = function() { + return "/"; + }, e2.chdir = function(e3) { + throw new Error("process.chdir is not supported"); + }; + }).call(this, e("lYpoI2"), "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}, e("buffer").Buffer, arguments[3], arguments[4], arguments[5], arguments[6], "/node_modules/gulp-browserify/node_modules/process/browser.js", "/node_modules/gulp-browserify/node_modules/process"); + }, { buffer: 3, lYpoI2: 11 }] }, {}, [1])(1); + }); + })(object_hash); + return object_hash.exports; + } + var object_hashExports = requireObject_hash(); + const hash = /* @__PURE__ */ getDefaultExportFromCjs(object_hashExports); + const prompts = [ + { + name: "Review Selection", + children: [ + { + name: "Summarize", + prompt: endent` + Read the following text and summarize it in less than half the original length. + ` + }, + { + name: "key takeaways", + prompt: endent` + Read the following text and identify the key takeaways in list format. + ` + }, + { + name: "Questions", + prompt: endent` + Read the following text and identify the key questions that it raises. + ` + } + ] + }, + { + name: "Edit Selection", + children: [ + { + name: "Fix Grammar and Spelling", + prompt: endent` + Read the following text and fix any grammar and spelling mistakes. + ` + }, + { + name: "Change Tone", + children: [ + { + name: "Formal", + prompt: endent` + Read the following text and make it more formal. + ` + }, + { + name: "Informal", + prompt: endent` + Read the following text and make it more informal. + ` + }, + { + name: "Neutral", + prompt: endent` + Read the following text and make it more neutral. + ` + }, + { + name: "Strong", + prompt: endent` + Read the following text and make it more strong and assertive. + ` + } + ] + }, + { + name: "Change Length", + children: [ + { + name: "Shorter", + prompt: endent` + Read the following text and make it shorter. + ` + }, + { + name: "Longer", + prompt: endent` + Read the following text and make it longer. + ` + } + ] + }, + { + name: "Change Structure", + children: [ + { + name: "Add Details", + prompt: endent` + Read the following text and add details to make it more informative. + ` + }, + { + name: "Add Examples", + prompt: endent` + Read the following text and add examples to make it more informative. + ` + }, + { + name: "Add Emphasis", + prompt: endent` + Read the following text and add emphasis to make it more impactful. + ` + } + ] + } + ] + }, + { + name: "Reply", + children: [ + { + name: "Positive", + prompt: endent` + Read the following text and reply to it in a positive way. + ` + }, + { + name: "Negative", + prompt: endent` + Read the following text and reply to it in a negative way. + ` + } + ] + } + ]; + const recursiveAddId = (prompts2, _parentId = "") => { + return prompts2.map((prompt) => { + const id = hash(prompt); + return { + id, + ...prompt, + children: prompt.children ? recursiveAddId(prompt.children, id) : void 0 + }; + }); + }; + const defaultPrompts = recursiveAddId(prompts); + background; + const getStoredPrompts = async () => { + const storedPrompts = await getStoredLocalPrompts(); + if (!storedPrompts) { + chrome.storage.local.set({ PROMPTS: defaultPrompts }, () => { + console.log("ℹ️ Default prompts stored from getStoredPrompts.ts"); + }); + } + return storedPrompts ?? defaultPrompts; + }; + const getStoredLocalPrompts = async () => { + const storedLocalPrompts = await new Promise((resolve) => { + chrome.storage.local.get("PROMPTS", (result2) => { + resolve(result2.PROMPTS); + }); + }); + return storedLocalPrompts; + }; + background; + const createContextMenu = async () => { + const prompts2 = await getStoredPrompts(); + const contextMenuItems = []; + const createChildContextMenu = (prompts22, parentId) => { + for (const prompt of prompts22) { + contextMenuItems.push({ + id: prompt.id, + title: prompt.name, + contexts: ["selection"], + parentId + }); + if (prompt.children) createChildContextMenu(prompt.children, prompt.id); + } + }; + createChildContextMenu(prompts2); + contextMenuItems.push( + { + id: "separator", + type: "separator", + contexts: ["selection"] + }, + { + id: "settings", + title: "Settings", + contexts: ["selection"] + } + ); + chrome.contextMenus.removeAll(); + for (const item of contextMenuItems) { + chrome.contextMenus.create(item); + } + }; + const createContextMenuOnStorageChange = () => { + chrome.storage.onChanged.addListener(() => { + console.log("📝 Storage changed"); + createContextMenu(); + }); + }; + background; + const forwardContextMenuClicks = () => { + chrome.contextMenus.onClicked.addListener((info, tab) => { + if (info.menuItemId === "settings") { + chrome.tabs.create({ + url: chrome.runtime.getURL("/src/pages/settings/index.html") + }); + } else { + const selectedText = info.selectionText; + const id = info.menuItemId; + if (tab == null ? void 0 : tab.id) + chrome.tabs.sendMessage(tab.id, { + action: "forward-context-menu-click", + payload: { selectedText, id } + }); + } + }); + }; + background; + const captureScreenListener = async () => { + chrome.runtime.onMessage.addListener((request, _sender, sendResponse) => { + if (request.action === "captureVisibleTab") { + chrome.tabs.captureVisibleTab((dataUrl) => { + sendResponse(dataUrl); + }); + return true; + } + }); + }; + background; + const sendSidebarShortcut = () => { + chrome.commands.getAll((commands) => { + var _a; + const shortcut = (_a = commands.find((c) => c.name === "open-sidebar")) == null ? void 0 : _a.shortcut; + chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => { + if (tabs[0].id) { + chrome.tabs.onUpdated.addListener(function listener(tabId, info) { + if (info.status === "complete" && tabId === tabs[0].id) { + chrome.tabs.sendMessage(tabs[0].id, { + action: "sidebar-shortcut", + shortcut + }); + chrome.tabs.onUpdated.removeListener(listener); + } + }); + } + }); + }); + }; + background; + const sidebarToggleListeners = () => { + chrome.commands.onCommand.addListener((command) => { + console.log(`🚚 [Command Received] ${command}`); + if (command === "open-sidebar") { + toggleSidebar(); + } + }); + chrome.action.onClicked.addListener(toggleSidebar); + chrome.runtime.onMessage.addListener((message, _sender, sendResponse) => { + if (message.action === "close-sidebar" || message.action === "open-sidebar") { + toggleSidebar(); + } + if (message.action === "generate") { + message.prompt; + } + if (message.action === "close-sidebar") { + sendResponse({ action: "close-sidebar" }); + } + }); + }; + const toggleSidebar = () => { + chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => { + if (tabs[0].id) { + chrome.tabs.sendMessage(tabs[0].id, { action: "open-sidebar" }); + } + }); + }; + background; + const definition = defineBackground({ + main() { + backgroundLog(); + sidebarToggleListeners(); + sendSidebarShortcut(); + captureScreenListener(); + createContextMenu(); + forwardContextMenuClicks(); + createContextMenuOnStorageChange(); + } + }); + background; + function initPlugins() { + } + var browserPolyfill$1 = { exports: {} }; + var browserPolyfill = browserPolyfill$1.exports; + var hasRequiredBrowserPolyfill; + function requireBrowserPolyfill() { + if (hasRequiredBrowserPolyfill) return browserPolyfill$1.exports; + hasRequiredBrowserPolyfill = 1; + (function(module, exports) { + (function(global, factory) { + { + factory(module); + } + })(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : browserPolyfill, function(module2) { + if (!(globalThis.chrome && globalThis.chrome.runtime && globalThis.chrome.runtime.id)) { + throw new Error("This script should only be loaded in a browser extension."); + } + if (!(globalThis.browser && globalThis.browser.runtime && globalThis.browser.runtime.id)) { + const CHROME_SEND_MESSAGE_CALLBACK_NO_RESPONSE_MESSAGE = "The message port closed before a response was received."; + const wrapAPIs = (extensionAPIs) => { + const apiMetadata = { + "alarms": { + "clear": { + "minArgs": 0, + "maxArgs": 1 + }, + "clearAll": { + "minArgs": 0, + "maxArgs": 0 + }, + "get": { + "minArgs": 0, + "maxArgs": 1 + }, + "getAll": { + "minArgs": 0, + "maxArgs": 0 + } + }, + "bookmarks": { + "create": { + "minArgs": 1, + "maxArgs": 1 + }, + "get": { + "minArgs": 1, + "maxArgs": 1 + }, + "getChildren": { + "minArgs": 1, + "maxArgs": 1 + }, + "getRecent": { + "minArgs": 1, + "maxArgs": 1 + }, + "getSubTree": { + "minArgs": 1, + "maxArgs": 1 + }, + "getTree": { + "minArgs": 0, + "maxArgs": 0 + }, + "move": { + "minArgs": 2, + "maxArgs": 2 + }, + "remove": { + "minArgs": 1, + "maxArgs": 1 + }, + "removeTree": { + "minArgs": 1, + "maxArgs": 1 + }, + "search": { + "minArgs": 1, + "maxArgs": 1 + }, + "update": { + "minArgs": 2, + "maxArgs": 2 + } + }, + "browserAction": { + "disable": { + "minArgs": 0, + "maxArgs": 1, + "fallbackToNoCallback": true + }, + "enable": { + "minArgs": 0, + "maxArgs": 1, + "fallbackToNoCallback": true + }, + "getBadgeBackgroundColor": { + "minArgs": 1, + "maxArgs": 1 + }, + "getBadgeText": { + "minArgs": 1, + "maxArgs": 1 + }, + "getPopup": { + "minArgs": 1, + "maxArgs": 1 + }, + "getTitle": { + "minArgs": 1, + "maxArgs": 1 + }, + "openPopup": { + "minArgs": 0, + "maxArgs": 0 + }, + "setBadgeBackgroundColor": { + "minArgs": 1, + "maxArgs": 1, + "fallbackToNoCallback": true + }, + "setBadgeText": { + "minArgs": 1, + "maxArgs": 1, + "fallbackToNoCallback": true + }, + "setIcon": { + "minArgs": 1, + "maxArgs": 1 + }, + "setPopup": { + "minArgs": 1, + "maxArgs": 1, + "fallbackToNoCallback": true + }, + "setTitle": { + "minArgs": 1, + "maxArgs": 1, + "fallbackToNoCallback": true + } + }, + "browsingData": { + "remove": { + "minArgs": 2, + "maxArgs": 2 + }, + "removeCache": { + "minArgs": 1, + "maxArgs": 1 + }, + "removeCookies": { + "minArgs": 1, + "maxArgs": 1 + }, + "removeDownloads": { + "minArgs": 1, + "maxArgs": 1 + }, + "removeFormData": { + "minArgs": 1, + "maxArgs": 1 + }, + "removeHistory": { + "minArgs": 1, + "maxArgs": 1 + }, + "removeLocalStorage": { + "minArgs": 1, + "maxArgs": 1 + }, + "removePasswords": { + "minArgs": 1, + "maxArgs": 1 + }, + "removePluginData": { + "minArgs": 1, + "maxArgs": 1 + }, + "settings": { + "minArgs": 0, + "maxArgs": 0 + } + }, + "commands": { + "getAll": { + "minArgs": 0, + "maxArgs": 0 + } + }, + "contextMenus": { + "remove": { + "minArgs": 1, + "maxArgs": 1 + }, + "removeAll": { + "minArgs": 0, + "maxArgs": 0 + }, + "update": { + "minArgs": 2, + "maxArgs": 2 + } + }, + "cookies": { + "get": { + "minArgs": 1, + "maxArgs": 1 + }, + "getAll": { + "minArgs": 1, + "maxArgs": 1 + }, + "getAllCookieStores": { + "minArgs": 0, + "maxArgs": 0 + }, + "remove": { + "minArgs": 1, + "maxArgs": 1 + }, + "set": { + "minArgs": 1, + "maxArgs": 1 + } + }, + "devtools": { + "inspectedWindow": { + "eval": { + "minArgs": 1, + "maxArgs": 2, + "singleCallbackArg": false + } + }, + "panels": { + "create": { + "minArgs": 3, + "maxArgs": 3, + "singleCallbackArg": true + }, + "elements": { + "createSidebarPane": { + "minArgs": 1, + "maxArgs": 1 + } + } + } + }, + "downloads": { + "cancel": { + "minArgs": 1, + "maxArgs": 1 + }, + "download": { + "minArgs": 1, + "maxArgs": 1 + }, + "erase": { + "minArgs": 1, + "maxArgs": 1 + }, + "getFileIcon": { + "minArgs": 1, + "maxArgs": 2 + }, + "open": { + "minArgs": 1, + "maxArgs": 1, + "fallbackToNoCallback": true + }, + "pause": { + "minArgs": 1, + "maxArgs": 1 + }, + "removeFile": { + "minArgs": 1, + "maxArgs": 1 + }, + "resume": { + "minArgs": 1, + "maxArgs": 1 + }, + "search": { + "minArgs": 1, + "maxArgs": 1 + }, + "show": { + "minArgs": 1, + "maxArgs": 1, + "fallbackToNoCallback": true + } + }, + "extension": { + "isAllowedFileSchemeAccess": { + "minArgs": 0, + "maxArgs": 0 + }, + "isAllowedIncognitoAccess": { + "minArgs": 0, + "maxArgs": 0 + } + }, + "history": { + "addUrl": { + "minArgs": 1, + "maxArgs": 1 + }, + "deleteAll": { + "minArgs": 0, + "maxArgs": 0 + }, + "deleteRange": { + "minArgs": 1, + "maxArgs": 1 + }, + "deleteUrl": { + "minArgs": 1, + "maxArgs": 1 + }, + "getVisits": { + "minArgs": 1, + "maxArgs": 1 + }, + "search": { + "minArgs": 1, + "maxArgs": 1 + } + }, + "i18n": { + "detectLanguage": { + "minArgs": 1, + "maxArgs": 1 + }, + "getAcceptLanguages": { + "minArgs": 0, + "maxArgs": 0 + } + }, + "identity": { + "launchWebAuthFlow": { + "minArgs": 1, + "maxArgs": 1 + } + }, + "idle": { + "queryState": { + "minArgs": 1, + "maxArgs": 1 + } + }, + "management": { + "get": { + "minArgs": 1, + "maxArgs": 1 + }, + "getAll": { + "minArgs": 0, + "maxArgs": 0 + }, + "getSelf": { + "minArgs": 0, + "maxArgs": 0 + }, + "setEnabled": { + "minArgs": 2, + "maxArgs": 2 + }, + "uninstallSelf": { + "minArgs": 0, + "maxArgs": 1 + } + }, + "notifications": { + "clear": { + "minArgs": 1, + "maxArgs": 1 + }, + "create": { + "minArgs": 1, + "maxArgs": 2 + }, + "getAll": { + "minArgs": 0, + "maxArgs": 0 + }, + "getPermissionLevel": { + "minArgs": 0, + "maxArgs": 0 + }, + "update": { + "minArgs": 2, + "maxArgs": 2 + } + }, + "pageAction": { + "getPopup": { + "minArgs": 1, + "maxArgs": 1 + }, + "getTitle": { + "minArgs": 1, + "maxArgs": 1 + }, + "hide": { + "minArgs": 1, + "maxArgs": 1, + "fallbackToNoCallback": true + }, + "setIcon": { + "minArgs": 1, + "maxArgs": 1 + }, + "setPopup": { + "minArgs": 1, + "maxArgs": 1, + "fallbackToNoCallback": true + }, + "setTitle": { + "minArgs": 1, + "maxArgs": 1, + "fallbackToNoCallback": true + }, + "show": { + "minArgs": 1, + "maxArgs": 1, + "fallbackToNoCallback": true + } + }, + "permissions": { + "contains": { + "minArgs": 1, + "maxArgs": 1 + }, + "getAll": { + "minArgs": 0, + "maxArgs": 0 + }, + "remove": { + "minArgs": 1, + "maxArgs": 1 + }, + "request": { + "minArgs": 1, + "maxArgs": 1 + } + }, + "runtime": { + "getBackgroundPage": { + "minArgs": 0, + "maxArgs": 0 + }, + "getPlatformInfo": { + "minArgs": 0, + "maxArgs": 0 + }, + "openOptionsPage": { + "minArgs": 0, + "maxArgs": 0 + }, + "requestUpdateCheck": { + "minArgs": 0, + "maxArgs": 0 + }, + "sendMessage": { + "minArgs": 1, + "maxArgs": 3 + }, + "sendNativeMessage": { + "minArgs": 2, + "maxArgs": 2 + }, + "setUninstallURL": { + "minArgs": 1, + "maxArgs": 1 + } + }, + "sessions": { + "getDevices": { + "minArgs": 0, + "maxArgs": 1 + }, + "getRecentlyClosed": { + "minArgs": 0, + "maxArgs": 1 + }, + "restore": { + "minArgs": 0, + "maxArgs": 1 + } + }, + "storage": { + "local": { + "clear": { + "minArgs": 0, + "maxArgs": 0 + }, + "get": { + "minArgs": 0, + "maxArgs": 1 + }, + "getBytesInUse": { + "minArgs": 0, + "maxArgs": 1 + }, + "remove": { + "minArgs": 1, + "maxArgs": 1 + }, + "set": { + "minArgs": 1, + "maxArgs": 1 + } + }, + "managed": { + "get": { + "minArgs": 0, + "maxArgs": 1 + }, + "getBytesInUse": { + "minArgs": 0, + "maxArgs": 1 + } + }, + "sync": { + "clear": { + "minArgs": 0, + "maxArgs": 0 + }, + "get": { + "minArgs": 0, + "maxArgs": 1 + }, + "getBytesInUse": { + "minArgs": 0, + "maxArgs": 1 + }, + "remove": { + "minArgs": 1, + "maxArgs": 1 + }, + "set": { + "minArgs": 1, + "maxArgs": 1 + } + } + }, + "tabs": { + "captureVisibleTab": { + "minArgs": 0, + "maxArgs": 2 + }, + "create": { + "minArgs": 1, + "maxArgs": 1 + }, + "detectLanguage": { + "minArgs": 0, + "maxArgs": 1 + }, + "discard": { + "minArgs": 0, + "maxArgs": 1 + }, + "duplicate": { + "minArgs": 1, + "maxArgs": 1 + }, + "executeScript": { + "minArgs": 1, + "maxArgs": 2 + }, + "get": { + "minArgs": 1, + "maxArgs": 1 + }, + "getCurrent": { + "minArgs": 0, + "maxArgs": 0 + }, + "getZoom": { + "minArgs": 0, + "maxArgs": 1 + }, + "getZoomSettings": { + "minArgs": 0, + "maxArgs": 1 + }, + "goBack": { + "minArgs": 0, + "maxArgs": 1 + }, + "goForward": { + "minArgs": 0, + "maxArgs": 1 + }, + "highlight": { + "minArgs": 1, + "maxArgs": 1 + }, + "insertCSS": { + "minArgs": 1, + "maxArgs": 2 + }, + "move": { + "minArgs": 2, + "maxArgs": 2 + }, + "query": { + "minArgs": 1, + "maxArgs": 1 + }, + "reload": { + "minArgs": 0, + "maxArgs": 2 + }, + "remove": { + "minArgs": 1, + "maxArgs": 1 + }, + "removeCSS": { + "minArgs": 1, + "maxArgs": 2 + }, + "sendMessage": { + "minArgs": 2, + "maxArgs": 3 + }, + "setZoom": { + "minArgs": 1, + "maxArgs": 2 + }, + "setZoomSettings": { + "minArgs": 1, + "maxArgs": 2 + }, + "update": { + "minArgs": 1, + "maxArgs": 2 + } + }, + "topSites": { + "get": { + "minArgs": 0, + "maxArgs": 0 + } + }, + "webNavigation": { + "getAllFrames": { + "minArgs": 1, + "maxArgs": 1 + }, + "getFrame": { + "minArgs": 1, + "maxArgs": 1 + } + }, + "webRequest": { + "handlerBehaviorChanged": { + "minArgs": 0, + "maxArgs": 0 + } + }, + "windows": { + "create": { + "minArgs": 0, + "maxArgs": 1 + }, + "get": { + "minArgs": 1, + "maxArgs": 2 + }, + "getAll": { + "minArgs": 0, + "maxArgs": 1 + }, + "getCurrent": { + "minArgs": 0, + "maxArgs": 1 + }, + "getLastFocused": { + "minArgs": 0, + "maxArgs": 1 + }, + "remove": { + "minArgs": 1, + "maxArgs": 1 + }, + "update": { + "minArgs": 2, + "maxArgs": 2 + } + } + }; + if (Object.keys(apiMetadata).length === 0) { + throw new Error("api-metadata.json has not been included in browser-polyfill"); + } + class DefaultWeakMap extends WeakMap { + constructor(createItem, items = void 0) { + super(items); + this.createItem = createItem; + } + get(key) { + if (!this.has(key)) { + this.set(key, this.createItem(key)); + } + return super.get(key); + } + } + const isThenable = (value) => { + return value && typeof value === "object" && typeof value.then === "function"; + }; + const makeCallback = (promise, metadata) => { + return (...callbackArgs) => { + if (extensionAPIs.runtime.lastError) { + promise.reject(new Error(extensionAPIs.runtime.lastError.message)); + } else if (metadata.singleCallbackArg || callbackArgs.length <= 1 && metadata.singleCallbackArg !== false) { + promise.resolve(callbackArgs[0]); + } else { + promise.resolve(callbackArgs); + } + }; + }; + const pluralizeArguments = (numArgs) => numArgs == 1 ? "argument" : "arguments"; + const wrapAsyncFunction = (name, metadata) => { + return function asyncFunctionWrapper(target, ...args) { + if (args.length < metadata.minArgs) { + throw new Error(`Expected at least ${metadata.minArgs} ${pluralizeArguments(metadata.minArgs)} for ${name}(), got ${args.length}`); + } + if (args.length > metadata.maxArgs) { + throw new Error(`Expected at most ${metadata.maxArgs} ${pluralizeArguments(metadata.maxArgs)} for ${name}(), got ${args.length}`); + } + return new Promise((resolve, reject) => { + if (metadata.fallbackToNoCallback) { + try { + target[name](...args, makeCallback({ + resolve, + reject + }, metadata)); + } catch (cbError) { + console.warn(`${name} API method doesn't seem to support the callback parameter, falling back to call it without a callback: `, cbError); + target[name](...args); + metadata.fallbackToNoCallback = false; + metadata.noCallback = true; + resolve(); + } + } else if (metadata.noCallback) { + target[name](...args); + resolve(); + } else { + target[name](...args, makeCallback({ + resolve, + reject + }, metadata)); + } + }); + }; + }; + const wrapMethod = (target, method, wrapper) => { + return new Proxy(method, { + apply(targetMethod, thisObj, args) { + return wrapper.call(thisObj, target, ...args); + } + }); + }; + let hasOwnProperty = Function.call.bind(Object.prototype.hasOwnProperty); + const wrapObject = (target, wrappers = {}, metadata = {}) => { + let cache = /* @__PURE__ */ Object.create(null); + let handlers = { + has(proxyTarget2, prop) { + return prop in target || prop in cache; + }, + get(proxyTarget2, prop, receiver) { + if (prop in cache) { + return cache[prop]; + } + if (!(prop in target)) { + return void 0; + } + let value = target[prop]; + if (typeof value === "function") { + if (typeof wrappers[prop] === "function") { + value = wrapMethod(target, target[prop], wrappers[prop]); + } else if (hasOwnProperty(metadata, prop)) { + let wrapper = wrapAsyncFunction(prop, metadata[prop]); + value = wrapMethod(target, target[prop], wrapper); + } else { + value = value.bind(target); + } + } else if (typeof value === "object" && value !== null && (hasOwnProperty(wrappers, prop) || hasOwnProperty(metadata, prop))) { + value = wrapObject(value, wrappers[prop], metadata[prop]); + } else if (hasOwnProperty(metadata, "*")) { + value = wrapObject(value, wrappers[prop], metadata["*"]); + } else { + Object.defineProperty(cache, prop, { + configurable: true, + enumerable: true, + get() { + return target[prop]; + }, + set(value2) { + target[prop] = value2; + } + }); + return value; + } + cache[prop] = value; + return value; + }, + set(proxyTarget2, prop, value, receiver) { + if (prop in cache) { + cache[prop] = value; + } else { + target[prop] = value; + } + return true; + }, + defineProperty(proxyTarget2, prop, desc) { + return Reflect.defineProperty(cache, prop, desc); + }, + deleteProperty(proxyTarget2, prop) { + return Reflect.deleteProperty(cache, prop); + } + }; + let proxyTarget = Object.create(target); + return new Proxy(proxyTarget, handlers); + }; + const wrapEvent = (wrapperMap) => ({ + addListener(target, listener, ...args) { + target.addListener(wrapperMap.get(listener), ...args); + }, + hasListener(target, listener) { + return target.hasListener(wrapperMap.get(listener)); + }, + removeListener(target, listener) { + target.removeListener(wrapperMap.get(listener)); + } + }); + const onRequestFinishedWrappers = new DefaultWeakMap((listener) => { + if (typeof listener !== "function") { + return listener; + } + return function onRequestFinished(req) { + const wrappedReq = wrapObject(req, {}, { + getContent: { + minArgs: 0, + maxArgs: 0 + } + }); + listener(wrappedReq); + }; + }); + const onMessageWrappers = new DefaultWeakMap((listener) => { + if (typeof listener !== "function") { + return listener; + } + return function onMessage(message, sender, sendResponse) { + let didCallSendResponse = false; + let wrappedSendResponse; + let sendResponsePromise = new Promise((resolve) => { + wrappedSendResponse = function(response) { + didCallSendResponse = true; + resolve(response); + }; + }); + let result2; + try { + result2 = listener(message, sender, wrappedSendResponse); + } catch (err) { + result2 = Promise.reject(err); + } + const isResultThenable = result2 !== true && isThenable(result2); + if (result2 !== true && !isResultThenable && !didCallSendResponse) { + return false; + } + const sendPromisedResult = (promise) => { + promise.then((msg) => { + sendResponse(msg); + }, (error) => { + let message2; + if (error && (error instanceof Error || typeof error.message === "string")) { + message2 = error.message; + } else { + message2 = "An unexpected error occurred"; + } + sendResponse({ + __mozWebExtensionPolyfillReject__: true, + message: message2 + }); + }).catch((err) => { + console.error("Failed to send onMessage rejected reply", err); + }); + }; + if (isResultThenable) { + sendPromisedResult(result2); + } else { + sendPromisedResult(sendResponsePromise); + } + return true; + }; + }); + const wrappedSendMessageCallback = ({ + reject, + resolve + }, reply) => { + if (extensionAPIs.runtime.lastError) { + if (extensionAPIs.runtime.lastError.message === CHROME_SEND_MESSAGE_CALLBACK_NO_RESPONSE_MESSAGE) { + resolve(); + } else { + reject(new Error(extensionAPIs.runtime.lastError.message)); + } + } else if (reply && reply.__mozWebExtensionPolyfillReject__) { + reject(new Error(reply.message)); + } else { + resolve(reply); + } + }; + const wrappedSendMessage = (name, metadata, apiNamespaceObj, ...args) => { + if (args.length < metadata.minArgs) { + throw new Error(`Expected at least ${metadata.minArgs} ${pluralizeArguments(metadata.minArgs)} for ${name}(), got ${args.length}`); + } + if (args.length > metadata.maxArgs) { + throw new Error(`Expected at most ${metadata.maxArgs} ${pluralizeArguments(metadata.maxArgs)} for ${name}(), got ${args.length}`); + } + return new Promise((resolve, reject) => { + const wrappedCb = wrappedSendMessageCallback.bind(null, { + resolve, + reject + }); + args.push(wrappedCb); + apiNamespaceObj.sendMessage(...args); + }); + }; + const staticWrappers = { + devtools: { + network: { + onRequestFinished: wrapEvent(onRequestFinishedWrappers) + } + }, + runtime: { + onMessage: wrapEvent(onMessageWrappers), + onMessageExternal: wrapEvent(onMessageWrappers), + sendMessage: wrappedSendMessage.bind(null, "sendMessage", { + minArgs: 1, + maxArgs: 3 + }) + }, + tabs: { + sendMessage: wrappedSendMessage.bind(null, "sendMessage", { + minArgs: 2, + maxArgs: 3 + }) + } + }; + const settingMetadata = { + clear: { + minArgs: 1, + maxArgs: 1 + }, + get: { + minArgs: 1, + maxArgs: 1 + }, + set: { + minArgs: 1, + maxArgs: 1 + } + }; + apiMetadata.privacy = { + network: { + "*": settingMetadata + }, + services: { + "*": settingMetadata + }, + websites: { + "*": settingMetadata + } + }; + return wrapObject(extensionAPIs, staticWrappers, apiMetadata); + }; + module2.exports = wrapAPIs(chrome); + } else { + module2.exports = globalThis.browser; + } + }); + })(browserPolyfill$1); + return browserPolyfill$1.exports; + } + var browserPolyfillExports = requireBrowserPolyfill(); + const originalBrowser = /* @__PURE__ */ getDefaultExportFromCjs(browserPolyfillExports); + const browser = originalBrowser; + function print(method, ...args) { + if (typeof args[0] === "string") { + const message = args.shift(); + method(`[wxt] ${message}`, ...args); + } else { + method("[wxt]", ...args); + } + } + const logger = { + debug: (...args) => print(console.debug, ...args), + log: (...args) => print(console.log, ...args), + warn: (...args) => print(console.warn, ...args), + error: (...args) => print(console.error, ...args) + }; + let ws; + function getDevServerWebSocket() { + if (ws == null) { + const serverUrl = `${"ws:"}//${"localhost"}:${3e3}`; + logger.debug("Connecting to dev server @", serverUrl); + ws = new WebSocket(serverUrl, "vite-hmr"); + ws.addWxtEventListener = ws.addEventListener.bind(ws); + ws.sendCustom = (event, payload) => ws == null ? void 0 : ws.send(JSON.stringify({ type: "custom", event, payload })); + ws.addEventListener("open", () => { + logger.debug("Connected to dev server"); + }); + ws.addEventListener("close", () => { + logger.debug("Disconnected from dev server"); + }); + ws.addEventListener("error", (event) => { + logger.error("Failed to connect to dev server", event); + }); + ws.addEventListener("message", (e) => { + try { + const message = JSON.parse(e.data); + if (message.type === "custom") { + ws == null ? void 0 : ws.dispatchEvent( + new CustomEvent(message.event, { detail: message.data }) + ); + } + } catch (err) { + logger.error("Failed to handle message", err); + } + }); + } + return ws; + } + function keepServiceWorkerAlive() { + setInterval(async () => { + await browser.runtime.getPlatformInfo(); + }, 5e3); + } + function reloadContentScript(payload) { + const manifest = browser.runtime.getManifest(); + if (manifest.manifest_version == 2) { + void reloadContentScriptMv2(); + } else { + void reloadContentScriptMv3(payload); + } + } + async function reloadContentScriptMv3({ + registration, + contentScript + }) { + if (registration === "runtime") { + await reloadRuntimeContentScriptMv3(contentScript); + } else { + await reloadManifestContentScriptMv3(contentScript); + } + } + async function reloadManifestContentScriptMv3(contentScript) { + const id = `wxt:${contentScript.js[0]}`; + logger.log("Reloading content script:", contentScript); + const registered = await browser.scripting.getRegisteredContentScripts(); + logger.debug("Existing scripts:", registered); + const existing = registered.find((cs) => cs.id === id); + if (existing) { + logger.debug("Updating content script", existing); + await browser.scripting.updateContentScripts([{ ...contentScript, id }]); + } else { + logger.debug("Registering new content script..."); + await browser.scripting.registerContentScripts([{ ...contentScript, id }]); + } + await reloadTabsForContentScript(contentScript); + } + async function reloadRuntimeContentScriptMv3(contentScript) { + logger.log("Reloading content script:", contentScript); + const registered = await browser.scripting.getRegisteredContentScripts(); + logger.debug("Existing scripts:", registered); + const matches = registered.filter((cs) => { + var _a, _b; + const hasJs = (_a = contentScript.js) == null ? void 0 : _a.find((js) => { + var _a2; + return (_a2 = cs.js) == null ? void 0 : _a2.includes(js); + }); + const hasCss = (_b = contentScript.css) == null ? void 0 : _b.find((css) => { + var _a2; + return (_a2 = cs.css) == null ? void 0 : _a2.includes(css); + }); + return hasJs || hasCss; + }); + if (matches.length === 0) { + logger.log( + "Content script is not registered yet, nothing to reload", + contentScript + ); + return; + } + await browser.scripting.updateContentScripts(matches); + await reloadTabsForContentScript(contentScript); + } + async function reloadTabsForContentScript(contentScript) { + const allTabs = await browser.tabs.query({}); + const matchPatterns = contentScript.matches.map( + (match) => new MatchPattern(match) + ); + const matchingTabs = allTabs.filter((tab) => { + const url = tab.url; + if (!url) + return false; + return !!matchPatterns.find((pattern) => pattern.includes(url)); + }); + await Promise.all( + matchingTabs.map(async (tab) => { + try { + await browser.tabs.reload(tab.id); + } catch (err) { + logger.warn("Failed to reload tab:", err); + } + }) + ); + } + async function reloadContentScriptMv2(_payload) { + throw Error("TODO: reloadContentScriptMv2"); + } + { + try { + const ws2 = getDevServerWebSocket(); + ws2.addWxtEventListener("wxt:reload-extension", () => { + browser.runtime.reload(); + }); + ws2.addWxtEventListener("wxt:reload-content-script", (event) => { + reloadContentScript(event.detail); + }); + if (true) { + ws2.addEventListener( + "open", + () => ws2.sendCustom("wxt:background-initialized") + ); + keepServiceWorkerAlive(); + } + } catch (err) { + logger.error("Failed to setup web socket connection with dev server", err); + } + browser.commands.onCommand.addListener((command) => { + if (command === "wxt:reload-extension") { + browser.runtime.reload(); + } + }); + } + let result; + try { + initPlugins(); + result = definition.main(); + if (result instanceof Promise) { + console.warn( + "The background's main() function return a promise, but it must be synchronous" + ); + } + } catch (err) { + logger.error("The background crashed on startup!"); + throw err; + } + const result$1 = result; + return result$1; +}(); +background; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2dyb3VuZC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3d4dEAwLjE5LjIzX0B0eXBlcytub2RlQDE4LjE5LjU3X3JvbGx1cEA0LjI5LjFfeWFtbEAyLjYuMC9ub2RlX21vZHVsZXMvd3h0L2Rpc3Qvc2FuZGJveC9kZWZpbmUtYmFja2dyb3VuZC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHdlYmV4dC1jb3JlK21hdGNoLXBhdHRlcm5zQDEuMC4zL25vZGVfbW9kdWxlcy9Ad2ViZXh0LWNvcmUvbWF0Y2gtcGF0dGVybnMvbGliL2luZGV4LmpzIiwiLi4vLi4vc3JjL2xvZ3MudHN4IiwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2RlZGVudEAwLjcuMC9ub2RlX21vZHVsZXMvZGVkZW50L2Rpc3QvZGVkZW50LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL29iamVjdG9yYXJyYXlAMS4wLjUvbm9kZV9tb2R1bGVzL29iamVjdG9yYXJyYXkvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vZmFzdC1qc29uLXBhcnNlQDEuMC4zL25vZGVfbW9kdWxlcy9mYXN0LWpzb24tcGFyc2UvcGFyc2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vZW5kZW50QDIuMS4wL25vZGVfbW9kdWxlcy9lbmRlbnQvbGliL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL29iamVjdC1oYXNoQDMuMC4wL25vZGVfbW9kdWxlcy9vYmplY3QtaGFzaC9kaXN0L29iamVjdF9oYXNoLmpzIiwiLi4vLi4vc3JjL2NvbmZpZy9wcm9tcHRzL2RlZmF1bHQudHMiLCIuLi8uLi9zcmMvbGliL2dldFN0b3JlZFByb21wdHMudHMiLCIuLi8uLi9zcmMvZW50cnlwb2ludHMvYmFja2dyb3VuZC9xdWljay1tZW51L2NyZWF0ZUNvbnRleHRNZW51LnRzIiwiLi4vLi4vc3JjL2VudHJ5cG9pbnRzL2JhY2tncm91bmQvcXVpY2stbWVudS9mb3J3YXJkQ29udGV4dE1lbnUudHMiLCIuLi8uLi9zcmMvZW50cnlwb2ludHMvYmFja2dyb3VuZC9zaWRlYmFyL2NhcHR1cmVTY3JlZW5MaXN0ZW5lci50cyIsIi4uLy4uL3NyYy9lbnRyeXBvaW50cy9iYWNrZ3JvdW5kL3NpZGViYXIvc2VuZFNpZGViYXJTaG9ydGN1dC50cyIsIi4uLy4uL3NyYy9lbnRyeXBvaW50cy9iYWNrZ3JvdW5kL3NpZGViYXIvc2lkZWJhclRvZ2dsZUxpc3RlbmVycy50cyIsIi4uLy4uL3NyYy9lbnRyeXBvaW50cy9iYWNrZ3JvdW5kL2luZGV4LnRzIiwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3dlYmV4dGVuc2lvbi1wb2x5ZmlsbEAwLjEyLjAvbm9kZV9tb2R1bGVzL3dlYmV4dGVuc2lvbi1wb2x5ZmlsbC9kaXN0L2Jyb3dzZXItcG9seWZpbGwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vd3h0QDAuMTkuMjNfQHR5cGVzK25vZGVAMTguMTkuNTdfcm9sbHVwQDQuMjkuMV95YW1sQDIuNi4wL25vZGVfbW9kdWxlcy93eHQvZGlzdC9icm93c2VyL2luZGV4Lm1qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZGVmaW5lQmFja2dyb3VuZChhcmcpIHtcbiAgaWYgKGFyZyA9PSBudWxsIHx8IHR5cGVvZiBhcmcgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHsgbWFpbjogYXJnIH07XG4gIHJldHVybiBhcmc7XG59XG4iLCIvLyBzcmMvaW5kZXgudHNcbnZhciBfTWF0Y2hQYXR0ZXJuID0gY2xhc3Mge1xuICBjb25zdHJ1Y3RvcihtYXRjaFBhdHRlcm4pIHtcbiAgICBpZiAobWF0Y2hQYXR0ZXJuID09PSBcIjxhbGxfdXJscz5cIikge1xuICAgICAgdGhpcy5pc0FsbFVybHMgPSB0cnVlO1xuICAgICAgdGhpcy5wcm90b2NvbE1hdGNoZXMgPSBbLi4uX01hdGNoUGF0dGVybi5QUk9UT0NPTFNdO1xuICAgICAgdGhpcy5ob3N0bmFtZU1hdGNoID0gXCIqXCI7XG4gICAgICB0aGlzLnBhdGhuYW1lTWF0Y2ggPSBcIipcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZ3JvdXBzID0gLyguKik6XFwvXFwvKC4qPykoXFwvLiopLy5leGVjKG1hdGNoUGF0dGVybik7XG4gICAgICBpZiAoZ3JvdXBzID09IG51bGwpXG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkTWF0Y2hQYXR0ZXJuKG1hdGNoUGF0dGVybiwgXCJJbmNvcnJlY3QgZm9ybWF0XCIpO1xuICAgICAgY29uc3QgW18sIHByb3RvY29sLCBob3N0bmFtZSwgcGF0aG5hbWVdID0gZ3JvdXBzO1xuICAgICAgdmFsaWRhdGVQcm90b2NvbChtYXRjaFBhdHRlcm4sIHByb3RvY29sKTtcbiAgICAgIHZhbGlkYXRlSG9zdG5hbWUobWF0Y2hQYXR0ZXJuLCBob3N0bmFtZSk7XG4gICAgICB2YWxpZGF0ZVBhdGhuYW1lKG1hdGNoUGF0dGVybiwgcGF0aG5hbWUpO1xuICAgICAgdGhpcy5wcm90b2NvbE1hdGNoZXMgPSBwcm90b2NvbCA9PT0gXCIqXCIgPyBbXCJodHRwXCIsIFwiaHR0cHNcIl0gOiBbcHJvdG9jb2xdO1xuICAgICAgdGhpcy5ob3N0bmFtZU1hdGNoID0gaG9zdG5hbWU7XG4gICAgICB0aGlzLnBhdGhuYW1lTWF0Y2ggPSBwYXRobmFtZTtcbiAgICB9XG4gIH1cbiAgaW5jbHVkZXModXJsKSB7XG4gICAgaWYgKHRoaXMuaXNBbGxVcmxzKVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgY29uc3QgdSA9IHR5cGVvZiB1cmwgPT09IFwic3RyaW5nXCIgPyBuZXcgVVJMKHVybCkgOiB1cmwgaW5zdGFuY2VvZiBMb2NhdGlvbiA/IG5ldyBVUkwodXJsLmhyZWYpIDogdXJsO1xuICAgIHJldHVybiAhIXRoaXMucHJvdG9jb2xNYXRjaGVzLmZpbmQoKHByb3RvY29sKSA9PiB7XG4gICAgICBpZiAocHJvdG9jb2wgPT09IFwiaHR0cFwiKVxuICAgICAgICByZXR1cm4gdGhpcy5pc0h0dHBNYXRjaCh1KTtcbiAgICAgIGlmIChwcm90b2NvbCA9PT0gXCJodHRwc1wiKVxuICAgICAgICByZXR1cm4gdGhpcy5pc0h0dHBzTWF0Y2godSk7XG4gICAgICBpZiAocHJvdG9jb2wgPT09IFwiZmlsZVwiKVxuICAgICAgICByZXR1cm4gdGhpcy5pc0ZpbGVNYXRjaCh1KTtcbiAgICAgIGlmIChwcm90b2NvbCA9PT0gXCJmdHBcIilcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNGdHBNYXRjaCh1KTtcbiAgICAgIGlmIChwcm90b2NvbCA9PT0gXCJ1cm5cIilcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNVcm5NYXRjaCh1KTtcbiAgICB9KTtcbiAgfVxuICBpc0h0dHBNYXRjaCh1cmwpIHtcbiAgICByZXR1cm4gdXJsLnByb3RvY29sID09PSBcImh0dHA6XCIgJiYgdGhpcy5pc0hvc3RQYXRoTWF0Y2godXJsKTtcbiAgfVxuICBpc0h0dHBzTWF0Y2godXJsKSB7XG4gICAgcmV0dXJuIHVybC5wcm90b2NvbCA9PT0gXCJodHRwczpcIiAmJiB0aGlzLmlzSG9zdFBhdGhNYXRjaCh1cmwpO1xuICB9XG4gIGlzSG9zdFBhdGhNYXRjaCh1cmwpIHtcbiAgICBpZiAoIXRoaXMuaG9zdG5hbWVNYXRjaCB8fCAhdGhpcy5wYXRobmFtZU1hdGNoKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGhvc3RuYW1lTWF0Y2hSZWdleHMgPSBbXG4gICAgICB0aGlzLmNvbnZlcnRQYXR0ZXJuVG9SZWdleCh0aGlzLmhvc3RuYW1lTWF0Y2gpLFxuICAgICAgdGhpcy5jb252ZXJ0UGF0dGVyblRvUmVnZXgodGhpcy5ob3N0bmFtZU1hdGNoLnJlcGxhY2UoL15cXCpcXC4vLCBcIlwiKSlcbiAgICBdO1xuICAgIGNvbnN0IHBhdGhuYW1lTWF0Y2hSZWdleCA9IHRoaXMuY29udmVydFBhdHRlcm5Ub1JlZ2V4KHRoaXMucGF0aG5hbWVNYXRjaCk7XG4gICAgcmV0dXJuICEhaG9zdG5hbWVNYXRjaFJlZ2V4cy5maW5kKChyZWdleCkgPT4gcmVnZXgudGVzdCh1cmwuaG9zdG5hbWUpKSAmJiBwYXRobmFtZU1hdGNoUmVnZXgudGVzdCh1cmwucGF0aG5hbWUpO1xuICB9XG4gIGlzRmlsZU1hdGNoKHVybCkge1xuICAgIHRocm93IEVycm9yKFwiTm90IGltcGxlbWVudGVkOiBmaWxlOi8vIHBhdHRlcm4gbWF0Y2hpbmcuIE9wZW4gYSBQUiB0byBhZGQgc3VwcG9ydFwiKTtcbiAgfVxuICBpc0Z0cE1hdGNoKHVybCkge1xuICAgIHRocm93IEVycm9yKFwiTm90IGltcGxlbWVudGVkOiBmdHA6Ly8gcGF0dGVybiBtYXRjaGluZy4gT3BlbiBhIFBSIHRvIGFkZCBzdXBwb3J0XCIpO1xuICB9XG4gIGlzVXJuTWF0Y2godXJsKSB7XG4gICAgdGhyb3cgRXJyb3IoXCJOb3QgaW1wbGVtZW50ZWQ6IHVybjovLyBwYXR0ZXJuIG1hdGNoaW5nLiBPcGVuIGEgUFIgdG8gYWRkIHN1cHBvcnRcIik7XG4gIH1cbiAgY29udmVydFBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4pIHtcbiAgICBjb25zdCBlc2NhcGVkID0gdGhpcy5lc2NhcGVGb3JSZWdleChwYXR0ZXJuKTtcbiAgICBjb25zdCBzdGFyc1JlcGxhY2VkID0gZXNjYXBlZC5yZXBsYWNlKC9cXFxcXFwqL2csIFwiLipcIik7XG4gICAgcmV0dXJuIFJlZ0V4cChgXiR7c3RhcnNSZXBsYWNlZH0kYCk7XG4gIH1cbiAgZXNjYXBlRm9yUmVnZXgoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgXCJcXFxcJCZcIik7XG4gIH1cbn07XG52YXIgTWF0Y2hQYXR0ZXJuID0gX01hdGNoUGF0dGVybjtcbk1hdGNoUGF0dGVybi5QUk9UT0NPTFMgPSBbXCJodHRwXCIsIFwiaHR0cHNcIiwgXCJmaWxlXCIsIFwiZnRwXCIsIFwidXJuXCJdO1xudmFyIEludmFsaWRNYXRjaFBhdHRlcm4gPSBjbGFzcyBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWF0Y2hQYXR0ZXJuLCByZWFzb24pIHtcbiAgICBzdXBlcihgSW52YWxpZCBtYXRjaCBwYXR0ZXJuIFwiJHttYXRjaFBhdHRlcm59XCI6ICR7cmVhc29ufWApO1xuICB9XG59O1xuZnVuY3Rpb24gdmFsaWRhdGVQcm90b2NvbChtYXRjaFBhdHRlcm4sIHByb3RvY29sKSB7XG4gIGlmICghTWF0Y2hQYXR0ZXJuLlBST1RPQ09MUy5pbmNsdWRlcyhwcm90b2NvbCkgJiYgcHJvdG9jb2wgIT09IFwiKlwiKVxuICAgIHRocm93IG5ldyBJbnZhbGlkTWF0Y2hQYXR0ZXJuKFxuICAgICAgbWF0Y2hQYXR0ZXJuLFxuICAgICAgYCR7cHJvdG9jb2x9IG5vdCBhIHZhbGlkIHByb3RvY29sICgke01hdGNoUGF0dGVybi5QUk9UT0NPTFMuam9pbihcIiwgXCIpfSlgXG4gICAgKTtcbn1cbmZ1bmN0aW9uIHZhbGlkYXRlSG9zdG5hbWUobWF0Y2hQYXR0ZXJuLCBob3N0bmFtZSkge1xuICBpZiAoaG9zdG5hbWUuaW5jbHVkZXMoXCI6XCIpKVxuICAgIHRocm93IG5ldyBJbnZhbGlkTWF0Y2hQYXR0ZXJuKG1hdGNoUGF0dGVybiwgYEhvc3RuYW1lIGNhbm5vdCBpbmNsdWRlIGEgcG9ydGApO1xuICBpZiAoaG9zdG5hbWUuaW5jbHVkZXMoXCIqXCIpICYmIGhvc3RuYW1lLmxlbmd0aCA+IDEgJiYgIWhvc3RuYW1lLnN0YXJ0c1dpdGgoXCIqLlwiKSlcbiAgICB0aHJvdyBuZXcgSW52YWxpZE1hdGNoUGF0dGVybihcbiAgICAgIG1hdGNoUGF0dGVybixcbiAgICAgIGBJZiB1c2luZyBhIHdpbGRjYXJkICgqKSwgaXQgbXVzdCBnbyBhdCB0aGUgc3RhcnQgb2YgdGhlIGhvc3RuYW1lYFxuICAgICk7XG59XG5mdW5jdGlvbiB2YWxpZGF0ZVBhdGhuYW1lKG1hdGNoUGF0dGVybiwgcGF0aG5hbWUpIHtcbiAgcmV0dXJuO1xufVxuZXhwb3J0IHtcbiAgSW52YWxpZE1hdGNoUGF0dGVybixcbiAgTWF0Y2hQYXR0ZXJuXG59O1xuIiwiY29uc3QgbG9nb1RleHQgPVxuICBcIiBfX19fICAgICAgICAgICAgICAgICAgIF9cXG4vIF9fX3wgXyAgIF8gXyBfXyAgIF9fXyhfKSBfXyBfXFxuXFxcXF9fXyBcXFxcfCB8IHwgfCAnXyBcXFxcIC8gX198IHwvIF9gIHxcXG4gX19fKSB8IHxffCB8IHwgfCB8IChfX3wgfCAoX3wgfFxcbnxfX19fLyBcXFxcX18sIHxffCB8X3xcXFxcX19ffF98XFxcXF9fLF98XFxuICAgICAgIHxfX18vXCJcblxuY29uc3QgbXNnVGV4dCA9IChtc2c6IHN0cmluZykgPT4gYFxcbiR7JyAnLnJlcGVhdCgxNCAtIG1zZy5sZW5ndGggLyAyKX1bJHttc2d9XWBcblxuZXhwb3J0IGNvbnN0IGNvbnRlbnRTY3JpcHRMb2cgPSAoaXRlbTogc3RyaW5nKSA9PiB7XG4gIGNvbnNvbGUubG9nKGxvZ29UZXh0LCBtc2dUZXh0KGAke2l0ZW19IFNjcmlwdCBMb2FkZWRgKSlcbn1cblxuZXhwb3J0IGNvbnN0IGJhY2tncm91bmRMb2cgPSAoKSA9PiB7XG4gIGNvbnNvbGUubG9nKGxvZ29UZXh0LCBtc2dUZXh0KCdCYWNrZ3JvdW5kIExvYWRlZCcpKVxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIGRlZGVudChzdHJpbmdzKSB7XG5cbiAgdmFyIHJhdyA9IHZvaWQgMDtcbiAgaWYgKHR5cGVvZiBzdHJpbmdzID09PSBcInN0cmluZ1wiKSB7XG4gICAgLy8gZGVkZW50IGNhbiBiZSB1c2VkIGFzIGEgcGxhaW4gZnVuY3Rpb25cbiAgICByYXcgPSBbc3RyaW5nc107XG4gIH0gZWxzZSB7XG4gICAgcmF3ID0gc3RyaW5ncy5yYXc7XG4gIH1cblxuICAvLyBmaXJzdCwgcGVyZm9ybSBpbnRlcnBvbGF0aW9uXG4gIHZhciByZXN1bHQgPSBcIlwiO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHJhdy5sZW5ndGg7IGkrKykge1xuICAgIHJlc3VsdCArPSByYXdbaV0uXG4gICAgLy8gam9pbiBsaW5lcyB3aGVuIHRoZXJlIGlzIGEgc3VwcHJlc3NlZCBuZXdsaW5lXG4gICAgcmVwbGFjZSgvXFxcXFxcblsgXFx0XSovZywgXCJcIikuXG5cbiAgICAvLyBoYW5kbGUgZXNjYXBlZCBiYWNrdGlja3NcbiAgICByZXBsYWNlKC9cXFxcYC9nLCBcImBcIik7XG5cbiAgICBpZiAoaSA8IChhcmd1bWVudHMubGVuZ3RoIDw9IDEgPyAwIDogYXJndW1lbnRzLmxlbmd0aCAtIDEpKSB7XG4gICAgICByZXN1bHQgKz0gYXJndW1lbnRzLmxlbmd0aCA8PSBpICsgMSA/IHVuZGVmaW5lZCA6IGFyZ3VtZW50c1tpICsgMV07XG4gICAgfVxuICB9XG5cbiAgLy8gbm93IHN0cmlwIGluZGVudGF0aW9uXG4gIHZhciBsaW5lcyA9IHJlc3VsdC5zcGxpdChcIlxcblwiKTtcbiAgdmFyIG1pbmRlbnQgPSBudWxsO1xuICBsaW5lcy5mb3JFYWNoKGZ1bmN0aW9uIChsKSB7XG4gICAgdmFyIG0gPSBsLm1hdGNoKC9eKFxccyspXFxTKy8pO1xuICAgIGlmIChtKSB7XG4gICAgICB2YXIgaW5kZW50ID0gbVsxXS5sZW5ndGg7XG4gICAgICBpZiAoIW1pbmRlbnQpIHtcbiAgICAgICAgLy8gdGhpcyBpcyB0aGUgZmlyc3QgaW5kZW50ZWQgbGluZVxuICAgICAgICBtaW5kZW50ID0gaW5kZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWluZGVudCA9IE1hdGgubWluKG1pbmRlbnQsIGluZGVudCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICBpZiAobWluZGVudCAhPT0gbnVsbCkge1xuICAgIHJlc3VsdCA9IGxpbmVzLm1hcChmdW5jdGlvbiAobCkge1xuICAgICAgcmV0dXJuIGxbMF0gPT09IFwiIFwiID8gbC5zbGljZShtaW5kZW50KSA6IGw7XG4gICAgfSkuam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIC8vIGRlZGVudCBlYXRzIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UgdG9vXG4gIHJlc3VsdCA9IHJlc3VsdC50cmltKCk7XG5cbiAgLy8gaGFuZGxlIGVzY2FwZWQgbmV3bGluZXMgYXQgdGhlIGVuZCB0byBlbnN1cmUgdGhleSBkb24ndCBnZXQgc3RyaXBwZWQgdG9vXG4gIHJldHVybiByZXN1bHQucmVwbGFjZSgvXFxcXG4vZywgXCJcXG5cIik7XG59XG5cbmlmICh0eXBlb2YgbW9kdWxlICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gZGVkZW50O1xufVxuIiwibW9kdWxlLmV4cG9ydHMgPSAodmFsKSA9PiB7XG4gIHJldHVybiB2YWwgIT0gbnVsbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWwuY29uc3RydWN0b3IgIT09IFJlZ0V4cFxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmZ1bmN0aW9uIFBhcnNlIChkYXRhKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBQYXJzZSkpIHtcbiAgICByZXR1cm4gbmV3IFBhcnNlKGRhdGEpXG4gIH1cbiAgdGhpcy5lcnIgPSBudWxsXG4gIHRoaXMudmFsdWUgPSBudWxsXG4gIHRyeSB7XG4gICAgdGhpcy52YWx1ZSA9IEpTT04ucGFyc2UoZGF0YSlcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5lcnIgPSBlcnJcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFBhcnNlXG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmNvbnN0IGRlZGVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJkZWRlbnRcIikpO1xuY29uc3Qgb2JqZWN0b3JhcnJheV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJvYmplY3RvcmFycmF5XCIpKTtcbmNvbnN0IGZhc3RfanNvbl9wYXJzZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJmYXN0LWpzb24tcGFyc2VcIikpO1xuY29uc3QgRU5ERU5UX0lEID0gXCJ0d2haTnd4STFhRkczcjRcIjtcbmZ1bmN0aW9uIGVuZGVudChzdHJpbmdzLCAuLi52YWx1ZXMpIHtcbiAgICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmluZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzdWx0ICs9IHN0cmluZ3NbaV07XG4gICAgICAgIGlmIChpIDwgdmFsdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gdmFsdWVzW2ldO1xuICAgICAgICAgICAgbGV0IGlzSnNvbiA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKGZhc3RfanNvbl9wYXJzZV8xLmRlZmF1bHQodmFsdWUpLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBmYXN0X2pzb25fcGFyc2VfMS5kZWZhdWx0KHZhbHVlKS52YWx1ZTtcbiAgICAgICAgICAgICAgICBpc0pzb24gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCh2YWx1ZSAmJiB2YWx1ZVtFTkRFTlRfSURdKSB8fCBpc0pzb24pIHtcbiAgICAgICAgICAgICAgICBsZXQgcmF3bGluZXMgPSByZXN1bHQuc3BsaXQoXCJcXG5cIik7XG4gICAgICAgICAgICAgICAgbGV0IGwgPSByYXdsaW5lc1tyYXdsaW5lcy5sZW5ndGggLSAxXS5zZWFyY2goL1xcUy8pO1xuICAgICAgICAgICAgICAgIGxldCBlbmRlbnRhdGlvbiA9IGwgPiAwID8gXCIgXCIucmVwZWF0KGwpIDogXCJcIjtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWVKc29uID0gaXNKc29uXG4gICAgICAgICAgICAgICAgICAgID8gSlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsIDIpXG4gICAgICAgICAgICAgICAgICAgIDogdmFsdWVbRU5ERU5UX0lEXTtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWVMaW5lcyA9IHZhbHVlSnNvbi5zcGxpdChcIlxcblwiKTtcbiAgICAgICAgICAgICAgICB2YWx1ZUxpbmVzLmZvckVhY2goKGwsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBcIlxcblwiICsgZW5kZW50YXRpb24gKyBsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS5pbmNsdWRlcyhcIlxcblwiKSkge1xuICAgICAgICAgICAgICAgIGxldCBlbmRlbnRhdGlvbnMgPSByZXN1bHQubWF0Y2goLyg/Ol58XFxuKSggKikkLyk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZW5kZW50YXRpb24gPSBlbmRlbnRhdGlvbnMgPyBlbmRlbnRhdGlvbnNbMV0gOiBcIlwiO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpdChcIlxcblwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoc3RyLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHIgPSBFTkRFTlRfSUQgKyBzdHI7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gMCA/IHN0ciA6IGAke2VuZGVudGF0aW9ufSR7c3RyfWA7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuam9pbihcIlxcblwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVzdWx0ID0gZGVkZW50XzEuZGVmYXVsdChyZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQuc3BsaXQoRU5ERU5UX0lEKS5qb2luKFwiXCIpO1xufVxuZW5kZW50LnByZXR0eSA9IChkYXRhKSA9PiB7XG4gICAgcmV0dXJuIG9iamVjdG9yYXJyYXlfMS5kZWZhdWx0KGRhdGEpXG4gICAgICAgID8geyBbRU5ERU5UX0lEXTogSlNPTi5zdHJpbmdpZnkoZGF0YSwgbnVsbCwgMikgfVxuICAgICAgICA6IGRhdGE7XG59O1xuZXhwb3J0cy5kZWZhdWx0ID0gZW5kZW50O1xuIiwiIWZ1bmN0aW9uKGUpe3ZhciB0O1wib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKGUpOihcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3Q9d2luZG93OlwidW5kZWZpbmVkXCIhPXR5cGVvZiBnbG9iYWw/dD1nbG9iYWw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGYmJih0PXNlbGYpLHQub2JqZWN0SGFzaD1lKCkpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiByKG8saSx1KXtmdW5jdGlvbiBzKG4sZSl7aWYoIWlbbl0pe2lmKCFvW25dKXt2YXIgdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFlJiZ0KXJldHVybiB0KG4sITApO2lmKGEpcmV0dXJuIGEobiwhMCk7dGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIituK1wiJ1wiKX1lPWlbbl09e2V4cG9ydHM6e319O29bbl1bMF0uY2FsbChlLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIHQ9b1tuXVsxXVtlXTtyZXR1cm4gcyh0fHxlKX0sZSxlLmV4cG9ydHMscixvLGksdSl9cmV0dXJuIGlbbl0uZXhwb3J0c31mb3IodmFyIGE9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxlPTA7ZTx1Lmxlbmd0aDtlKyspcyh1W2VdKTtyZXR1cm4gc30oezE6W2Z1bmN0aW9uKHcsYixtKXshZnVuY3Rpb24oZSxuLHMsYyxkLGgscCxnLHkpe1widXNlIHN0cmljdFwiO3ZhciByPXcoXCJjcnlwdG9cIik7ZnVuY3Rpb24gdChlLHQpe3Q9dShlLHQpO3ZhciBuO3JldHVybiB2b2lkIDA9PT0obj1cInBhc3N0aHJvdWdoXCIhPT10LmFsZ29yaXRobT9yLmNyZWF0ZUhhc2godC5hbGdvcml0aG0pOm5ldyBsKS53cml0ZSYmKG4ud3JpdGU9bi51cGRhdGUsbi5lbmQ9bi51cGRhdGUpLGYodCxuKS5kaXNwYXRjaChlKSxuLnVwZGF0ZXx8bi5lbmQoXCJcIiksbi5kaWdlc3Q/bi5kaWdlc3QoXCJidWZmZXJcIj09PXQuZW5jb2Rpbmc/dm9pZCAwOnQuZW5jb2RpbmcpOihlPW4ucmVhZCgpLFwiYnVmZmVyXCIhPT10LmVuY29kaW5nP2UudG9TdHJpbmcodC5lbmNvZGluZyk6ZSl9KG09Yi5leHBvcnRzPXQpLnNoYTE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSl9LG0ua2V5cz1mdW5jdGlvbihlKXtyZXR1cm4gdChlLHtleGNsdWRlVmFsdWVzOiEwLGFsZ29yaXRobTpcInNoYTFcIixlbmNvZGluZzpcImhleFwifSl9LG0uTUQ1PWZ1bmN0aW9uKGUpe3JldHVybiB0KGUse2FsZ29yaXRobTpcIm1kNVwiLGVuY29kaW5nOlwiaGV4XCJ9KX0sbS5rZXlzTUQ1PWZ1bmN0aW9uKGUpe3JldHVybiB0KGUse2FsZ29yaXRobTpcIm1kNVwiLGVuY29kaW5nOlwiaGV4XCIsZXhjbHVkZVZhbHVlczohMH0pfTt2YXIgbz1yLmdldEhhc2hlcz9yLmdldEhhc2hlcygpLnNsaWNlKCk6W1wic2hhMVwiLFwibWQ1XCJdLGk9KG8ucHVzaChcInBhc3N0aHJvdWdoXCIpLFtcImJ1ZmZlclwiLFwiaGV4XCIsXCJiaW5hcnlcIixcImJhc2U2NFwiXSk7ZnVuY3Rpb24gdShlLHQpe3ZhciBuPXt9O2lmKG4uYWxnb3JpdGhtPSh0PXR8fHt9KS5hbGdvcml0aG18fFwic2hhMVwiLG4uZW5jb2Rpbmc9dC5lbmNvZGluZ3x8XCJoZXhcIixuLmV4Y2x1ZGVWYWx1ZXM9ISF0LmV4Y2x1ZGVWYWx1ZXMsbi5hbGdvcml0aG09bi5hbGdvcml0aG0udG9Mb3dlckNhc2UoKSxuLmVuY29kaW5nPW4uZW5jb2RpbmcudG9Mb3dlckNhc2UoKSxuLmlnbm9yZVVua25vd249ITA9PT10Lmlnbm9yZVVua25vd24sbi5yZXNwZWN0VHlwZT0hMSE9PXQucmVzcGVjdFR5cGUsbi5yZXNwZWN0RnVuY3Rpb25OYW1lcz0hMSE9PXQucmVzcGVjdEZ1bmN0aW9uTmFtZXMsbi5yZXNwZWN0RnVuY3Rpb25Qcm9wZXJ0aWVzPSExIT09dC5yZXNwZWN0RnVuY3Rpb25Qcm9wZXJ0aWVzLG4udW5vcmRlcmVkQXJyYXlzPSEwPT09dC51bm9yZGVyZWRBcnJheXMsbi51bm9yZGVyZWRTZXRzPSExIT09dC51bm9yZGVyZWRTZXRzLG4udW5vcmRlcmVkT2JqZWN0cz0hMSE9PXQudW5vcmRlcmVkT2JqZWN0cyxuLnJlcGxhY2VyPXQucmVwbGFjZXJ8fHZvaWQgMCxuLmV4Y2x1ZGVLZXlzPXQuZXhjbHVkZUtleXN8fHZvaWQgMCx2b2lkIDA9PT1lKXRocm93IG5ldyBFcnJvcihcIk9iamVjdCBhcmd1bWVudCByZXF1aXJlZC5cIik7Zm9yKHZhciByPTA7cjxvLmxlbmd0aDsrK3Ipb1tyXS50b0xvd2VyQ2FzZSgpPT09bi5hbGdvcml0aG0udG9Mb3dlckNhc2UoKSYmKG4uYWxnb3JpdGhtPW9bcl0pO2lmKC0xPT09by5pbmRleE9mKG4uYWxnb3JpdGhtKSl0aHJvdyBuZXcgRXJyb3IoJ0FsZ29yaXRobSBcIicrbi5hbGdvcml0aG0rJ1wiICBub3Qgc3VwcG9ydGVkLiBzdXBwb3J0ZWQgdmFsdWVzOiAnK28uam9pbihcIiwgXCIpKTtpZigtMT09PWkuaW5kZXhPZihuLmVuY29kaW5nKSYmXCJwYXNzdGhyb3VnaFwiIT09bi5hbGdvcml0aG0pdGhyb3cgbmV3IEVycm9yKCdFbmNvZGluZyBcIicrbi5lbmNvZGluZysnXCIgIG5vdCBzdXBwb3J0ZWQuIHN1cHBvcnRlZCB2YWx1ZXM6ICcraS5qb2luKFwiLCBcIikpO3JldHVybiBufWZ1bmN0aW9uIGEoZSl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZSlyZXR1cm4gbnVsbCE9L15mdW5jdGlvblxccytcXHcqXFxzKlxcKFxccypcXClcXHMqe1xccytcXFtuYXRpdmUgY29kZVxcXVxccyt9JC9pLmV4ZWMoRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpfWZ1bmN0aW9uIGYobyx0LGkpe2k9aXx8W107ZnVuY3Rpb24gdShlKXtyZXR1cm4gdC51cGRhdGU/dC51cGRhdGUoZSxcInV0ZjhcIik6dC53cml0ZShlLFwidXRmOFwiKX1yZXR1cm57ZGlzcGF0Y2g6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXNbXCJfXCIrKG51bGw9PT0oZT1vLnJlcGxhY2VyP28ucmVwbGFjZXIoZSk6ZSk/XCJudWxsXCI6dHlwZW9mIGUpXShlKX0sX29iamVjdDpmdW5jdGlvbih0KXt2YXIgbixlPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KSxyPS9cXFtvYmplY3QgKC4qKVxcXS9pLmV4ZWMoZSk7cj0ocj1yP3JbMV06XCJ1bmtub3duOltcIitlK1wiXVwiKS50b0xvd2VyQ2FzZSgpO2lmKDA8PShlPWkuaW5kZXhPZih0KSkpcmV0dXJuIHRoaXMuZGlzcGF0Y2goXCJbQ0lSQ1VMQVI6XCIrZStcIl1cIik7aWYoaS5wdXNoKHQpLHZvaWQgMCE9PXMmJnMuaXNCdWZmZXImJnMuaXNCdWZmZXIodCkpcmV0dXJuIHUoXCJidWZmZXI6XCIpLHUodCk7aWYoXCJvYmplY3RcIj09PXJ8fFwiZnVuY3Rpb25cIj09PXJ8fFwiYXN5bmNmdW5jdGlvblwiPT09cilyZXR1cm4gZT1PYmplY3Qua2V5cyh0KSxvLnVub3JkZXJlZE9iamVjdHMmJihlPWUuc29ydCgpKSwhMT09PW8ucmVzcGVjdFR5cGV8fGEodCl8fGUuc3BsaWNlKDAsMCxcInByb3RvdHlwZVwiLFwiX19wcm90b19fXCIsXCJjb25zdHJ1Y3RvclwiKSxvLmV4Y2x1ZGVLZXlzJiYoZT1lLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hby5leGNsdWRlS2V5cyhlKX0pKSx1KFwib2JqZWN0OlwiK2UubGVuZ3RoK1wiOlwiKSxuPXRoaXMsZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe24uZGlzcGF0Y2goZSksdShcIjpcIiksby5leGNsdWRlVmFsdWVzfHxuLmRpc3BhdGNoKHRbZV0pLHUoXCIsXCIpfSk7aWYoIXRoaXNbXCJfXCIrcl0pe2lmKG8uaWdub3JlVW5rbm93bilyZXR1cm4gdShcIltcIityK1wiXVwiKTt0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gb2JqZWN0IHR5cGUgXCInK3IrJ1wiJyl9dGhpc1tcIl9cIityXSh0KX0sX2FycmF5OmZ1bmN0aW9uKGUsdCl7dD12b2lkIDAhPT10P3Q6ITEhPT1vLnVub3JkZXJlZEFycmF5czt2YXIgbj10aGlzO2lmKHUoXCJhcnJheTpcIitlLmxlbmd0aCtcIjpcIiksIXR8fGUubGVuZ3RoPD0xKXJldHVybiBlLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIG4uZGlzcGF0Y2goZSl9KTt2YXIgcj1bXSx0PWUubWFwKGZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBsLG49aS5zbGljZSgpO3JldHVybiBmKG8sdCxuKS5kaXNwYXRjaChlKSxyPXIuY29uY2F0KG4uc2xpY2UoaS5sZW5ndGgpKSx0LnJlYWQoKS50b1N0cmluZygpfSk7cmV0dXJuIGk9aS5jb25jYXQociksdC5zb3J0KCksdGhpcy5fYXJyYXkodCwhMSl9LF9kYXRlOmZ1bmN0aW9uKGUpe3JldHVybiB1KFwiZGF0ZTpcIitlLnRvSlNPTigpKX0sX3N5bWJvbDpmdW5jdGlvbihlKXtyZXR1cm4gdShcInN5bWJvbDpcIitlLnRvU3RyaW5nKCkpfSxfZXJyb3I6ZnVuY3Rpb24oZSl7cmV0dXJuIHUoXCJlcnJvcjpcIitlLnRvU3RyaW5nKCkpfSxfYm9vbGVhbjpmdW5jdGlvbihlKXtyZXR1cm4gdShcImJvb2w6XCIrZS50b1N0cmluZygpKX0sX3N0cmluZzpmdW5jdGlvbihlKXt1KFwic3RyaW5nOlwiK2UubGVuZ3RoK1wiOlwiKSx1KGUudG9TdHJpbmcoKSl9LF9mdW5jdGlvbjpmdW5jdGlvbihlKXt1KFwiZm46XCIpLGEoZSk/dGhpcy5kaXNwYXRjaChcIltuYXRpdmVdXCIpOnRoaXMuZGlzcGF0Y2goZS50b1N0cmluZygpKSwhMSE9PW8ucmVzcGVjdEZ1bmN0aW9uTmFtZXMmJnRoaXMuZGlzcGF0Y2goXCJmdW5jdGlvbi1uYW1lOlwiK1N0cmluZyhlLm5hbWUpKSxvLnJlc3BlY3RGdW5jdGlvblByb3BlcnRpZXMmJnRoaXMuX29iamVjdChlKX0sX251bWJlcjpmdW5jdGlvbihlKXtyZXR1cm4gdShcIm51bWJlcjpcIitlLnRvU3RyaW5nKCkpfSxfeG1sOmZ1bmN0aW9uKGUpe3JldHVybiB1KFwieG1sOlwiK2UudG9TdHJpbmcoKSl9LF9udWxsOmZ1bmN0aW9uKCl7cmV0dXJuIHUoXCJOdWxsXCIpfSxfdW5kZWZpbmVkOmZ1bmN0aW9uKCl7cmV0dXJuIHUoXCJVbmRlZmluZWRcIil9LF9yZWdleHA6ZnVuY3Rpb24oZSl7cmV0dXJuIHUoXCJyZWdleDpcIitlLnRvU3RyaW5nKCkpfSxfdWludDhhcnJheTpmdW5jdGlvbihlKXtyZXR1cm4gdShcInVpbnQ4YXJyYXk6XCIpLHRoaXMuZGlzcGF0Y2goQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSkpfSxfdWludDhjbGFtcGVkYXJyYXk6ZnVuY3Rpb24oZSl7cmV0dXJuIHUoXCJ1aW50OGNsYW1wZWRhcnJheTpcIiksdGhpcy5kaXNwYXRjaChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKSl9LF9pbnQ4YXJyYXk6ZnVuY3Rpb24oZSl7cmV0dXJuIHUoXCJpbnQ4YXJyYXk6XCIpLHRoaXMuZGlzcGF0Y2goQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSkpfSxfdWludDE2YXJyYXk6ZnVuY3Rpb24oZSl7cmV0dXJuIHUoXCJ1aW50MTZhcnJheTpcIiksdGhpcy5kaXNwYXRjaChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKSl9LF9pbnQxNmFycmF5OmZ1bmN0aW9uKGUpe3JldHVybiB1KFwiaW50MTZhcnJheTpcIiksdGhpcy5kaXNwYXRjaChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKSl9LF91aW50MzJhcnJheTpmdW5jdGlvbihlKXtyZXR1cm4gdShcInVpbnQzMmFycmF5OlwiKSx0aGlzLmRpc3BhdGNoKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpKX0sX2ludDMyYXJyYXk6ZnVuY3Rpb24oZSl7cmV0dXJuIHUoXCJpbnQzMmFycmF5OlwiKSx0aGlzLmRpc3BhdGNoKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpKX0sX2Zsb2F0MzJhcnJheTpmdW5jdGlvbihlKXtyZXR1cm4gdShcImZsb2F0MzJhcnJheTpcIiksdGhpcy5kaXNwYXRjaChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKSl9LF9mbG9hdDY0YXJyYXk6ZnVuY3Rpb24oZSl7cmV0dXJuIHUoXCJmbG9hdDY0YXJyYXk6XCIpLHRoaXMuZGlzcGF0Y2goQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSkpfSxfYXJyYXlidWZmZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIHUoXCJhcnJheWJ1ZmZlcjpcIiksdGhpcy5kaXNwYXRjaChuZXcgVWludDhBcnJheShlKSl9LF91cmw6ZnVuY3Rpb24oZSl7cmV0dXJuIHUoXCJ1cmw6XCIrZS50b1N0cmluZygpKX0sX21hcDpmdW5jdGlvbihlKXt1KFwibWFwOlwiKTtlPUFycmF5LmZyb20oZSk7cmV0dXJuIHRoaXMuX2FycmF5KGUsITEhPT1vLnVub3JkZXJlZFNldHMpfSxfc2V0OmZ1bmN0aW9uKGUpe3UoXCJzZXQ6XCIpO2U9QXJyYXkuZnJvbShlKTtyZXR1cm4gdGhpcy5fYXJyYXkoZSwhMSE9PW8udW5vcmRlcmVkU2V0cyl9LF9maWxlOmZ1bmN0aW9uKGUpe3JldHVybiB1KFwiZmlsZTpcIiksdGhpcy5kaXNwYXRjaChbZS5uYW1lLGUuc2l6ZSxlLnR5cGUsZS5sYXN0TW9kZmllZF0pfSxfYmxvYjpmdW5jdGlvbigpe2lmKG8uaWdub3JlVW5rbm93bilyZXR1cm4gdShcIltibG9iXVwiKTt0aHJvdyBFcnJvcignSGFzaGluZyBCbG9iIG9iamVjdHMgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWRcXG4oc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9wdWxlb3Mvb2JqZWN0LWhhc2gvaXNzdWVzLzI2KVxcblVzZSBcIm9wdGlvbnMucmVwbGFjZXJcIiBvciBcIm9wdGlvbnMuaWdub3JlVW5rbm93blwiXFxuJyl9LF9kb213aW5kb3c6ZnVuY3Rpb24oKXtyZXR1cm4gdShcImRvbXdpbmRvd1wiKX0sX2JpZ2ludDpmdW5jdGlvbihlKXtyZXR1cm4gdShcImJpZ2ludDpcIitlLnRvU3RyaW5nKCkpfSxfcHJvY2VzczpmdW5jdGlvbigpe3JldHVybiB1KFwicHJvY2Vzc1wiKX0sX3RpbWVyOmZ1bmN0aW9uKCl7cmV0dXJuIHUoXCJ0aW1lclwiKX0sX3BpcGU6ZnVuY3Rpb24oKXtyZXR1cm4gdShcInBpcGVcIil9LF90Y3A6ZnVuY3Rpb24oKXtyZXR1cm4gdShcInRjcFwiKX0sX3VkcDpmdW5jdGlvbigpe3JldHVybiB1KFwidWRwXCIpfSxfdHR5OmZ1bmN0aW9uKCl7cmV0dXJuIHUoXCJ0dHlcIil9LF9zdGF0d2F0Y2hlcjpmdW5jdGlvbigpe3JldHVybiB1KFwic3RhdHdhdGNoZXJcIil9LF9zZWN1cmVjb250ZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHUoXCJzZWN1cmVjb250ZXh0XCIpfSxfY29ubmVjdGlvbjpmdW5jdGlvbigpe3JldHVybiB1KFwiY29ubmVjdGlvblwiKX0sX3psaWI6ZnVuY3Rpb24oKXtyZXR1cm4gdShcInpsaWJcIil9LF9jb250ZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHUoXCJjb250ZXh0XCIpfSxfbm9kZXNjcmlwdDpmdW5jdGlvbigpe3JldHVybiB1KFwibm9kZXNjcmlwdFwiKX0sX2h0dHBwYXJzZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdShcImh0dHBwYXJzZXJcIil9LF9kYXRhdmlldzpmdW5jdGlvbigpe3JldHVybiB1KFwiZGF0YXZpZXdcIil9LF9zaWduYWw6ZnVuY3Rpb24oKXtyZXR1cm4gdShcInNpZ25hbFwiKX0sX2ZzZXZlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdShcImZzZXZlbnRcIil9LF90bHN3cmFwOmZ1bmN0aW9uKCl7cmV0dXJuIHUoXCJ0bHN3cmFwXCIpfX19ZnVuY3Rpb24gbCgpe3JldHVybntidWY6XCJcIix3cml0ZTpmdW5jdGlvbihlKXt0aGlzLmJ1Zis9ZX0sZW5kOmZ1bmN0aW9uKGUpe3RoaXMuYnVmKz1lfSxyZWFkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYnVmfX19bS53cml0ZVRvU3RyZWFtPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49dCx0PXt9KSxmKHQ9dShlLHQpLG4pLmRpc3BhdGNoKGUpfX0uY2FsbCh0aGlzLHcoXCJsWXBvSTJcIiksXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGY/c2VsZjpcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSx3KFwiYnVmZmVyXCIpLkJ1ZmZlcixhcmd1bWVudHNbM10sYXJndW1lbnRzWzRdLGFyZ3VtZW50c1s1XSxhcmd1bWVudHNbNl0sXCIvZmFrZV85YTVhYTQ5ZC5qc1wiLFwiL1wiKX0se2J1ZmZlcjozLGNyeXB0bzo1LGxZcG9JMjoxMX1dLDI6W2Z1bmN0aW9uKGUsdCxmKXshZnVuY3Rpb24oZSx0LG4scixvLGksdSxzLGEpeyFmdW5jdGlvbihlKXtcInVzZSBzdHJpY3RcIjt2YXIgYT1cInVuZGVmaW5lZFwiIT10eXBlb2YgVWludDhBcnJheT9VaW50OEFycmF5OkFycmF5LHQ9XCIrXCIuY2hhckNvZGVBdCgwKSxuPVwiL1wiLmNoYXJDb2RlQXQoMCkscj1cIjBcIi5jaGFyQ29kZUF0KDApLG89XCJhXCIuY2hhckNvZGVBdCgwKSxpPVwiQVwiLmNoYXJDb2RlQXQoMCksdT1cIi1cIi5jaGFyQ29kZUF0KDApLHM9XCJfXCIuY2hhckNvZGVBdCgwKTtmdW5jdGlvbiBmKGUpe2U9ZS5jaGFyQ29kZUF0KDApO3JldHVybiBlPT09dHx8ZT09PXU/NjI6ZT09PW58fGU9PT1zPzYzOmU8cj8tMTplPHIrMTA/ZS1yKzI2KzI2OmU8aSsyNj9lLWk6ZTxvKzI2P2UtbysyNjp2b2lkIDB9ZS50b0J5dGVBcnJheT1mdW5jdGlvbihlKXt2YXIgdCxuO2lmKDA8ZS5sZW5ndGglNCl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0XCIpO3ZhciByPWUubGVuZ3RoLHI9XCI9XCI9PT1lLmNoYXJBdChyLTIpPzI6XCI9XCI9PT1lLmNoYXJBdChyLTEpPzE6MCxvPW5ldyBhKDMqZS5sZW5ndGgvNC1yKSxpPTA8cj9lLmxlbmd0aC00OmUubGVuZ3RoLHU9MDtmdW5jdGlvbiBzKGUpe29bdSsrXT1lfWZvcih0PTA7dDxpO3QrPTQsMClzKCgxNjcxMTY4MCYobj1mKGUuY2hhckF0KHQpKTw8MTh8ZihlLmNoYXJBdCh0KzEpKTw8MTJ8ZihlLmNoYXJBdCh0KzIpKTw8NnxmKGUuY2hhckF0KHQrMykpKSk+PjE2KSxzKCg2NTI4MCZuKT4+OCkscygyNTUmbik7cmV0dXJuIDI9PXI/cygyNTUmKG49ZihlLmNoYXJBdCh0KSk8PDJ8ZihlLmNoYXJBdCh0KzEpKT4+NCkpOjE9PXImJihzKChuPWYoZS5jaGFyQXQodCkpPDwxMHxmKGUuY2hhckF0KHQrMSkpPDw0fGYoZS5jaGFyQXQodCsyKSk+PjIpPj44JjI1NSkscygyNTUmbikpLG99LGUuZnJvbUJ5dGVBcnJheT1mdW5jdGlvbihlKXt2YXIgdCxuLHIsbyxpPWUubGVuZ3RoJTMsdT1cIlwiO2Z1bmN0aW9uIHMoZSl7cmV0dXJuXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvXCIuY2hhckF0KGUpfWZvcih0PTAscj1lLmxlbmd0aC1pO3Q8cjt0Kz0zKW49KGVbdF08PDE2KSsoZVt0KzFdPDw4KStlW3QrMl0sdSs9cygobz1uKT4+MTgmNjMpK3Mobz4+MTImNjMpK3Mobz4+NiY2Mykrcyg2MyZvKTtzd2l0Y2goaSl7Y2FzZSAxOnU9KHUrPXMoKG49ZVtlLmxlbmd0aC0xXSk+PjIpKStzKG48PDQmNjMpK1wiPT1cIjticmVhaztjYXNlIDI6dT0odT0odSs9cygobj0oZVtlLmxlbmd0aC0yXTw8OCkrZVtlLmxlbmd0aC0xXSk+PjEwKSkrcyhuPj40JjYzKSkrcyhuPDwyJjYzKStcIj1cIn1yZXR1cm4gdX19KHZvaWQgMD09PWY/dGhpcy5iYXNlNjRqcz17fTpmKX0uY2FsbCh0aGlzLGUoXCJsWXBvSTJcIiksXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGY/c2VsZjpcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSxlKFwiYnVmZmVyXCIpLkJ1ZmZlcixhcmd1bWVudHNbM10sYXJndW1lbnRzWzRdLGFyZ3VtZW50c1s1XSxhcmd1bWVudHNbNl0sXCIvbm9kZV9tb2R1bGVzL2d1bHAtYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvYmFzZTY0LWpzL2xpYi9iNjQuanNcIixcIi9ub2RlX21vZHVsZXMvZ3VscC1icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9iYXNlNjQtanMvbGliXCIpfSx7YnVmZmVyOjMsbFlwb0kyOjExfV0sMzpbZnVuY3Rpb24oTyxlLEgpeyFmdW5jdGlvbihlLG4sZixyLGgscCxnLHksdyl7dmFyIGE9TyhcImJhc2U2NC1qc1wiKSxpPU8oXCJpZWVlNzU0XCIpO2Z1bmN0aW9uIGYoZSx0LG4pe2lmKCEodGhpcyBpbnN0YW5jZW9mIGYpKXJldHVybiBuZXcgZihlLHQsbik7dmFyIHIsbyxpLHUscz10eXBlb2YgZTtpZihcImJhc2U2NFwiPT09dCYmXCJzdHJpbmdcIj09cylmb3IoZT0odT1lKS50cmltP3UudHJpbSgpOnUucmVwbGFjZSgvXlxccyt8XFxzKyQvZyxcIlwiKTtlLmxlbmd0aCU0IT0wOyllKz1cIj1cIjtpZihcIm51bWJlclwiPT1zKXI9aihlKTtlbHNlIGlmKFwic3RyaW5nXCI9PXMpcj1mLmJ5dGVMZW5ndGgoZSx0KTtlbHNle2lmKFwib2JqZWN0XCIhPXMpdGhyb3cgbmV3IEVycm9yKFwiRmlyc3QgYXJndW1lbnQgbmVlZHMgdG8gYmUgYSBudW1iZXIsIGFycmF5IG9yIHN0cmluZy5cIik7cj1qKGUubGVuZ3RoKX1pZihmLl91c2VUeXBlZEFycmF5cz9vPWYuX2F1Z21lbnQobmV3IFVpbnQ4QXJyYXkocikpOigobz10aGlzKS5sZW5ndGg9cixvLl9pc0J1ZmZlcj0hMCksZi5fdXNlVHlwZWRBcnJheXMmJlwibnVtYmVyXCI9PXR5cGVvZiBlLmJ5dGVMZW5ndGgpby5fc2V0KGUpO2Vsc2UgaWYoQyh1PWUpfHxmLmlzQnVmZmVyKHUpfHx1JiZcIm9iamVjdFwiPT10eXBlb2YgdSYmXCJudW1iZXJcIj09dHlwZW9mIHUubGVuZ3RoKWZvcihpPTA7aTxyO2krKylmLmlzQnVmZmVyKGUpP29baV09ZS5yZWFkVUludDgoaSk6b1tpXT1lW2ldO2Vsc2UgaWYoXCJzdHJpbmdcIj09cylvLndyaXRlKGUsMCx0KTtlbHNlIGlmKFwibnVtYmVyXCI9PXMmJiFmLl91c2VUeXBlZEFycmF5cyYmIW4pZm9yKGk9MDtpPHI7aSsrKW9baV09MDtyZXR1cm4gb31mdW5jdGlvbiBiKGUsdCxuLHIpe3JldHVybiBmLl9jaGFyc1dyaXR0ZW49YyhmdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0wO248ZS5sZW5ndGg7bisrKXQucHVzaCgyNTUmZS5jaGFyQ29kZUF0KG4pKTtyZXR1cm4gdH0odCksZSxuLHIpfWZ1bmN0aW9uIG0oZSx0LG4scil7cmV0dXJuIGYuX2NoYXJzV3JpdHRlbj1jKGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuLHI9W10sbz0wO288ZS5sZW5ndGg7bysrKW49ZS5jaGFyQ29kZUF0KG8pLHQ9bj4+OCxuPW4lMjU2LHIucHVzaChuKSxyLnB1c2godCk7cmV0dXJuIHJ9KHQpLGUsbixyKX1mdW5jdGlvbiB2KGUsdCxuKXt2YXIgcj1cIlwiO249TWF0aC5taW4oZS5sZW5ndGgsbik7Zm9yKHZhciBvPXQ7bzxuO28rKylyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGVbb10pO3JldHVybiByfWZ1bmN0aW9uIG8oZSx0LG4scil7cnx8KGQoXCJib29sZWFuXCI9PXR5cGVvZiBuLFwibWlzc2luZyBvciBpbnZhbGlkIGVuZGlhblwiKSxkKG51bGwhPXQsXCJtaXNzaW5nIG9mZnNldFwiKSxkKHQrMTxlLmxlbmd0aCxcIlRyeWluZyB0byByZWFkIGJleW9uZCBidWZmZXIgbGVuZ3RoXCIpKTt2YXIgbyxyPWUubGVuZ3RoO2lmKCEocjw9dCkpcmV0dXJuIG4/KG89ZVt0XSx0KzE8ciYmKG98PWVbdCsxXTw8OCkpOihvPWVbdF08PDgsdCsxPHImJihvfD1lW3QrMV0pKSxvfWZ1bmN0aW9uIHUoZSx0LG4scil7cnx8KGQoXCJib29sZWFuXCI9PXR5cGVvZiBuLFwibWlzc2luZyBvciBpbnZhbGlkIGVuZGlhblwiKSxkKG51bGwhPXQsXCJtaXNzaW5nIG9mZnNldFwiKSxkKHQrMzxlLmxlbmd0aCxcIlRyeWluZyB0byByZWFkIGJleW9uZCBidWZmZXIgbGVuZ3RoXCIpKTt2YXIgbyxyPWUubGVuZ3RoO2lmKCEocjw9dCkpcmV0dXJuIG4/KHQrMjxyJiYobz1lW3QrMl08PDE2KSx0KzE8ciYmKG98PWVbdCsxXTw8OCksb3w9ZVt0XSx0KzM8ciYmKG8rPWVbdCszXTw8MjQ+Pj4wKSk6KHQrMTxyJiYobz1lW3QrMV08PDE2KSx0KzI8ciYmKG98PWVbdCsyXTw8OCksdCszPHImJihvfD1lW3QrM10pLG8rPWVbdF08PDI0Pj4+MCksb31mdW5jdGlvbiBfKGUsdCxuLHIpe2lmKHJ8fChkKFwiYm9vbGVhblwiPT10eXBlb2YgbixcIm1pc3Npbmcgb3IgaW52YWxpZCBlbmRpYW5cIiksZChudWxsIT10LFwibWlzc2luZyBvZmZzZXRcIiksZCh0KzE8ZS5sZW5ndGgsXCJUcnlpbmcgdG8gcmVhZCBiZXlvbmQgYnVmZmVyIGxlbmd0aFwiKSksIShlLmxlbmd0aDw9dCkpcmV0dXJuIHI9byhlLHQsbiwhMCksMzI3Njgmcj8tMSooNjU1MzUtcisxKTpyfWZ1bmN0aW9uIEUoZSx0LG4scil7aWYocnx8KGQoXCJib29sZWFuXCI9PXR5cGVvZiBuLFwibWlzc2luZyBvciBpbnZhbGlkIGVuZGlhblwiKSxkKG51bGwhPXQsXCJtaXNzaW5nIG9mZnNldFwiKSxkKHQrMzxlLmxlbmd0aCxcIlRyeWluZyB0byByZWFkIGJleW9uZCBidWZmZXIgbGVuZ3RoXCIpKSwhKGUubGVuZ3RoPD10KSlyZXR1cm4gcj11KGUsdCxuLCEwKSwyMTQ3NDgzNjQ4JnI/LTEqKDQyOTQ5NjcyOTUtcisxKTpyfWZ1bmN0aW9uIEkoZSx0LG4scil7cmV0dXJuIHJ8fChkKFwiYm9vbGVhblwiPT10eXBlb2YgbixcIm1pc3Npbmcgb3IgaW52YWxpZCBlbmRpYW5cIiksZCh0KzM8ZS5sZW5ndGgsXCJUcnlpbmcgdG8gcmVhZCBiZXlvbmQgYnVmZmVyIGxlbmd0aFwiKSksaS5yZWFkKGUsdCxuLDIzLDQpfWZ1bmN0aW9uIEEoZSx0LG4scil7cmV0dXJuIHJ8fChkKFwiYm9vbGVhblwiPT10eXBlb2YgbixcIm1pc3Npbmcgb3IgaW52YWxpZCBlbmRpYW5cIiksZCh0Kzc8ZS5sZW5ndGgsXCJUcnlpbmcgdG8gcmVhZCBiZXlvbmQgYnVmZmVyIGxlbmd0aFwiKSksaS5yZWFkKGUsdCxuLDUyLDgpfWZ1bmN0aW9uIHMoZSx0LG4scixvKXtvfHwoZChudWxsIT10LFwibWlzc2luZyB2YWx1ZVwiKSxkKFwiYm9vbGVhblwiPT10eXBlb2YgcixcIm1pc3Npbmcgb3IgaW52YWxpZCBlbmRpYW5cIiksZChudWxsIT1uLFwibWlzc2luZyBvZmZzZXRcIiksZChuKzE8ZS5sZW5ndGgsXCJ0cnlpbmcgdG8gd3JpdGUgYmV5b25kIGJ1ZmZlciBsZW5ndGhcIiksWSh0LDY1NTM1KSk7bz1lLmxlbmd0aDtpZighKG88PW4pKWZvcih2YXIgaT0wLHU9TWF0aC5taW4oby1uLDIpO2k8dTtpKyspZVtuK2ldPSh0JjI1NTw8OCoocj9pOjEtaSkpPj4+OCoocj9pOjEtaSl9ZnVuY3Rpb24gbChlLHQsbixyLG8pe298fChkKG51bGwhPXQsXCJtaXNzaW5nIHZhbHVlXCIpLGQoXCJib29sZWFuXCI9PXR5cGVvZiByLFwibWlzc2luZyBvciBpbnZhbGlkIGVuZGlhblwiKSxkKG51bGwhPW4sXCJtaXNzaW5nIG9mZnNldFwiKSxkKG4rMzxlLmxlbmd0aCxcInRyeWluZyB0byB3cml0ZSBiZXlvbmQgYnVmZmVyIGxlbmd0aFwiKSxZKHQsNDI5NDk2NzI5NSkpO289ZS5sZW5ndGg7aWYoIShvPD1uKSlmb3IodmFyIGk9MCx1PU1hdGgubWluKG8tbiw0KTtpPHU7aSsrKWVbbitpXT10Pj4+OCoocj9pOjMtaSkmMjU1fWZ1bmN0aW9uIEIoZSx0LG4scixvKXtvfHwoZChudWxsIT10LFwibWlzc2luZyB2YWx1ZVwiKSxkKFwiYm9vbGVhblwiPT10eXBlb2YgcixcIm1pc3Npbmcgb3IgaW52YWxpZCBlbmRpYW5cIiksZChudWxsIT1uLFwibWlzc2luZyBvZmZzZXRcIiksZChuKzE8ZS5sZW5ndGgsXCJUcnlpbmcgdG8gd3JpdGUgYmV5b25kIGJ1ZmZlciBsZW5ndGhcIiksRih0LDMyNzY3LC0zMjc2OCkpLGUubGVuZ3RoPD1ufHxzKGUsMDw9dD90OjY1NTM1K3QrMSxuLHIsbyl9ZnVuY3Rpb24gTChlLHQsbixyLG8pe298fChkKG51bGwhPXQsXCJtaXNzaW5nIHZhbHVlXCIpLGQoXCJib29sZWFuXCI9PXR5cGVvZiByLFwibWlzc2luZyBvciBpbnZhbGlkIGVuZGlhblwiKSxkKG51bGwhPW4sXCJtaXNzaW5nIG9mZnNldFwiKSxkKG4rMzxlLmxlbmd0aCxcIlRyeWluZyB0byB3cml0ZSBiZXlvbmQgYnVmZmVyIGxlbmd0aFwiKSxGKHQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCkpLGUubGVuZ3RoPD1ufHxsKGUsMDw9dD90OjQyOTQ5NjcyOTUrdCsxLG4scixvKX1mdW5jdGlvbiBVKGUsdCxuLHIsbyl7b3x8KGQobnVsbCE9dCxcIm1pc3NpbmcgdmFsdWVcIiksZChcImJvb2xlYW5cIj09dHlwZW9mIHIsXCJtaXNzaW5nIG9yIGludmFsaWQgZW5kaWFuXCIpLGQobnVsbCE9bixcIm1pc3Npbmcgb2Zmc2V0XCIpLGQobiszPGUubGVuZ3RoLFwiVHJ5aW5nIHRvIHdyaXRlIGJleW9uZCBidWZmZXIgbGVuZ3RoXCIpLEQodCwzNDAyODIzNDY2Mzg1Mjg4NmUyMiwtMzQwMjgyMzQ2NjM4NTI4ODZlMjIpKSxlLmxlbmd0aDw9bnx8aS53cml0ZShlLHQsbixyLDIzLDQpfWZ1bmN0aW9uIHgoZSx0LG4scixvKXtvfHwoZChudWxsIT10LFwibWlzc2luZyB2YWx1ZVwiKSxkKFwiYm9vbGVhblwiPT10eXBlb2YgcixcIm1pc3Npbmcgb3IgaW52YWxpZCBlbmRpYW5cIiksZChudWxsIT1uLFwibWlzc2luZyBvZmZzZXRcIiksZChuKzc8ZS5sZW5ndGgsXCJUcnlpbmcgdG8gd3JpdGUgYmV5b25kIGJ1ZmZlciBsZW5ndGhcIiksRCh0LDE3OTc2OTMxMzQ4NjIzMTU3ZTI5MiwtMTc5NzY5MzEzNDg2MjMxNTdlMjkyKSksZS5sZW5ndGg8PW58fGkud3JpdGUoZSx0LG4sciw1Miw4KX1ILkJ1ZmZlcj1mLEguU2xvd0J1ZmZlcj1mLEguSU5TUEVDVF9NQVhfQllURVM9NTAsZi5wb29sU2l6ZT04MTkyLGYuX3VzZVR5cGVkQXJyYXlzPWZ1bmN0aW9uKCl7dHJ5e3ZhciBlPW5ldyBBcnJheUJ1ZmZlcigwKSx0PW5ldyBVaW50OEFycmF5KGUpO3JldHVybiB0LmZvbz1mdW5jdGlvbigpe3JldHVybiA0Mn0sNDI9PT10LmZvbygpJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LnN1YmFycmF5fWNhdGNoKGUpe3JldHVybiExfX0oKSxmLmlzRW5jb2Rpbmc9ZnVuY3Rpb24oZSl7c3dpdGNoKFN0cmluZyhlKS50b0xvd2VyQ2FzZSgpKXtjYXNlXCJoZXhcIjpjYXNlXCJ1dGY4XCI6Y2FzZVwidXRmLThcIjpjYXNlXCJhc2NpaVwiOmNhc2VcImJpbmFyeVwiOmNhc2VcImJhc2U2NFwiOmNhc2VcInJhd1wiOmNhc2VcInVjczJcIjpjYXNlXCJ1Y3MtMlwiOmNhc2VcInV0ZjE2bGVcIjpjYXNlXCJ1dGYtMTZsZVwiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fSxmLmlzQnVmZmVyPWZ1bmN0aW9uKGUpe3JldHVybiEobnVsbD09ZXx8IWUuX2lzQnVmZmVyKX0sZi5ieXRlTGVuZ3RoPWZ1bmN0aW9uKGUsdCl7dmFyIG47c3dpdGNoKGUrPVwiXCIsdHx8XCJ1dGY4XCIpe2Nhc2VcImhleFwiOm49ZS5sZW5ndGgvMjticmVhaztjYXNlXCJ1dGY4XCI6Y2FzZVwidXRmLThcIjpuPVQoZSkubGVuZ3RoO2JyZWFrO2Nhc2VcImFzY2lpXCI6Y2FzZVwiYmluYXJ5XCI6Y2FzZVwicmF3XCI6bj1lLmxlbmd0aDticmVhaztjYXNlXCJiYXNlNjRcIjpuPU0oZSkubGVuZ3RoO2JyZWFrO2Nhc2VcInVjczJcIjpjYXNlXCJ1Y3MtMlwiOmNhc2VcInV0ZjE2bGVcIjpjYXNlXCJ1dGYtMTZsZVwiOm49MiplLmxlbmd0aDticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIlVua25vd24gZW5jb2RpbmdcIil9cmV0dXJuIG59LGYuY29uY2F0PWZ1bmN0aW9uKGUsdCl7aWYoZChDKGUpLFwiVXNhZ2U6IEJ1ZmZlci5jb25jYXQobGlzdCwgW3RvdGFsTGVuZ3RoXSlcXG5saXN0IHNob3VsZCBiZSBhbiBBcnJheS5cIiksMD09PWUubGVuZ3RoKXJldHVybiBuZXcgZigwKTtpZigxPT09ZS5sZW5ndGgpcmV0dXJuIGVbMF07aWYoXCJudW1iZXJcIiE9dHlwZW9mIHQpZm9yKG89dD0wO288ZS5sZW5ndGg7bysrKXQrPWVbb10ubGVuZ3RoO2Zvcih2YXIgbj1uZXcgZih0KSxyPTAsbz0wO288ZS5sZW5ndGg7bysrKXt2YXIgaT1lW29dO2kuY29weShuLHIpLHIrPWkubGVuZ3RofXJldHVybiBufSxmLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlLHQsbixyKXtpc0Zpbml0ZSh0KT9pc0Zpbml0ZShuKXx8KHI9bixuPXZvaWQgMCk6KGE9cixyPXQsdD1uLG49YSksdD1OdW1iZXIodCl8fDA7dmFyIG8saSx1LHMsYT10aGlzLmxlbmd0aC10O3N3aXRjaCgoIW58fGE8KG49TnVtYmVyKG4pKSkmJihuPWEpLHI9U3RyaW5nKHJ8fFwidXRmOFwiKS50b0xvd2VyQ2FzZSgpKXtjYXNlXCJoZXhcIjpvPWZ1bmN0aW9uKGUsdCxuLHIpe249TnVtYmVyKG4pfHwwO3ZhciBvPWUubGVuZ3RoLW47KCFyfHxvPChyPU51bWJlcihyKSkpJiYocj1vKSxkKChvPXQubGVuZ3RoKSUyPT0wLFwiSW52YWxpZCBoZXggc3RyaW5nXCIpLG8vMjxyJiYocj1vLzIpO2Zvcih2YXIgaT0wO2k8cjtpKyspe3ZhciB1PXBhcnNlSW50KHQuc3Vic3RyKDIqaSwyKSwxNik7ZCghaXNOYU4odSksXCJJbnZhbGlkIGhleCBzdHJpbmdcIiksZVtuK2ldPXV9cmV0dXJuIGYuX2NoYXJzV3JpdHRlbj0yKmksaX0odGhpcyxlLHQsbik7YnJlYWs7Y2FzZVwidXRmOFwiOmNhc2VcInV0Zi04XCI6aT10aGlzLHU9dCxzPW4sbz1mLl9jaGFyc1dyaXR0ZW49YyhUKGUpLGksdSxzKTticmVhaztjYXNlXCJhc2NpaVwiOmNhc2VcImJpbmFyeVwiOm89Yih0aGlzLGUsdCxuKTticmVhaztjYXNlXCJiYXNlNjRcIjppPXRoaXMsdT10LHM9bixvPWYuX2NoYXJzV3JpdHRlbj1jKE0oZSksaSx1LHMpO2JyZWFrO2Nhc2VcInVjczJcIjpjYXNlXCJ1Y3MtMlwiOmNhc2VcInV0ZjE2bGVcIjpjYXNlXCJ1dGYtMTZsZVwiOm89bSh0aGlzLGUsdCxuKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIlVua25vd24gZW5jb2RpbmdcIil9cmV0dXJuIG99LGYucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGksdSxzPXRoaXM7aWYoZT1TdHJpbmcoZXx8XCJ1dGY4XCIpLnRvTG93ZXJDYXNlKCksdD1OdW1iZXIodCl8fDAsKG49dm9pZCAwIT09bj9OdW1iZXIobik6cy5sZW5ndGgpPT09dClyZXR1cm5cIlwiO3N3aXRjaChlKXtjYXNlXCJoZXhcIjpyPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmxlbmd0aDsoIXR8fHQ8MCkmJih0PTApOyghbnx8bjwwfHxyPG4pJiYobj1yKTtmb3IodmFyIG89XCJcIixpPXQ7aTxuO2krKylvKz1rKGVbaV0pO3JldHVybiBvfShzLHQsbik7YnJlYWs7Y2FzZVwidXRmOFwiOmNhc2VcInV0Zi04XCI6cj1mdW5jdGlvbihlLHQsbil7dmFyIHI9XCJcIixvPVwiXCI7bj1NYXRoLm1pbihlLmxlbmd0aCxuKTtmb3IodmFyIGk9dDtpPG47aSsrKWVbaV08PTEyNz8ocis9TihvKStTdHJpbmcuZnJvbUNoYXJDb2RlKGVbaV0pLG89XCJcIik6bys9XCIlXCIrZVtpXS50b1N0cmluZygxNik7cmV0dXJuIHIrTihvKX0ocyx0LG4pO2JyZWFrO2Nhc2VcImFzY2lpXCI6Y2FzZVwiYmluYXJ5XCI6cj12KHMsdCxuKTticmVhaztjYXNlXCJiYXNlNjRcIjpvPXMsdT1uLHI9MD09PShpPXQpJiZ1PT09by5sZW5ndGg/YS5mcm9tQnl0ZUFycmF5KG8pOmEuZnJvbUJ5dGVBcnJheShvLnNsaWNlKGksdSkpO2JyZWFrO2Nhc2VcInVjczJcIjpjYXNlXCJ1Y3MtMlwiOmNhc2VcInV0ZjE2bGVcIjpjYXNlXCJ1dGYtMTZsZVwiOnI9ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1lLnNsaWNlKHQsbiksbz1cIlwiLGk9MDtpPHIubGVuZ3RoO2krPTIpbys9U3RyaW5nLmZyb21DaGFyQ29kZShyW2ldKzI1NipyW2krMV0pO3JldHVybiBvfShzLHQsbik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIGVuY29kaW5nXCIpfXJldHVybiByfSxmLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTpcIkJ1ZmZlclwiLGRhdGE6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyfHx0aGlzLDApfX0sZi5wcm90b3R5cGUuY29weT1mdW5jdGlvbihlLHQsbixyKXtpZih0PXR8fDAsKHI9cnx8MD09PXI/cjp0aGlzLmxlbmd0aCkhPT0obj1ufHwwKSYmMCE9PWUubGVuZ3RoJiYwIT09dGhpcy5sZW5ndGgpe2Qobjw9cixcInNvdXJjZUVuZCA8IHNvdXJjZVN0YXJ0XCIpLGQoMDw9dCYmdDxlLmxlbmd0aCxcInRhcmdldFN0YXJ0IG91dCBvZiBib3VuZHNcIiksZCgwPD1uJiZuPHRoaXMubGVuZ3RoLFwic291cmNlU3RhcnQgb3V0IG9mIGJvdW5kc1wiKSxkKDA8PXImJnI8PXRoaXMubGVuZ3RoLFwic291cmNlRW5kIG91dCBvZiBib3VuZHNcIikscj50aGlzLmxlbmd0aCYmKHI9dGhpcy5sZW5ndGgpO3ZhciBvPShyPWUubGVuZ3RoLXQ8ci1uP2UubGVuZ3RoLXQrbjpyKS1uO2lmKG88MTAwfHwhZi5fdXNlVHlwZWRBcnJheXMpZm9yKHZhciBpPTA7aTxvO2krKyllW2krdF09dGhpc1tpK25dO2Vsc2UgZS5fc2V0KHRoaXMuc3ViYXJyYXkobixuK28pLHQpfX0sZi5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmxlbmd0aDtpZihlPVMoZSxuLDApLHQ9Uyh0LG4sbiksZi5fdXNlVHlwZWRBcnJheXMpcmV0dXJuIGYuX2F1Z21lbnQodGhpcy5zdWJhcnJheShlLHQpKTtmb3IodmFyIHI9dC1lLG89bmV3IGYocix2b2lkIDAsITApLGk9MDtpPHI7aSsrKW9baV09dGhpc1tpK2VdO3JldHVybiBvfSxmLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGNvbnNvbGUubG9nKFwiLmdldCgpIGlzIGRlcHJlY2F0ZWQuIEFjY2VzcyB1c2luZyBhcnJheSBpbmRleGVzIGluc3RlYWQuXCIpLHRoaXMucmVhZFVJbnQ4KGUpfSxmLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gY29uc29sZS5sb2coXCIuc2V0KCkgaXMgZGVwcmVjYXRlZC4gQWNjZXNzIHVzaW5nIGFycmF5IGluZGV4ZXMgaW5zdGVhZC5cIiksdGhpcy53cml0ZVVJbnQ4KGUsdCl9LGYucHJvdG90eXBlLnJlYWRVSW50OD1mdW5jdGlvbihlLHQpe2lmKHR8fChkKG51bGwhPWUsXCJtaXNzaW5nIG9mZnNldFwiKSxkKGU8dGhpcy5sZW5ndGgsXCJUcnlpbmcgdG8gcmVhZCBiZXlvbmQgYnVmZmVyIGxlbmd0aFwiKSksIShlPj10aGlzLmxlbmd0aCkpcmV0dXJuIHRoaXNbZV19LGYucHJvdG90eXBlLnJlYWRVSW50MTZMRT1mdW5jdGlvbihlLHQpe3JldHVybiBvKHRoaXMsZSwhMCx0KX0sZi5wcm90b3R5cGUucmVhZFVJbnQxNkJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG8odGhpcyxlLCExLHQpfSxmLnByb3RvdHlwZS5yZWFkVUludDMyTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdSh0aGlzLGUsITAsdCl9LGYucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbihlLHQpe3JldHVybiB1KHRoaXMsZSwhMSx0KX0sZi5wcm90b3R5cGUucmVhZEludDg9ZnVuY3Rpb24oZSx0KXtpZih0fHwoZChudWxsIT1lLFwibWlzc2luZyBvZmZzZXRcIiksZChlPHRoaXMubGVuZ3RoLFwiVHJ5aW5nIHRvIHJlYWQgYmV5b25kIGJ1ZmZlciBsZW5ndGhcIikpLCEoZT49dGhpcy5sZW5ndGgpKXJldHVybiAxMjgmdGhpc1tlXT8tMSooMjU1LXRoaXNbZV0rMSk6dGhpc1tlXX0sZi5wcm90b3R5cGUucmVhZEludDE2TEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gXyh0aGlzLGUsITAsdCl9LGYucHJvdG90eXBlLnJlYWRJbnQxNkJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIF8odGhpcyxlLCExLHQpfSxmLnByb3RvdHlwZS5yZWFkSW50MzJMRT1mdW5jdGlvbihlLHQpe3JldHVybiBFKHRoaXMsZSwhMCx0KX0sZi5wcm90b3R5cGUucmVhZEludDMyQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRSh0aGlzLGUsITEsdCl9LGYucHJvdG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEkodGhpcyxlLCEwLHQpfSxmLnByb3RvdHlwZS5yZWFkRmxvYXRCRT1mdW5jdGlvbihlLHQpe3JldHVybiBJKHRoaXMsZSwhMSx0KX0sZi5wcm90b3R5cGUucmVhZERvdWJsZUxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEEodGhpcyxlLCEwLHQpfSxmLnByb3RvdHlwZS5yZWFkRG91YmxlQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gQSh0aGlzLGUsITEsdCl9LGYucHJvdG90eXBlLndyaXRlVUludDg9ZnVuY3Rpb24oZSx0LG4pe258fChkKG51bGwhPWUsXCJtaXNzaW5nIHZhbHVlXCIpLGQobnVsbCE9dCxcIm1pc3Npbmcgb2Zmc2V0XCIpLGQodDx0aGlzLmxlbmd0aCxcInRyeWluZyB0byB3cml0ZSBiZXlvbmQgYnVmZmVyIGxlbmd0aFwiKSxZKGUsMjU1KSksdD49dGhpcy5sZW5ndGh8fCh0aGlzW3RdPWUpfSxmLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFPWZ1bmN0aW9uKGUsdCxuKXtzKHRoaXMsZSx0LCEwLG4pfSxmLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFPWZ1bmN0aW9uKGUsdCxuKXtzKHRoaXMsZSx0LCExLG4pfSxmLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFPWZ1bmN0aW9uKGUsdCxuKXtsKHRoaXMsZSx0LCEwLG4pfSxmLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxuKXtsKHRoaXMsZSx0LCExLG4pfSxmLnByb3RvdHlwZS53cml0ZUludDg9ZnVuY3Rpb24oZSx0LG4pe258fChkKG51bGwhPWUsXCJtaXNzaW5nIHZhbHVlXCIpLGQobnVsbCE9dCxcIm1pc3Npbmcgb2Zmc2V0XCIpLGQodDx0aGlzLmxlbmd0aCxcIlRyeWluZyB0byB3cml0ZSBiZXlvbmQgYnVmZmVyIGxlbmd0aFwiKSxGKGUsMTI3LC0xMjgpKSx0Pj10aGlzLmxlbmd0aHx8KDA8PWU/dGhpcy53cml0ZVVJbnQ4KGUsdCxuKTp0aGlzLndyaXRlVUludDgoMjU1K2UrMSx0LG4pKX0sZi5wcm90b3R5cGUud3JpdGVJbnQxNkxFPWZ1bmN0aW9uKGUsdCxuKXtCKHRoaXMsZSx0LCEwLG4pfSxmLnByb3RvdHlwZS53cml0ZUludDE2QkU9ZnVuY3Rpb24oZSx0LG4pe0IodGhpcyxlLHQsITEsbil9LGYucHJvdG90eXBlLndyaXRlSW50MzJMRT1mdW5jdGlvbihlLHQsbil7TCh0aGlzLGUsdCwhMCxuKX0sZi5wcm90b3R5cGUud3JpdGVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxuKXtMKHRoaXMsZSx0LCExLG4pfSxmLnByb3RvdHlwZS53cml0ZUZsb2F0TEU9ZnVuY3Rpb24oZSx0LG4pe1UodGhpcyxlLHQsITAsbil9LGYucHJvdG90eXBlLndyaXRlRmxvYXRCRT1mdW5jdGlvbihlLHQsbil7VSh0aGlzLGUsdCwhMSxuKX0sZi5wcm90b3R5cGUud3JpdGVEb3VibGVMRT1mdW5jdGlvbihlLHQsbil7eCh0aGlzLGUsdCwhMCxuKX0sZi5wcm90b3R5cGUud3JpdGVEb3VibGVCRT1mdW5jdGlvbihlLHQsbil7eCh0aGlzLGUsdCwhMSxuKX0sZi5wcm90b3R5cGUuZmlsbD1mdW5jdGlvbihlLHQsbil7aWYodD10fHwwLG49bnx8dGhpcy5sZW5ndGgsZChcIm51bWJlclwiPT10eXBlb2YoZT1cInN0cmluZ1wiPT10eXBlb2YoZT1lfHwwKT9lLmNoYXJDb2RlQXQoMCk6ZSkmJiFpc05hTihlKSxcInZhbHVlIGlzIG5vdCBhIG51bWJlclwiKSxkKHQ8PW4sXCJlbmQgPCBzdGFydFwiKSxuIT09dCYmMCE9PXRoaXMubGVuZ3RoKXtkKDA8PXQmJnQ8dGhpcy5sZW5ndGgsXCJzdGFydCBvdXQgb2YgYm91bmRzXCIpLGQoMDw9biYmbjw9dGhpcy5sZW5ndGgsXCJlbmQgb3V0IG9mIGJvdW5kc1wiKTtmb3IodmFyIHI9dDtyPG47cisrKXRoaXNbcl09ZX19LGYucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sdD10aGlzLmxlbmd0aCxuPTA7bjx0O24rKylpZihlW25dPWsodGhpc1tuXSksbj09PUguSU5TUEVDVF9NQVhfQllURVMpe2VbbisxXT1cIi4uLlwiO2JyZWFrfXJldHVyblwiPEJ1ZmZlciBcIitlLmpvaW4oXCIgXCIpK1wiPlwifSxmLnByb3RvdHlwZS50b0FycmF5QnVmZmVyPWZ1bmN0aW9uKCl7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIFVpbnQ4QXJyYXkpdGhyb3cgbmV3IEVycm9yKFwiQnVmZmVyLnRvQXJyYXlCdWZmZXIgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJyb3dzZXJcIik7aWYoZi5fdXNlVHlwZWRBcnJheXMpcmV0dXJuIG5ldyBmKHRoaXMpLmJ1ZmZlcjtmb3IodmFyIGU9bmV3IFVpbnQ4QXJyYXkodGhpcy5sZW5ndGgpLHQ9MCxuPWUubGVuZ3RoO3Q8bjt0Kz0xKWVbdF09dGhpc1t0XTtyZXR1cm4gZS5idWZmZXJ9O3ZhciB0PWYucHJvdG90eXBlO2Z1bmN0aW9uIFMoZSx0LG4pe3JldHVyblwibnVtYmVyXCIhPXR5cGVvZiBlP246dDw9KGU9fn5lKT90OjA8PWV8fDA8PShlKz10KT9lOjB9ZnVuY3Rpb24gaihlKXtyZXR1cm4oZT1+fk1hdGguY2VpbCgrZSkpPDA/MDplfWZ1bmN0aW9uIEMoZSl7cmV0dXJuKEFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGUpe3JldHVyblwiW29iamVjdCBBcnJheV1cIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKX0pKGUpfWZ1bmN0aW9uIGsoZSl7cmV0dXJuIGU8MTY/XCIwXCIrZS50b1N0cmluZygxNik6ZS50b1N0cmluZygxNil9ZnVuY3Rpb24gVChlKXtmb3IodmFyIHQ9W10sbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lLmNoYXJDb2RlQXQobik7aWYocjw9MTI3KXQucHVzaChlLmNoYXJDb2RlQXQobikpO2Vsc2UgZm9yKHZhciBvPW4saT0oNTUyOTY8PXImJnI8PTU3MzQzJiZuKyssZW5jb2RlVVJJQ29tcG9uZW50KGUuc2xpY2UobyxuKzEpKS5zdWJzdHIoMSkuc3BsaXQoXCIlXCIpKSx1PTA7dTxpLmxlbmd0aDt1KyspdC5wdXNoKHBhcnNlSW50KGlbdV0sMTYpKX1yZXR1cm4gdH1mdW5jdGlvbiBNKGUpe3JldHVybiBhLnRvQnl0ZUFycmF5KGUpfWZ1bmN0aW9uIGMoZSx0LG4scil7Zm9yKHZhciBvPTA7bzxyJiYhKG8rbj49dC5sZW5ndGh8fG8+PWUubGVuZ3RoKTtvKyspdFtvK25dPWVbb107cmV0dXJuIG99ZnVuY3Rpb24gTihlKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlKX1jYXRjaChlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSg2NTUzMyl9fWZ1bmN0aW9uIFkoZSx0KXtkKFwibnVtYmVyXCI9PXR5cGVvZiBlLFwiY2Fubm90IHdyaXRlIGEgbm9uLW51bWJlciBhcyBhIG51bWJlclwiKSxkKDA8PWUsXCJzcGVjaWZpZWQgYSBuZWdhdGl2ZSB2YWx1ZSBmb3Igd3JpdGluZyBhbiB1bnNpZ25lZCB2YWx1ZVwiKSxkKGU8PXQsXCJ2YWx1ZSBpcyBsYXJnZXIgdGhhbiBtYXhpbXVtIHZhbHVlIGZvciB0eXBlXCIpLGQoTWF0aC5mbG9vcihlKT09PWUsXCJ2YWx1ZSBoYXMgYSBmcmFjdGlvbmFsIGNvbXBvbmVudFwiKX1mdW5jdGlvbiBGKGUsdCxuKXtkKFwibnVtYmVyXCI9PXR5cGVvZiBlLFwiY2Fubm90IHdyaXRlIGEgbm9uLW51bWJlciBhcyBhIG51bWJlclwiKSxkKGU8PXQsXCJ2YWx1ZSBsYXJnZXIgdGhhbiBtYXhpbXVtIGFsbG93ZWQgdmFsdWVcIiksZChuPD1lLFwidmFsdWUgc21hbGxlciB0aGFuIG1pbmltdW0gYWxsb3dlZCB2YWx1ZVwiKSxkKE1hdGguZmxvb3IoZSk9PT1lLFwidmFsdWUgaGFzIGEgZnJhY3Rpb25hbCBjb21wb25lbnRcIil9ZnVuY3Rpb24gRChlLHQsbil7ZChcIm51bWJlclwiPT10eXBlb2YgZSxcImNhbm5vdCB3cml0ZSBhIG5vbi1udW1iZXIgYXMgYSBudW1iZXJcIiksZChlPD10LFwidmFsdWUgbGFyZ2VyIHRoYW4gbWF4aW11bSBhbGxvd2VkIHZhbHVlXCIpLGQobjw9ZSxcInZhbHVlIHNtYWxsZXIgdGhhbiBtaW5pbXVtIGFsbG93ZWQgdmFsdWVcIil9ZnVuY3Rpb24gZChlLHQpe2lmKCFlKXRocm93IG5ldyBFcnJvcih0fHxcIkZhaWxlZCBhc3NlcnRpb25cIil9Zi5fYXVnbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZS5faXNCdWZmZXI9ITAsZS5fZ2V0PWUuZ2V0LGUuX3NldD1lLnNldCxlLmdldD10LmdldCxlLnNldD10LnNldCxlLndyaXRlPXQud3JpdGUsZS50b1N0cmluZz10LnRvU3RyaW5nLGUudG9Mb2NhbGVTdHJpbmc9dC50b1N0cmluZyxlLnRvSlNPTj10LnRvSlNPTixlLmNvcHk9dC5jb3B5LGUuc2xpY2U9dC5zbGljZSxlLnJlYWRVSW50OD10LnJlYWRVSW50OCxlLnJlYWRVSW50MTZMRT10LnJlYWRVSW50MTZMRSxlLnJlYWRVSW50MTZCRT10LnJlYWRVSW50MTZCRSxlLnJlYWRVSW50MzJMRT10LnJlYWRVSW50MzJMRSxlLnJlYWRVSW50MzJCRT10LnJlYWRVSW50MzJCRSxlLnJlYWRJbnQ4PXQucmVhZEludDgsZS5yZWFkSW50MTZMRT10LnJlYWRJbnQxNkxFLGUucmVhZEludDE2QkU9dC5yZWFkSW50MTZCRSxlLnJlYWRJbnQzMkxFPXQucmVhZEludDMyTEUsZS5yZWFkSW50MzJCRT10LnJlYWRJbnQzMkJFLGUucmVhZEZsb2F0TEU9dC5yZWFkRmxvYXRMRSxlLnJlYWRGbG9hdEJFPXQucmVhZEZsb2F0QkUsZS5yZWFkRG91YmxlTEU9dC5yZWFkRG91YmxlTEUsZS5yZWFkRG91YmxlQkU9dC5yZWFkRG91YmxlQkUsZS53cml0ZVVJbnQ4PXQud3JpdGVVSW50OCxlLndyaXRlVUludDE2TEU9dC53cml0ZVVJbnQxNkxFLGUud3JpdGVVSW50MTZCRT10LndyaXRlVUludDE2QkUsZS53cml0ZVVJbnQzMkxFPXQud3JpdGVVSW50MzJMRSxlLndyaXRlVUludDMyQkU9dC53cml0ZVVJbnQzMkJFLGUud3JpdGVJbnQ4PXQud3JpdGVJbnQ4LGUud3JpdGVJbnQxNkxFPXQud3JpdGVJbnQxNkxFLGUud3JpdGVJbnQxNkJFPXQud3JpdGVJbnQxNkJFLGUud3JpdGVJbnQzMkxFPXQud3JpdGVJbnQzMkxFLGUud3JpdGVJbnQzMkJFPXQud3JpdGVJbnQzMkJFLGUud3JpdGVGbG9hdExFPXQud3JpdGVGbG9hdExFLGUud3JpdGVGbG9hdEJFPXQud3JpdGVGbG9hdEJFLGUud3JpdGVEb3VibGVMRT10LndyaXRlRG91YmxlTEUsZS53cml0ZURvdWJsZUJFPXQud3JpdGVEb3VibGVCRSxlLmZpbGw9dC5maWxsLGUuaW5zcGVjdD10Lmluc3BlY3QsZS50b0FycmF5QnVmZmVyPXQudG9BcnJheUJ1ZmZlcixlfX0uY2FsbCh0aGlzLE8oXCJsWXBvSTJcIiksXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGY/c2VsZjpcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSxPKFwiYnVmZmVyXCIpLkJ1ZmZlcixhcmd1bWVudHNbM10sYXJndW1lbnRzWzRdLGFyZ3VtZW50c1s1XSxhcmd1bWVudHNbNl0sXCIvbm9kZV9tb2R1bGVzL2d1bHAtYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvYnVmZmVyL2luZGV4LmpzXCIsXCIvbm9kZV9tb2R1bGVzL2d1bHAtYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvYnVmZmVyXCIpfSx7XCJiYXNlNjQtanNcIjoyLGJ1ZmZlcjozLGllZWU3NTQ6MTAsbFlwb0kyOjExfV0sNDpbZnVuY3Rpb24oYyxkLGUpeyFmdW5jdGlvbihlLHQsYSxuLHIsbyxpLHUscyl7dmFyIGE9YyhcImJ1ZmZlclwiKS5CdWZmZXIsZj00LGw9bmV3IGEoZik7bC5maWxsKDApO2QuZXhwb3J0cz17aGFzaDpmdW5jdGlvbihlLHQsbixyKXtmb3IodmFyIG89dChmdW5jdGlvbihlLHQpe2UubGVuZ3RoJWYhPTAmJihuPWUubGVuZ3RoKyhmLWUubGVuZ3RoJWYpLGU9YS5jb25jYXQoW2UsbF0sbikpO2Zvcih2YXIgbixyPVtdLG89dD9lLnJlYWRJbnQzMkJFOmUucmVhZEludDMyTEUsaT0wO2k8ZS5sZW5ndGg7aSs9ZilyLnB1c2goby5jYWxsKGUsaSkpO3JldHVybiByfShlPWEuaXNCdWZmZXIoZSk/ZTpuZXcgYShlKSxyKSw4KmUubGVuZ3RoKSx0PXIsaT1uZXcgYShuKSx1PXQ/aS53cml0ZUludDMyQkU6aS53cml0ZUludDMyTEUscz0wO3M8by5sZW5ndGg7cysrKXUuY2FsbChpLG9bc10sNCpzLCEwKTtyZXR1cm4gaX19fS5jYWxsKHRoaXMsYyhcImxZcG9JMlwiKSxcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZj9zZWxmOlwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9LGMoXCJidWZmZXJcIikuQnVmZmVyLGFyZ3VtZW50c1szXSxhcmd1bWVudHNbNF0sYXJndW1lbnRzWzVdLGFyZ3VtZW50c1s2XSxcIi9ub2RlX21vZHVsZXMvZ3VscC1icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9jcnlwdG8tYnJvd3NlcmlmeS9oZWxwZXJzLmpzXCIsXCIvbm9kZV9tb2R1bGVzL2d1bHAtYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvY3J5cHRvLWJyb3dzZXJpZnlcIil9LHtidWZmZXI6MyxsWXBvSTI6MTF9XSw1OltmdW5jdGlvbih2LGUsXyl7IWZ1bmN0aW9uKGwsYyx1LGQsaCxwLGcseSx3KXt2YXIgdT12KFwiYnVmZmVyXCIpLkJ1ZmZlcixlPXYoXCIuL3NoYVwiKSx0PXYoXCIuL3NoYTI1NlwiKSxuPXYoXCIuL3JuZ1wiKSxiPXtzaGExOmUsc2hhMjU2OnQsbWQ1OnYoXCIuL21kNVwiKX0scz02NCxhPW5ldyB1KHMpO2Z1bmN0aW9uIHIoZSxuKXt2YXIgcj1iW2U9ZXx8XCJzaGExXCJdLG89W107cmV0dXJuIHJ8fGkoXCJhbGdvcml0aG06XCIsZSxcImlzIG5vdCB5ZXQgc3VwcG9ydGVkXCIpLHt1cGRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHUuaXNCdWZmZXIoZSl8fChlPW5ldyB1KGUpKSxvLnB1c2goZSksZS5sZW5ndGgsdGhpc30sZGlnZXN0OmZ1bmN0aW9uKGUpe3ZhciB0PXUuY29uY2F0KG8pLHQ9bj9mdW5jdGlvbihlLHQsbil7dS5pc0J1ZmZlcih0KXx8KHQ9bmV3IHUodCkpLHUuaXNCdWZmZXIobil8fChuPW5ldyB1KG4pKSx0Lmxlbmd0aD5zP3Q9ZSh0KTp0Lmxlbmd0aDxzJiYodD11LmNvbmNhdChbdCxhXSxzKSk7Zm9yKHZhciByPW5ldyB1KHMpLG89bmV3IHUocyksaT0wO2k8cztpKyspcltpXT01NF50W2ldLG9baV09OTJedFtpXTtyZXR1cm4gbj1lKHUuY29uY2F0KFtyLG5dKSksZSh1LmNvbmNhdChbbyxuXSkpfShyLG4sdCk6cih0KTtyZXR1cm4gbz1udWxsLGU/dC50b1N0cmluZyhlKTp0fX19ZnVuY3Rpb24gaSgpe3ZhciBlPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKS5qb2luKFwiIFwiKTt0aHJvdyBuZXcgRXJyb3IoW2UsXCJ3ZSBhY2NlcHQgcHVsbCByZXF1ZXN0c1wiLFwiaHR0cDovL2dpdGh1Yi5jb20vZG9taW5pY3RhcnIvY3J5cHRvLWJyb3dzZXJpZnlcIl0uam9pbihcIlxcblwiKSl9YS5maWxsKDApLF8uY3JlYXRlSGFzaD1mdW5jdGlvbihlKXtyZXR1cm4gcihlKX0sXy5jcmVhdGVIbWFjPXIsXy5yYW5kb21CeXRlcz1mdW5jdGlvbihlLHQpe2lmKCF0fHwhdC5jYWxsKXJldHVybiBuZXcgdShuKGUpKTt0cnl7dC5jYWxsKHRoaXMsdm9pZCAwLG5ldyB1KG4oZSkpKX1jYXRjaChlKXt0KGUpfX07dmFyIG8sZj1bXCJjcmVhdGVDcmVkZW50aWFsc1wiLFwiY3JlYXRlQ2lwaGVyXCIsXCJjcmVhdGVDaXBoZXJpdlwiLFwiY3JlYXRlRGVjaXBoZXJcIixcImNyZWF0ZURlY2lwaGVyaXZcIixcImNyZWF0ZVNpZ25cIixcImNyZWF0ZVZlcmlmeVwiLFwiY3JlYXRlRGlmZmllSGVsbG1hblwiLFwicGJrZGYyXCJdLG09ZnVuY3Rpb24oZSl7X1tlXT1mdW5jdGlvbigpe2koXCJzb3JyeSxcIixlLFwiaXMgbm90IGltcGxlbWVudGVkIHlldFwiKX19O2ZvcihvIGluIGYpbShmW29dLG8pfS5jYWxsKHRoaXMsdihcImxZcG9JMlwiKSxcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZj9zZWxmOlwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9LHYoXCJidWZmZXJcIikuQnVmZmVyLGFyZ3VtZW50c1szXSxhcmd1bWVudHNbNF0sYXJndW1lbnRzWzVdLGFyZ3VtZW50c1s2XSxcIi9ub2RlX21vZHVsZXMvZ3VscC1icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9jcnlwdG8tYnJvd3NlcmlmeS9pbmRleC5qc1wiLFwiL25vZGVfbW9kdWxlcy9ndWxwLWJyb3dzZXJpZnkvbm9kZV9tb2R1bGVzL2NyeXB0by1icm93c2VyaWZ5XCIpfSx7XCIuL21kNVwiOjYsXCIuL3JuZ1wiOjcsXCIuL3NoYVwiOjgsXCIuL3NoYTI1NlwiOjksYnVmZmVyOjMsbFlwb0kyOjExfV0sNjpbZnVuY3Rpb24odyxiLGUpeyFmdW5jdGlvbihlLHIsbyxpLHUsYSxmLGwseSl7dmFyIHQ9dyhcIi4vaGVscGVyc1wiKTtmdW5jdGlvbiBuKGUsdCl7ZVt0Pj41XXw9MTI4PDx0JTMyLGVbMTQrKHQrNjQ+Pj45PDw0KV09dDtmb3IodmFyIG49MTczMjU4NDE5MyxyPS0yNzE3MzM4Nzksbz0tMTczMjU4NDE5NCxpPTI3MTczMzg3OCx1PTA7dTxlLmxlbmd0aDt1Kz0xNil7dmFyIHM9bixhPXIsZj1vLGw9aSxuPWMobixyLG8saSxlW3UrMF0sNywtNjgwODc2OTM2KSxpPWMoaSxuLHIsbyxlW3UrMV0sMTIsLTM4OTU2NDU4Niksbz1jKG8saSxuLHIsZVt1KzJdLDE3LDYwNjEwNTgxOSkscj1jKHIsbyxpLG4sZVt1KzNdLDIyLC0xMDQ0NTI1MzMwKTtuPWMobixyLG8saSxlW3UrNF0sNywtMTc2NDE4ODk3KSxpPWMoaSxuLHIsbyxlW3UrNV0sMTIsMTIwMDA4MDQyNiksbz1jKG8saSxuLHIsZVt1KzZdLDE3LC0xNDczMjMxMzQxKSxyPWMocixvLGksbixlW3UrN10sMjIsLTQ1NzA1OTgzKSxuPWMobixyLG8saSxlW3UrOF0sNywxNzcwMDM1NDE2KSxpPWMoaSxuLHIsbyxlW3UrOV0sMTIsLTE5NTg0MTQ0MTcpLG89YyhvLGksbixyLGVbdSsxMF0sMTcsLTQyMDYzKSxyPWMocixvLGksbixlW3UrMTFdLDIyLC0xOTkwNDA0MTYyKSxuPWMobixyLG8saSxlW3UrMTJdLDcsMTgwNDYwMzY4MiksaT1jKGksbixyLG8sZVt1KzEzXSwxMiwtNDAzNDExMDEpLG89YyhvLGksbixyLGVbdSsxNF0sMTcsLTE1MDIwMDIyOTApLG49ZChuLHI9YyhyLG8saSxuLGVbdSsxNV0sMjIsMTIzNjUzNTMyOSksbyxpLGVbdSsxXSw1LC0xNjU3OTY1MTApLGk9ZChpLG4scixvLGVbdSs2XSw5LC0xMDY5NTAxNjMyKSxvPWQobyxpLG4scixlW3UrMTFdLDE0LDY0MzcxNzcxMykscj1kKHIsbyxpLG4sZVt1KzBdLDIwLC0zNzM4OTczMDIpLG49ZChuLHIsbyxpLGVbdSs1XSw1LC03MDE1NTg2OTEpLGk9ZChpLG4scixvLGVbdSsxMF0sOSwzODAxNjA4Myksbz1kKG8saSxuLHIsZVt1KzE1XSwxNCwtNjYwNDc4MzM1KSxyPWQocixvLGksbixlW3UrNF0sMjAsLTQwNTUzNzg0OCksbj1kKG4scixvLGksZVt1KzldLDUsNTY4NDQ2NDM4KSxpPWQoaSxuLHIsbyxlW3UrMTRdLDksLTEwMTk4MDM2OTApLG89ZChvLGksbixyLGVbdSszXSwxNCwtMTg3MzYzOTYxKSxyPWQocixvLGksbixlW3UrOF0sMjAsMTE2MzUzMTUwMSksbj1kKG4scixvLGksZVt1KzEzXSw1LC0xNDQ0NjgxNDY3KSxpPWQoaSxuLHIsbyxlW3UrMl0sOSwtNTE0MDM3ODQpLG89ZChvLGksbixyLGVbdSs3XSwxNCwxNzM1MzI4NDczKSxuPWgobixyPWQocixvLGksbixlW3UrMTJdLDIwLC0xOTI2NjA3NzM0KSxvLGksZVt1KzVdLDQsLTM3ODU1OCksaT1oKGksbixyLG8sZVt1KzhdLDExLC0yMDIyNTc0NDYzKSxvPWgobyxpLG4scixlW3UrMTFdLDE2LDE4MzkwMzA1NjIpLHI9aChyLG8saSxuLGVbdSsxNF0sMjMsLTM1MzA5NTU2KSxuPWgobixyLG8saSxlW3UrMV0sNCwtMTUzMDk5MjA2MCksaT1oKGksbixyLG8sZVt1KzRdLDExLDEyNzI4OTMzNTMpLG89aChvLGksbixyLGVbdSs3XSwxNiwtMTU1NDk3NjMyKSxyPWgocixvLGksbixlW3UrMTBdLDIzLC0xMDk0NzMwNjQwKSxuPWgobixyLG8saSxlW3UrMTNdLDQsNjgxMjc5MTc0KSxpPWgoaSxuLHIsbyxlW3UrMF0sMTEsLTM1ODUzNzIyMiksbz1oKG8saSxuLHIsZVt1KzNdLDE2LC03MjI1MjE5NzkpLHI9aChyLG8saSxuLGVbdSs2XSwyMyw3NjAyOTE4OSksbj1oKG4scixvLGksZVt1KzldLDQsLTY0MDM2NDQ4NyksaT1oKGksbixyLG8sZVt1KzEyXSwxMSwtNDIxODE1ODM1KSxvPWgobyxpLG4scixlW3UrMTVdLDE2LDUzMDc0MjUyMCksbj1wKG4scj1oKHIsbyxpLG4sZVt1KzJdLDIzLC05OTUzMzg2NTEpLG8saSxlW3UrMF0sNiwtMTk4NjMwODQ0KSxpPXAoaSxuLHIsbyxlW3UrN10sMTAsMTEyNjg5MTQxNSksbz1wKG8saSxuLHIsZVt1KzE0XSwxNSwtMTQxNjM1NDkwNSkscj1wKHIsbyxpLG4sZVt1KzVdLDIxLC01NzQzNDA1NSksbj1wKG4scixvLGksZVt1KzEyXSw2LDE3MDA0ODU1NzEpLGk9cChpLG4scixvLGVbdSszXSwxMCwtMTg5NDk4NjYwNiksbz1wKG8saSxuLHIsZVt1KzEwXSwxNSwtMTA1MTUyMykscj1wKHIsbyxpLG4sZVt1KzFdLDIxLC0yMDU0OTIyNzk5KSxuPXAobixyLG8saSxlW3UrOF0sNiwxODczMzEzMzU5KSxpPXAoaSxuLHIsbyxlW3UrMTVdLDEwLC0zMDYxMTc0NCksbz1wKG8saSxuLHIsZVt1KzZdLDE1LC0xNTYwMTk4MzgwKSxyPXAocixvLGksbixlW3UrMTNdLDIxLDEzMDkxNTE2NDkpLG49cChuLHIsbyxpLGVbdSs0XSw2LC0xNDU1MjMwNzApLGk9cChpLG4scixvLGVbdSsxMV0sMTAsLTExMjAyMTAzNzkpLG89cChvLGksbixyLGVbdSsyXSwxNSw3MTg3ODcyNTkpLHI9cChyLG8saSxuLGVbdSs5XSwyMSwtMzQzNDg1NTUxKSxuPWcobixzKSxyPWcocixhKSxvPWcobyxmKSxpPWcoaSxsKX1yZXR1cm4gQXJyYXkobixyLG8saSl9ZnVuY3Rpb24gcyhlLHQsbixyLG8saSl7cmV0dXJuIGcoKHQ9ZyhnKHQsZSksZyhyLGkpKSk8PG98dD4+PjMyLW8sbil9ZnVuY3Rpb24gYyhlLHQsbixyLG8saSx1KXtyZXR1cm4gcyh0Jm58fnQmcixlLHQsbyxpLHUpfWZ1bmN0aW9uIGQoZSx0LG4scixvLGksdSl7cmV0dXJuIHModCZyfG4mfnIsZSx0LG8saSx1KX1mdW5jdGlvbiBoKGUsdCxuLHIsbyxpLHUpe3JldHVybiBzKHRebl5yLGUsdCxvLGksdSl9ZnVuY3Rpb24gcChlLHQsbixyLG8saSx1KXtyZXR1cm4gcyhuXih0fH5yKSxlLHQsbyxpLHUpfWZ1bmN0aW9uIGcoZSx0KXt2YXIgbj0oNjU1MzUmZSkrKDY1NTM1JnQpO3JldHVybihlPj4xNikrKHQ+PjE2KSsobj4+MTYpPDwxNnw2NTUzNSZufWIuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gdC5oYXNoKGUsbiwxNil9fS5jYWxsKHRoaXMsdyhcImxZcG9JMlwiKSxcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZj9zZWxmOlwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9LHcoXCJidWZmZXJcIikuQnVmZmVyLGFyZ3VtZW50c1szXSxhcmd1bWVudHNbNF0sYXJndW1lbnRzWzVdLGFyZ3VtZW50c1s2XSxcIi9ub2RlX21vZHVsZXMvZ3VscC1icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9jcnlwdG8tYnJvd3NlcmlmeS9tZDUuanNcIixcIi9ub2RlX21vZHVsZXMvZ3VscC1icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9jcnlwdG8tYnJvd3NlcmlmeVwiKX0se1wiLi9oZWxwZXJzXCI6NCxidWZmZXI6MyxsWXBvSTI6MTF9XSw3OltmdW5jdGlvbihlLGwsdCl7IWZ1bmN0aW9uKGUsdCxuLHIsbyxpLHUscyxmKXt2YXIgYTtsLmV4cG9ydHM9YXx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKTA9PSgzJnIpJiYodD00Mjk0OTY3Mjk2Kk1hdGgucmFuZG9tKCkpLG5bcl09dD4+PigoMyZyKTw8MykmMjU1O3JldHVybiBufX0uY2FsbCh0aGlzLGUoXCJsWXBvSTJcIiksXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGY/c2VsZjpcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSxlKFwiYnVmZmVyXCIpLkJ1ZmZlcixhcmd1bWVudHNbM10sYXJndW1lbnRzWzRdLGFyZ3VtZW50c1s1XSxhcmd1bWVudHNbNl0sXCIvbm9kZV9tb2R1bGVzL2d1bHAtYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvY3J5cHRvLWJyb3dzZXJpZnkvcm5nLmpzXCIsXCIvbm9kZV9tb2R1bGVzL2d1bHAtYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvY3J5cHRvLWJyb3dzZXJpZnlcIil9LHtidWZmZXI6MyxsWXBvSTI6MTF9XSw4OltmdW5jdGlvbihjLGQsZSl7IWZ1bmN0aW9uKGUsdCxuLHIsbyxzLGEsZixsKXt2YXIgaT1jKFwiLi9oZWxwZXJzXCIpO2Z1bmN0aW9uIHUobCxjKXtsW2M+PjVdfD0xMjg8PDI0LWMlMzIsbFsxNSsoYys2ND4+OTw8NCldPWM7Zm9yKHZhciBlLHQsbixyPUFycmF5KDgwKSxvPTE3MzI1ODQxOTMsaT0tMjcxNzMzODc5LHU9LTE3MzI1ODQxOTQscz0yNzE3MzM4NzgsZD0tMTAwOTU4OTc3NixoPTA7aDxsLmxlbmd0aDtoKz0xNil7Zm9yKHZhciBwPW8sZz1pLHk9dSx3PXMsYj1kLGE9MDthPDgwO2ErKyl7clthXT1hPDE2P2xbaCthXTp2KHJbYS0zXV5yW2EtOF1eclthLTE0XV5yW2EtMTZdLDEpO3ZhciBmPW0obSh2KG8sNSksKGY9aSx0PXUsbj1zLChlPWEpPDIwP2YmdHx+ZiZuOiEoZTw0MCkmJmU8NjA/ZiZ0fGYmbnx0Jm46Zl50Xm4pKSxtKG0oZCxyW2FdKSwoZT1hKTwyMD8xNTE4NTAwMjQ5OmU8NDA/MTg1OTc3NTM5MzplPDYwPy0xODk0MDA3NTg4Oi04OTk0OTc1MTQpKSxkPXMscz11LHU9dihpLDMwKSxpPW8sbz1mfW89bShvLHApLGk9bShpLGcpLHU9bSh1LHkpLHM9bShzLHcpLGQ9bShkLGIpfXJldHVybiBBcnJheShvLGksdSxzLGQpfWZ1bmN0aW9uIG0oZSx0KXt2YXIgbj0oNjU1MzUmZSkrKDY1NTM1JnQpO3JldHVybihlPj4xNikrKHQ+PjE2KSsobj4+MTYpPDwxNnw2NTUzNSZufWZ1bmN0aW9uIHYoZSx0KXtyZXR1cm4gZTw8dHxlPj4+MzItdH1kLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGkuaGFzaChlLHUsMjAsITApfX0uY2FsbCh0aGlzLGMoXCJsWXBvSTJcIiksXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGY/c2VsZjpcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSxjKFwiYnVmZmVyXCIpLkJ1ZmZlcixhcmd1bWVudHNbM10sYXJndW1lbnRzWzRdLGFyZ3VtZW50c1s1XSxhcmd1bWVudHNbNl0sXCIvbm9kZV9tb2R1bGVzL2d1bHAtYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvY3J5cHRvLWJyb3dzZXJpZnkvc2hhLmpzXCIsXCIvbm9kZV9tb2R1bGVzL2d1bHAtYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvY3J5cHRvLWJyb3dzZXJpZnlcIil9LHtcIi4vaGVscGVyc1wiOjQsYnVmZmVyOjMsbFlwb0kyOjExfV0sOTpbZnVuY3Rpb24oYyxkLGUpeyFmdW5jdGlvbihlLHQsbixyLHUscyxhLGYsbCl7ZnVuY3Rpb24gYihlLHQpe3ZhciBuPSg2NTUzNSZlKSsoNjU1MzUmdCk7cmV0dXJuKGU+PjE2KSsodD4+MTYpKyhuPj4xNik8PDE2fDY1NTM1Jm59ZnVuY3Rpb24gbyhlLGwpe3ZhciBjLGQ9bmV3IEFycmF5KDExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OCksdD1uZXcgQXJyYXkoMTc3OTAzMzcwMywzMTQ0MTM0Mjc3LDEwMTM5MDQyNDIsMjc3MzQ4MDc2MiwxMzU5ODkzMTE5LDI2MDA4MjI5MjQsNTI4NzM0NjM1LDE1NDE0NTkyMjUpLG49bmV3IEFycmF5KDY0KTtlW2w+PjVdfD0xMjg8PDI0LWwlMzIsZVsxNSsobCs2ND4+OTw8NCldPWw7Zm9yKHZhciByLG8saD0wO2g8ZS5sZW5ndGg7aCs9MTYpe2Zvcih2YXIgaT10WzBdLHU9dFsxXSxzPXRbMl0scD10WzNdLGE9dFs0XSxnPXRbNV0seT10WzZdLHc9dFs3XSxmPTA7Zjw2NDtmKyspbltmXT1mPDE2P2VbZitoXTpiKGIoYigobz1uW2YtMl0sbShvLDE3KV5tKG8sMTkpXnYobywxMCkpLG5bZi03XSksKG89bltmLTE1XSxtKG8sNylebShvLDE4KV52KG8sMykpKSxuW2YtMTZdKSxjPWIoYihiKGIodyxtKG89YSw2KV5tKG8sMTEpXm0obywyNSkpLGEmZ15+YSZ5KSxkW2ZdKSxuW2ZdKSxyPWIobShyPWksMilebShyLDEzKV5tKHIsMjIpLGkmdV5pJnNedSZzKSx3PXkseT1nLGc9YSxhPWIocCxjKSxwPXMscz11LHU9aSxpPWIoYyxyKTt0WzBdPWIoaSx0WzBdKSx0WzFdPWIodSx0WzFdKSx0WzJdPWIocyx0WzJdKSx0WzNdPWIocCx0WzNdKSx0WzRdPWIoYSx0WzRdKSx0WzVdPWIoZyx0WzVdKSx0WzZdPWIoeSx0WzZdKSx0WzddPWIodyx0WzddKX1yZXR1cm4gdH12YXIgaT1jKFwiLi9oZWxwZXJzXCIpLG09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT4+PnR8ZTw8MzItdH0sdj1mdW5jdGlvbihlLHQpe3JldHVybiBlPj4+dH07ZC5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBpLmhhc2goZSxvLDMyLCEwKX19LmNhbGwodGhpcyxjKFwibFlwb0kyXCIpLFwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZWxmP3NlbGY6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30sYyhcImJ1ZmZlclwiKS5CdWZmZXIsYXJndW1lbnRzWzNdLGFyZ3VtZW50c1s0XSxhcmd1bWVudHNbNV0sYXJndW1lbnRzWzZdLFwiL25vZGVfbW9kdWxlcy9ndWxwLWJyb3dzZXJpZnkvbm9kZV9tb2R1bGVzL2NyeXB0by1icm93c2VyaWZ5L3NoYTI1Ni5qc1wiLFwiL25vZGVfbW9kdWxlcy9ndWxwLWJyb3dzZXJpZnkvbm9kZV9tb2R1bGVzL2NyeXB0by1icm93c2VyaWZ5XCIpfSx7XCIuL2hlbHBlcnNcIjo0LGJ1ZmZlcjozLGxZcG9JMjoxMX1dLDEwOltmdW5jdGlvbihlLHQsZil7IWZ1bmN0aW9uKGUsdCxuLHIsbyxpLHUscyxhKXtmLnJlYWQ9ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaSx1LGw9OCpvLXItMSxjPSgxPDxsKS0xLGQ9Yz4+MSxzPS03LGE9bj9vLTE6MCxmPW4/LTE6MSxvPWVbdCthXTtmb3IoYSs9ZixpPW8mKDE8PC1zKS0xLG8+Pj0tcyxzKz1sOzA8cztpPTI1NippK2VbdCthXSxhKz1mLHMtPTgpO2Zvcih1PWkmKDE8PC1zKS0xLGk+Pj0tcyxzKz1yOzA8czt1PTI1Nip1K2VbdCthXSxhKz1mLHMtPTgpO2lmKDA9PT1pKWk9MS1kO2Vsc2V7aWYoaT09PWMpcmV0dXJuIHU/TmFOOjEvMCoobz8tMToxKTt1Kz1NYXRoLnBvdygyLHIpLGktPWR9cmV0dXJuKG8/LTE6MSkqdSpNYXRoLnBvdygyLGktcil9LGYud3JpdGU9ZnVuY3Rpb24oZSx0LGwsbixyLGMpe3ZhciBvLGksdT04KmMtci0xLHM9KDE8PHUpLTEsYT1zPj4xLGQ9MjM9PT1yP01hdGgucG93KDIsLTI0KS1NYXRoLnBvdygyLC03Nyk6MCxmPW4/MDpjLTEsaD1uPzE6LTEsYz10PDB8fDA9PT10JiYxL3Q8MD8xOjA7Zm9yKHQ9TWF0aC5hYnModCksaXNOYU4odCl8fHQ9PT0xLzA/KGk9aXNOYU4odCk/MTowLG89cyk6KG89TWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLkxOMiksdCoobj1NYXRoLnBvdygyLC1vKSk8MSYmKG8tLSxuKj0yKSwyPD0odCs9MTw9bythP2QvbjpkKk1hdGgucG93KDIsMS1hKSkqbiYmKG8rKyxuLz0yKSxzPD1vK2E/KGk9MCxvPXMpOjE8PW8rYT8oaT0odCpuLTEpKk1hdGgucG93KDIsciksbys9YSk6KGk9dCpNYXRoLnBvdygyLGEtMSkqTWF0aC5wb3coMixyKSxvPTApKTs4PD1yO2VbbCtmXT0yNTUmaSxmKz1oLGkvPTI1NixyLT04KTtmb3Iobz1vPDxyfGksdSs9cjswPHU7ZVtsK2ZdPTI1NSZvLGYrPWgsby89MjU2LHUtPTgpO2VbbCtmLWhdfD0xMjgqY319LmNhbGwodGhpcyxlKFwibFlwb0kyXCIpLFwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZWxmP3NlbGY6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30sZShcImJ1ZmZlclwiKS5CdWZmZXIsYXJndW1lbnRzWzNdLGFyZ3VtZW50c1s0XSxhcmd1bWVudHNbNV0sYXJndW1lbnRzWzZdLFwiL25vZGVfbW9kdWxlcy9ndWxwLWJyb3dzZXJpZnkvbm9kZV9tb2R1bGVzL2llZWU3NTQvaW5kZXguanNcIixcIi9ub2RlX21vZHVsZXMvZ3VscC1icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9pZWVlNzU0XCIpfSx7YnVmZmVyOjMsbFlwb0kyOjExfV0sMTE6W2Z1bmN0aW9uKGUsaCx0KXshZnVuY3Rpb24oZSx0LG4scixvLGYsbCxjLGQpe3ZhciBpLHUscztmdW5jdGlvbiBhKCl7fShlPWguZXhwb3J0cz17fSkubmV4dFRpY2s9KHU9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93LnNldEltbWVkaWF0ZSxzPVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5wb3N0TWVzc2FnZSYmd2luZG93LmFkZEV2ZW50TGlzdGVuZXIsdT9mdW5jdGlvbihlKXtyZXR1cm4gd2luZG93LnNldEltbWVkaWF0ZShlKX06cz8oaT1bXSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIixmdW5jdGlvbihlKXt2YXIgdD1lLnNvdXJjZTt0IT09d2luZG93JiZudWxsIT09dHx8XCJwcm9jZXNzLXRpY2tcIiE9PWUuZGF0YXx8KGUuc3RvcFByb3BhZ2F0aW9uKCksMDxpLmxlbmd0aCYmaS5zaGlmdCgpKCkpfSwhMCksZnVuY3Rpb24oZSl7aS5wdXNoKGUpLHdpbmRvdy5wb3N0TWVzc2FnZShcInByb2Nlc3MtdGlja1wiLFwiKlwiKX0pOmZ1bmN0aW9uKGUpe3NldFRpbWVvdXQoZSwwKX0pLGUudGl0bGU9XCJicm93c2VyXCIsZS5icm93c2VyPSEwLGUuZW52PXt9LGUuYXJndj1bXSxlLm9uPWEsZS5hZGRMaXN0ZW5lcj1hLGUub25jZT1hLGUub2ZmPWEsZS5yZW1vdmVMaXN0ZW5lcj1hLGUucmVtb3ZlQWxsTGlzdGVuZXJzPWEsZS5lbWl0PWEsZS5iaW5kaW5nPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihcInByb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkXCIpfSxlLmN3ZD1mdW5jdGlvbigpe3JldHVyblwiL1wifSxlLmNoZGlyPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihcInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZFwiKX19LmNhbGwodGhpcyxlKFwibFlwb0kyXCIpLFwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZWxmP3NlbGY6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30sZShcImJ1ZmZlclwiKS5CdWZmZXIsYXJndW1lbnRzWzNdLGFyZ3VtZW50c1s0XSxhcmd1bWVudHNbNV0sYXJndW1lbnRzWzZdLFwiL25vZGVfbW9kdWxlcy9ndWxwLWJyb3dzZXJpZnkvbm9kZV9tb2R1bGVzL3Byb2Nlc3MvYnJvd3Nlci5qc1wiLFwiL25vZGVfbW9kdWxlcy9ndWxwLWJyb3dzZXJpZnkvbm9kZV9tb2R1bGVzL3Byb2Nlc3NcIil9LHtidWZmZXI6MyxsWXBvSTI6MTF9XX0se30sWzFdKSgxKX0pOyIsImltcG9ydCBlbmRlbnQgZnJvbSAnZW5kZW50J1xuaW1wb3J0IHR5cGUgeyBQcm9tcHQgfSBmcm9tICcuLi8uLi9ob29rcy91c2VQcm9tcHRzJ1xuaW1wb3J0IGhhc2ggZnJvbSAnb2JqZWN0LWhhc2gnXG5cbnR5cGUgUHJvbXB0V2l0aG91dElkID0gT21pdDxQcm9tcHQsICdpZCcgfCAnY2hpbGRyZW4nPiAmIHtcbiAgY2hpbGRyZW4/OiBQcm9tcHRXaXRob3V0SWRbXVxufVxuXG5jb25zdCBwcm9tcHRzOiBQcm9tcHRXaXRob3V0SWRbXSA9IFtcbiAge1xuICAgIG5hbWU6ICdSZXZpZXcgU2VsZWN0aW9uJyxcbiAgICBjaGlsZHJlbjogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnU3VtbWFyaXplJyxcbiAgICAgICAgcHJvbXB0OiBlbmRlbnRgXG4gICAgICAgICAgUmVhZCB0aGUgZm9sbG93aW5nIHRleHQgYW5kIHN1bW1hcml6ZSBpdCBpbiBsZXNzIHRoYW4gaGFsZiB0aGUgb3JpZ2luYWwgbGVuZ3RoLlxuICAgICAgICBgLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2tleSB0YWtlYXdheXMnLFxuICAgICAgICBwcm9tcHQ6IGVuZGVudGBcbiAgICAgICAgICBSZWFkIHRoZSBmb2xsb3dpbmcgdGV4dCBhbmQgaWRlbnRpZnkgdGhlIGtleSB0YWtlYXdheXMgaW4gbGlzdCBmb3JtYXQuXG4gICAgICAgIGAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnUXVlc3Rpb25zJyxcbiAgICAgICAgcHJvbXB0OiBlbmRlbnRgXG4gICAgICAgICAgUmVhZCB0aGUgZm9sbG93aW5nIHRleHQgYW5kIGlkZW50aWZ5IHRoZSBrZXkgcXVlc3Rpb25zIHRoYXQgaXQgcmFpc2VzLlxuICAgICAgICBgLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgbmFtZTogJ0VkaXQgU2VsZWN0aW9uJyxcbiAgICBjaGlsZHJlbjogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnRml4IEdyYW1tYXIgYW5kIFNwZWxsaW5nJyxcbiAgICAgICAgcHJvbXB0OiBlbmRlbnRgXG4gICAgICAgICAgUmVhZCB0aGUgZm9sbG93aW5nIHRleHQgYW5kIGZpeCBhbnkgZ3JhbW1hciBhbmQgc3BlbGxpbmcgbWlzdGFrZXMuXG4gICAgICAgIGAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnQ2hhbmdlIFRvbmUnLFxuICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdGb3JtYWwnLFxuICAgICAgICAgICAgcHJvbXB0OiBlbmRlbnRgXG4gICAgICAgICAgICAgIFJlYWQgdGhlIGZvbGxvd2luZyB0ZXh0IGFuZCBtYWtlIGl0IG1vcmUgZm9ybWFsLlxuICAgICAgICAgICAgYCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdJbmZvcm1hbCcsXG4gICAgICAgICAgICBwcm9tcHQ6IGVuZGVudGBcbiAgICAgICAgICAgICAgUmVhZCB0aGUgZm9sbG93aW5nIHRleHQgYW5kIG1ha2UgaXQgbW9yZSBpbmZvcm1hbC5cbiAgICAgICAgICAgIGAsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnTmV1dHJhbCcsXG4gICAgICAgICAgICBwcm9tcHQ6IGVuZGVudGBcbiAgICAgICAgICAgICAgUmVhZCB0aGUgZm9sbG93aW5nIHRleHQgYW5kIG1ha2UgaXQgbW9yZSBuZXV0cmFsLlxuICAgICAgICAgICAgYCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdTdHJvbmcnLFxuICAgICAgICAgICAgcHJvbXB0OiBlbmRlbnRgXG4gICAgICAgICAgICAgIFJlYWQgdGhlIGZvbGxvd2luZyB0ZXh0IGFuZCBtYWtlIGl0IG1vcmUgc3Ryb25nIGFuZCBhc3NlcnRpdmUuXG4gICAgICAgICAgICBgLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnQ2hhbmdlIExlbmd0aCcsXG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1Nob3J0ZXInLFxuICAgICAgICAgICAgcHJvbXB0OiBlbmRlbnRgXG4gICAgICAgICAgICAgIFJlYWQgdGhlIGZvbGxvd2luZyB0ZXh0IGFuZCBtYWtlIGl0IHNob3J0ZXIuXG4gICAgICAgICAgICBgLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0xvbmdlcicsXG4gICAgICAgICAgICBwcm9tcHQ6IGVuZGVudGBcbiAgICAgICAgICAgICAgUmVhZCB0aGUgZm9sbG93aW5nIHRleHQgYW5kIG1ha2UgaXQgbG9uZ2VyLlxuICAgICAgICAgICAgYCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ0NoYW5nZSBTdHJ1Y3R1cmUnLFxuICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdBZGQgRGV0YWlscycsXG4gICAgICAgICAgICBwcm9tcHQ6IGVuZGVudGBcbiAgICAgICAgICAgICAgUmVhZCB0aGUgZm9sbG93aW5nIHRleHQgYW5kIGFkZCBkZXRhaWxzIHRvIG1ha2UgaXQgbW9yZSBpbmZvcm1hdGl2ZS5cbiAgICAgICAgICAgIGAsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQWRkIEV4YW1wbGVzJyxcbiAgICAgICAgICAgIHByb21wdDogZW5kZW50YFxuICAgICAgICAgICAgICBSZWFkIHRoZSBmb2xsb3dpbmcgdGV4dCBhbmQgYWRkIGV4YW1wbGVzIHRvIG1ha2UgaXQgbW9yZSBpbmZvcm1hdGl2ZS5cbiAgICAgICAgICAgIGAsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQWRkIEVtcGhhc2lzJyxcbiAgICAgICAgICAgIHByb21wdDogZW5kZW50YFxuICAgICAgICAgICAgICBSZWFkIHRoZSBmb2xsb3dpbmcgdGV4dCBhbmQgYWRkIGVtcGhhc2lzIHRvIG1ha2UgaXQgbW9yZSBpbXBhY3RmdWwuXG4gICAgICAgICAgICBgLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnUmVwbHknLFxuICAgIGNoaWxkcmVuOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdQb3NpdGl2ZScsXG4gICAgICAgIHByb21wdDogZW5kZW50YFxuICAgICAgICAgIFJlYWQgdGhlIGZvbGxvd2luZyB0ZXh0IGFuZCByZXBseSB0byBpdCBpbiBhIHBvc2l0aXZlIHdheS5cbiAgICAgICAgYCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdOZWdhdGl2ZScsXG4gICAgICAgIHByb21wdDogZW5kZW50YFxuICAgICAgICAgIFJlYWQgdGhlIGZvbGxvd2luZyB0ZXh0IGFuZCByZXBseSB0byBpdCBpbiBhIG5lZ2F0aXZlIHdheS5cbiAgICAgICAgYCxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbl1cblxuY29uc3QgcmVjdXJzaXZlQWRkSWQgPSAoXG4gIHByb21wdHM6IFByb21wdFdpdGhvdXRJZFtdLFxuICBfcGFyZW50SWQgPSAnJyxcbik6IFByb21wdFtdID0+IHtcbiAgcmV0dXJuIHByb21wdHMubWFwKChwcm9tcHQpID0+IHtcbiAgICBjb25zdCBpZCA9IGhhc2gocHJvbXB0KVxuICAgIHJldHVybiB7XG4gICAgICBpZCxcbiAgICAgIC4uLnByb21wdCxcbiAgICAgIGNoaWxkcmVuOiBwcm9tcHQuY2hpbGRyZW5cbiAgICAgICAgPyByZWN1cnNpdmVBZGRJZChwcm9tcHQuY2hpbGRyZW4sIGlkKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9XG4gIH0pIGFzIFByb21wdFtdXG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0UHJvbXB0cyA9IHJlY3Vyc2l2ZUFkZElkKHByb21wdHMpXG4iLCJpbXBvcnQgdHlwZSB7IFByb21wdCB9IGZyb20gJy4uL2hvb2tzL3VzZVByb21wdHMnXG5pbXBvcnQgeyBkZWZhdWx0UHJvbXB0cyB9IGZyb20gJy4uL2NvbmZpZy9wcm9tcHRzL2RlZmF1bHQnXG5cbmV4cG9ydCBjb25zdCBnZXRTdG9yZWRQcm9tcHRzID0gYXN5bmMgKCkgPT4ge1xuICBjb25zdCBzdG9yZWRQcm9tcHRzID0gYXdhaXQgZ2V0U3RvcmVkTG9jYWxQcm9tcHRzKClcbiAgaWYgKCFzdG9yZWRQcm9tcHRzKSB7XG4gICAgY2hyb21lLnN0b3JhZ2UubG9jYWwuc2V0KHsgUFJPTVBUUzogZGVmYXVsdFByb21wdHMgfSwgKCkgPT4ge1xuICAgICAgY29uc29sZS5sb2coJ+KEue+4jyBEZWZhdWx0IHByb21wdHMgc3RvcmVkIGZyb20gZ2V0U3RvcmVkUHJvbXB0cy50cycpXG4gICAgfSlcbiAgfVxuICByZXR1cm4gc3RvcmVkUHJvbXB0cyA/PyBkZWZhdWx0UHJvbXB0c1xufVxuXG5jb25zdCBnZXRTdG9yZWRMb2NhbFByb21wdHMgPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHN0b3JlZExvY2FsUHJvbXB0cyA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgY2hyb21lLnN0b3JhZ2UubG9jYWwuZ2V0KCdQUk9NUFRTJywgKHJlc3VsdCkgPT4ge1xuICAgICAgcmVzb2x2ZShyZXN1bHQuUFJPTVBUUylcbiAgICB9KVxuICB9KVxuICByZXR1cm4gc3RvcmVkTG9jYWxQcm9tcHRzIGFzIFByb21wdFtdIHwgbnVsbFxufVxuIiwiaW1wb3J0IHR5cGUgeyBQcm9tcHQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VQcm9tcHRzJ1xuaW1wb3J0IHsgZ2V0U3RvcmVkUHJvbXB0cyB9IGZyb20gJy4uLy4uLy4uL2xpYi9nZXRTdG9yZWRQcm9tcHRzJ1xuXG4vKipcbiAqIENyZWF0ZXMgdGhlIG5hdGl2ZSBjb250ZXh0IG1lbnUgZm9yIHRoZSBxdWljayBtZW51LlxuICogVGhpcyB3aWxsIGFsbG93IHVzZXJzIHRvIHJpZ2h0IGNsaWNrIG9uIGFueSBzZWxlY3RlZCB0ZXh0IGFuZCBzZWUgdGhlIHByb21wdFxuICogYWN0aW9ucyBvbiB0aGUgdGV4dC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZG9jcy9leHRlbnNpb25zL3JlZmVyZW5jZS9jb250ZXh0TWVudXMvXG4gKlxuICogSXQgcGVyZm9ybXMgdGhlIGZvbGxvd2luZyBzdGVwczpcbiAqIDEuIEdldCB0aGUgcHJvbXB0cyBmcm9tIHN0b3JhZ2VcbiAqIDIuIENyZWF0ZSB0aGUgdGV4dCBhY3Rpb25zIGF0IHN0YXJ0XG4gKiAzLiBSZW1vdmUgYWxsIHRoZSBleGlzdGluZyBjb250ZXh0IG1lbnVzXG4gKiA0LiBDcmVhdGUgdGhlIG1lbnUgZm9yIHJlc3Qgb2YgdGhlIGl0ZW1zXG4gKi9cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNvbnRleHRNZW51ID0gYXN5bmMgKCkgPT4ge1xuICBjb25zdCBwcm9tcHRzID0gYXdhaXQgZ2V0U3RvcmVkUHJvbXB0cygpXG4gIGNvbnN0IGNvbnRleHRNZW51SXRlbXM6IGNocm9tZS5jb250ZXh0TWVudXMuQ3JlYXRlUHJvcGVydGllc1tdID0gW11cblxuICAvLyBDcmVhdGUgdGV4dCBhY3Rpb25zIGNvbnRleHQgbWVudVxuICBjb25zdCBjcmVhdGVDaGlsZENvbnRleHRNZW51ID0gKHByb21wdHM6IFByb21wdFtdLCBwYXJlbnRJZD86IHN0cmluZykgPT4ge1xuICAgIGZvciAoY29uc3QgcHJvbXB0IG9mIHByb21wdHMpIHtcbiAgICAgIGNvbnRleHRNZW51SXRlbXMucHVzaCh7XG4gICAgICAgIGlkOiBwcm9tcHQuaWQsXG4gICAgICAgIHRpdGxlOiBwcm9tcHQubmFtZSxcbiAgICAgICAgY29udGV4dHM6IFsnc2VsZWN0aW9uJ10sXG4gICAgICAgIHBhcmVudElkLFxuICAgICAgfSlcbiAgICAgIGlmIChwcm9tcHQuY2hpbGRyZW4pIGNyZWF0ZUNoaWxkQ29udGV4dE1lbnUocHJvbXB0LmNoaWxkcmVuLCBwcm9tcHQuaWQpXG4gICAgfVxuICB9XG4gIGNyZWF0ZUNoaWxkQ29udGV4dE1lbnUocHJvbXB0cylcblxuICAvLyBDcmVhdGUgU2V0dGluZ3MgY29udGV4dCBtZW51XG4gIGNvbnRleHRNZW51SXRlbXMucHVzaChcbiAgICB7XG4gICAgICBpZDogJ3NlcGFyYXRvcicsXG4gICAgICB0eXBlOiAnc2VwYXJhdG9yJyxcbiAgICAgIGNvbnRleHRzOiBbJ3NlbGVjdGlvbiddLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICdzZXR0aW5ncycsXG4gICAgICB0aXRsZTogJ1NldHRpbmdzJyxcbiAgICAgIGNvbnRleHRzOiBbJ3NlbGVjdGlvbiddLFxuICAgIH0sXG4gIClcblxuICAvLyBCZWZvcmUgY3JlYXRpbmcgdGhlIGNvbnRleHQgbWVudSwgcmVtb3ZlIGFsbCB0aGUgZXhpc3RpbmcgY29udGV4dCBtZW51c1xuICBjaHJvbWUuY29udGV4dE1lbnVzLnJlbW92ZUFsbCgpXG5cbiAgLy8gQ3JlYXRlIGNvbnRleHQgbWVudVxuICBmb3IgKGNvbnN0IGl0ZW0gb2YgY29udGV4dE1lbnVJdGVtcykge1xuICAgIGNocm9tZS5jb250ZXh0TWVudXMuY3JlYXRlKGl0ZW0pXG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBjb250ZXh0IG1lbnUgb24gc3RvcmFnZSBjaGFuZ2UuXG4gKiBUaGlzIHdpbGwgYWxsb3cgdXNlcnMgdG8gc2VlIHRoZSBjaGFuZ2VzIGluIHRoZSBjb250ZXh0IG1lbnUgd2hlbiB1c2VyXG4gKiBjaGFuZ2UgdGhlIHByb21wdHMuXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVDb250ZXh0TWVudU9uU3RvcmFnZUNoYW5nZSA9ICgpID0+IHtcbiAgY2hyb21lLnN0b3JhZ2Uub25DaGFuZ2VkLmFkZExpc3RlbmVyKCgpID0+IHtcbiAgICBjb25zb2xlLmxvZygn8J+TnSBTdG9yYWdlIGNoYW5nZWQnKVxuICAgIGNyZWF0ZUNvbnRleHRNZW51KClcbiAgfSlcbn1cbiIsImV4cG9ydCBjb25zdCBmb3J3YXJkQ29udGV4dE1lbnVDbGlja3MgPSAoKSA9PiB7XG4gIGNocm9tZS5jb250ZXh0TWVudXMub25DbGlja2VkLmFkZExpc3RlbmVyKChpbmZvLCB0YWIpID0+IHtcbiAgICBpZiAoaW5mby5tZW51SXRlbUlkID09PSAnc2V0dGluZ3MnKSB7XG4gICAgICBjaHJvbWUudGFicy5jcmVhdGUoe1xuICAgICAgICB1cmw6IGNocm9tZS5ydW50aW1lLmdldFVSTCgnL3NyYy9wYWdlcy9zZXR0aW5ncy9pbmRleC5odG1sJyksXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFRleHQgPSBpbmZvLnNlbGVjdGlvblRleHRcbiAgICAgIGNvbnN0IGlkID0gaW5mby5tZW51SXRlbUlkXG4gICAgICBpZiAodGFiPy5pZClcbiAgICAgICAgY2hyb21lLnRhYnMuc2VuZE1lc3NhZ2UodGFiLmlkLCB7XG4gICAgICAgICAgYWN0aW9uOiAnZm9yd2FyZC1jb250ZXh0LW1lbnUtY2xpY2snLFxuICAgICAgICAgIHBheWxvYWQ6IHsgc2VsZWN0ZWRUZXh0LCBpZCB9LFxuICAgICAgICB9KVxuICAgIH1cbiAgfSlcbn1cbiIsIi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNhcHR1cmUgdGhlIGN1cnJlbnQgdGFiIHNjcmVlbi5cbiAqIEl0IGlzIHVzZWQgaW4gdGhlIHNpZGViYXIgdG8gY2FwdHVyZSB0aGUgc2NyZWVuIGFmdGVyXG4gKiB1c2VyIHNuaXBlcyB0aGUgc2NyZWVuLlxuICovXG5leHBvcnQgY29uc3QgY2FwdHVyZVNjcmVlbkxpc3RlbmVyID0gYXN5bmMgKCkgPT4ge1xuICBjaHJvbWUucnVudGltZS5vbk1lc3NhZ2UuYWRkTGlzdGVuZXIoKHJlcXVlc3QsIF9zZW5kZXIsIHNlbmRSZXNwb25zZSkgPT4ge1xuICAgIGlmIChyZXF1ZXN0LmFjdGlvbiA9PT0gJ2NhcHR1cmVWaXNpYmxlVGFiJykge1xuICAgICAgY2hyb21lLnRhYnMuY2FwdHVyZVZpc2libGVUYWIoKGRhdGFVcmwpID0+IHtcbiAgICAgICAgc2VuZFJlc3BvbnNlKGRhdGFVcmwpXG4gICAgICB9KVxuICAgICAgcmV0dXJuIHRydWUgLy8gVGhpcyB3aWxsIGtlZXAgdGhlIG1lc3NhZ2UgY2hhbm5lbCBvcGVuIHVudGlsIGBzZW5kUmVzcG9uc2VgIGlzIGNhbGxlZC5cbiAgICB9XG4gIH0pXG59XG4iLCIvKipcbiAqIFdlIGZldGNoIHRoZSBzaG9ydGN1dCBhc3NpZ25lZCB0byBzaWRlYmFyIGZyb20gY2hyb21lLmNvbW1hbmRzLmdldEFsbFxuICogYW5kIHNlbmQgaXQgdG8gY2xpZW50IHZpYSBjaHJvbWUudGFicy5zZW5kTWVzc2FnZS5cbiAqXG4gKiBXZSBhcmUgZG9pbmcgdGhpcyBiZWNhdXNlIHdlIGNhbm5vdCBkaXJlY3RseSBhY2Nlc3MgdGhlIGNocm9tZS5jb21tYW5kc1xuICogZnJvbSB0aGUgY29udGVudCBzY3JpcHQuXG4gKi9cbmV4cG9ydCBjb25zdCBzZW5kU2lkZWJhclNob3J0Y3V0ID0gKCkgPT4ge1xuICBjaHJvbWUuY29tbWFuZHMuZ2V0QWxsKChjb21tYW5kcykgPT4ge1xuICAgIC8vIEdldCBzaG9ydGN1dFxuICAgIGNvbnN0IHNob3J0Y3V0ID0gY29tbWFuZHMuZmluZCgoYykgPT4gYy5uYW1lID09PSAnb3Blbi1zaWRlYmFyJyk/LnNob3J0Y3V0XG5cbiAgICAvLyBTZW5kIHNob3J0Y3V0IHRvIGNsaWVudFxuICAgIGNocm9tZS50YWJzLnF1ZXJ5KHsgYWN0aXZlOiB0cnVlLCBjdXJyZW50V2luZG93OiB0cnVlIH0sICh0YWJzKSA9PiB7XG4gICAgICBpZiAodGFic1swXS5pZCkge1xuICAgICAgICBjaHJvbWUudGFicy5vblVwZGF0ZWQuYWRkTGlzdGVuZXIoZnVuY3Rpb24gbGlzdGVuZXIodGFiSWQsIGluZm8pIHtcbiAgICAgICAgICBpZiAoaW5mby5zdGF0dXMgPT09ICdjb21wbGV0ZScgJiYgdGFiSWQgPT09IHRhYnNbMF0uaWQpIHtcbiAgICAgICAgICAgIGNocm9tZS50YWJzLnNlbmRNZXNzYWdlKHRhYnNbMF0uaWQsIHtcbiAgICAgICAgICAgICAgYWN0aW9uOiAnc2lkZWJhci1zaG9ydGN1dCcsXG4gICAgICAgICAgICAgIHNob3J0Y3V0LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGNocm9tZS50YWJzLm9uVXBkYXRlZC5yZW1vdmVMaXN0ZW5lcihsaXN0ZW5lcilcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcbiAgfSlcbn1cbiIsIi8qKlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIGFsbCB0aGUgbGlzdGVuZXJzIHRoYXQgdG9nZ2xlIHRoZSBzaWRlYmFyLlxuICogVGhlIHNpZGViYXIgY2FuIGJlIHRvZ2dsZWQgYnk6XG4gKiAxKSBDbGlja2luZyBvbiB0aGUgZXh0ZW5zaW9uIGljb25cbiAqIDIpIFByZXNzaW5nIHRoZSBrZXlib2FyZCBzaG9ydGN1dFxuICogMykgUHJvZ3JhbW1hdGljYWxseSB2aWEgdGhlIGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZSBsaXN0ZW5lclxuICogICAgKHVzZWQgYnkgdGhlIGNsb3NlIGJ1dHRvbiBpbiB0aGUgc2lkZWJhcilcbiAqL1xuZXhwb3J0IGNvbnN0IHNpZGViYXJUb2dnbGVMaXN0ZW5lcnMgPSAoKSA9PiB7XG4gIC8vIFRvZ2dsZSBzaWRlYmFyIHdoZW4gdXNlciBwZXJmb3JtcyBhIGtleWJvYXJkIHNob3J0Y3V0XG4gIGNocm9tZS5jb21tYW5kcy5vbkNvbW1hbmQuYWRkTGlzdGVuZXIoKGNvbW1hbmQpID0+IHtcbiAgICBjb25zb2xlLmxvZyhg8J+amiBbQ29tbWFuZCBSZWNlaXZlZF0gJHtjb21tYW5kfWApXG4gICAgaWYgKGNvbW1hbmQgPT09ICdvcGVuLXNpZGViYXInKSB7XG4gICAgICB0b2dnbGVTaWRlYmFyKClcbiAgICB9XG4gIH0pXG5cbiAgLy8gVG9nZ2xlIHNpZGViYXIgd2hlbiB1c2VyIGNsaWNrcyBvbiB0aGUgZXh0ZW5zaW9uIGljb25cbiAgY2hyb21lLmFjdGlvbi5vbkNsaWNrZWQuYWRkTGlzdGVuZXIodG9nZ2xlU2lkZWJhcilcblxuICAvLyBUb2dnbGUgc2lkZWJhciBwcm9ncmFtbWF0aWNhbGx5XG4gIGNocm9tZS5ydW50aW1lLm9uTWVzc2FnZS5hZGRMaXN0ZW5lcigobWVzc2FnZSwgX3NlbmRlciwgc2VuZFJlc3BvbnNlKSA9PiB7XG4gICAgaWYgKFxuICAgICAgbWVzc2FnZS5hY3Rpb24gPT09ICdjbG9zZS1zaWRlYmFyJyB8fFxuICAgICAgbWVzc2FnZS5hY3Rpb24gPT09ICdvcGVuLXNpZGViYXInXG4gICAgKSB7XG4gICAgICB0b2dnbGVTaWRlYmFyKClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuYWN0aW9uID09PSAnZ2VuZXJhdGUnKSB7XG4gICAgICBtZXNzYWdlLnByb21wdFxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5hY3Rpb24gPT09ICdjbG9zZS1zaWRlYmFyJykge1xuICAgICAgc2VuZFJlc3BvbnNlKHsgYWN0aW9uOiAnY2xvc2Utc2lkZWJhcicgfSlcbiAgICB9XG4gIH0pXG59XG5cbmNvbnN0IHRvZ2dsZVNpZGViYXIgPSAoKSA9PiB7XG4gIGNocm9tZS50YWJzLnF1ZXJ5KHsgYWN0aXZlOiB0cnVlLCBjdXJyZW50V2luZG93OiB0cnVlIH0sICh0YWJzKSA9PiB7XG4gICAgaWYgKHRhYnNbMF0uaWQpIHtcbiAgICAgIGNocm9tZS50YWJzLnNlbmRNZXNzYWdlKHRhYnNbMF0uaWQsIHsgYWN0aW9uOiAnb3Blbi1zaWRlYmFyJyB9KVxuICAgIH1cbiAgfSlcbn1cbiIsImltcG9ydCB7IGJhY2tncm91bmRMb2cgfSBmcm9tICcuLi8uLi9sb2dzJ1xuaW1wb3J0IHtcbiAgY3JlYXRlQ29udGV4dE1lbnUsXG4gIGNyZWF0ZUNvbnRleHRNZW51T25TdG9yYWdlQ2hhbmdlLFxufSBmcm9tICcuL3F1aWNrLW1lbnUvY3JlYXRlQ29udGV4dE1lbnUnXG5pbXBvcnQgeyBmb3J3YXJkQ29udGV4dE1lbnVDbGlja3MgfSBmcm9tICcuL3F1aWNrLW1lbnUvZm9yd2FyZENvbnRleHRNZW51J1xuaW1wb3J0IHsgY2FwdHVyZVNjcmVlbkxpc3RlbmVyIH0gZnJvbSAnLi9zaWRlYmFyL2NhcHR1cmVTY3JlZW5MaXN0ZW5lcidcbmltcG9ydCB7IHNlbmRTaWRlYmFyU2hvcnRjdXQgfSBmcm9tICcuL3NpZGViYXIvc2VuZFNpZGViYXJTaG9ydGN1dCdcbmltcG9ydCB7IHNpZGViYXJUb2dnbGVMaXN0ZW5lcnMgfSBmcm9tICcuL3NpZGViYXIvc2lkZWJhclRvZ2dsZUxpc3RlbmVycydcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQmFja2dyb3VuZCh7XG4gIG1haW4oKSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBsb2dnaW5nXG4gICAgYmFja2dyb3VuZExvZygpXG5cbiAgICAvLyBTaWRlYmFyIGZ1bmN0aW9uYWxpdHlcbiAgICBzaWRlYmFyVG9nZ2xlTGlzdGVuZXJzKClcbiAgICBzZW5kU2lkZWJhclNob3J0Y3V0KClcbiAgICBjYXB0dXJlU2NyZWVuTGlzdGVuZXIoKVxuXG4gICAgLy8gUXVpY2sgbWVudSBmdW5jdGlvbmFsaXR5XG4gICAgY3JlYXRlQ29udGV4dE1lbnUoKVxuICAgIGZvcndhcmRDb250ZXh0TWVudUNsaWNrcygpXG4gICAgY3JlYXRlQ29udGV4dE1lbnVPblN0b3JhZ2VDaGFuZ2UoKVxuICB9LFxufSlcbiIsIihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuICAgIGRlZmluZShcIndlYmV4dGVuc2lvbi1wb2x5ZmlsbFwiLCBbXCJtb2R1bGVcIl0sIGZhY3RvcnkpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgZmFjdG9yeShtb2R1bGUpO1xuICB9IGVsc2Uge1xuICAgIHZhciBtb2QgPSB7XG4gICAgICBleHBvcnRzOiB7fVxuICAgIH07XG4gICAgZmFjdG9yeShtb2QpO1xuICAgIGdsb2JhbC5icm93c2VyID0gbW9kLmV4cG9ydHM7XG4gIH1cbn0pKHR5cGVvZiBnbG9iYWxUaGlzICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsVGhpcyA6IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IHRoaXMsIGZ1bmN0aW9uIChtb2R1bGUpIHtcbiAgLyogd2ViZXh0ZW5zaW9uLXBvbHlmaWxsIC0gdjAuMTIuMCAtIFR1ZSBNYXkgMTQgMjAyNCAxODowMToyOSAqL1xuICAvKiAtKi0gTW9kZTogaW5kZW50LXRhYnMtbW9kZTogbmlsOyBqcy1pbmRlbnQtbGV2ZWw6IDIgLSotICovXG4gIC8qIHZpbTogc2V0IHN0cz0yIHN3PTIgZXQgdHc9ODA6ICovXG4gIC8qIFRoaXMgU291cmNlIENvZGUgRm9ybSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGUgTW96aWxsYSBQdWJsaWNcbiAgICogTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpc1xuICAgKiBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLiAqL1xuICBcInVzZSBzdHJpY3RcIjtcblxuICBpZiAoIShnbG9iYWxUaGlzLmNocm9tZSAmJiBnbG9iYWxUaGlzLmNocm9tZS5ydW50aW1lICYmIGdsb2JhbFRoaXMuY2hyb21lLnJ1bnRpbWUuaWQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBzY3JpcHQgc2hvdWxkIG9ubHkgYmUgbG9hZGVkIGluIGEgYnJvd3NlciBleHRlbnNpb24uXCIpO1xuICB9XG4gIGlmICghKGdsb2JhbFRoaXMuYnJvd3NlciAmJiBnbG9iYWxUaGlzLmJyb3dzZXIucnVudGltZSAmJiBnbG9iYWxUaGlzLmJyb3dzZXIucnVudGltZS5pZCkpIHtcbiAgICBjb25zdCBDSFJPTUVfU0VORF9NRVNTQUdFX0NBTExCQUNLX05PX1JFU1BPTlNFX01FU1NBR0UgPSBcIlRoZSBtZXNzYWdlIHBvcnQgY2xvc2VkIGJlZm9yZSBhIHJlc3BvbnNlIHdhcyByZWNlaXZlZC5cIjtcblxuICAgIC8vIFdyYXBwaW5nIHRoZSBidWxrIG9mIHRoaXMgcG9seWZpbGwgaW4gYSBvbmUtdGltZS11c2UgZnVuY3Rpb24gaXMgYSBtaW5vclxuICAgIC8vIG9wdGltaXphdGlvbiBmb3IgRmlyZWZveC4gU2luY2UgU3BpZGVybW9ua2V5IGRvZXMgbm90IGZ1bGx5IHBhcnNlIHRoZVxuICAgIC8vIGNvbnRlbnRzIG9mIGEgZnVuY3Rpb24gdW50aWwgdGhlIGZpcnN0IHRpbWUgaXQncyBjYWxsZWQsIGFuZCBzaW5jZSBpdCB3aWxsXG4gICAgLy8gbmV2ZXIgYWN0dWFsbHkgbmVlZCB0byBiZSBjYWxsZWQsIHRoaXMgYWxsb3dzIHRoZSBwb2x5ZmlsbCB0byBiZSBpbmNsdWRlZFxuICAgIC8vIGluIEZpcmVmb3ggbmVhcmx5IGZvciBmcmVlLlxuICAgIGNvbnN0IHdyYXBBUElzID0gZXh0ZW5zaW9uQVBJcyA9PiB7XG4gICAgICAvLyBOT1RFOiBhcGlNZXRhZGF0YSBpcyBhc3NvY2lhdGVkIHRvIHRoZSBjb250ZW50IG9mIHRoZSBhcGktbWV0YWRhdGEuanNvbiBmaWxlXG4gICAgICAvLyBhdCBidWlsZCB0aW1lIGJ5IHJlcGxhY2luZyB0aGUgZm9sbG93aW5nIFwiaW5jbHVkZVwiIHdpdGggdGhlIGNvbnRlbnQgb2YgdGhlXG4gICAgICAvLyBKU09OIGZpbGUuXG4gICAgICBjb25zdCBhcGlNZXRhZGF0YSA9IHtcbiAgICAgICAgXCJhbGFybXNcIjoge1xuICAgICAgICAgIFwiY2xlYXJcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJjbGVhckFsbFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEFsbFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImJvb2ttYXJrc1wiOiB7XG4gICAgICAgICAgXCJjcmVhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRDaGlsZHJlblwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFJlY2VudFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFN1YlRyZWVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRUcmVlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwibW92ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZVRyZWVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZWFyY2hcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJ1cGRhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJicm93c2VyQWN0aW9uXCI6IHtcbiAgICAgICAgICBcImRpc2FibGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJlbmFibGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRCYWRnZUJhY2tncm91bmRDb2xvclwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEJhZGdlVGV4dFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFBvcHVwXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0VGl0bGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJvcGVuUG9wdXBcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZXRCYWRnZUJhY2tncm91bmRDb2xvclwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldEJhZGdlVGV4dFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldEljb25cIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZXRQb3B1cFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldFRpdGxlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiYnJvd3NpbmdEYXRhXCI6IHtcbiAgICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZUNhY2hlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlQ29va2llc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZURvd25sb2Fkc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZUZvcm1EYXRhXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlSGlzdG9yeVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZUxvY2FsU3RvcmFnZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZVBhc3N3b3Jkc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZVBsdWdpbkRhdGFcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZXR0aW5nc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImNvbW1hbmRzXCI6IHtcbiAgICAgICAgICBcImdldEFsbFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImNvbnRleHRNZW51c1wiOiB7XG4gICAgICAgICAgXCJyZW1vdmVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZW1vdmVBbGxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJ1cGRhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJjb29raWVzXCI6IHtcbiAgICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEFsbFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEFsbENvb2tpZVN0b3Jlc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImRldnRvb2xzXCI6IHtcbiAgICAgICAgICBcImluc3BlY3RlZFdpbmRvd1wiOiB7XG4gICAgICAgICAgICBcImV2YWxcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDIsXG4gICAgICAgICAgICAgIFwic2luZ2xlQ2FsbGJhY2tBcmdcIjogZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicGFuZWxzXCI6IHtcbiAgICAgICAgICAgIFwiY3JlYXRlXCI6IHtcbiAgICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDMsXG4gICAgICAgICAgICAgIFwibWF4QXJnc1wiOiAzLFxuICAgICAgICAgICAgICBcInNpbmdsZUNhbGxiYWNrQXJnXCI6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImVsZW1lbnRzXCI6IHtcbiAgICAgICAgICAgICAgXCJjcmVhdGVTaWRlYmFyUGFuZVwiOiB7XG4gICAgICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb3dubG9hZHNcIjoge1xuICAgICAgICAgIFwiY2FuY2VsXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZG93bmxvYWRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJlcmFzZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEZpbGVJY29uXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwib3BlblwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInBhdXNlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlRmlsZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlc3VtZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNlYXJjaFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNob3dcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJleHRlbnNpb25cIjoge1xuICAgICAgICAgIFwiaXNBbGxvd2VkRmlsZVNjaGVtZUFjY2Vzc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImlzQWxsb3dlZEluY29nbml0b0FjY2Vzc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImhpc3RvcnlcIjoge1xuICAgICAgICAgIFwiYWRkVXJsXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZGVsZXRlQWxsXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZGVsZXRlUmFuZ2VcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJkZWxldGVVcmxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRWaXNpdHNcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZWFyY2hcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJpMThuXCI6IHtcbiAgICAgICAgICBcImRldGVjdExhbmd1YWdlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0QWNjZXB0TGFuZ3VhZ2VzXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiaWRlbnRpdHlcIjoge1xuICAgICAgICAgIFwibGF1bmNoV2ViQXV0aEZsb3dcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJpZGxlXCI6IHtcbiAgICAgICAgICBcInF1ZXJ5U3RhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJtYW5hZ2VtZW50XCI6IHtcbiAgICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEFsbFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFNlbGZcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZXRFbmFibGVkXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAyLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwidW5pbnN0YWxsU2VsZlwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcIm5vdGlmaWNhdGlvbnNcIjoge1xuICAgICAgICAgIFwiY2xlYXJcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJjcmVhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRBbGxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRQZXJtaXNzaW9uTGV2ZWxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJ1cGRhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJwYWdlQWN0aW9uXCI6IHtcbiAgICAgICAgICBcImdldFBvcHVwXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0VGl0bGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJoaWRlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2V0SWNvblwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldFBvcHVwXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2V0VGl0bGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzaG93XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwicGVybWlzc2lvbnNcIjoge1xuICAgICAgICAgIFwiY29udGFpbnNcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRBbGxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZW1vdmVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZXF1ZXN0XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwicnVudGltZVwiOiB7XG4gICAgICAgICAgXCJnZXRCYWNrZ3JvdW5kUGFnZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFBsYXRmb3JtSW5mb1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIm9wZW5PcHRpb25zUGFnZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlcXVlc3RVcGRhdGVDaGVja1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNlbmRNZXNzYWdlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDNcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2VuZE5hdGl2ZU1lc3NhZ2VcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZXRVbmluc3RhbGxVUkxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJzZXNzaW9uc1wiOiB7XG4gICAgICAgICAgXCJnZXREZXZpY2VzXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0UmVjZW50bHlDbG9zZWRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZXN0b3JlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwic3RvcmFnZVwiOiB7XG4gICAgICAgICAgXCJsb2NhbFwiOiB7XG4gICAgICAgICAgICBcImNsZWFyXCI6IHtcbiAgICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImdldEJ5dGVzSW5Vc2VcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwic2V0XCI6IHtcbiAgICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIm1hbmFnZWRcIjoge1xuICAgICAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImdldEJ5dGVzSW5Vc2VcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic3luY1wiOiB7XG4gICAgICAgICAgICBcImNsZWFyXCI6IHtcbiAgICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImdldEJ5dGVzSW5Vc2VcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwic2V0XCI6IHtcbiAgICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcInRhYnNcIjoge1xuICAgICAgICAgIFwiY2FwdHVyZVZpc2libGVUYWJcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJjcmVhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJkZXRlY3RMYW5ndWFnZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImRpc2NhcmRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJkdXBsaWNhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJleGVjdXRlU2NyaXB0XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0Q3VycmVudFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFpvb21cIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRab29tU2V0dGluZ3NcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnb0JhY2tcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnb0ZvcndhcmRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJoaWdobGlnaHRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJpbnNlcnRDU1NcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJtb3ZlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAyLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicXVlcnlcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZWxvYWRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZW1vdmVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZW1vdmVDU1NcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZW5kTWVzc2FnZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAzXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldFpvb21cIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZXRab29tU2V0dGluZ3NcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJ1cGRhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJ0b3BTaXRlc1wiOiB7XG4gICAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJ3ZWJOYXZpZ2F0aW9uXCI6IHtcbiAgICAgICAgICBcImdldEFsbEZyYW1lc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEZyYW1lXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwid2ViUmVxdWVzdFwiOiB7XG4gICAgICAgICAgXCJoYW5kbGVyQmVoYXZpb3JDaGFuZ2VkXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwid2luZG93c1wiOiB7XG4gICAgICAgICAgXCJjcmVhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRBbGxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRDdXJyZW50XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0TGFzdEZvY3VzZWRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZW1vdmVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJ1cGRhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGlmIChPYmplY3Qua2V5cyhhcGlNZXRhZGF0YSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImFwaS1tZXRhZGF0YS5qc29uIGhhcyBub3QgYmVlbiBpbmNsdWRlZCBpbiBicm93c2VyLXBvbHlmaWxsXCIpO1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIEEgV2Vha01hcCBzdWJjbGFzcyB3aGljaCBjcmVhdGVzIGFuZCBzdG9yZXMgYSB2YWx1ZSBmb3IgYW55IGtleSB3aGljaCBkb2VzXG4gICAgICAgKiBub3QgZXhpc3Qgd2hlbiBhY2Nlc3NlZCwgYnV0IGJlaGF2ZXMgZXhhY3RseSBhcyBhbiBvcmRpbmFyeSBXZWFrTWFwXG4gICAgICAgKiBvdGhlcndpc2UuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtmdW5jdGlvbn0gY3JlYXRlSXRlbVxuICAgICAgICogICAgICAgIEEgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZSBjYWxsZWQgaW4gb3JkZXIgdG8gY3JlYXRlIHRoZSB2YWx1ZSBmb3IgYW55XG4gICAgICAgKiAgICAgICAga2V5IHdoaWNoIGRvZXMgbm90IGV4aXN0LCB0aGUgZmlyc3QgdGltZSBpdCBpcyBhY2Nlc3NlZC4gVGhlXG4gICAgICAgKiAgICAgICAgZnVuY3Rpb24gcmVjZWl2ZXMsIGFzIGl0cyBvbmx5IGFyZ3VtZW50LCB0aGUga2V5IGJlaW5nIGNyZWF0ZWQuXG4gICAgICAgKi9cbiAgICAgIGNsYXNzIERlZmF1bHRXZWFrTWFwIGV4dGVuZHMgV2Vha01hcCB7XG4gICAgICAgIGNvbnN0cnVjdG9yKGNyZWF0ZUl0ZW0sIGl0ZW1zID0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc3VwZXIoaXRlbXMpO1xuICAgICAgICAgIHRoaXMuY3JlYXRlSXRlbSA9IGNyZWF0ZUl0ZW07XG4gICAgICAgIH1cbiAgICAgICAgZ2V0KGtleSkge1xuICAgICAgICAgIGlmICghdGhpcy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgdGhpcy5zZXQoa2V5LCB0aGlzLmNyZWF0ZUl0ZW0oa2V5KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBzdXBlci5nZXQoa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGFuIG9iamVjdCB3aXRoIGEgYHRoZW5gIG1ldGhvZCwgYW5kIGNhblxuICAgICAgICogdGhlcmVmb3JlIGJlIGFzc3VtZWQgdG8gYmVoYXZlIGFzIGEgUHJvbWlzZS5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byB0ZXN0LlxuICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHZhbHVlIGlzIHRoZW5hYmxlLlxuICAgICAgICovXG4gICAgICBjb25zdCBpc1RoZW5hYmxlID0gdmFsdWUgPT4ge1xuICAgICAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiB2YWx1ZS50aGVuID09PSBcImZ1bmN0aW9uXCI7XG4gICAgICB9O1xuXG4gICAgICAvKipcbiAgICAgICAqIENyZWF0ZXMgYW5kIHJldHVybnMgYSBmdW5jdGlvbiB3aGljaCwgd2hlbiBjYWxsZWQsIHdpbGwgcmVzb2x2ZSBvciByZWplY3RcbiAgICAgICAqIHRoZSBnaXZlbiBwcm9taXNlIGJhc2VkIG9uIGhvdyBpdCBpcyBjYWxsZWQ6XG4gICAgICAgKlxuICAgICAgICogLSBJZiwgd2hlbiBjYWxsZWQsIGBjaHJvbWUucnVudGltZS5sYXN0RXJyb3JgIGNvbnRhaW5zIGEgbm9uLW51bGwgb2JqZWN0LFxuICAgICAgICogICB0aGUgcHJvbWlzZSBpcyByZWplY3RlZCB3aXRoIHRoYXQgdmFsdWUuXG4gICAgICAgKiAtIElmIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBleGFjdGx5IG9uZSBhcmd1bWVudCwgdGhlIHByb21pc2UgaXNcbiAgICAgICAqICAgcmVzb2x2ZWQgdG8gdGhhdCB2YWx1ZS5cbiAgICAgICAqIC0gT3RoZXJ3aXNlLCB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZCB0byBhbiBhcnJheSBjb250YWluaW5nIGFsbCBvZiB0aGVcbiAgICAgICAqICAgZnVuY3Rpb24ncyBhcmd1bWVudHMuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtvYmplY3R9IHByb21pc2VcbiAgICAgICAqICAgICAgICBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgcmVzb2x1dGlvbiBhbmQgcmVqZWN0aW9uIGZ1bmN0aW9ucyBvZiBhXG4gICAgICAgKiAgICAgICAgcHJvbWlzZS5cbiAgICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb21pc2UucmVzb2x2ZVxuICAgICAgICogICAgICAgIFRoZSBwcm9taXNlJ3MgcmVzb2x1dGlvbiBmdW5jdGlvbi5cbiAgICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb21pc2UucmVqZWN0XG4gICAgICAgKiAgICAgICAgVGhlIHByb21pc2UncyByZWplY3Rpb24gZnVuY3Rpb24uXG4gICAgICAgKiBAcGFyYW0ge29iamVjdH0gbWV0YWRhdGFcbiAgICAgICAqICAgICAgICBNZXRhZGF0YSBhYm91dCB0aGUgd3JhcHBlZCBtZXRob2Qgd2hpY2ggaGFzIGNyZWF0ZWQgdGhlIGNhbGxiYWNrLlxuICAgICAgICogQHBhcmFtIHtib29sZWFufSBtZXRhZGF0YS5zaW5nbGVDYWxsYmFja0FyZ1xuICAgICAgICogICAgICAgIFdoZXRoZXIgb3Igbm90IHRoZSBwcm9taXNlIGlzIHJlc29sdmVkIHdpdGggb25seSB0aGUgZmlyc3RcbiAgICAgICAqICAgICAgICBhcmd1bWVudCBvZiB0aGUgY2FsbGJhY2ssIGFsdGVybmF0aXZlbHkgYW4gYXJyYXkgb2YgYWxsIHRoZVxuICAgICAgICogICAgICAgIGNhbGxiYWNrIGFyZ3VtZW50cyBpcyByZXNvbHZlZC4gQnkgZGVmYXVsdCwgaWYgdGhlIGNhbGxiYWNrXG4gICAgICAgKiAgICAgICAgZnVuY3Rpb24gaXMgaW52b2tlZCB3aXRoIG9ubHkgYSBzaW5nbGUgYXJndW1lbnQsIHRoYXQgd2lsbCBiZVxuICAgICAgICogICAgICAgIHJlc29sdmVkIHRvIHRoZSBwcm9taXNlLCB3aGlsZSBhbGwgYXJndW1lbnRzIHdpbGwgYmUgcmVzb2x2ZWQgYXNcbiAgICAgICAqICAgICAgICBhbiBhcnJheSBpZiBtdWx0aXBsZSBhcmUgZ2l2ZW4uXG4gICAgICAgKlxuICAgICAgICogQHJldHVybnMge2Z1bmN0aW9ufVxuICAgICAgICogICAgICAgIFRoZSBnZW5lcmF0ZWQgY2FsbGJhY2sgZnVuY3Rpb24uXG4gICAgICAgKi9cbiAgICAgIGNvbnN0IG1ha2VDYWxsYmFjayA9IChwcm9taXNlLCBtZXRhZGF0YSkgPT4ge1xuICAgICAgICByZXR1cm4gKC4uLmNhbGxiYWNrQXJncykgPT4ge1xuICAgICAgICAgIGlmIChleHRlbnNpb25BUElzLnJ1bnRpbWUubGFzdEVycm9yKSB7XG4gICAgICAgICAgICBwcm9taXNlLnJlamVjdChuZXcgRXJyb3IoZXh0ZW5zaW9uQVBJcy5ydW50aW1lLmxhc3RFcnJvci5tZXNzYWdlKSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChtZXRhZGF0YS5zaW5nbGVDYWxsYmFja0FyZyB8fCBjYWxsYmFja0FyZ3MubGVuZ3RoIDw9IDEgJiYgbWV0YWRhdGEuc2luZ2xlQ2FsbGJhY2tBcmcgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoY2FsbGJhY2tBcmdzWzBdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKGNhbGxiYWNrQXJncyk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGNvbnN0IHBsdXJhbGl6ZUFyZ3VtZW50cyA9IG51bUFyZ3MgPT4gbnVtQXJncyA9PSAxID8gXCJhcmd1bWVudFwiIDogXCJhcmd1bWVudHNcIjtcblxuICAgICAgLyoqXG4gICAgICAgKiBDcmVhdGVzIGEgd3JhcHBlciBmdW5jdGlvbiBmb3IgYSBtZXRob2Qgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBhbmQgbWV0YWRhdGEuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICAgICAqICAgICAgICBUaGUgbmFtZSBvZiB0aGUgbWV0aG9kIHdoaWNoIGlzIGJlaW5nIHdyYXBwZWQuXG4gICAgICAgKiBAcGFyYW0ge29iamVjdH0gbWV0YWRhdGFcbiAgICAgICAqICAgICAgICBNZXRhZGF0YSBhYm91dCB0aGUgbWV0aG9kIGJlaW5nIHdyYXBwZWQuXG4gICAgICAgKiBAcGFyYW0ge2ludGVnZXJ9IG1ldGFkYXRhLm1pbkFyZ3NcbiAgICAgICAqICAgICAgICBUaGUgbWluaW11bSBudW1iZXIgb2YgYXJndW1lbnRzIHdoaWNoIG11c3QgYmUgcGFzc2VkIHRvIHRoZVxuICAgICAgICogICAgICAgIGZ1bmN0aW9uLiBJZiBjYWxsZWQgd2l0aCBmZXdlciB0aGFuIHRoaXMgbnVtYmVyIG9mIGFyZ3VtZW50cywgdGhlXG4gICAgICAgKiAgICAgICAgd3JhcHBlciB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbi5cbiAgICAgICAqIEBwYXJhbSB7aW50ZWdlcn0gbWV0YWRhdGEubWF4QXJnc1xuICAgICAgICogICAgICAgIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhcmd1bWVudHMgd2hpY2ggbWF5IGJlIHBhc3NlZCB0byB0aGVcbiAgICAgICAqICAgICAgICBmdW5jdGlvbi4gSWYgY2FsbGVkIHdpdGggbW9yZSB0aGFuIHRoaXMgbnVtYmVyIG9mIGFyZ3VtZW50cywgdGhlXG4gICAgICAgKiAgICAgICAgd3JhcHBlciB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbi5cbiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gbWV0YWRhdGEuc2luZ2xlQ2FsbGJhY2tBcmdcbiAgICAgICAqICAgICAgICBXaGV0aGVyIG9yIG5vdCB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZCB3aXRoIG9ubHkgdGhlIGZpcnN0XG4gICAgICAgKiAgICAgICAgYXJndW1lbnQgb2YgdGhlIGNhbGxiYWNrLCBhbHRlcm5hdGl2ZWx5IGFuIGFycmF5IG9mIGFsbCB0aGVcbiAgICAgICAqICAgICAgICBjYWxsYmFjayBhcmd1bWVudHMgaXMgcmVzb2x2ZWQuIEJ5IGRlZmF1bHQsIGlmIHRoZSBjYWxsYmFja1xuICAgICAgICogICAgICAgIGZ1bmN0aW9uIGlzIGludm9rZWQgd2l0aCBvbmx5IGEgc2luZ2xlIGFyZ3VtZW50LCB0aGF0IHdpbGwgYmVcbiAgICAgICAqICAgICAgICByZXNvbHZlZCB0byB0aGUgcHJvbWlzZSwgd2hpbGUgYWxsIGFyZ3VtZW50cyB3aWxsIGJlIHJlc29sdmVkIGFzXG4gICAgICAgKiAgICAgICAgYW4gYXJyYXkgaWYgbXVsdGlwbGUgYXJlIGdpdmVuLlxuICAgICAgICpcbiAgICAgICAqIEByZXR1cm5zIHtmdW5jdGlvbihvYmplY3QsIC4uLiopfVxuICAgICAgICogICAgICAgVGhlIGdlbmVyYXRlZCB3cmFwcGVyIGZ1bmN0aW9uLlxuICAgICAgICovXG4gICAgICBjb25zdCB3cmFwQXN5bmNGdW5jdGlvbiA9IChuYW1lLCBtZXRhZGF0YSkgPT4ge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gYXN5bmNGdW5jdGlvbldyYXBwZXIodGFyZ2V0LCAuLi5hcmdzKSB7XG4gICAgICAgICAgaWYgKGFyZ3MubGVuZ3RoIDwgbWV0YWRhdGEubWluQXJncykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhdCBsZWFzdCAke21ldGFkYXRhLm1pbkFyZ3N9ICR7cGx1cmFsaXplQXJndW1lbnRzKG1ldGFkYXRhLm1pbkFyZ3MpfSBmb3IgJHtuYW1lfSgpLCBnb3QgJHthcmdzLmxlbmd0aH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID4gbWV0YWRhdGEubWF4QXJncykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhdCBtb3N0ICR7bWV0YWRhdGEubWF4QXJnc30gJHtwbHVyYWxpemVBcmd1bWVudHMobWV0YWRhdGEubWF4QXJncyl9IGZvciAke25hbWV9KCksIGdvdCAke2FyZ3MubGVuZ3RofWApO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKG1ldGFkYXRhLmZhbGxiYWNrVG9Ob0NhbGxiYWNrKSB7XG4gICAgICAgICAgICAgIC8vIFRoaXMgQVBJIG1ldGhvZCBoYXMgY3VycmVudGx5IG5vIGNhbGxiYWNrIG9uIENocm9tZSwgYnV0IGl0IHJldHVybiBhIHByb21pc2Ugb24gRmlyZWZveCxcbiAgICAgICAgICAgICAgLy8gYW5kIHNvIHRoZSBwb2x5ZmlsbCB3aWxsIHRyeSB0byBjYWxsIGl0IHdpdGggYSBjYWxsYmFjayBmaXJzdCwgYW5kIGl0IHdpbGwgZmFsbGJhY2tcbiAgICAgICAgICAgICAgLy8gdG8gbm90IHBhc3NpbmcgdGhlIGNhbGxiYWNrIGlmIHRoZSBmaXJzdCBjYWxsIGZhaWxzLlxuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHRhcmdldFtuYW1lXSguLi5hcmdzLCBtYWtlQ2FsbGJhY2soe1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZSxcbiAgICAgICAgICAgICAgICAgIHJlamVjdFxuICAgICAgICAgICAgICAgIH0sIG1ldGFkYXRhKSk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGNiRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYCR7bmFtZX0gQVBJIG1ldGhvZCBkb2Vzbid0IHNlZW0gdG8gc3VwcG9ydCB0aGUgY2FsbGJhY2sgcGFyYW1ldGVyLCBgICsgXCJmYWxsaW5nIGJhY2sgdG8gY2FsbCBpdCB3aXRob3V0IGEgY2FsbGJhY2s6IFwiLCBjYkVycm9yKTtcbiAgICAgICAgICAgICAgICB0YXJnZXRbbmFtZV0oLi4uYXJncyk7XG5cbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIEFQSSBtZXRob2QgbWV0YWRhdGEsIHNvIHRoYXQgdGhlIG5leHQgQVBJIGNhbGxzIHdpbGwgbm90IHRyeSB0b1xuICAgICAgICAgICAgICAgIC8vIHVzZSB0aGUgdW5zdXBwb3J0ZWQgY2FsbGJhY2sgYW55bW9yZS5cbiAgICAgICAgICAgICAgICBtZXRhZGF0YS5mYWxsYmFja1RvTm9DYWxsYmFjayA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIG1ldGFkYXRhLm5vQ2FsbGJhY2sgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXRhZGF0YS5ub0NhbGxiYWNrKSB7XG4gICAgICAgICAgICAgIHRhcmdldFtuYW1lXSguLi5hcmdzKTtcbiAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGFyZ2V0W25hbWVdKC4uLmFyZ3MsIG1ha2VDYWxsYmFjayh7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSxcbiAgICAgICAgICAgICAgICByZWplY3RcbiAgICAgICAgICAgICAgfSwgbWV0YWRhdGEpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgIH07XG5cbiAgICAgIC8qKlxuICAgICAgICogV3JhcHMgYW4gZXhpc3RpbmcgbWV0aG9kIG9mIHRoZSB0YXJnZXQgb2JqZWN0LCBzbyB0aGF0IGNhbGxzIHRvIGl0IGFyZVxuICAgICAgICogaW50ZXJjZXB0ZWQgYnkgdGhlIGdpdmVuIHdyYXBwZXIgZnVuY3Rpb24uIFRoZSB3cmFwcGVyIGZ1bmN0aW9uIHJlY2VpdmVzLFxuICAgICAgICogYXMgaXRzIGZpcnN0IGFyZ3VtZW50LCB0aGUgb3JpZ2luYWwgYHRhcmdldGAgb2JqZWN0LCBmb2xsb3dlZCBieSBlYWNoIG9mXG4gICAgICAgKiB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgb3JpZ2luYWwgbWV0aG9kLlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSB0YXJnZXRcbiAgICAgICAqICAgICAgICBUaGUgb3JpZ2luYWwgdGFyZ2V0IG9iamVjdCB0aGF0IHRoZSB3cmFwcGVkIG1ldGhvZCBiZWxvbmdzIHRvLlxuICAgICAgICogQHBhcmFtIHtmdW5jdGlvbn0gbWV0aG9kXG4gICAgICAgKiAgICAgICAgVGhlIG1ldGhvZCBiZWluZyB3cmFwcGVkLiBUaGlzIGlzIHVzZWQgYXMgdGhlIHRhcmdldCBvZiB0aGUgUHJveHlcbiAgICAgICAqICAgICAgICBvYmplY3Qgd2hpY2ggaXMgY3JlYXRlZCB0byB3cmFwIHRoZSBtZXRob2QuXG4gICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSB3cmFwcGVyXG4gICAgICAgKiAgICAgICAgVGhlIHdyYXBwZXIgZnVuY3Rpb24gd2hpY2ggaXMgY2FsbGVkIGluIHBsYWNlIG9mIGEgZGlyZWN0IGludm9jYXRpb25cbiAgICAgICAqICAgICAgICBvZiB0aGUgd3JhcHBlZCBtZXRob2QuXG4gICAgICAgKlxuICAgICAgICogQHJldHVybnMge1Byb3h5PGZ1bmN0aW9uPn1cbiAgICAgICAqICAgICAgICBBIFByb3h5IG9iamVjdCBmb3IgdGhlIGdpdmVuIG1ldGhvZCwgd2hpY2ggaW52b2tlcyB0aGUgZ2l2ZW4gd3JhcHBlclxuICAgICAgICogICAgICAgIG1ldGhvZCBpbiBpdHMgcGxhY2UuXG4gICAgICAgKi9cbiAgICAgIGNvbnN0IHdyYXBNZXRob2QgPSAodGFyZ2V0LCBtZXRob2QsIHdyYXBwZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm94eShtZXRob2QsIHtcbiAgICAgICAgICBhcHBseSh0YXJnZXRNZXRob2QsIHRoaXNPYmosIGFyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwcGVyLmNhbGwodGhpc09iaiwgdGFyZ2V0LCAuLi5hcmdzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIGxldCBoYXNPd25Qcm9wZXJ0eSA9IEZ1bmN0aW9uLmNhbGwuYmluZChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KTtcblxuICAgICAgLyoqXG4gICAgICAgKiBXcmFwcyBhbiBvYmplY3QgaW4gYSBQcm94eSB3aGljaCBpbnRlcmNlcHRzIGFuZCB3cmFwcyBjZXJ0YWluIG1ldGhvZHNcbiAgICAgICAqIGJhc2VkIG9uIHRoZSBnaXZlbiBgd3JhcHBlcnNgIGFuZCBgbWV0YWRhdGFgIG9iamVjdHMuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtvYmplY3R9IHRhcmdldFxuICAgICAgICogICAgICAgIFRoZSB0YXJnZXQgb2JqZWN0IHRvIHdyYXAuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtvYmplY3R9IFt3cmFwcGVycyA9IHt9XVxuICAgICAgICogICAgICAgIEFuIG9iamVjdCB0cmVlIGNvbnRhaW5pbmcgd3JhcHBlciBmdW5jdGlvbnMgZm9yIHNwZWNpYWwgY2FzZXMuIEFueVxuICAgICAgICogICAgICAgIGZ1bmN0aW9uIHByZXNlbnQgaW4gdGhpcyBvYmplY3QgdHJlZSBpcyBjYWxsZWQgaW4gcGxhY2Ugb2YgdGhlXG4gICAgICAgKiAgICAgICAgbWV0aG9kIGluIHRoZSBzYW1lIGxvY2F0aW9uIGluIHRoZSBgdGFyZ2V0YCBvYmplY3QgdHJlZS4gVGhlc2VcbiAgICAgICAqICAgICAgICB3cmFwcGVyIG1ldGhvZHMgYXJlIGludm9rZWQgYXMgZGVzY3JpYmVkIGluIHtAc2VlIHdyYXBNZXRob2R9LlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbbWV0YWRhdGEgPSB7fV1cbiAgICAgICAqICAgICAgICBBbiBvYmplY3QgdHJlZSBjb250YWluaW5nIG1ldGFkYXRhIHVzZWQgdG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZVxuICAgICAgICogICAgICAgIFByb21pc2UtYmFzZWQgd3JhcHBlciBmdW5jdGlvbnMgZm9yIGFzeW5jaHJvbm91cy4gQW55IGZ1bmN0aW9uIGluXG4gICAgICAgKiAgICAgICAgdGhlIGB0YXJnZXRgIG9iamVjdCB0cmVlIHdoaWNoIGhhcyBhIGNvcnJlc3BvbmRpbmcgbWV0YWRhdGEgb2JqZWN0XG4gICAgICAgKiAgICAgICAgaW4gdGhlIHNhbWUgbG9jYXRpb24gaW4gdGhlIGBtZXRhZGF0YWAgdHJlZSBpcyByZXBsYWNlZCB3aXRoIGFuXG4gICAgICAgKiAgICAgICAgYXV0b21hdGljYWxseS1nZW5lcmF0ZWQgd3JhcHBlciBmdW5jdGlvbiwgYXMgZGVzY3JpYmVkIGluXG4gICAgICAgKiAgICAgICAge0BzZWUgd3JhcEFzeW5jRnVuY3Rpb259XG4gICAgICAgKlxuICAgICAgICogQHJldHVybnMge1Byb3h5PG9iamVjdD59XG4gICAgICAgKi9cbiAgICAgIGNvbnN0IHdyYXBPYmplY3QgPSAodGFyZ2V0LCB3cmFwcGVycyA9IHt9LCBtZXRhZGF0YSA9IHt9KSA9PiB7XG4gICAgICAgIGxldCBjYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIGxldCBoYW5kbGVycyA9IHtcbiAgICAgICAgICBoYXMocHJveHlUYXJnZXQsIHByb3ApIHtcbiAgICAgICAgICAgIHJldHVybiBwcm9wIGluIHRhcmdldCB8fCBwcm9wIGluIGNhY2hlO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2V0KHByb3h5VGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgaWYgKHByb3AgaW4gY2FjaGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGNhY2hlW3Byb3BdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCEocHJvcCBpbiB0YXJnZXQpKSB7XG4gICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSB0YXJnZXRbcHJvcF07XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIG1ldGhvZCBvbiB0aGUgdW5kZXJseWluZyBvYmplY3QuIENoZWNrIGlmIHdlIG5lZWQgdG8gZG9cbiAgICAgICAgICAgICAgLy8gYW55IHdyYXBwaW5nLlxuXG4gICAgICAgICAgICAgIGlmICh0eXBlb2Ygd3JhcHBlcnNbcHJvcF0gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBzcGVjaWFsLWNhc2Ugd3JhcHBlciBmb3IgdGhpcyBtZXRob2QuXG4gICAgICAgICAgICAgICAgdmFsdWUgPSB3cmFwTWV0aG9kKHRhcmdldCwgdGFyZ2V0W3Byb3BdLCB3cmFwcGVyc1twcm9wXSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoaGFzT3duUHJvcGVydHkobWV0YWRhdGEsIHByb3ApKSB7XG4gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiBhc3luYyBtZXRob2QgdGhhdCB3ZSBoYXZlIG1ldGFkYXRhIGZvci4gQ3JlYXRlIGFcbiAgICAgICAgICAgICAgICAvLyBQcm9taXNlIHdyYXBwZXIgZm9yIGl0LlxuICAgICAgICAgICAgICAgIGxldCB3cmFwcGVyID0gd3JhcEFzeW5jRnVuY3Rpb24ocHJvcCwgbWV0YWRhdGFbcHJvcF0pO1xuICAgICAgICAgICAgICAgIHZhbHVlID0gd3JhcE1ldGhvZCh0YXJnZXQsIHRhcmdldFtwcm9wXSwgd3JhcHBlcik7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIG1ldGhvZCB0aGF0IHdlIGRvbid0IGtub3cgb3IgY2FyZSBhYm91dC4gUmV0dXJuIHRoZVxuICAgICAgICAgICAgICAgIC8vIG9yaWdpbmFsIG1ldGhvZCwgYm91bmQgdG8gdGhlIHVuZGVybHlpbmcgb2JqZWN0LlxuICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuYmluZCh0YXJnZXQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAoaGFzT3duUHJvcGVydHkod3JhcHBlcnMsIHByb3ApIHx8IGhhc093blByb3BlcnR5KG1ldGFkYXRhLCBwcm9wKSkpIHtcbiAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiBvYmplY3QgdGhhdCB3ZSBuZWVkIHRvIGRvIHNvbWUgd3JhcHBpbmcgZm9yIHRoZSBjaGlsZHJlblxuICAgICAgICAgICAgICAvLyBvZi4gQ3JlYXRlIGEgc3ViLW9iamVjdCB3cmFwcGVyIGZvciBpdCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBjaGlsZFxuICAgICAgICAgICAgICAvLyBtZXRhZGF0YS5cbiAgICAgICAgICAgICAgdmFsdWUgPSB3cmFwT2JqZWN0KHZhbHVlLCB3cmFwcGVyc1twcm9wXSwgbWV0YWRhdGFbcHJvcF0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChoYXNPd25Qcm9wZXJ0eShtZXRhZGF0YSwgXCIqXCIpKSB7XG4gICAgICAgICAgICAgIC8vIFdyYXAgYWxsIHByb3BlcnRpZXMgaW4gKiBuYW1lc3BhY2UuXG4gICAgICAgICAgICAgIHZhbHVlID0gd3JhcE9iamVjdCh2YWx1ZSwgd3JhcHBlcnNbcHJvcF0sIG1ldGFkYXRhW1wiKlwiXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGRvIGFueSB3cmFwcGluZyBmb3IgdGhpcyBwcm9wZXJ0eSxcbiAgICAgICAgICAgICAgLy8gc28ganVzdCBmb3J3YXJkIGFsbCBhY2Nlc3MgdG8gdGhlIHVuZGVybHlpbmcgb2JqZWN0LlxuICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY2FjaGUsIHByb3AsIHtcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W3Byb3BdO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2V0KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYWNoZVtwcm9wXSA9IHZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2V0KHByb3h5VGFyZ2V0LCBwcm9wLCB2YWx1ZSwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIGlmIChwcm9wIGluIGNhY2hlKSB7XG4gICAgICAgICAgICAgIGNhY2hlW3Byb3BdID0gdmFsdWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZGVmaW5lUHJvcGVydHkocHJveHlUYXJnZXQsIHByb3AsIGRlc2MpIHtcbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmRlZmluZVByb3BlcnR5KGNhY2hlLCBwcm9wLCBkZXNjKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRlbGV0ZVByb3BlcnR5KHByb3h5VGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5kZWxldGVQcm9wZXJ0eShjYWNoZSwgcHJvcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFBlciBjb250cmFjdCBvZiB0aGUgUHJveHkgQVBJLCB0aGUgXCJnZXRcIiBwcm94eSBoYW5kbGVyIG11c3QgcmV0dXJuIHRoZVxuICAgICAgICAvLyBvcmlnaW5hbCB2YWx1ZSBvZiB0aGUgdGFyZ2V0IGlmIHRoYXQgdmFsdWUgaXMgZGVjbGFyZWQgcmVhZC1vbmx5IGFuZFxuICAgICAgICAvLyBub24tY29uZmlndXJhYmxlLiBGb3IgdGhpcyByZWFzb24sIHdlIGNyZWF0ZSBhbiBvYmplY3Qgd2l0aCB0aGVcbiAgICAgICAgLy8gcHJvdG90eXBlIHNldCB0byBgdGFyZ2V0YCBpbnN0ZWFkIG9mIHVzaW5nIGB0YXJnZXRgIGRpcmVjdGx5LlxuICAgICAgICAvLyBPdGhlcndpc2Ugd2UgY2Fubm90IHJldHVybiBhIGN1c3RvbSBvYmplY3QgZm9yIEFQSXMgdGhhdFxuICAgICAgICAvLyBhcmUgZGVjbGFyZWQgcmVhZC1vbmx5IGFuZCBub24tY29uZmlndXJhYmxlLCBzdWNoIGFzIGBjaHJvbWUuZGV2dG9vbHNgLlxuICAgICAgICAvL1xuICAgICAgICAvLyBUaGUgcHJveHkgaGFuZGxlcnMgdGhlbXNlbHZlcyB3aWxsIHN0aWxsIHVzZSB0aGUgb3JpZ2luYWwgYHRhcmdldGBcbiAgICAgICAgLy8gaW5zdGVhZCBvZiB0aGUgYHByb3h5VGFyZ2V0YCwgc28gdGhhdCB0aGUgbWV0aG9kcyBhbmQgcHJvcGVydGllcyBhcmVcbiAgICAgICAgLy8gZGVyZWZlcmVuY2VkIHZpYSB0aGUgb3JpZ2luYWwgdGFyZ2V0cy5cbiAgICAgICAgbGV0IHByb3h5VGFyZ2V0ID0gT2JqZWN0LmNyZWF0ZSh0YXJnZXQpO1xuICAgICAgICByZXR1cm4gbmV3IFByb3h5KHByb3h5VGFyZ2V0LCBoYW5kbGVycyk7XG4gICAgICB9O1xuXG4gICAgICAvKipcbiAgICAgICAqIENyZWF0ZXMgYSBzZXQgb2Ygd3JhcHBlciBmdW5jdGlvbnMgZm9yIGFuIGV2ZW50IG9iamVjdCwgd2hpY2ggaGFuZGxlc1xuICAgICAgICogd3JhcHBpbmcgb2YgbGlzdGVuZXIgZnVuY3Rpb25zIHRoYXQgdGhvc2UgbWVzc2FnZXMgYXJlIHBhc3NlZC5cbiAgICAgICAqXG4gICAgICAgKiBBIHNpbmdsZSB3cmFwcGVyIGlzIGNyZWF0ZWQgZm9yIGVhY2ggbGlzdGVuZXIgZnVuY3Rpb24sIGFuZCBzdG9yZWQgaW4gYVxuICAgICAgICogbWFwLiBTdWJzZXF1ZW50IGNhbGxzIHRvIGBhZGRMaXN0ZW5lcmAsIGBoYXNMaXN0ZW5lcmAsIG9yIGByZW1vdmVMaXN0ZW5lcmBcbiAgICAgICAqIHJldHJpZXZlIHRoZSBvcmlnaW5hbCB3cmFwcGVyLCBzbyB0aGF0ICBhdHRlbXB0cyB0byByZW1vdmUgYVxuICAgICAgICogcHJldmlvdXNseS1hZGRlZCBsaXN0ZW5lciB3b3JrIGFzIGV4cGVjdGVkLlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB7RGVmYXVsdFdlYWtNYXA8ZnVuY3Rpb24sIGZ1bmN0aW9uPn0gd3JhcHBlck1hcFxuICAgICAgICogICAgICAgIEEgRGVmYXVsdFdlYWtNYXAgb2JqZWN0IHdoaWNoIHdpbGwgY3JlYXRlIHRoZSBhcHByb3ByaWF0ZSB3cmFwcGVyXG4gICAgICAgKiAgICAgICAgZm9yIGEgZ2l2ZW4gbGlzdGVuZXIgZnVuY3Rpb24gd2hlbiBvbmUgZG9lcyBub3QgZXhpc3QsIGFuZCByZXRyaWV2ZVxuICAgICAgICogICAgICAgIGFuIGV4aXN0aW5nIG9uZSB3aGVuIGl0IGRvZXMuXG4gICAgICAgKlxuICAgICAgICogQHJldHVybnMge29iamVjdH1cbiAgICAgICAqL1xuICAgICAgY29uc3Qgd3JhcEV2ZW50ID0gd3JhcHBlck1hcCA9PiAoe1xuICAgICAgICBhZGRMaXN0ZW5lcih0YXJnZXQsIGxpc3RlbmVyLCAuLi5hcmdzKSB7XG4gICAgICAgICAgdGFyZ2V0LmFkZExpc3RlbmVyKHdyYXBwZXJNYXAuZ2V0KGxpc3RlbmVyKSwgLi4uYXJncyk7XG4gICAgICAgIH0sXG4gICAgICAgIGhhc0xpc3RlbmVyKHRhcmdldCwgbGlzdGVuZXIpIHtcbiAgICAgICAgICByZXR1cm4gdGFyZ2V0Lmhhc0xpc3RlbmVyKHdyYXBwZXJNYXAuZ2V0KGxpc3RlbmVyKSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbW92ZUxpc3RlbmVyKHRhcmdldCwgbGlzdGVuZXIpIHtcbiAgICAgICAgICB0YXJnZXQucmVtb3ZlTGlzdGVuZXIod3JhcHBlck1hcC5nZXQobGlzdGVuZXIpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjb25zdCBvblJlcXVlc3RGaW5pc2hlZFdyYXBwZXJzID0gbmV3IERlZmF1bHRXZWFrTWFwKGxpc3RlbmVyID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBsaXN0ZW5lciAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgcmV0dXJuIGxpc3RlbmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdyYXBzIGFuIG9uUmVxdWVzdEZpbmlzaGVkIGxpc3RlbmVyIGZ1bmN0aW9uIHNvIHRoYXQgaXQgd2lsbCByZXR1cm4gYVxuICAgICAgICAgKiBgZ2V0Q29udGVudCgpYCBwcm9wZXJ0eSB3aGljaCByZXR1cm5zIGEgYFByb21pc2VgIHJhdGhlciB0aGFuIHVzaW5nIGFcbiAgICAgICAgICogY2FsbGJhY2sgQVBJLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0ge29iamVjdH0gcmVxXG4gICAgICAgICAqICAgICAgICBUaGUgSEFSIGVudHJ5IG9iamVjdCByZXByZXNlbnRpbmcgdGhlIG5ldHdvcmsgcmVxdWVzdC5cbiAgICAgICAgICovXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiBvblJlcXVlc3RGaW5pc2hlZChyZXEpIHtcbiAgICAgICAgICBjb25zdCB3cmFwcGVkUmVxID0gd3JhcE9iamVjdChyZXEsIHt9IC8qIHdyYXBwZXJzICovLCB7XG4gICAgICAgICAgICBnZXRDb250ZW50OiB7XG4gICAgICAgICAgICAgIG1pbkFyZ3M6IDAsXG4gICAgICAgICAgICAgIG1heEFyZ3M6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBsaXN0ZW5lcih3cmFwcGVkUmVxKTtcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgb25NZXNzYWdlV3JhcHBlcnMgPSBuZXcgRGVmYXVsdFdlYWtNYXAobGlzdGVuZXIgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGxpc3RlbmVyICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICByZXR1cm4gbGlzdGVuZXI7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogV3JhcHMgYSBtZXNzYWdlIGxpc3RlbmVyIGZ1bmN0aW9uIHNvIHRoYXQgaXQgbWF5IHNlbmQgcmVzcG9uc2VzIGJhc2VkIG9uXG4gICAgICAgICAqIGl0cyByZXR1cm4gdmFsdWUsIHJhdGhlciB0aGFuIGJ5IHJldHVybmluZyBhIHNlbnRpbmVsIHZhbHVlIGFuZCBjYWxsaW5nIGFcbiAgICAgICAgICogY2FsbGJhY2suIElmIHRoZSBsaXN0ZW5lciBmdW5jdGlvbiByZXR1cm5zIGEgUHJvbWlzZSwgdGhlIHJlc3BvbnNlIGlzXG4gICAgICAgICAqIHNlbnQgd2hlbiB0aGUgcHJvbWlzZSBlaXRoZXIgcmVzb2x2ZXMgb3IgcmVqZWN0cy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIHsqfSBtZXNzYWdlXG4gICAgICAgICAqICAgICAgICBUaGUgbWVzc2FnZSBzZW50IGJ5IHRoZSBvdGhlciBlbmQgb2YgdGhlIGNoYW5uZWwuXG4gICAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBzZW5kZXJcbiAgICAgICAgICogICAgICAgIERldGFpbHMgYWJvdXQgdGhlIHNlbmRlciBvZiB0aGUgbWVzc2FnZS5cbiAgICAgICAgICogQHBhcmFtIHtmdW5jdGlvbigqKX0gc2VuZFJlc3BvbnNlXG4gICAgICAgICAqICAgICAgICBBIGNhbGxiYWNrIHdoaWNoLCB3aGVuIGNhbGxlZCB3aXRoIGFuIGFyYml0cmFyeSBhcmd1bWVudCwgc2VuZHNcbiAgICAgICAgICogICAgICAgIHRoYXQgdmFsdWUgYXMgYSByZXNwb25zZS5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICAgICAqICAgICAgICBUcnVlIGlmIHRoZSB3cmFwcGVkIGxpc3RlbmVyIHJldHVybmVkIGEgUHJvbWlzZSwgd2hpY2ggd2lsbCBsYXRlclxuICAgICAgICAgKiAgICAgICAgeWllbGQgYSByZXNwb25zZS4gRmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAgICAgKi9cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIG9uTWVzc2FnZShtZXNzYWdlLCBzZW5kZXIsIHNlbmRSZXNwb25zZSkge1xuICAgICAgICAgIGxldCBkaWRDYWxsU2VuZFJlc3BvbnNlID0gZmFsc2U7XG4gICAgICAgICAgbGV0IHdyYXBwZWRTZW5kUmVzcG9uc2U7XG4gICAgICAgICAgbGV0IHNlbmRSZXNwb25zZVByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIHdyYXBwZWRTZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgZGlkQ2FsbFNlbmRSZXNwb25zZSA9IHRydWU7XG4gICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXN1bHQgPSBsaXN0ZW5lcihtZXNzYWdlLCBzZW5kZXIsIHdyYXBwZWRTZW5kUmVzcG9uc2UpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmVzdWx0ID0gUHJvbWlzZS5yZWplY3QoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaXNSZXN1bHRUaGVuYWJsZSA9IHJlc3VsdCAhPT0gdHJ1ZSAmJiBpc1RoZW5hYmxlKHJlc3VsdCk7XG5cbiAgICAgICAgICAvLyBJZiB0aGUgbGlzdGVuZXIgZGlkbid0IHJldHVybmVkIHRydWUgb3IgYSBQcm9taXNlLCBvciBjYWxsZWRcbiAgICAgICAgICAvLyB3cmFwcGVkU2VuZFJlc3BvbnNlIHN5bmNocm9ub3VzbHksIHdlIGNhbiBleGl0IGVhcmxpZXJcbiAgICAgICAgICAvLyBiZWNhdXNlIHRoZXJlIHdpbGwgYmUgbm8gcmVzcG9uc2Ugc2VudCBmcm9tIHRoaXMgbGlzdGVuZXIuXG4gICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdHJ1ZSAmJiAhaXNSZXN1bHRUaGVuYWJsZSAmJiAhZGlkQ2FsbFNlbmRSZXNwb25zZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEEgc21hbGwgaGVscGVyIHRvIHNlbmQgdGhlIG1lc3NhZ2UgaWYgdGhlIHByb21pc2UgcmVzb2x2ZXNcbiAgICAgICAgICAvLyBhbmQgYW4gZXJyb3IgaWYgdGhlIHByb21pc2UgcmVqZWN0cyAoYSB3cmFwcGVkIHNlbmRNZXNzYWdlIGhhc1xuICAgICAgICAgIC8vIHRvIHRyYW5zbGF0ZSB0aGUgbWVzc2FnZSBpbnRvIGEgcmVzb2x2ZWQgcHJvbWlzZSBvciBhIHJlamVjdGVkXG4gICAgICAgICAgLy8gcHJvbWlzZSkuXG4gICAgICAgICAgY29uc3Qgc2VuZFByb21pc2VkUmVzdWx0ID0gcHJvbWlzZSA9PiB7XG4gICAgICAgICAgICBwcm9taXNlLnRoZW4obXNnID0+IHtcbiAgICAgICAgICAgICAgLy8gc2VuZCB0aGUgbWVzc2FnZSB2YWx1ZS5cbiAgICAgICAgICAgICAgc2VuZFJlc3BvbnNlKG1zZyk7XG4gICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgIC8vIFNlbmQgYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBlcnJvciBpZiB0aGUgcmVqZWN0ZWQgdmFsdWVcbiAgICAgICAgICAgICAgLy8gaXMgYW4gaW5zdGFuY2Ugb2YgZXJyb3IsIG9yIHRoZSBvYmplY3QgaXRzZWxmIG90aGVyd2lzZS5cbiAgICAgICAgICAgICAgbGV0IG1lc3NhZ2U7XG4gICAgICAgICAgICAgIGlmIChlcnJvciAmJiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciB8fCB0eXBlb2YgZXJyb3IubWVzc2FnZSA9PT0gXCJzdHJpbmdcIikpIHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gZXJyb3IubWVzc2FnZTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gXCJBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VycmVkXCI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgc2VuZFJlc3BvbnNlKHtcbiAgICAgICAgICAgICAgICBfX21veldlYkV4dGVuc2lvblBvbHlmaWxsUmVqZWN0X186IHRydWUsXG4gICAgICAgICAgICAgICAgbWVzc2FnZVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgIC8vIFByaW50IGFuIGVycm9yIG9uIHRoZSBjb25zb2xlIGlmIHVuYWJsZSB0byBzZW5kIHRoZSByZXNwb25zZS5cbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBzZW5kIG9uTWVzc2FnZSByZWplY3RlZCByZXBseVwiLCBlcnIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIC8vIElmIHRoZSBsaXN0ZW5lciByZXR1cm5lZCBhIFByb21pc2UsIHNlbmQgdGhlIHJlc29sdmVkIHZhbHVlIGFzIGFcbiAgICAgICAgICAvLyByZXN1bHQsIG90aGVyd2lzZSB3YWl0IHRoZSBwcm9taXNlIHJlbGF0ZWQgdG8gdGhlIHdyYXBwZWRTZW5kUmVzcG9uc2VcbiAgICAgICAgICAvLyBjYWxsYmFjayB0byByZXNvbHZlIGFuZCBzZW5kIGl0IGFzIGEgcmVzcG9uc2UuXG4gICAgICAgICAgaWYgKGlzUmVzdWx0VGhlbmFibGUpIHtcbiAgICAgICAgICAgIHNlbmRQcm9taXNlZFJlc3VsdChyZXN1bHQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZW5kUHJvbWlzZWRSZXN1bHQoc2VuZFJlc3BvbnNlUHJvbWlzZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gTGV0IENocm9tZSBrbm93IHRoYXQgdGhlIGxpc3RlbmVyIGlzIHJlcGx5aW5nLlxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICBjb25zdCB3cmFwcGVkU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICh7XG4gICAgICAgIHJlamVjdCxcbiAgICAgICAgcmVzb2x2ZVxuICAgICAgfSwgcmVwbHkpID0+IHtcbiAgICAgICAgaWYgKGV4dGVuc2lvbkFQSXMucnVudGltZS5sYXN0RXJyb3IpIHtcbiAgICAgICAgICAvLyBEZXRlY3Qgd2hlbiBub25lIG9mIHRoZSBsaXN0ZW5lcnMgcmVwbGllZCB0byB0aGUgc2VuZE1lc3NhZ2UgY2FsbCBhbmQgcmVzb2x2ZVxuICAgICAgICAgIC8vIHRoZSBwcm9taXNlIHRvIHVuZGVmaW5lZCBhcyBpbiBGaXJlZm94LlxuICAgICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS93ZWJleHRlbnNpb24tcG9seWZpbGwvaXNzdWVzLzEzMFxuICAgICAgICAgIGlmIChleHRlbnNpb25BUElzLnJ1bnRpbWUubGFzdEVycm9yLm1lc3NhZ2UgPT09IENIUk9NRV9TRU5EX01FU1NBR0VfQ0FMTEJBQ0tfTk9fUkVTUE9OU0VfTUVTU0FHRSkge1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGV4dGVuc2lvbkFQSXMucnVudGltZS5sYXN0RXJyb3IubWVzc2FnZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChyZXBseSAmJiByZXBseS5fX21veldlYkV4dGVuc2lvblBvbHlmaWxsUmVqZWN0X18pIHtcbiAgICAgICAgICAvLyBDb252ZXJ0IGJhY2sgdGhlIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIGVycm9yIGludG9cbiAgICAgICAgICAvLyBhbiBFcnJvciBpbnN0YW5jZS5cbiAgICAgICAgICByZWplY3QobmV3IEVycm9yKHJlcGx5Lm1lc3NhZ2UpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKHJlcGx5KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGNvbnN0IHdyYXBwZWRTZW5kTWVzc2FnZSA9IChuYW1lLCBtZXRhZGF0YSwgYXBpTmFtZXNwYWNlT2JqLCAuLi5hcmdzKSA9PiB7XG4gICAgICAgIGlmIChhcmdzLmxlbmd0aCA8IG1ldGFkYXRhLm1pbkFyZ3MpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGF0IGxlYXN0ICR7bWV0YWRhdGEubWluQXJnc30gJHtwbHVyYWxpemVBcmd1bWVudHMobWV0YWRhdGEubWluQXJncyl9IGZvciAke25hbWV9KCksIGdvdCAke2FyZ3MubGVuZ3RofWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhcmdzLmxlbmd0aCA+IG1ldGFkYXRhLm1heEFyZ3MpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGF0IG1vc3QgJHttZXRhZGF0YS5tYXhBcmdzfSAke3BsdXJhbGl6ZUFyZ3VtZW50cyhtZXRhZGF0YS5tYXhBcmdzKX0gZm9yICR7bmFtZX0oKSwgZ290ICR7YXJncy5sZW5ndGh9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBjb25zdCB3cmFwcGVkQ2IgPSB3cmFwcGVkU2VuZE1lc3NhZ2VDYWxsYmFjay5iaW5kKG51bGwsIHtcbiAgICAgICAgICAgIHJlc29sdmUsXG4gICAgICAgICAgICByZWplY3RcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBhcmdzLnB1c2god3JhcHBlZENiKTtcbiAgICAgICAgICBhcGlOYW1lc3BhY2VPYmouc2VuZE1lc3NhZ2UoLi4uYXJncyk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IHN0YXRpY1dyYXBwZXJzID0ge1xuICAgICAgICBkZXZ0b29sczoge1xuICAgICAgICAgIG5ldHdvcms6IHtcbiAgICAgICAgICAgIG9uUmVxdWVzdEZpbmlzaGVkOiB3cmFwRXZlbnQob25SZXF1ZXN0RmluaXNoZWRXcmFwcGVycylcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJ1bnRpbWU6IHtcbiAgICAgICAgICBvbk1lc3NhZ2U6IHdyYXBFdmVudChvbk1lc3NhZ2VXcmFwcGVycyksXG4gICAgICAgICAgb25NZXNzYWdlRXh0ZXJuYWw6IHdyYXBFdmVudChvbk1lc3NhZ2VXcmFwcGVycyksXG4gICAgICAgICAgc2VuZE1lc3NhZ2U6IHdyYXBwZWRTZW5kTWVzc2FnZS5iaW5kKG51bGwsIFwic2VuZE1lc3NhZ2VcIiwge1xuICAgICAgICAgICAgbWluQXJnczogMSxcbiAgICAgICAgICAgIG1heEFyZ3M6IDNcbiAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICB0YWJzOiB7XG4gICAgICAgICAgc2VuZE1lc3NhZ2U6IHdyYXBwZWRTZW5kTWVzc2FnZS5iaW5kKG51bGwsIFwic2VuZE1lc3NhZ2VcIiwge1xuICAgICAgICAgICAgbWluQXJnczogMixcbiAgICAgICAgICAgIG1heEFyZ3M6IDNcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgY29uc3Qgc2V0dGluZ01ldGFkYXRhID0ge1xuICAgICAgICBjbGVhcjoge1xuICAgICAgICAgIG1pbkFyZ3M6IDEsXG4gICAgICAgICAgbWF4QXJnczogMVxuICAgICAgICB9LFxuICAgICAgICBnZXQ6IHtcbiAgICAgICAgICBtaW5BcmdzOiAxLFxuICAgICAgICAgIG1heEFyZ3M6IDFcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiB7XG4gICAgICAgICAgbWluQXJnczogMSxcbiAgICAgICAgICBtYXhBcmdzOiAxXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBhcGlNZXRhZGF0YS5wcml2YWN5ID0ge1xuICAgICAgICBuZXR3b3JrOiB7XG4gICAgICAgICAgXCIqXCI6IHNldHRpbmdNZXRhZGF0YVxuICAgICAgICB9LFxuICAgICAgICBzZXJ2aWNlczoge1xuICAgICAgICAgIFwiKlwiOiBzZXR0aW5nTWV0YWRhdGFcbiAgICAgICAgfSxcbiAgICAgICAgd2Vic2l0ZXM6IHtcbiAgICAgICAgICBcIipcIjogc2V0dGluZ01ldGFkYXRhXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICByZXR1cm4gd3JhcE9iamVjdChleHRlbnNpb25BUElzLCBzdGF0aWNXcmFwcGVycywgYXBpTWV0YWRhdGEpO1xuICAgIH07XG5cbiAgICAvLyBUaGUgYnVpbGQgcHJvY2VzcyBhZGRzIGEgVU1EIHdyYXBwZXIgYXJvdW5kIHRoaXMgZmlsZSwgd2hpY2ggbWFrZXMgdGhlXG4gICAgLy8gYG1vZHVsZWAgdmFyaWFibGUgYXZhaWxhYmxlLlxuICAgIG1vZHVsZS5leHBvcnRzID0gd3JhcEFQSXMoY2hyb21lKTtcbiAgfSBlbHNlIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IGdsb2JhbFRoaXMuYnJvd3NlcjtcbiAgfVxufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1icm93c2VyLXBvbHlmaWxsLmpzLm1hcFxuIiwiaW1wb3J0IG9yaWdpbmFsQnJvd3NlciBmcm9tIFwid2ViZXh0ZW5zaW9uLXBvbHlmaWxsXCI7XG5leHBvcnQgY29uc3QgYnJvd3NlciA9IG9yaWdpbmFsQnJvd3NlcjtcbiJdLCJuYW1lcyI6WyJkZWRlbnQiLCJyZXN1bHQiLCJ0aGlzIiwicmVxdWlyZSQkMCIsInJlcXVpcmUkJDEiLCJyZXF1aXJlJCQyIiwiZW5kZW50IiwibCIsImkiLCJlIiwicmVxdWlyZSIsInQiLCJuIiwiciIsIm8iLCJ1IiwiYSIsInMiLCJmIiwiYyIsImQiLCJwcm9tcHRzIiwibW9kdWxlIiwicHJveHlUYXJnZXQiLCJ2YWx1ZSIsIm1lc3NhZ2UiXSwibWFwcGluZ3MiOiI7O0FBQU8sV0FBUyxpQkFBaUIsS0FBSztBQUNwQyxRQUFJLE9BQU8sUUFBUSxPQUFPLFFBQVEsV0FBWSxRQUFPLEVBQUUsTUFBTSxJQUFLO0FBQ2xFLFdBQU87QUFBQSxFQUNUO0FDRkEsTUFBSSxnQkFBZ0IsTUFBTTtBQUFBLElBQ3hCLFlBQVksY0FBYztBQUN4QixVQUFJLGlCQUFpQixjQUFjO0FBQ2pDLGFBQUssWUFBWTtBQUNqQixhQUFLLGtCQUFrQixDQUFDLEdBQUcsY0FBYyxTQUFTO0FBQ2xELGFBQUssZ0JBQWdCO0FBQ3JCLGFBQUssZ0JBQWdCO0FBQUEsTUFDM0IsT0FBVztBQUNMLGNBQU0sU0FBUyx1QkFBdUIsS0FBSyxZQUFZO0FBQ3ZELFlBQUksVUFBVTtBQUNaLGdCQUFNLElBQUksb0JBQW9CLGNB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QyxHQUFFLGNBQWEsU0FBU0EsSUFBRTtBQUFDLHVCQUFPTSxHQUFFLGNBQWMsR0FBRSxLQUFLLFNBQVMsTUFBTSxVQUFVLE1BQU0sS0FBS04sRUFBQyxDQUFDO0FBQUEsY0FBQyxHQUFFLGFBQVksU0FBU0EsSUFBRTtBQUFDLHVCQUFPTSxHQUFFLGFBQWEsR0FBRSxLQUFLLFNBQVMsTUFBTSxVQUFVLE1BQU0sS0FBS04sRUFBQyxDQUFDO0FBQUEsY0FBQyxHQUFFLGNBQWEsU0FBU0EsSUFBRTtBQUFDLHVCQUFPTSxHQUFFLGNBQWMsR0FBRSxLQUFLLFNBQVMsTUFBTSxVQUFVLE1BQU0sS0FBS04sRUFBQyxDQUFDO0FBQUEsY0FBQyxHQUFFLGFBQVksU0FBU0EsSUFBRTtBQUFDLHVCQUFPTSxHQUFFLGFBQWEsR0FBRSxLQUFLLFNBQVMsTUFBTSxVQUFVLE1BQU0sS0FBS04sRUFBQyxDQUFDO0FBQUEsY0FBQyxHQUFFLGVBQWMsU0FBU0EsSUFBRTtBQUFDLHVCQUFPTSxHQUFFLGVBQWUsR0FBRSxLQUFLLFNBQVMsTUFBTSxVQUFVLE1BQU0sS0FBS04sRUFBQyxDQUFDO0FBQUEsY0FBQyxHQUFFLGVBQWMsU0FBU0EsSUFBRTtBQUFDLHVCQUFPTSxHQUFFLGVBQWUsR0FBRSxLQUFLLFNBQVMsTUFBTSxVQUFVLE1BQU0sS0FBS04sRUFBQyxDQUFDO0FBQUEsY0FBQyxHQUFFLGNBQWEsU0FBU0EsSUFBRTtBQUFDLHVCQUFPTSxHQUFFLGNBQWMsR0FBRSxLQUFLLFNBQVMsSUFBSSxXQUFXTixFQUFDLENBQUM7QUFBQSxjQUFDLEdBQUUsTUFBSyxTQUFTQSxJQUFFO0FBQUMsdUJBQU9NLEdBQUUsU0FBT04sR0FBRSxTQUFVLENBQUE7QUFBQSxjQUFDLEdBQUUsTUFBSyxTQUFTQSxJQUFFO0FBQUMsZ0JBQUFNLEdBQUUsTUFBTTtBQUFFLGdCQUFBTixLQUFFLE1BQU0sS0FBS0EsRUFBQztBQUFFLHVCQUFPLEtBQUssT0FBT0EsSUFBRSxVQUFLSyxHQUFFLGFBQWE7QUFBQSxjQUFDLEdBQUUsTUFBSyxTQUFTTCxJ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RUosRUFBQyxJQUFFRyxPQUFJLEtBQUdFLEtBQUVMLEtBQUUsSUFBRUEsTUFBRztBQUFBLFlBQUc7QUFBQyxxQkFBUyxFQUFFQyxJQUFFRSxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsY0FBQUEsT0FBSSxFQUFFLFFBQU1ILElBQUUsZUFBZSxHQUFFLEVBQUUsYUFBVyxPQUFPRSxJQUFFLDJCQUEyQixHQUFFLEVBQUUsUUFBTUQsSUFBRSxnQkFBZ0IsR0FBRSxFQUFFQSxLQUFFLElBQUVILEdBQUUsUUFBTyxzQ0FBc0MsR0FBRSxFQUFFRSxJQUFFLE9BQU0sTUFBTSxJQUFHRixHQUFFLFVBQVFHLE1BQUcsRUFBRUgsSUFBRSxLQUFHRSxLQUFFQSxLQUFFLFFBQU1BLEtBQUUsR0FBRUMsSUFBRUMsSUFBRUMsRUFBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxFQUFFTCxJQUFFRSxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsY0FBQUEsT0FBSSxFQUFFLFFBQU1ILElBQUUsZUFBZSxHQUFFLEVBQUUsYUFBVyxPQUFPRSxJQUFFLDJCQUEyQixHQUFFLEVBQUUsUUFBTUQsSUFBRSxnQkFBZ0IsR0FBRSxFQUFFQSxLQUFFLElBQUVILEdBQUUsUUFBTyxzQ0FBc0MsR0FBRSxFQUFFRSxJQUFFLFlBQVcsV0FBVyxJQUFHRixHQUFFLFVBQVFHLE1BQUcsRUFBRUgsSUFBRSxLQUFHRSxLQUFFQSxLQUFFLGFBQVdBLEtBQUUsR0FBRUMsSUFBRUMsSUFBRUMsRUFBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxFQUFFTCxJQUFFRSxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsY0FBQUEsT0FBSSxFQUFFLFFBQU1ILElBQUUsZUFBZSxHQUFFLEVBQUUsYUFBVyxPQUFPRSxJQUFFLDJCQUEyQixHQUFFLEVBQUUsUUFBTUQsSUFBRSxnQkFBZ0IsR0FBRSxFQUFFQSxLQUFFLElBQUVILEdBQUUsUUFBTyxzQ0FBc0MsR0FBRSxFQUFFRSxJQUFFLHNCQUFxQixxQkFBcUIsSUFBR0YsR0FBRSxVQUFRRyxNQUFHLEVBQUUsTUFBTUgsSUFBRUUsSUFBRUMsSUFBRUMsSUFBRSxJQUFHLENBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsRUFBRUosSUFBRUUsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLGNBQUFBLE9BQUksRUFBRSxRQUFNSCxJQUFFLGVBQWUsR0FBRSxFQUFFLGFBQVcsT0FBT0UsSUFBRSwyQkFBMkIsR0FBRSxFQUFFLFFBQU1ELElBQUUsZ0JBQWdCLEdBQUUsRUFBRUEsS0FBRSxJQUFFSCxHQUFFLFFBQU8sc0NBQXNDLEdBQUUsRUFBRUUsSUFBRSx1QkFBc0Isc0JBQXNCLElBQUdGLEdBQUUsVUFBUUcsTUFBRyxFQUFFLE1BQU1ILElBQUVFLElBQUVDLElBQUVDLElBQUUsSUFBRyxDQUFDO0FBQUEsWUFBQztBQUFDLGNBQUUsU0FBTyxHQUFFLEVBQUUsYUFBVyxHQUFFLEVBQUUsb0JBQWtCLElBQUcsRUFBRSxXQUFTLE1BQUssRUFBRSxrQkFBZ0IsV0FBVTtBQUFDLGtCQUFHO0FBQUMsb0JBQUlKLEtBQUUsSUFBSSxZQUFZLENBQUMsR0FBRUUsS0FBRSxJQUFJLFdBQVdGLEVBQUM7QUFBRSx1QkFBT0UsR0FBRSxNQUFJLFdBQVU7QUFBQyx5QkFBTztBQUFBLGdCQUFFLEdBQUUsT0FBS0EsR0FBRSxJQUFHLEtBQUksY0FBWSxPQUFPQSxHQUFFO0FBQUEsY0FBUSxTQUFPRixJQUFFO0FBQUMsdUJBQU07QUFBQSxjQUFFO0FBQUEsWUFBQyxFQUFHLEdBQUMsRUFBRSxhQUFXLFNBQVNBLElBQUU7QUFBQyxzQkFBTyxPQUFPQSxFQUFDLEVBQUUsWUFBVyxHQUFJO0FBQUEsZ0JBQUEsS0FBSTtBQUFBLGdCQUFNLEtBQUk7QUFBQSxnQkFBTyxLQUFJO0FBQUEsZ0JBQVEsS0FBSTtBQUFBLGdCQUFRLEtBQUk7QUFBQSxnQkFBUyxLQUFJO0FBQUEsZ0JBQVMsS0FBSTtBQUFBLGdCQUFNLEtBQUk7QUFBQSxnQkFBTyxLQUFJO0FBQUEsZ0JBQVEsS0FBSTtBQUFBLGdCQUFVLEtBQUk7QUFBVyx5QkFBTTtBQUFBLGdCQUFHO0FBQVEseUJBQU07QUFBQSxjQUFFO0FBQUEsWUFBQyxHQUFFLEVBQUUsV0FBUyxTQUFTQSxJQUFFO0FBQUMscUJBQU0sRUFBRSxRQUFNQSxNQUFHLENBQUNBLEdBQUU7QUFBQSxZQUFVLEdBQUUsRUFBRSxhQUFXLFNBQVNBLElBQUVFLElBQUU7QUFBQyxrQkFBSUM7QUFBRSxzQkFBT0gsTUFBRyxJQUFHRSxNQUFHLFFBQVE7QUFBQSxnQkFBQSxLQUFJO0FBQU0sa0JBQUFDLEtBQUVILEdBQUUsU0FBTztBQUFFO0FBQUEsZ0JBQU0sS0FBSTtBQUFBLGdCQUFPLEtBQUk7QUFBUSxrQkFBQUcsS0FBRSxFQUFFSCxFQUFDLEVBQUU7QUFBTztBQUFBLGdCQUFNLEtBQUk7QUFBQSxnQkFBUSxLQUFJO0FBQUEsZ0JBQVMsS0FBSTtBQUFNLGtCQUFBRyxLQUFFSCxHQUFFO0FBQU87QUFBQSxnQkFBTSxLQUFJO0FBQVMsa0JBQUFHLEtBQUUsRUFBRUgsRUFBQyxFQUFFO0FBQU87QUFBQSxnQkFBTSxLQUFJO0FBQUEsZ0JBQU8sS0FBSTtBQUFBLGdCQUFRLEtBQUk7QUFBQSxnQkFBVSxLQUFJO0FBQVcsa0JBQUFHLEtBQUUsSUFBRUgsR0FBRTtBQUFPO0FBQUEsZ0JBQU07QUFBUSx3QkFBTSxJQUFJLE1BQU0sa0JBQWtCO0FBQUEsY0FBQztBQUFDLHFCQUFPRztBQUFBLFlBQUMsR0FBRSxFQUFFLFNBQU8sU0FBU0gsSUFBRUUsSUFBRTtBQUFDLGtCQUFHLEVBQUUsRUFBRUYsRUFBQyxHQUFFLHFFQUFxRSxHQUFFLE1BQUlBLEdBQUUsT0FBTyxRQUFPLElBQUksRUFBRSxDQUFDO0FBQUUsa0JBQUcsTUFBSUEsR0FBRSxPQUFPLFFBQU9BLEdBQUUsQ0FBQztBQUFFLGtCQUFHLFlBQVUsT0FBT0UsR0FBRSxNQUFJRyxLQUFFSCxLQUFFLEdBQUVHLEtBQUVMLEdBQUUsUUFBT0ssS0FBSSxDQUFBSCxNQUFHRixHQUFFSyxFQUFDLEVBQUU7QUFBTyx1QkFBUUYsS0FBRSxJQUFJLEVBQUVELEVBQUMsR0FBRUUsS0FBRSxHQUFFQyxLQUFFLEdBQUVBLEtBQUVMLEdBQUUsUUFBT0ssTUFBSTtBQUFDLG9CQUFJTixLQUFFQyxHQUFFSyxFQUFDO0FBQUUsZ0JBQUFOLEdBQUUsS0FBS0ksSUFBRUMsRUFBQyxHQUFFQSxNQUFHTCxHQUFFO0FBQUEsY0FBTTtBQUFDLHFCQUFPSTtBQUFBLFlBQUMsR0FBRSxFQUFFLFVBQVUsUUFBTSxTQUFTSCxJQUFFRSxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsdUJBQVNGLEVBQUMsSUFBRSxTQUFTQyxFQUFDLE1BQUlDLEtBQUVELElBQUVBLEtBQUUsV0FBU0ksS0FBRUgsSUFBRUEsS0FBRUYsSUFBRUEsS0FBRUMsSUFBRUEsS0FBRUksS0FBR0wsS0FBRSxPQUFPQSxFQUFDLEtBQUc7QUFBRSxrQkFBSUcsSUFBRU4sSUFBRU8sSUFBRUUsSUFBRUQsS0FBRSxLQUFLLFNBQU9MO0FBQUUsdUJBQVEsQ0FBQ0MsTUFBR0ksTUFBR0osS0FBRSxPQUFPQSxFQUFDLFFBQU1BLEtBQUVJLEtBQUdILEtBQUUsT0FBT0EsTUFBRyxNQUFNLEVBQUUsWUFBVyxHQUFJO0FBQUEsZ0JBQUEsS0FBSTtBQUFNLGtCQUFBQyxLQUFFLFNBQVNMLElBQUVFLElBQUVDLElBQUVDLElBQUU7QUFBQyxvQkFBQUQsS0FBRSxPQUFPQSxFQUFDLEtBQUc7QUFBRSx3QkFBSUUsS0FBRUwsR0FBRSxTQUFPRztBQUFFLHFCQUFDLENBQUNDLE1BQUdDLE1BQUdELEtBQUUsT0FBT0EsRUFBQyxRQUFNQSxLQUFFQyxLQUFHLEdBQUdBLEtBQUVILEdBQUUsVUFBUSxLQUFHLEdBQUUsb0JBQW9CLEdBQUVHLEtBQUUsSUFBRUQsT0FBSUEsS0FBRUMsS0FBRTtBQUFHLDZCQUFRTixLQUFFLEdBQUVBLEtBQUVLLElBQUVMLE1BQUk7QUFBQywwQkFBSU8sS0FBRSxTQUFTSixHQUFFLE9BQU8sSUFBRUgsSUFBRSxDQUFDLEdBQUUsRUFBRTtBQUFFLHdCQUFFLENBQUMsTUFBTU8sRUFBQyxHQUFFLG9CQUFvQixHQUFFTixHQUFFRyxLQUFFSixFQUFDLElBQUVPO0FBQUEsb0JBQUM7QUFBQywyQkFBTyxFQUFFLGdCQUFjLElBQUVQLElBQUVBO0FBQUEsa0JBQUMsRUFBRSxNQUFLQyxJQUFFRSxJQUFFQyxFQUFDO0FBQUU7QUFBQSxnQkFBTSxLQUFJO0FBQUEsZ0JBQU8sS0FBSTtBQUFRLGtCQUFBSixLQUFFLE1BQUtPLEtBQUVKLElBQUVNLEtBQUVMLElBQUVFLEtBQUUsRUFBRSxnQkFBYyxFQUFFLEVBQUVMLEVBQUMsR0FBRUQsSUFBRU8sSUFBRUUsRUFBQztBQUFFO0FBQUEsZ0JBQU0sS0FBSTtBQUFBLGdCQUFRLEtBQUk7QUFBUyxrQkFBQUgsS0FBRSxFQUFFLE1BQUtMLElBQUVFLElBQUVDLEVBQUM7QUFBRTtBQUFBLGdCQUFNLEtBQUk7QUFBUyxrQkFBQUosS0FBRSxNQUFLTyxLQUFFSixJQUFFTSxLQUFFTCxJQUFFRSxLQUFFLEVBQUUsZ0JBQWMsRUFBRSxFQUFFTCxFQUFDLEdBQUVELElBQUVPLElBQUVFLEVBQUM7QUFBRTtBQUFBLGdCQUFNLEtBQUk7QUFBQSxnQkFBTyxLQUFJO0FBQUEsZ0JBQVEsS0FBSTtBQUFBLGdCQUFVLEtBQUk7QUFBVyxrQkFBQUgsS0FBRSxFQUFFLE1BQUtMLElBQUVFLElBQUVDLEVBQUM7QUFBRTtBQUFBLGdCQUFNO0FBQVEsd0JBQU0sSUFBSSxNQUFNLGtCQUFrQjtBQUFBLGNBQUM7QUFBQyxxQkFBT0U7QUFBQSxZQUFDLEdBQUUsRUFBRSxVQUFVLFdBQVMsU0FBU0wsSUFBRUUsSUFBRUMsSUFBRTtBQUFDLGtCQUFJQyxJQUFFQyxJQUFFTixJQUFFTyxJQUFFRSxLQUFFO0FBQUssa0JBQUdSLEtBQUUsT0FBT0EsTUFBRyxNQUFNLEVBQUUsWUFBVyxHQUFHRSxLQUFFLE9BQU9BLEVBQUMsS0FBRyxJQUFHQyxLQUFFLFdBQVNBLEtBQUUsT0FBT0EsRUFBQyxJQUFFSyxHQUFFLFlBQVVOLEdBQUUsUUFBTTtBQUFHLHNCQUFPRixJQUFDO0FBQUEsZ0JBQUUsS0FBSTtBQUFNLGtCQUFBSSxLQUFFLFNBQVNKLElBQUVFLElBQUVDLElBQUU7QUFBQyx3QkFBSUMsS0FBRUosR0FBRTtBQUFPLHFCQUFDLENBQUNFLE1BQUdBLEtBQUUsT0FBS0EsS0FBRTtBQUFHLHFCQUFDLENBQUNDLE1BQUdBLEtBQUUsS0FBR0MsS0FBRUQsUUFBS0EsS0FBRUM7QUFBRyw2QkFBUUMsS0FBRSxJQUFHTixLQUFFRyxJQUFFSCxLQUFFSSxJQUFFSixLQUFJLENBQUFNLE1BQUcsRUFBRUwsR0FBRUQsRUFBQyxDQUFDO0FBQUUsMkJBQU9NO0FBQUEsa0JBQUMsRUFBRUcsSUFBRU4sSUFBRUMsRUFBQztBQUFFO0FBQUEsZ0JBQU0sS0FBSTtBQUFBLGdCQUFPLEtBQUk7QUFBUSxrQkFBQUMsS0FBRSxTQUFTSixJQUFFRSxJQUFFQyxJQUFFO0FBQUMsd0JBQUlDLEtBQUUsSUFBR0MsS0FBRTtBQUFHLG9CQUFBRixLQUFFLEtBQUssSUFBSUgsR0FBRSxRQUFPRyxFQUFDO0FBQUUsNkJBQVFKLEtBQUVHLElBQUVILEtBQUVJLElBQUVKLEtBQUksQ0FBQUMsR0FBRUQsRUFBQyxLQUFHLE9BQUtLLE1BQUcsRUFBRUMsRUFBQyxJQUFFLE9BQU8sYUFBYUwsR0FBRUQsRUFBQyxDQUFDLEdBQUVNLEtBQUUsTUFBSUEsTUFBRyxNQUFJTCxHQUFFRCxFQUFDLEVBQUUsU0FBUyxFQUFFO0FBQUUsMkJBQU9LLEtBQUUsRUFBRUMsRUFBQztBQUFBLGtCQUFDLEVBQUVHLElBQUVOLElBQUVDLEVBQUM7QUFBRTtBQUFBLGdCQUFNLEtBQUk7QUFBQSxnQkFBUSxLQUFJO0FBQVMsa0JBQUFDLEtBQUUsRUFBRUksSUFBRU4sSUFBRUMsRUFBQztBQUFFO0FBQUEsZ0JBQU0sS0FBSTtBQUFTLGtCQUFBRSxLQUFFRyxJQUFFRixLQUFFSCxJQUFFQyxLQUFFLE9BQUtMLEtBQUVHLE9BQUlJLE9BQUlELEdBQUUsU0FBTyxFQUFFLGNBQWNBLEVBQUMsSUFBRSxFQUFFLGNBQWNBLEdBQUUsTUFBTU4sSUFBRU8sRUFBQyxDQUFDO0FBQUU7QUFBQSxnQkFBTSxLQUFJO0FBQUEsZ0JBQU8sS0FBSTtBQUFBLGdCQUFRLEtBQUk7QUFBQSxnQkFBVSxLQUFJO0FBQVcsa0JBQUFGLEtBQUUsU0FBU0osSUFBRUUsSUFBRUMsSUFBRTtBQUFDLDZCQUFRQyxLQUFFSixHQUFFLE1BQU1FLElBQUVDLEVBQUMsR0FBRUUsS0FBRSxJQUFHTixLQUFFLEdBQUVBLEtBQUVLLEdBQUUsUUFBT0wsTUFBRyxFQUFFLENBQUFNLE1BQUcsT0FBTyxhQUFhRCxHQUFFTCxFQUFDLElBQUUsTUFBSUssR0FBRUwsS0FBRSxDQUFDLENBQUM7QUFBRSwyQkFBT007QUFBQSxrQkFBQyxFQUFFRyxJQUFFTixJQUFFQyxFQUFDO0FBQUU7QUFBQSxnQkFBTTtBQUFRLHdCQUFNLElBQUksTUFBTSxrQkFBa0I7QUFBQSxjQUFDO0FBQUMscUJBQU9DO0FBQUEsWUFBQyxHQUFFLEVBQUUsVUFBVSxTQUFPLFdBQVU7QUFBQyxxQkFBTSxFQUFDLE1BQUssVUFBUyxNQUFLLE1BQU0sVUFBVSxNQUFNLEtBQUssS0FBSyxRQUFNLE1BQUssQ0FBQyxFQUFDO0FBQUEsWUFBQyxHQUFFLEVBQUUsVUFBVSxPQUFLLFNBQVNKLElBQUVFLElBQUVDLElBQUVDLElBQUU7QUFBQyxrQkFBR0YsS0FBRUEsTUFBRyxJQUFHRSxLQUFFQSxNQUFHLE1BQUlBLEtBQUVBLEtBQUUsS0FBSyxhQUFXRCxLQUFFQSxNQUFHLE1BQUksTUFBSUgsR0FBRSxVQUFRLE1BQUksS0FBSyxRQUFPO0FBQUMsa0JBQUVHLE1BQUdDLElBQUUseUJBQXlCLEdBQUUsRUFBRSxLQUFHRixNQUFHQSxLQUFFRixHQUFFLFFBQU8sMkJBQTJCLEdBQUUsRUFBRSxLQUFHRyxNQUFHQSxLQUFFLEtBQUssUUFBTywyQkFBMkIsR0FBRSxFQUFFLEtBQUdDLE1BQUdBLE1BQUcsS0FBSyxRQUFPLHlCQUF5QixHQUFFQSxLQUFFLEtBQUssV0FBU0EsS0FBRSxLQUFLO0FBQVEsb0JBQUlDLE1BQUdELEtBQUVKLEdBQUUsU0FBT0UsS0FBRUUsS0FBRUQsS0FBRUgsR0FBRSxTQUFPRSxLQUFFQyxLQUFFQyxNQUFHRDtBQUFFLG9CQUFHRSxLQUFFLE9BQUssQ0FBQyxFQUFFLGdCQUFnQixVQUFRTixLQUFFLEdBQUVBLEtBQUVNLElBQUVOLEtBQUksQ0FBQUMsR0FBRUQsS0FBRUcsRUFBQyxJQUFFLEtBQUtILEtBQUVJLEVBQUM7QUFBQSxvQkFBTyxDQUFBSCxHQUFFLEtBQUssS0FBSyxTQUFTRyxJQUFFQSxLQUFFRSxFQUFDLEdBQUVILEVBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQyxHQUFFLEVBQUUsVUFBVSxRQUFNLFNBQVNGLElBQUVFLElBQUU7QUFBQyxrQkFBSUMsS0FBRSxLQUFLO0FBQU8sa0JBQUdILEtBQUUsRUFBRUEsSUFBRUcsSUFBRSxDQUFDLEdBQUVELEtBQUUsRUFBRUEsSUFBRUMsSUFBRUEsRUFBQyxHQUFFLEVBQUUsZ0JBQWdCLFFBQU8sRUFBRSxTQUFTLEtBQUssU0FBU0gsSUFBRUUsRUFBQyxDQUFDO0FBQUUsdUJBQVFFLEtBQUVGLEtBQUVGLElBQUVLLEtBQUUsSUFBSSxFQUFFRCxJQUFFLFFBQU8sSUFBRSxHQUFFTCxLQUFFLEdBQUVBLEtBQUVLLElBQUVMLEtBQUksQ0FBQU0sR0FBRU4sRUFBQyxJQUFFLEtBQUtBLEtBQUVDLEVBQUM7QUFBRSxxQkFBT0s7QUFBQSxZQUFDLEdBQUUsRUFBRSxVQUFVLE1BQUksU0FBU0wsSUFBRTtBQUFDLHFCQUFPLFFBQVEsSUFBSSwyREFBMkQsR0FBRSxLQUFLLFVBQVVBLEVBQUM7QUFBQSxZQUFDLEdBQUUsRUFBRSxVQUFVLE1BQUksU0FBU0EsSUFBRUUsSUFBRTtBQUFDLHFCQUFPLFFBQVEsSUFBSSwyREFBMkQsR0FBRSxLQUFLLFdBQVdGLElBQUVFLEVBQUM7QUFBQSxZQUFDLEdBQUUsRUFBRSxVQUFVLFlBQVUsU0FBU0YsSUFBRUUsSUFBRTtBQUFDLGtCQUFHQSxPQUFJLEVBQUUsUUFBTUYsSUFBRSxnQkFBZ0IsR0FBRSxFQUFFQSxLQUFFLEtBQUssUUFBTyxxQ0FBcUMsSUFBRyxFQUFFQSxNQUFHLEtBQUssUUFBUSxRQUFPLEtBQUtBLEVBQUM7QUFBQSxZQUFDLEdBQUUsRUFBRSxVQUFVLGVBQWEsU0FBU0EsSUFBRUUsSUFBRTtBQUFDLHFCQUFPLEVBQUUsTUFBS0YsSUFBRSxNQUFHRSxFQUFDO0FBQUEsWUFBQyxHQUFFLEVBQUUsVUFBVSxlQUFhLFNBQVNGLElBQUVFLElBQUU7QUFBQyxxQkFBTyxFQUFFLE1BQUtGLElBQUUsT0FBR0UsRUFBQztBQUFBLFlBQUMsR0FBRSxFQUFFLFVBQVUsZUFBYSxTQUFTRixJQUFFRSxJQUFFO0FBQUMscUJBQU8sRUFBRSxNQUFLRixJQUFFLE1BQUdFLEVBQUM7QUFBQSxZQUFDLEdBQUUsRUFBRSxVQUFVLGVBQWEsU0FBU0YsSUFBRUUsSUFBRTtBQUFDLHFCQUFPLEVBQUUsTUFBS0YsSUFBRSxPQUFHRSxFQUFDO0FBQUEsWUFBQyxHQUFFLEVBQUUsVUFBVSxXQUFTLFNBQVNGLElBQUVFLElBQUU7QUFBQyxrQkFBR0EsT0FBSSxFQUFFLFFBQU1GLElBQUUsZ0JBQWdCLEdBQUUsRUFBRUEsS0FBRSxLQUFLLFFBQU8scUNBQXFDLElBQUcsRUFBRUEsTUFBRyxLQUFLLFFBQVEsUUFBTyxNQUFJLEtBQUtBLEVBQUMsSUFBRSxNQUFJLE1BQUksS0FBS0EsRUFBQyxJQUFFLEtBQUcsS0FBS0EsRUFBQztBQUFBLFlBQUMsR0FBRSxFQUFFLFVBQVUsY0FBWSxTQUFTQSxJQUFFRSxJQUFFO0FBQUMscUJBQU8sRUFBRSxNQUFLRixJQUFFLE1BQUdFLEVBQUM7QUFBQSxZQUFDLEdBQUUsRUFBRSxVQUFVLGNBQVksU0FBU0YsSUFBRUUsSUFBRTtBQUFDLHFCQUFPLEVBQUUsTUFBS0YsSUFBRSxPQUFHRSxFQUFDO0FBQUEsWUFBQyxHQUFFLEVBQUUsVUFBVSxjQUFZLFNBQVNGLElBQUVFLElBQUU7QUFBQyxxQkFBTyxFQUFFLE1BQUtGLElBQUUsTUFBR0UsRUFBQztBQUFBLFlBQUMsR0FBRSxFQUFFLFVBQVUsY0FBWSxTQUFTRixJQUFFRSxJQUFFO0FBQUMscUJBQU8sRUFBRSxNQUFLRixJQUFFLE9BQUdFLEVBQUM7QUFBQSxZQUFDLEdBQUUsRUFBRSxVQUFVLGNBQVksU0FBU0YsSUFBRUUsSUFBRTtBQUFDLHFCQUFPLEVBQUUsTUFBS0YsSUFBRSxNQUFHRSxFQUFDO0FBQUEsWUFBQyxHQUFFLEVBQUUsVUFBVSxjQUFZLFNBQVNGLElBQUVFLElBQUU7QUFBQyxxQkFBTyxFQUFFLE1BQUtGLElBQUUsT0FBR0UsRUFBQztBQUFBLFlBQUMsR0FBRSxFQUFFLFVBQVUsZUFBYSxTQUFTRixJQUFFRSxJQUFFO0FBQUMscUJBQU8sRUFBRSxNQUFLRixJQUFFLE1BQUdFLEVBQUM7QUFBQSxZQUFDLEdBQUUsRUFBRSxVQUFVLGVBQWEsU0FBU0YsSUFBRUUsSUFBRTtBQUFDLHFCQUFPLEVBQUUsTUFBS0YsSUFBRSxPQUFHRSxFQUFDO0FBQUEsWUFBQyxHQUFFLEVBQUUsVUFBVSxhQUFXLFNBQVNGLElBQUVFLElBQUVDLElBQUU7QUFBQyxjQUFBQSxPQUFJLEVBQUUsUUFBTUgsSUFBRSxlQUFlLEdBQUUsRUFBRSxRQUFNRSxJQUFFLGdCQUFnQixHQUFFLEVBQUVBLEtBQUUsS0FBSyxRQUFPLHNDQUFzQyxHQUFFLEVBQUVGLElBQUUsR0FBRyxJQUFHRSxNQUFHLEtBQUssV0FBUyxLQUFLQSxFQUFDLElBQUVGO0FBQUEsWUFBRSxHQUFFLEVBQUUsVUFBVSxnQkFBYyxTQUFTQSxJQUFFRSxJQUFFQyxJQUFFO0FBQUMsZ0JBQUUsTUFBS0gsSUFBRUUsSUFBRSxNQUFHQyxFQUFDO0FBQUEsWUFBQyxHQUFFLEVBQUUsVUFBVSxnQkFBYyxTQUFTSCxJQUFFRSxJQUFFQyxJQUFFO0FBQUMsZ0JBQUUsTUFBS0gsSUFBRUUsSUFBRSxPQUFHQyxFQUFDO0FBQUEsWUFBQyxHQUFFLEVBQUUsVUFBVSxnQkFBYyxTQUFTSCxJQUFFRSxJQUFFQyxJQUFFO0FBQUMsZ0JBQUUsTUFBS0gsSUFBRUUsSUFBRSxNQUFHQyxFQUFDO0FBQUEsWUFBQyxHQUFFLEVBQUUsVUFBVSxnQkFBYyxTQUFTSCxJQUFFRSxJQUFFQyxJQUFFO0FBQUMsZ0JBQUUsTUFBS0gsSUFBRUUsSUFBRSxPQUFHQyxFQUFDO0FBQUEsWUFBQyxHQUFFLEVBQUUsVUFBVSxZQUFVLFNBQVNILElBQUVFLElBQUVDLElBQUU7QUFBQyxjQUFBQSxPQUFJLEVBQUUsUUFBTUgsSUFBRSxlQUFlLEdBQUUsRUFBRSxRQUFNRSxJQUFFLGdCQUFnQixHQUFFLEVBQUVBLEtBQUUsS0FBSyxRQUFPLHNDQUFzQyxHQUFFLEVBQUVGLElBQUUsS0FBSSxJQUFJLElBQUdFLE1BQUcsS0FBSyxXQUFTLEtBQUdGLEtBQUUsS0FBSyxXQUFXQSxJQUFFRSxJQUFFQyxFQUFDLElBQUUsS0FBSyxXQUFXLE1BQUlILEtBQUUsR0FBRUUsSUFBRUMsRUFBQztBQUFBLFlBQUUsR0FBRSxFQUFFLFVBQVUsZUFBYSxTQUFTSCxJQUFFRSxJQUFFQyxJQUFFO0FBQUMsZ0JBQUUsTUFBS0gsSUFBRUUsSUFBRSxNQUFHQyxFQUFDO0FBQUEsWUFBQyxHQUFFLEVBQUUsVUFBVSxlQUFhLFNBQVNILElBQUVFLElBQUVDLElBQUU7QUFBQyxnQkFBRSxNQUFLSCxJQUFFRSxJQUFFLE9BQUdDLEVBQUM7QUFBQSxZQUFDLEdBQUUsRUFBRSxVQUFVLGVBQWEsU0FBU0gsSUFBRUUsSUFBRUMsSUFBRTtBQUFDLGdCQUFFLE1BQUtILElBQUVFLElBQUUsTUFBR0MsRUFBQztBQUFBLFlBQUMsR0FBRSxFQUFFLFVBQVUsZUFBYSxTQUFTSCxJQUFFRSxJQUFFQyxJQUFFO0FBQUMsZ0JBQUUsTUFBS0gsSUFBRUUsSUFBRSxPQUFHQyxFQUFDO0FBQUEsWUFBQyxHQUFFLEVBQUUsVUFBVSxlQUFhLFNBQVNILElBQUVFLElBQUVDLElBQUU7QUFBQyxnQkFBRSxNQUFLSCxJQUFFRSxJQUFFLE1BQUdDLEVBQUM7QUFBQSxZQUFDLEdBQUUsRUFBRSxVQUFVLGVBQWEsU0FBU0gsSUFBRUUsSUFBRUMsSUFBRTtBQUFDLGdCQUFFLE1BQUtILElBQUVFLElBQUUsT0FBR0MsRUFBQztBQUFBLFlBQUMsR0FBRSxFQUFFLFVBQVUsZ0JBQWMsU0FBU0gsSUFBRUUsSUFBRUMsSUFBRTtBQUFDLGdCQUFFLE1BQUtILElBQUVFLElBQUUsTUFBR0MsRUFBQztBQUFBLFlBQUMsR0FBRSxFQUFFLFVBQVUsZ0JBQWMsU0FBU0gsSUFBRUUsSUFBRUMsSUFBRTtBQUFDLGdCQUFFLE1BQUtILElBQUVFLElBQUUsT0FBR0MsRUFBQztBQUFBLFlBQUMsR0FBRSxFQUFFLFVBQVUsT0FBSyxTQUFTSCxJQUFFRSxJQUFFQyxJQUFFO0FBQUMsa0JBQUdELEtBQUVBLE1BQUcsR0FBRUMsS0FBRUEsTUFBRyxLQUFLLFFBQU8sRUFBRSxZQUFVLFFBQU9ILEtBQUUsWUFBVSxRQUFPQSxLQUFFQSxNQUFHLEtBQUdBLEdBQUUsV0FBVyxDQUFDLElBQUVBLE9BQUksQ0FBQyxNQUFNQSxFQUFDLEdBQUUsdUJBQXVCLEdBQUUsRUFBRUUsTUFBR0MsSUFBRSxhQUFhLEdBQUVBLE9BQUlELE1BQUcsTUFBSSxLQUFLLFFBQU87QUFBQyxrQkFBRSxLQUFHQSxNQUFHQSxLQUFFLEtBQUssUUFBTyxxQkFBcUIsR0FBRSxFQUFFLEtBQUdDLE1BQUdBLE1BQUcsS0FBSyxRQUFPLG1CQUFtQjtBQUFFLHlCQUFRQyxLQUFFRixJQUFFRSxLQUFFRCxJQUFFQyxLQUFJLE1BQUtBLEVBQUMsSUFBRUo7QUFBQSxjQUFDO0FBQUEsWUFBQyxHQUFFLEVBQUUsVUFBVSxVQUFRLFdBQVU7QUFBQyx1QkFBUUEsS0FBRSxDQUFBLEdBQUdFLEtBQUUsS0FBSyxRQUFPQyxLQUFFLEdBQUVBLEtBQUVELElBQUVDLEtBQUksS0FBR0gsR0FBRUcsRUFBQyxJQUFFLEVBQUUsS0FBS0EsRUFBQyxDQUFDLEdBQUVBLE9BQUksRUFBRSxtQkFBa0I7QUFBQyxnQkFBQUgsR0FBRUcsS0FBRSxDQUFDLElBQUU7QUFBTTtBQUFBLGNBQUs7QUFBQyxxQkFBTSxhQUFXSCxHQUFFLEtBQUssR0FBRyxJQUFFO0FBQUEsWUFBRyxHQUFFLEVBQUUsVUFBVSxnQkFBYyxXQUFVO0FBQUMsa0JBQUcsZUFBYSxPQUFPLFdBQVcsT0FBTSxJQUFJLE1BQU0sb0RBQW9EO0FBQUUsa0JBQUcsRUFBRSxnQkFBZ0IsUUFBTyxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQU8sdUJBQVFBLEtBQUUsSUFBSSxXQUFXLEtBQUssTUFBTSxHQUFFRSxLQUFFLEdBQUVDLEtBQUVILEdBQUUsUUFBT0UsS0FBRUMsSUFBRUQsTUFBRyxFQUFFLENBQUFGLEdBQUVFLEVBQUMsSUFBRSxLQUFLQSxFQUFDO0FBQUUscUJBQU9GLEdBQUU7QUFBQSxZQUFNO0FBQUUsZ0JBQUksSUFBRSxFQUFFO0FBQVUscUJBQVMsRUFBRUEsSUFBRUUsSUFBRUMsSUFBRTtBQUFDLHFCQUFNLFlBQVUsT0FBT0gsS0FBRUcsS0FBRUQsT0FBSUYsS0FBRSxDQUFDLENBQUNBLE1BQUdFLEtBQUUsS0FBR0YsTUFBRyxNQUFJQSxNQUFHRSxNQUFHRixLQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEVBQUVBLElBQUU7QUFBQyxzQkFBT0EsS0FBRSxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUNBLEVBQUMsS0FBRyxJQUFFLElBQUVBO0FBQUEsWUFBQztBQUFDLHFCQUFTLEVBQUVBLElBQUU7QUFBQyxzQkFBTyxNQUFNLFdBQVMsU0FBU0EsSUFBRTtBQUFDLHVCQUFNLHFCQUFtQixPQUFPLFVBQVUsU0FBUyxLQUFLQSxFQUFDO0FBQUEsY0FBQyxHQUFHQSxFQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEVBQUVBLElBQUU7QUFBQyxxQkFBT0EsS0FBRSxLQUFHLE1BQUlBLEdBQUUsU0FBUyxFQUFFLElBQUVBLEdBQUUsU0FBUyxFQUFFO0FBQUEsWUFBQztBQUFDLHFCQUFTLEVBQUVBLElBQUU7QUFBQyx1QkFBUUUsS0FBRSxDQUFBLEdBQUdDLEtBQUUsR0FBRUEsS0FBRUgsR0FBRSxRQUFPRyxNQUFJO0FBQUMsb0JBQUlDLEtBQUVKLEdBQUUsV0FBV0csRUFBQztBQUFFLG9CQUFHQyxNQUFHLElBQUksQ0FBQUYsR0FBRSxLQUFLRixHQUFFLFdBQVdHLEVBQUMsQ0FBQztBQUFBLG9CQUFPLFVBQVFFLEtBQUVGLElBQUVKLE1BQUcsU0FBT0ssTUFBR0EsTUFBRyxTQUFPRCxNQUFJLG1CQUFtQkgsR0FBRSxNQUFNSyxJQUFFRixLQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLE1BQU0sR0FBRyxJQUFHRyxLQUFFLEdBQUVBLEtBQUVQLEdBQUUsUUFBT08sS0FBSSxDQUFBSixHQUFFLEtBQUssU0FBU0gsR0FBRU8sRUFBQyxHQUFFLEVBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBT0o7QUFBQSxZQUFDO0FBQUMscUJBQVMsRUFBRUYsSUFBRTtBQUFDLHFCQUFPLEVBQUUsWUFBWUEsRUFBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxFQUFFQSxJQUFFRSxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsdUJBQVFDLEtBQUUsR0FBRUEsS0FBRUQsTUFBRyxFQUFFQyxLQUFFRixNQUFHRCxHQUFFLFVBQVFHLE1BQUdMLEdBQUUsU0FBUUssS0FBSSxDQUFBSCxHQUFFRyxLQUFFRixFQUFDLElBQUVILEdBQUVLLEVBQUM7QUFBRSxxQkFBT0E7QUFBQSxZQUFDO0FBQUMscUJBQVMsRUFBRUwsSUFBRTtBQUFDLGtCQUFHO0FBQUMsdUJBQU8sbUJBQW1CQSxFQUFDO0FBQUEsY0FBQyxTQUFPQSxJQUFFO0FBQUMsdUJBQU8sT0FBTyxhQUFhLEtBQUs7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEVBQUVBLElBQUVFLElBQUU7QUFBQyxnQkFBRSxZQUFVLE9BQU9GLElBQUUsdUNBQXVDLEdBQUUsRUFBRSxLQUFHQSxJQUFFLDBEQUEwRCxHQUFFLEVBQUVBLE1BQUdFLElBQUUsNkNBQTZDLEdBQUUsRUFBRSxLQUFLLE1BQU1GLEVBQUMsTUFBSUEsSUFBRSxrQ0FBa0M7QUFBQSxZQUFDO0FBQUMscUJBQVMsRUFBRUEsSUFBRUUsSUFBRUMsSUFBRTtBQUFDLGdCQUFFLFlBQVUsT0FBT0gsSUFBRSx1Q0FBdUMsR0FBRSxFQUFFQSxNQUFHRSxJQUFFLHlDQUF5QyxHQUFFLEVBQUVDLE1BQUdILElBQUUsMENBQTBDLEdBQUUsRUFBRSxLQUFLLE1BQU1BLEVBQUMsTUFBSUEsSUFBRSxrQ0FBa0M7QUFBQSxZQUFDO0FBQUMscUJBQVMsRUFBRUEsSUFBRUUsSUFBRUMsSUFBRTtBQUFDLGdCQUFFLFlBQVUsT0FBT0gsSUFBRSx1Q0FBdUMsR0FBRSxFQUFFQSxNQUFHRSxJQUFFLHlDQUF5QyxHQUFFLEVBQUVDLE1BQUdILElBQUUsMENBQTBDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEVBQUVBLElBQUVFLElBQUU7QUFBQyxrQkFBRyxDQUFDRixHQUFFLE9BQU0sSUFBSSxNQUFNRSxNQUFHLGtCQUFrQjtBQUFBLFlBQUM7QUFBQyxjQUFFLFdBQVMsU0FBU0YsSUFBRTtBQUFDLHFCQUFPQSxHQUFFLFlBQVUsTUFBR0EsR0FBRSxPQUFLQSxHQUFFLEtBQUlBLEdBQUUsT0FBS0EsR0FBRSxLQUFJQSxHQUFFLE1BQUksRUFBRSxLQUFJQSxHQUFFLE1BQUksRUFBRSxLQUFJQSxHQUFFLFFBQU0sRUFBRSxPQUFNQSxHQUFFLFdBQVMsRUFBRSxVQUFTQSxHQUFFLGlCQUFlLEVBQUUsVUFBU0EsR0FBRSxTQUFPLEVBQUUsUUFBT0EsR0FBRSxPQUFLLEVBQUUsTUFBS0EsR0FBRSxRQUFNLEVBQUUsT0FBTUEsR0FBRSxZQUFVLEVBQUUsV0FBVUEsR0FBRSxlQUFhLEVBQUUsY0FBYUEsR0FBRSxlQUFhLEVBQUUsY0FBYUEsR0FBRSxlQUFhLEVBQUUsY0FBYUEsR0FBRSxlQUFhLEVBQUUsY0FBYUEsR0FBRSxXQUFTLEVBQUUsVUFBU0EsR0FBRSxjQUFZLEVBQUUsYUFBWUEsR0FBRSxjQUFZLEVBQUUsYUFBWUEsR0FBRSxjQUFZLEVBQUUsYUFBWUEsR0FBRSxjQUFZLEVBQUUsYUFBWUEsR0FBRSxjQUFZLEVBQUUsYUFBWUEsR0FBRSxjQUFZLEVBQUUsYUFBWUEsR0FBRSxlQUFhLEVBQUUsY0FBYUEsR0FBRSxlQUFhLEVBQUUsY0FBYUEsR0FBRSxhQUFXLEVBQUUsWUFBV0EsR0FBRSxnQkFBYyxFQUFFLGVBQWNBLEdBQUUsZ0JBQWMsRUFBRSxlQUFjQSxHQUFFLGdCQUFjLEVBQUUsZUFBY0EsR0FBRSxnQkFBYyxFQUFFLGVBQWNBLEdBQUUsWUFBVSxFQUFFLFdBQVVBLEdBQUUsZUFBYSxFQUFFLGNBQWFBLEdBQUUsZUFBYSxFQUFFLGNBQWFBLEdBQUUsZUFBYSxFQUFFLGNBQWFBLEdBQUUsZUFBYSxFQUFFLGNBQWFBLEdBQUUsZUFBYSxFQUFFLGNBQWFBLEdBQUUsZUFBYSxFQUFFLGNBQWFBLEdBQUUsZ0JBQWMsRUFBRSxlQUFjQSxHQUFFLGdCQUFjLEVBQUUsZUFBY0EsR0FBRSxPQUFLLEVBQUUsTUFBS0EsR0FBRSxVQUFRLEVBQUUsU0FBUUEsR0FBRSxnQkFBYyxFQUFFLGVBQWNBO0FBQUEsWUFBQztBQUFBLFVBQUMsR0FBRSxLQUFLLE1BQUssRUFBRSxRQUFRLEdBQUUsZUFBYSxPQUFPLE9BQUssT0FBSyxlQUFhLE9BQU8sU0FBTyxTQUFPLENBQUUsR0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFPLFVBQVUsQ0FBQyxHQUFFLFVBQVUsQ0FBQyxHQUFFLFVBQVUsQ0FBQyxHQUFFLFVBQVUsQ0FBQyxHQUFFLDhEQUE2RCxtREFBbUQ7QUFBQSxRQUFDLEdBQUUsRUFBQyxhQUFZLEdBQUUsUUFBTyxHQUFFLFNBQVEsSUFBRyxRQUFPLEdBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxTQUFTLEdBQUUsR0FBRSxHQUFFO0FBQUMsWUFBQyxTQUFTQSxJQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLGdCQUFJLElBQUUsRUFBRSxRQUFRLEVBQUUsUUFBTyxJQUFFLEdBQUUsSUFBRSxJQUFJLEVBQUUsQ0FBQztBQUFFLGNBQUUsS0FBSyxDQUFDO0FBQUUsY0FBRSxVQUFRLEVBQUMsTUFBSyxTQUFTQSxJQUFFRSxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsdUJBQVFDLEtBQUVILEdBQUUsU0FBU0YsSUFBRUUsSUFBRTtBQUFDLGdCQUFBRixHQUFFLFNBQU8sS0FBRyxNQUFJRyxLQUFFSCxHQUFFLFVBQVEsSUFBRUEsR0FBRSxTQUFPLElBQUdBLEtBQUUsRUFBRSxPQUFPLENBQUNBLElBQUUsQ0FBQyxHQUFFRyxFQUFDO0FBQUcseUJBQVFBLElBQUVDLEtBQUUsQ0FBRSxHQUFDQyxLQUFFSCxLQUFFRixHQUFFLGNBQVlBLEdBQUUsYUFBWUQsS0FBRSxHQUFFQSxLQUFFQyxHQUFFLFFBQU9ELE1BQUcsRUFBRSxDQUFBSyxHQUFFLEtBQUtDLEdBQUUsS0FBS0wsSUFBRUQsRUFBQyxDQUFDO0FBQUUsdUJBQU9LO0FBQUEsY0FBQyxFQUFFSixLQUFFLEVBQUUsU0FBU0EsRUFBQyxJQUFFQSxLQUFFLElBQUksRUFBRUEsRUFBQyxHQUFFSSxFQUFDLEdBQUUsSUFBRUosR0FBRSxNQUFNLEdBQUVFLEtBQUVFLElBQUVMLEtBQUUsSUFBSSxFQUFFSSxFQUFDLEdBQUVHLEtBQUVKLEtBQUVILEdBQUUsZUFBYUEsR0FBRSxjQUFhUyxLQUFFLEdBQUVBLEtBQUVILEdBQUUsUUFBT0csS0FBSSxDQUFBRixHQUFFLEtBQUtQLElBQUVNLEdBQUVHLEVBQUMsR0FBRSxJQUFFQSxJQUFFLElBQUU7QUFBRSxxQkFBT1Q7QUFBQSxZQUFDLEVBQUM7QUFBQSxVQUFDLEdBQUUsS0FBSyxNQUFLLEVBQUUsUUFBUSxHQUFFLGVBQWEsT0FBTyxPQUFLLE9BQUssZUFBYSxPQUFPLFNBQU8sU0FBTyxDQUFBLEdBQUcsRUFBRSxRQUFRLEVBQUUsUUFBTyxVQUFVLENBQUMsR0FBRSxVQUFVLENBQUMsR0FBRSxVQUFVLENBQUMsR0FBRSxVQUFVLENBQUMsR0FBRSwyRUFBMEUsOERBQThEO0FBQUEsUUFBQyxHQUFFLEVBQUMsUUFBTyxHQUFFLFFBQU8sR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxZQUFDLFNBQVMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBSSxJQUFFLEVBQUUsUUFBUSxFQUFFLFFBQU9DLEtBQUUsRUFBRSxPQUFPLEdBQUUsSUFBRSxFQUFFLFVBQVUsR0FBRSxJQUFFLEVBQUUsT0FBTyxHQUFFLElBQUUsRUFBQyxNQUFLQSxJQUFFLFFBQU8sR0FBRSxLQUFJLEVBQUUsT0FBTyxFQUFDLEdBQUUsSUFBRSxJQUFHLElBQUUsSUFBSSxFQUFFLENBQUM7QUFBRSxxQkFBUyxFQUFFQSxJQUFFRyxJQUFFO0FBQUMsa0JBQUlDLEtBQUUsRUFBRUosS0FBRUEsTUFBRyxNQUFNLEdBQUVLLEtBQUUsQ0FBRTtBQUFDLHFCQUFPRCxNQUFHLEVBQUUsY0FBYUosSUFBRSxzQkFBc0IsR0FBRSxFQUFDLFFBQU8sU0FBU0EsSUFBRTtBQUFDLHVCQUFPLEVBQUUsU0FBU0EsRUFBQyxNQUFJQSxLQUFFLElBQUksRUFBRUEsRUFBQyxJQUFHSyxHQUFFLEtBQUtMLEVBQUMsR0FBRUEsR0FBRSxRQUFPO0FBQUEsY0FBSSxHQUFFLFFBQU8sU0FBU0EsSUFBRTtBQUFDLG9CQUFJRSxLQUFFLEVBQUUsT0FBT0csRUFBQyxHQUFFSCxLQUFFQyxLQUFFLFNBQVNILElBQUVFLElBQUVDLElBQUU7QUFBQyxvQkFBRSxTQUFTRCxFQUFDLE1BQUlBLEtBQUUsSUFBSSxFQUFFQSxFQUFDLElBQUcsRUFBRSxTQUFTQyxFQUFDLE1BQUlBLEtBQUUsSUFBSSxFQUFFQSxFQUFDLElBQUdELEdBQUUsU0FBTyxJQUFFQSxLQUFFRixHQUFFRSxFQUFDLElBQUVBLEdBQUUsU0FBTyxNQUFJQSxLQUFFLEVBQUUsT0FBTyxDQUFDQSxJQUFFLENBQUMsR0FBRSxDQUFDO0FBQUcsMkJBQVFFLEtBQUUsSUFBSSxFQUFFLENBQUMsR0FBRUMsS0FBRSxJQUFJLEVBQUUsQ0FBQyxHQUFFTixLQUFFLEdBQUVBLEtBQUUsR0FBRUEsS0FBSSxDQUFBSyxHQUFFTCxFQUFDLElBQUUsS0FBR0csR0FBRUgsRUFBQyxHQUFFTSxHQUFFTixFQUFDLElBQUUsS0FBR0csR0FBRUgsRUFBQztBQUFFLHlCQUFPSSxLQUFFSCxHQUFFLEVBQUUsT0FBTyxDQUFDSSxJQUFFRCxFQUFDLENBQUMsQ0FBQyxHQUFFSCxHQUFFLEVBQUUsT0FBTyxDQUFDSyxJQUFFRixFQUFDLENBQUMsQ0FBQztBQUFBLGdCQUFDLEVBQUVDLElBQUVELElBQUVELEVBQUMsSUFBRUUsR0FBRUYsRUFBQztBQUFFLHVCQUFPRyxLQUFFLE1BQUtMLEtBQUVFLEdBQUUsU0FBU0YsRUFBQyxJQUFFRTtBQUFBLGNBQUMsRUFBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxJQUFHO0FBQUMsa0JBQUlGLEtBQUUsR0FBRyxNQUFNLEtBQUssU0FBUyxFQUFFLEtBQUssR0FBRztBQUFFLG9CQUFNLElBQUksTUFBTSxDQUFDQSxJQUFFLDJCQUEwQixpREFBaUQsRUFBRSxLQUFLLElBQUksQ0FBQztBQUFBLFlBQUM7QUFBQyxjQUFFLEtBQUssQ0FBQyxHQUFFLEVBQUUsYUFBVyxTQUFTQSxJQUFFO0FBQUMscUJBQU8sRUFBRUEsRUFBQztBQUFBLFlBQUMsR0FBRSxFQUFFLGFBQVcsR0FBRSxFQUFFLGNBQVksU0FBU0EsSUFBRUUsSUFBRTtBQUFDLGtCQUFHLENBQUNBLE1BQUcsQ0FBQ0EsR0FBRSxLQUFLLFFBQU8sSUFBSSxFQUFFLEVBQUVGLEVBQUMsQ0FBQztBQUFFLGtCQUFHO0FBQUMsZ0JBQUFFLEdBQUUsS0FBSyxNQUFLLFFBQU8sSUFBSSxFQUFFLEVBQUVGLEVBQUMsQ0FBQyxDQUFDO0FBQUEsY0FBQyxTQUFPQSxJQUFFO0FBQUMsZ0JBQUFFLEdBQUVGLEVBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFFLGdCQUFJLEdBQUUsSUFBRSxDQUFDLHFCQUFvQixnQkFBZSxrQkFBaUIsa0JBQWlCLG9CQUFtQixjQUFhLGdCQUFlLHVCQUFzQixRQUFRLEdBQUUsSUFBRSxTQUFTQSxJQUFFO0FBQUMsZ0JBQUVBLEVBQUMsSUFBRSxXQUFVO0FBQUMsa0JBQUUsVUFBU0EsSUFBRSx3QkFBd0I7QUFBQSxjQUFDO0FBQUEsWUFBQztBQUFFLGlCQUFJLEtBQUssRUFBRSxHQUFFLEVBQUUsQ0FBQyxDQUFHO0FBQUEsVUFBQyxHQUFFLEtBQUssTUFBSyxFQUFFLFFBQVEsR0FBRSxlQUFhLE9BQU8sT0FBSyxPQUFLLGVBQWEsT0FBTyxTQUFPLFNBQU8sQ0FBRSxHQUFDLEVBQUUsUUFBUSxFQUFFLFFBQU8sVUFBVSxDQUFDLEdBQUUsVUFBVSxDQUFDLEdBQUUsVUFBVSxDQUFDLEdBQUUsVUFBVSxDQUFDLEdBQUUseUVBQXdFLDhEQUE4RDtBQUFBLFFBQUMsR0FBRSxFQUFDLFNBQVEsR0FBRSxTQUFRLEdBQUUsU0FBUSxHQUFFLFlBQVcsR0FBRSxRQUFPLEdBQUUsUUFBTyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLFlBQUMsU0FBU0EsSUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxnQkFBSSxJQUFFLEVBQUUsV0FBVztBQUFFLHFCQUFTLEVBQUVBLElBQUVFLElBQUU7QUFBQyxjQUFBRixHQUFFRSxNQUFHLENBQUMsS0FBRyxPQUFLQSxLQUFFLElBQUdGLEdBQUUsTUFBSUUsS0FBRSxPQUFLLEtBQUcsRUFBRSxJQUFFQTtBQUFFLHVCQUFRQyxLQUFFLFlBQVdDLEtBQUUsWUFBV0MsS0FBRSxhQUFZTixLQUFFLFdBQVVPLEtBQUUsR0FBRUEsS0FBRU4sR0FBRSxRQUFPTSxNQUFHLElBQUc7QUFBQyxvQkFBSUUsS0FBRUwsSUFBRUksS0FBRUgsSUFBRUssS0FBRUosSUFBRVAsS0FBRUMsSUFBRUksS0FBRSxFQUFFQSxJQUFFQyxJQUFFQyxJQUFFTixJQUFFQyxHQUFFTSxLQUFFLENBQUMsR0FBRSxHQUFFLFVBQVUsR0FBRVAsS0FBRSxFQUFFQSxJQUFFSSxJQUFFQyxJQUFFQyxJQUFFTCxHQUFFTSxLQUFFLENBQUMsR0FBRSxJQUFHLFVBQVUsR0FBRUQsS0FBRSxFQUFFQSxJQUFFTixJQUFFSSxJQUFFQyxJQUFFSixHQUFFTSxLQUFFLENBQUMsR0FBRSxJQUFHLFNBQVMsR0FBRUYsS0FBRSxFQUFFQSxJQUFFQyxJQUFFTixJQUFFSSxJQUFFSCxHQUFFTSxLQUFFLENBQUMsR0FBRSxJQUFHLFdBQVc7QUFBRSxnQkFBQUgsS0FBRSxFQUFFQSxJQUFFQyxJQUFFQyxJQUFFTixJQUFFQyxHQUFFTSxLQUFFLENBQUMsR0FBRSxHQUFFLFVBQVUsR0FBRVAsS0FBRSxFQUFFQSxJQUFFSSxJQUFFQyxJQUFFQyxJQUFFTCxHQUFFTSxLQUFFLENBQUMsR0FBRSxJQUFHLFVBQVUsR0FBRUQsS0FBRSxFQUFFQSxJQUFFTixJQUFFSSxJQUFFQyxJQUFFSixHQUFFTSxLQUFFLENBQUMsR0FBRSxJQUFHLFdBQVcsR0FBRUYsS0FBRSxFQUFFQSxJQUFFQyxJQUFFTixJQUFFSSxJQUFFSCxHQUFFTSxLQUFFLENBQUMsR0FBRSxJQUFHLFNBQVMsR0FBRUgsS0FBRSxFQUFFQSxJQUFFQyxJQUFFQyxJQUFFTixJQUFFQyxHQUFFTSxLQUFFLENBQUMsR0FBRSxHQUFFLFVBQVUsR0FBRVAsS0FBRSxFQUFFQSxJQUFFSSxJQUFFQyxJQUFFQyxJQUFFTCxHQUFFTSxLQUFFLENBQUMsR0FBRSxJQUFHLFdBQVcsR0FBRUQsS0FBRSxFQUFFQSxJQUFFTixJQUFFSSxJQUFFQyxJQUFFSixHQUFFTSxLQUFFLEVBQUUsR0FBRSxJQUFHLE1BQU0sR0FBRUYsS0FBRSxFQUFFQSxJQUFFQyxJQUFFTixJQUFFSSxJQUFFSCxHQUFFTSxLQUFFLEVBQUUsR0FBRSxJQUFHLFdBQVcsR0FBRUgsS0FBRSxFQUFFQSxJQUFFQyxJQUFFQyxJQUFFTixJQUFFQyxHQUFFTSxLQUFFLEVBQUUsR0FBRSxHQUFFLFVBQVUsR0FBRVAsS0FBRSxFQUFFQSxJQUFFSSxJQUFFQyxJQUFFQyxJQUFFTCxHQUFFTSxLQUFFLEVBQUUsR0FBRSxJQUFHLFNBQVMsR0FBRUQsS0FBRSxFQUFFQSxJQUFFTixJQUFFSSxJQUFFQyxJQUFFSixHQUFFTSxLQUFFLEVBQUUsR0FBRSxJQUFHLFdBQVcsR0FBRUgsS0FBRSxFQUFFQSxJQUFFQyxLQUFFLEVBQUVBLElBQUVDLElBQUVOLElBQUVJLElBQUVILEdBQUVNLEtBQUUsRUFBRSxHQUFFLElBQUcsVUFBVSxHQUFFRCxJQUFFTixJQUFFQyxHQUFFTSxLQUFFLENBQUMsR0FBRSxHQUFFLFVBQVUsR0FBRVAsS0FBRSxFQUFFQSxJQUFFSSxJQUFFQyxJQUFFQyxJQUFFTCxHQUFFTSxLQUFFLENBQUMsR0FBRSxHQUFFLFdBQVcsR0FBRUQsS0FBRSxFQUFFQSxJQUFFTixJQUFFSSxJQUFFQyxJQUFFSixHQUFFTSxLQUFFLEVBQUUsR0FBRSxJQUFHLFNBQVMsR0FBRUYsS0FBRSxFQUFFQSxJQUFFQyxJQUFFTixJQUFFSSxJQUFFSCxHQUFFTSxLQUFFLENBQUMsR0FBRSxJQUFHLFVBQVUsR0FBRUgsS0FBRSxFQUFFQSxJQUFFQyxJQUFFQyxJQUFFTixJQUFFQyxHQUFFTSxLQUFFLENBQUMsR0FBRSxHQUFFLFVBQVUsR0FBRVAsS0FBRSxFQUFFQSxJQUFFSSxJQUFFQyxJQUFFQyxJQUFFTCxHQUFFTSxLQUFFLEVBQUUsR0FBRSxHQUFFLFFBQVEsR0FBRUQsS0FBRSxFQUFFQSxJQUFFTixJQUFFSSxJQUFFQyxJQUFFSixHQUFFTSxLQUFFLEVBQUUsR0FBRSxJQUFHLFVBQVUsR0FBRUYsS0FBRSxFQUFFQSxJQUFFQyxJQUFFTixJQUFFSSxJQUFFSCxHQUFFTSxLQUFFLENBQUMsR0FBRSxJQUFHLFVBQVUsR0FBRUgsS0FBRSxFQUFFQSxJQUFFQyxJQUFFQyxJQUFFTixJQUFFQyxHQUFFTSxLQUFFLENBQUMsR0FBRSxHQUFFLFNBQVMsR0FBRVAsS0FBRSxFQUFFQSxJQUFFSSxJQUFFQyxJQUFFQyxJQUFFTCxHQUFFTSxLQUFFLEVBQUUsR0FBRSxHQUFFLFdBQVcsR0FBRUQsS0FBRSxFQUFFQSxJQUFFTixJQUFFSSxJQUFFQyxJQUFFSixHQUFFTSxLQUFFLENBQUMsR0FBRSxJQUFHLFVBQVUsR0FBRUYsS0FBRSxFQUFFQSxJQUFFQyxJQUFFTixJQUFFSSxJQUFFSCxHQUFFTSxLQUFFLENBQUMsR0FBRSxJQUFHLFVBQVUsR0FBRUgsS0FBRSxFQUFFQSxJQUFFQyxJQUFFQyxJQUFFTixJQUFFQyxHQUFFTSxLQUFFLEVBQUUsR0FBRSxHQUFFLFdBQVcsR0FBRVAsS0FBRSxFQUFFQSxJQUFFSSxJQUFFQyxJQUFFQyxJQUFFTCxHQUFFTSxLQUFFLENBQUMsR0FBRSxHQUFFLFNBQVMsR0FBRUQsS0FBRSxFQUFFQSxJQUFFTixJQUFFSSxJQUFFQyxJQUFFSixHQUFFTSxLQUFFLENBQUMsR0FBRSxJQUFHLFVBQVUsR0FBRUgsS0FBRSxFQUFFQSxJQUFFQyxLQUFFLEVBQUVBLElBQUVDLElBQUVOLElBQUVJLElBQUVILEdBQUVNLEtBQUUsRUFBRSxHQUFFLElBQUcsV0FBVyxHQUFFRCxJQUFFTixJQUFFQyxHQUFFTSxLQUFFLENBQUMsR0FBRSxHQUFFLE9BQU8sR0FBRVAsS0FBRSxFQUFFQSxJQUFFSSxJQUFFQyxJQUFFQyxJQUFFTCxHQUFFTSxLQUFFLENBQUMsR0FBRSxJQUFHLFdBQVcsR0FBRUQsS0FBRSxFQUFFQSxJQUFFTixJQUFFSSxJQUFFQyxJQUFFSixHQUFFTSxLQUFFLEVBQUUsR0FBRSxJQUFHLFVBQVUsR0FBRUYsS0FBRSxFQUFFQSxJQUFFQyxJQUFFTixJQUFFSSxJQUFFSCxHQUFFTSxLQUFFLEVBQUUsR0FBRSxJQUFHLFNBQVMsR0FBRUgsS0FBRSxFQUFFQSxJQUFFQyxJQUFFQyxJQUFFTixJQUFFQyxHQUFFTSxLQUFFLENBQUMsR0FBRSxHQUFFLFdBQVcsR0FBRVAsS0FBRSxFQUFFQSxJQUFFSSxJQUFFQyxJQUFFQyxJQUFFTCxHQUFFTSxLQUFFLENBQUMsR0FBRSxJQUFHLFVBQVUsR0FBRUQsS0FBRSxFQUFFQSxJQUFFTixJQUFFSSxJQUFFQyxJQUFFSixHQUFFTSxLQUFFLENBQUMsR0FBRSxJQUFHLFVBQVUsR0FBRUYsS0FBRSxFQUFFQSxJQUFFQyxJQUFFTixJQUFFSSxJQUFFSCxHQUFFTSxLQUFFLEVBQUUsR0FBRSxJQUFHLFdBQVcsR0FBRUgsS0FBRSxFQUFFQSxJQUFFQyxJQUFFQyxJQUFFTixJQUFFQyxHQUFFTSxLQUFFLEVBQUUsR0FBRSxHQUFFLFNBQVMsR0FBRVAsS0FBRSxFQUFFQSxJQUFFSSxJQUFFQyxJQUFFQyxJQUFFTCxHQUFFTSxLQUFFLENBQUMsR0FBRSxJQUFHLFVBQVUsR0FBRUQsS0FBRSxFQUFFQSxJQUFFTixJQUFFSSxJQUFFQyxJQUFFSixHQUFFTSxLQUFFLENBQUMsR0FBRSxJQUFHLFVBQVUsR0FBRUYsS0FBRSxFQUFFQSxJQUFFQyxJQUFFTixJQUFFSSxJQUFFSCxHQUFFTSxLQUFFLENBQUMsR0FBRSxJQUFHLFFBQVEsR0FBRUgsS0FBRSxFQUFFQSxJQUFFQyxJQUFFQyxJQUFFTixJQUFFQyxHQUFFTSxLQUFFLENBQUMsR0FBRSxHQUFFLFVBQVUsR0FBRVAsS0FBRSxFQUFFQSxJQUFFSSxJQUFFQyxJQUFFQyxJQUFFTCxHQUFFTSxLQUFFLEVBQUUsR0FBRSxJQUFHLFVBQVUsR0FBRUQsS0FBRSxFQUFFQSxJQUFFTixJQUFFSSxJQUFFQyxJQUFFSixHQUFFTSxLQUFFLEVBQUUsR0FBRSxJQUFHLFNBQVMsR0FBRUgsS0FBRSxFQUFFQSxJQUFFQyxLQUFFLEVBQUVBLElBQUVDLElBQUVOLElBQUVJLElBQUVILEdBQUVNLEtBQUUsQ0FBQyxHQUFFLElBQUcsVUFBVSxHQUFFRCxJQUFFTixJQUFFQyxHQUFFTSxLQUFFLENBQUMsR0FBRSxHQUFFLFVBQVUsR0FBRVAsS0FBRSxFQUFFQSxJQUFFSSxJQUFFQyxJQUFFQyxJQUFFTCxHQUFFTSxLQUFFLENBQUMsR0FBRSxJQUFHLFVBQVUsR0FBRUQsS0FBRSxFQUFFQSxJQUFFTixJQUFFSSxJQUFFQyxJQUFFSixHQUFFTSxLQUFFLEVBQUUsR0FBRSxJQUFHLFdBQVcsR0FBRUYsS0FBRSxFQUFFQSxJQUFFQyxJQUFFTixJQUFFSSxJQUFFSCxHQUFFTSxLQUFFLENBQUMsR0FBRSxJQUFHLFNBQVMsR0FBRUgsS0FBRSxFQUFFQSxJQUFFQyxJQUFFQyxJQUFFTixJQUFFQyxHQUFFTSxLQUFFLEVBQUUsR0FBRSxHQUFFLFVBQVUsR0FBRVAsS0FBRSxFQUFFQSxJQUFFSSxJQUFFQyxJQUFFQyxJQUFFTCxHQUFFTSxLQUFFLENBQUMsR0FBRSxJQUFHLFdBQVcsR0FBRUQsS0FBRSxFQUFFQSxJQUFFTixJQUFFSSxJQUFFQyxJQUFFSixHQUFFTSxLQUFFLEVBQUUsR0FBRSxJQUFHLFFBQVEsR0FBRUYsS0FBRSxFQUFFQSxJQUFFQyxJQUFFTixJQUFFSSxJQUFFSCxHQUFFTSxLQUFFLENBQUMsR0FBRSxJQUFHLFdBQVcsR0FBRUgsS0FBRSxFQUFFQSxJQUFFQyxJQUFFQyxJQUFFTixJQUFFQyxHQUFFTSxLQUFFLENBQUMsR0FBRSxHQUFFLFVBQVUsR0FBRVAsS0FBRSxFQUFFQSxJQUFFSSxJQUFFQyxJQUFFQyxJQUFFTCxHQUFFTSxLQUFFLEVBQUUsR0FBRSxJQUFHLFNBQVMsR0FBRUQsS0FBRSxFQUFFQSxJQUFFTixJQUFFSSxJQUFFQyxJQUFFSixHQUFFTSxLQUFFLENBQUMsR0FBRSxJQUFHLFdBQVcsR0FBRUYsS0FBRSxFQUFFQSxJQUFFQyxJQUFFTixJQUFFSSxJQUFFSCxHQUFFTSxLQUFFLEVBQUUsR0FBRSxJQUFHLFVBQVUsR0FBRUgsS0FBRSxFQUFFQSxJQUFFQyxJQUFFQyxJQUFFTixJQUFFQyxHQUFFTSxLQUFFLENBQUMsR0FBRSxHQUFFLFVBQVUsR0FBRVAsS0FBRSxFQUFFQSxJQUFFSSxJQUFFQyxJQUFFQyxJQUFFTCxHQUFFTSxLQUFFLEVBQUUsR0FBRSxJQUFHLFdBQVcsR0FBRUQsS0FBRSxFQUFFQSxJQUFFTixJQUFFSSxJQUFFQyxJQUFFSixHQUFFTSxLQUFFLENBQUMsR0FBRSxJQUFHLFNBQVMsR0FBRUYsS0FBRSxFQUFFQSxJQUFFQyxJQUFFTixJQUFFSSxJQUFFSCxHQUFFTSxLQUFFLENBQUMsR0FBRSxJQUFHLFVBQVUsR0FBRUgsS0FBRSxFQUFFQSxJQUFFSyxFQUFDLEdBQUVKLEtBQUUsRUFBRUEsSUFBRUcsRUFBQyxHQUFFRixLQUFFLEVBQUVBLElBQUVJLEVBQUMsR0FBRVYsS0FBRSxFQUFFQSxJQUFFRCxFQUFDO0FBQUEsY0FBQztBQUFDLHFCQUFPLE1BQU1LLElBQUVDLElBQUVDLElBQUVOLEVBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsRUFBRUMsSUFBRUUsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRU4sSUFBRTtBQUFDLHFCQUFPLEdBQUdHLEtBQUUsRUFBRSxFQUFFQSxJQUFFRixFQUFDLEdBQUUsRUFBRUksSUFBRUwsRUFBQyxDQUFDLE1BQUlNLEtBQUVILE9BQUksS0FBR0csSUFBRUYsRUFBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxFQUFFSCxJQUFFRSxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFTixJQUFFTyxJQUFFO0FBQUMscUJBQU8sRUFBRUosS0FBRUMsS0FBRSxDQUFDRCxLQUFFRSxJQUFFSixJQUFFRSxJQUFFRyxJQUFFTixJQUFFTyxFQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEVBQUVOLElBQUVFLElBQUVDLElBQUVDLElBQUVDLElBQUVOLElBQUVPLElBQUU7QUFBQyxxQkFBTyxFQUFFSixLQUFFRSxLQUFFRCxLQUFFLENBQUNDLElBQUVKLElBQUVFLElBQUVHLElBQUVOLElBQUVPLEVBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsRUFBRU4sSUFBRUUsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRU4sSUFBRU8sSUFBRTtBQUFDLHFCQUFPLEVBQUVKLEtBQUVDLEtBQUVDLElBQUVKLElBQUVFLElBQUVHLElBQUVOLElBQUVPLEVBQUM7QUFBQSxZQUFDO0FBQUMscUJBQVMsRUFBRU4sSUFBRUUsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRU4sSUFBRU8sSUFBRTtBQUFDLHFCQUFPLEVBQUVILE1BQUdELEtBQUUsQ0FBQ0UsS0FBR0osSUFBRUUsSUFBRUcsSUFBRU4sSUFBRU8sRUFBQztBQUFBLFlBQUM7QUFBQyxxQkFBUyxFQUFFTixJQUFFRSxJQUFFO0FBQUMsa0JBQUlDLE1BQUcsUUFBTUgsT0FBSSxRQUFNRTtBQUFHLHNCQUFPRixNQUFHLE9BQUtFLE1BQUcsT0FBS0MsTUFBRyxPQUFLLEtBQUcsUUFBTUE7QUFBQSxZQUFDO0FBQUMsY0FBRSxVQUFRLFNBQVNILElBQUU7QUFBQyxxQkFBTyxFQUFFLEtBQUtBLElBQUUsR0FBRSxFQUFFO0FBQUEsWUFBQztBQUFBLFVBQUMsR0FBRSxLQUFLLE1BQUssRUFBRSxRQUFRLEdBQUUsZUFBYSxPQUFPLE9BQUssT0FBSyxlQUFhLE9BQU8sU0FBTyxTQUFPLENBQUUsR0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFPLFVBQVUsQ0FBQyxHQUFFLFVBQVUsQ0FBQyxHQUFFLFVBQVUsQ0FBQyxHQUFFLFVBQVUsQ0FBQyxHQUFFLHVFQUFzRSw4REFBOEQ7QUFBQSxRQUFDLEdBQUUsRUFBQyxhQUFZLEdBQUUsUUFBTyxHQUFFLFFBQU8sR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxZQUFDLFNBQVNBLElBQUVFLElBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRTtBQUFPLGNBQUUsVUFBVyxTQUFTRixJQUFFO0FBQUMsdUJBQVFFLElBQUVDLEtBQUUsSUFBSSxNQUFNSCxFQUFDLEdBQUVJLEtBQUUsR0FBRUEsS0FBRUosSUFBRUksS0FBSSxPQUFJLElBQUVBLFFBQUtGLEtBQUUsYUFBVyxLQUFLLE9BQU0sSUFBSUMsR0FBRUMsRUFBQyxJQUFFRixTQUFNLElBQUVFLE9BQUksS0FBRztBQUFJLHFCQUFPRDtBQUFBLFlBQUM7QUFBQSxVQUFDLEdBQUUsS0FBSyxNQUFLLEVBQUUsUUFBUSxHQUFFLGVBQWEsT0FBTyxPQUFLLE9BQUssZUFBYSxPQUFPLFNBQU8sU0FBTyxDQUFFLEdBQUMsRUFBRSxRQUFRLEVBQUUsUUFBTyxVQUFVLENBQUMsR0FBRSxVQUFVLENBQUMsR0FBRSxVQUFVLENBQUMsR0FBRSxVQUFVLENBQUMsR0FBRSx1RUFBc0UsOERBQThEO0FBQUEsUUFBQyxHQUFFLEVBQUMsUUFBTyxHQUFFLFFBQU8sR0FBRSxDQUFDLEdBQUUsR0FBRSxDQUFDLFNBQVMsR0FBRSxHQUFFLEdBQUU7QUFBQyxZQUFDLFNBQVNILElBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsZ0JBQUksSUFBRSxFQUFFLFdBQVc7QUFBRSxxQkFBUyxFQUFFRixJQUFFWSxJQUFFO0FBQUMsY0FBQVosR0FBRVksTUFBRyxDQUFDLEtBQUcsT0FBSyxLQUFHQSxLQUFFLElBQUdaLEdBQUUsTUFBSVksS0FBRSxNQUFJLEtBQUcsRUFBRSxJQUFFQTtBQUFFLHVCQUFRVixJQUFFRSxJQUFFQyxJQUFFQyxLQUFFLE1BQU0sRUFBRSxHQUFFQyxLQUFFLFlBQVdOLEtBQUUsWUFBV08sS0FBRSxhQUFZRSxLQUFFLFdBQVVHLEtBQUUsYUFBWSxJQUFFLEdBQUUsSUFBRWIsR0FBRSxRQUFPLEtBQUcsSUFBRztBQUFDLHlCQUFRLElBQUVPLElBQUUsSUFBRU4sSUFBRSxJQUFFTyxJQUFFLElBQUVFLElBQUUsSUFBRUcsSUFBRUosS0FBRSxHQUFFQSxLQUFFLElBQUdBLE1BQUk7QUFBQyxrQkFBQUgsR0FBRUcsRUFBQyxJQUFFQSxLQUFFLEtBQUdULEdBQUUsSUFBRVMsRUFBQyxJQUFFLEVBQUVILEdBQUVHLEtBQUUsQ0FBQyxJQUFFSCxHQUFFRyxLQUFFLENBQUMsSUFBRUgsR0FBRUcsS0FBRSxFQUFFLElBQUVILEdBQUVHLEtBQUUsRUFBRSxHQUFFLENBQUM7QUFBRSxzQkFBSUUsS0FBRSxFQUFFLEVBQUUsRUFBRUosSUFBRSxDQUFDLElBQUdJLEtBQUVWLElBQUVHLEtBQUVJLElBQUVILEtBQUVLLEtBQUdSLEtBQUVPLE1BQUcsS0FBR0UsS0FBRVAsS0FBRSxDQUFDTyxLQUFFTixLQUFFLEVBQUVILEtBQUUsT0FBS0EsS0FBRSxLQUFHUyxLQUFFUCxLQUFFTyxLQUFFTixLQUFFRCxLQUFFQyxLQUFFTSxLQUFFUCxLQUFFQyxHQUFHLEdBQUMsRUFBRSxFQUFFUSxJQUFFUCxHQUFFRyxFQUFDLENBQUMsSUFBR1AsS0FBRU8sTUFBRyxLQUFHLGFBQVdQLEtBQUUsS0FBRyxhQUFXQSxLQUFFLEtBQUcsY0FBWSxVQUFVLENBQUMsR0FBRVcsS0FBRUgsSUFBRUEsS0FBRUYsSUFBRUEsS0FBRSxFQUFFUCxJQUFFLEVBQUUsR0FBRUEsS0FBRU0sSUFBRUEsS0FBRUk7QUFBQSxnQkFBQztBQUFDLGdCQUFBSixLQUFFLEVBQUVBLElBQUUsQ0FBQyxHQUFFTixLQUFFLEVBQUVBLElBQUUsQ0FBQyxHQUFFTyxLQUFFLEVBQUVBLElBQUUsQ0FBQyxHQUFFRSxLQUFFLEVBQUVBLElBQUUsQ0FBQyxHQUFFRyxLQUFFLEVBQUVBLElBQUUsQ0FBQztBQUFBLGNBQUM7QUFBQyxxQkFBTyxNQUFNTixJQUFFTixJQUFFTyxJQUFFRSxJQUFFRyxFQUFDO0FBQUEsWUFBQztBQUFDLHFCQUFTLEVBQUVYLElBQUVFLElBQUU7QUFBQyxrQkFBSUMsTUFBRyxRQUFNSCxPQUFJLFFBQU1FO0FBQUcsc0JBQU9GLE1BQUcsT0FBS0UsTUFBRyxPQUFLQyxNQUFHLE9BQUssS0FBRyxRQUFNQTtBQUFBLFlBQUM7QUFBQyxxQkFBUyxFQUFFSCxJQUFFRSxJQUFFO0FBQUMscUJBQU9GLE1BQUdFLEtBQUVGLE9BQUksS0FBR0U7QUFBQSxZQUFDO0FBQUMsY0FBRSxVQUFRLFNBQVNGLElBQUU7QUFBQyxxQkFBTyxFQUFFLEtBQUtBLElBQUUsR0FBRSxJQUFHLElBQUU7QUFBQSxZQUFDO0FBQUEsVUFBQyxHQUFFLEtBQUssTUFBSyxFQUFFLFFBQVEsR0FBRSxlQUFhLE9BQU8sT0FBSyxPQUFLLGVBQWEsT0FBTyxTQUFPLFNBQU8sQ0FBRSxHQUFDLEVBQUUsUUFBUSxFQUFFLFFBQU8sVUFBVSxDQUFDLEdBQUUsVUFBVSxDQUFDLEdBQUUsVUFBVSxDQUFDLEdBQUUsVUFBVSxDQUFDLEdBQUUsdUVBQXNFLDhEQUE4RDtBQUFBLFFBQUMsR0FBRSxFQUFDLGFBQVksR0FBRSxRQUFPLEdBQUUsUUFBTyxHQUFFLENBQUMsR0FBRSxHQUFFLENBQUMsU0FBUyxHQUFFLEdBQUUsR0FBRTtBQUFDLFlBQUMsU0FBU0EsSUFBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUU7QUFBQyxxQkFBUyxFQUFFQSxJQUFFRSxJQUFFO0FBQUMsa0JBQUlDLE1BQUcsUUFBTUgsT0FBSSxRQUFNRTtBQUFHLHNCQUFPRixNQUFHLE9BQUtFLE1BQUcsT0FBS0MsTUFBRyxPQUFLLEtBQUcsUUFBTUE7QUFBQSxZQUFDO0FBQUMscUJBQVMsRUFBRUgsSUFBRUYsSUFBRTtBQUFDLGtCQUFJWSxJQUFFQyxLQUFFLElBQUksTUFBTSxZQUFXLFlBQVcsWUFBVyxZQUFXLFdBQVUsWUFBVyxZQUFXLFlBQVcsWUFBVyxXQUFVLFdBQVUsWUFBVyxZQUFXLFlBQVcsWUFBVyxZQUFXLFlBQVcsWUFBVyxXQUFVLFdBQVUsV0FBVSxZQUFXLFlBQVcsWUFBVyxZQUFXLFlBQVcsWUFBVyxZQUFXLFlBQVcsWUFBVyxXQUFVLFdBQVUsV0FBVSxXQUFVLFlBQVcsWUFBVyxZQUFXLFlBQVcsWUFBVyxZQUFXLFlBQVcsWUFBVyxZQUFXLFlBQVcsWUFBVyxZQUFXLFlBQVcsV0FBVSxXQUFVLFdBQVUsV0FBVSxXQUFVLFdBQVUsWUFBVyxZQUFXLFlBQVcsWUFBVyxZQUFXLFlBQVcsWUFBVyxZQUFXLFlBQVcsWUFBVyxVQUFVLEdBQUVULEtBQUUsSUFBSSxNQUFNLFlBQVcsWUFBVyxZQUFXLFlBQVcsWUFBVyxZQUFXLFdBQVUsVUFBVSxHQUFFQyxLQUFFLElBQUksTUFBTSxFQUFFO0FBQUUsY0FBQUgsR0FBRUYsTUFBRyxDQUFDLEtBQUcsT0FBSyxLQUFHQSxLQUFFLElBQUdFLEdBQUUsTUFBSUYsS0FBRSxNQUFJLEtBQUcsRUFBRSxJQUFFQTtBQUFFLHVCQUFRTSxJQUFFQyxJQUFFLElBQUUsR0FBRSxJQUFFTCxHQUFFLFFBQU8sS0FBRyxJQUFHO0FBQUMseUJBQVFELEtBQUVHLEdBQUUsQ0FBQyxHQUFFSSxLQUFFSixHQUFFLENBQUMsR0FBRU0sS0FBRU4sR0FBRSxDQUFDLEdBQUUsSUFBRUEsR0FBRSxDQUFDLEdBQUVLLEtBQUVMLEdBQUUsQ0FBQyxHQUFFLElBQUVBLEdBQUUsQ0FBQyxHQUFFLElBQUVBLEdBQUUsQ0FBQyxHQUFFLElBQUVBLEdBQUUsQ0FBQyxHQUFFTyxLQUFFLEdBQUVBLEtBQUUsSUFBR0EsS0FBSSxDQUFBTixHQUFFTSxFQUFDLElBQUVBLEtBQUUsS0FBR1QsR0FBRVMsS0FBRSxDQUFDLElBQUUsRUFBRSxFQUFFLEdBQUdKLEtBQUVGLEdBQUVNLEtBQUUsQ0FBQyxHQUFFLEVBQUVKLElBQUUsRUFBRSxJQUFFLEVBQUVBLElBQUUsRUFBRSxJQUFFLEVBQUVBLElBQUUsRUFBRSxJQUFHRixHQUFFTSxLQUFFLENBQUMsQ0FBQyxJQUFHSixLQUFFRixHQUFFTSxLQUFFLEVBQUUsR0FBRSxFQUFFSixJQUFFLENBQUMsSUFBRSxFQUFFQSxJQUFFLEVBQUUsSUFBRSxFQUFFQSxJQUFFLENBQUMsRUFBRyxHQUFDRixHQUFFTSxLQUFFLEVBQUUsQ0FBQyxHQUFFQyxLQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRSxFQUFFTCxLQUFFRSxJQUFFLENBQUMsSUFBRSxFQUFFRixJQUFFLEVBQUUsSUFBRSxFQUFFQSxJQUFFLEVBQUUsQ0FBQyxHQUFFRSxLQUFFLElBQUUsQ0FBQ0EsS0FBRSxDQUFDLEdBQUVJLEdBQUVGLEVBQUMsQ0FBQyxHQUFFTixHQUFFTSxFQUFDLENBQUMsR0FBRUwsS0FBRSxFQUFFLEVBQUVBLEtBQUVMLElBQUUsQ0FBQyxJQUFFLEVBQUVLLElBQUUsRUFBRSxJQUFFLEVBQUVBLElBQUUsRUFBRSxHQUFFTCxLQUFFTyxLQUFFUCxLQUFFUyxLQUFFRixLQUFFRSxFQUFDLEdBQUUsSUFBRSxHQUFFLElBQUUsR0FBRSxJQUFFRCxJQUFFQSxLQUFFLEVBQUUsR0FBRUcsRUFBQyxHQUFFLElBQUVGLElBQUVBLEtBQUVGLElBQUVBLEtBQUVQLElBQUVBLEtBQUUsRUFBRVcsSUFBRU4sRUFBQztBQUFFLGdCQUFBRixHQUFFLENBQUMsSUFBRSxFQUFFSCxJQUFFRyxHQUFFLENBQUMsQ0FBQyxHQUFFQSxHQUFFLENBQUMsSUFBRSxFQUFFSSxJQUFFSixHQUFFLENBQUMsQ0FBQyxHQUFFQSxHQUFFLENBQUMsSUFBRSxFQUFFTSxJQUFFTixHQUFFLENBQUMsQ0FBQyxHQUFFQSxHQUFFLENBQUMsSUFBRSxFQUFFLEdBQUVBLEdBQUUsQ0FBQyxDQUFD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LFFBQ0E7QUFBQSxVQUNFLE1BQU07QUFBQSxVQUNOLFVBQVU7QUFBQSxZQUNSO0FBQUEsY0FDRSxNQUFNO0FBQUEsY0FDTixRQUFRO0FBQUE7QUFBQTtBQUFBLFlBR1Y7QUFBQSxZQUNBO0FBQUEsY0FDRSxNQUFNO0FBQUEsY0FDTixRQUFRO0FBQUE7QUFBQTtBQUFBLFlBR1Y7QUFBQSxZQUNBO0FBQUEsY0FDRSxNQUFNO0FBQUEsY0FDTixRQUFRO0FBQUE7QUFBQTtBQUFBLFlBR1Y7QUFBQSxZQUNBO0FBQUEsY0FDRSxNQUFNO0FBQUEsY0FDTixRQUFRO0FBQUE7QUFBQTtBQUFBLFlBQUE7QUFBQSxVQUdWO0FBQUEsUUFFSjtBQUFBLFFBQ0E7QUFBQSxVQUNFLE1BQU07QUFBQSxVQUNOLFVBQVU7QUFBQSxZQUNSO0FBQUEsY0FDRSxNQUFNO0FBQUEsY0FDTixRQUFRO0FBQUE7QUFBQTtBQUFBLFlBR1Y7QUFBQSxZQUNBO0FBQUEsY0FDRSxNQUFNO0FBQUEsY0FDTixRQUFRO0FBQUE7QUFBQTtBQUFBLFlBQUE7QUFBQSxVQUdWO0FBQUEsUUFFSjtBQUFBLFFBQ0E7QUFBQSxVQUNFLE1BQU07QUFBQSxVQUNOLFVBQVU7QUFBQSxZQUNSO0FBQUEsY0FDRSxNQUFNO0FBQUEsY0FDTixRQUFRO0FBQUE7QUFBQTtBQUFBLFlBR1Y7QUFBQSxZQUNBO0FBQUEsY0FDRSxNQUFNO0FBQUEsY0FDTixRQUFRO0FBQUE7QUFBQTtBQUFBLFlBR1Y7QUFBQSxZQUNBO0FBQUEsY0FDRSxNQUFNO0FBQUEsY0FDTixRQUFRO0FBQUE7QUFBQTtBQUFBLFlBQUE7QUFBQSxVQUdWO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFBQSxJQUVKO0FBQUEsSUFDQTtBQUFBLE1BQ0UsTUFBTTtBQUFBLE1BQ04sVUFBVTtBQUFBLFFBQ1I7QUFBQSxVQUNFLE1BQU07QUFBQSxVQUNOLFFBQVE7QUFBQTtBQUFBO0FBQUEsUUFHVjtBQUFBLFFBQ0E7QUFBQSxVQUNFLE1BQU07QUFBQSxVQUNOLFFBQVE7QUFBQTtBQUFBO0FBQUEsUUFBQTtBQUFB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Q1QsU0FBUztBQUFBLGNBQ1Y7QUFBQSxjQUNELEtBQUs7QUFBQSxnQkFDSCxTQUFTO0FBQUEsZ0JBQ1QsU0FBUztBQUFBLGNBQ25CO0FBQUEsWUFDTztBQUNELHdCQUFZLFVBQVU7QUFBQSxjQUNwQixTQUFTO0FBQUEsZ0JBQ1AsS0FBSztBQUFBLGNBQ047QUFBQSxjQUNELFVBQVU7QUFBQSxnQkFDUixLQUFLO0FBQUEsY0FDTjtBQUFBLGNBQ0QsVUFBVTtBQUFBLGdCQUNSLEtBQUs7QUFBQSxjQUNmO0FBQUEsWUFDTztBQUNELG1CQUFPLFdBQVcsZUFBZSxnQkFBZ0IsV0FBVztBQUFBLFVBQzdEO0FBSUQsVUFBQXFCLFFBQU8sVUFBVSxTQUFTLE1BQU07QUFBQSxRQUNwQyxPQUFTO0FBQ0wsVUFBQUEsUUFBTyxVQUFVLFdBQVc7QUFBQSxRQUNoQztBQUFBLE1BQ0EsQ0FBQztBQUFBOzs7OztBQ3RzQ00sUUFBTSxVQUFVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMCwxLDMsNCw1LDYsNywxNiwxN119 diff --git a/.output/chrome-mv3/chunks/reload-html-BxzUToPe.js b/.output/chrome-mv3/chunks/reload-html-BxzUToPe.js new file mode 100644 index 000000000..123f2ca97 --- /dev/null +++ b/.output/chrome-mv3/chunks/reload-html-BxzUToPe.js @@ -0,0 +1,95 @@ +(function polyfill() { + const relList = document.createElement("link").relList; + if (relList && relList.supports && relList.supports("modulepreload")) { + return; + } + for (const link of document.querySelectorAll('link[rel="modulepreload"]')) { + processPreload(link); + } + new MutationObserver((mutations) => { + for (const mutation of mutations) { + if (mutation.type !== "childList") { + continue; + } + for (const node of mutation.addedNodes) { + if (node.tagName === "LINK" && node.rel === "modulepreload") + processPreload(node); + } + } + }).observe(document, { childList: true, subtree: true }); + function getFetchOpts(link) { + const fetchOpts = {}; + if (link.integrity) fetchOpts.integrity = link.integrity; + if (link.referrerPolicy) fetchOpts.referrerPolicy = link.referrerPolicy; + if (link.crossOrigin === "use-credentials") + fetchOpts.credentials = "include"; + else if (link.crossOrigin === "anonymous") fetchOpts.credentials = "omit"; + else fetchOpts.credentials = "same-origin"; + return fetchOpts; + } + function processPreload(link) { + if (link.ep) + return; + link.ep = true; + const fetchOpts = getFetchOpts(link); + fetch(link.href, fetchOpts); + } +})(); +function print(method, ...args) { + if (typeof args[0] === "string") { + const message = args.shift(); + method(`[wxt] ${message}`, ...args); + } else { + method("[wxt]", ...args); + } +} +const logger = { + debug: (...args) => print(console.debug, ...args), + log: (...args) => print(console.log, ...args), + warn: (...args) => print(console.warn, ...args), + error: (...args) => print(console.error, ...args) +}; +let ws; +function getDevServerWebSocket() { + if (ws == null) { + const serverUrl = `${"ws:"}//${"localhost"}:${3e3}`; + logger.debug("Connecting to dev server @", serverUrl); + ws = new WebSocket(serverUrl, "vite-hmr"); + ws.addWxtEventListener = ws.addEventListener.bind(ws); + ws.sendCustom = (event, payload) => ws == null ? void 0 : ws.send(JSON.stringify({ type: "custom", event, payload })); + ws.addEventListener("open", () => { + logger.debug("Connected to dev server"); + }); + ws.addEventListener("close", () => { + logger.debug("Disconnected from dev server"); + }); + ws.addEventListener("error", (event) => { + logger.error("Failed to connect to dev server", event); + }); + ws.addEventListener("message", (e) => { + try { + const message = JSON.parse(e.data); + if (message.type === "custom") { + ws == null ? void 0 : ws.dispatchEvent( + new CustomEvent(message.event, { detail: message.data }) + ); + } + } catch (err) { + logger.error("Failed to handle message", err); + } + }); + } + return ws; +} +{ + try { + const ws2 = getDevServerWebSocket(); + ws2.addWxtEventListener("wxt:reload-page", (event) => { + if (event.detail === location.pathname.substring(1)) + location.reload(); + }); + } catch (err) { + logger.error("Failed to setup web socket connection with dev server", err); + } +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsb2FkLWh0bWwtQnh6VVRvUGUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS93eHRAMC4xOS4yM19AdHlwZXMrbm9kZUAxOC4xOS41N19yb2xsdXBANC4yOS4xX3lhbWxAMi42LjAvbm9kZV9tb2R1bGVzL3d4dC9kaXN0L3ZpcnR1YWwvcmVsb2FkLWh0bWwubWpzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIHByaW50KG1ldGhvZCwgLi4uYXJncykge1xuICBpZiAoaW1wb3J0Lm1ldGEuZW52Lk1PREUgPT09IFwicHJvZHVjdGlvblwiKVxuICAgIHJldHVybjtcbiAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSBcInN0cmluZ1wiKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGFyZ3Muc2hpZnQoKTtcbiAgICBtZXRob2QoYFt3eHRdICR7bWVzc2FnZX1gLCAuLi5hcmdzKTtcbiAgfSBlbHNlIHtcbiAgICBtZXRob2QoXCJbd3h0XVwiLCAuLi5hcmdzKTtcbiAgfVxufVxuY29uc3QgbG9nZ2VyID0ge1xuICBkZWJ1ZzogKC4uLmFyZ3MpID0+IHByaW50KGNvbnNvbGUuZGVidWcsIC4uLmFyZ3MpLFxuICBsb2c6ICguLi5hcmdzKSA9PiBwcmludChjb25zb2xlLmxvZywgLi4uYXJncyksXG4gIHdhcm46ICguLi5hcmdzKSA9PiBwcmludChjb25zb2xlLndhcm4sIC4uLmFyZ3MpLFxuICBlcnJvcjogKC4uLmFyZ3MpID0+IHByaW50KGNvbnNvbGUuZXJyb3IsIC4uLmFyZ3MpXG59O1xuXG5sZXQgd3M7XG5mdW5jdGlvbiBnZXREZXZTZXJ2ZXJXZWJTb2NrZXQoKSB7XG4gIGlmIChpbXBvcnQubWV0YS5lbnYuQ09NTUFORCAhPT0gXCJzZXJ2ZVwiKVxuICAgIHRocm93IEVycm9yKFxuICAgICAgXCJNdXN0IGJlIHJ1bm5pbmcgV1hUIGRldiBjb21tYW5kIHRvIGNvbm5lY3QgdG8gY2FsbCBnZXREZXZTZXJ2ZXJXZWJTb2NrZXQoKVwiXG4gICAgKTtcbiAgaWYgKHdzID09IG51bGwpIHtcbiAgICBjb25zdCBzZXJ2ZXJVcmwgPSBgJHtfX0RFVl9TRVJWRVJfUFJPVE9DT0xfX30vLyR7X19ERVZfU0VSVkVSX0hPU1ROQU1FX199OiR7X19ERVZfU0VSVkVSX1BPUlRfX31gO1xuICAgIGxvZ2dlci5kZWJ1ZyhcIkNvbm5lY3RpbmcgdG8gZGV2IHNlcnZlciBAXCIsIHNlcnZlclVybCk7XG4gICAgd3MgPSBuZXcgV2ViU29ja2V0KHNlcnZlclVybCwgXCJ2aXRlLWhtclwiKTtcbiAgICB3cy5hZGRXeHRFdmVudExpc3RlbmVyID0gd3MuYWRkRXZlbnRMaXN0ZW5lci5iaW5kKHdzKTtcbiAgICB3cy5zZW5kQ3VzdG9tID0gKGV2ZW50LCBwYXlsb2FkKSA9PiB3cz8uc2VuZChKU09OLnN0cmluZ2lmeSh7IHR5cGU6IFwiY3VzdG9tXCIsIGV2ZW50LCBwYXlsb2FkIH0pKTtcbiAgICB3cy5hZGRFdmVudExpc3RlbmVyKFwib3BlblwiLCAoKSA9PiB7XG4gICAgICBsb2dnZXIuZGVidWcoXCJDb25uZWN0ZWQgdG8gZGV2IHNlcnZlclwiKTtcbiAgICB9KTtcbiAgICB3cy5hZGRFdmVudExpc3RlbmVyKFwiY2xvc2VcIiwgKCkgPT4ge1xuICAgICAgbG9nZ2VyLmRlYnVnKFwiRGlzY29ubmVjdGVkIGZyb20gZGV2IHNlcnZlclwiKTtcbiAgICB9KTtcbiAgICB3cy5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwgKGV2ZW50KSA9PiB7XG4gICAgICBsb2dnZXIuZXJyb3IoXCJGYWlsZWQgdG8gY29ubmVjdCB0byBkZXYgc2VydmVyXCIsIGV2ZW50KTtcbiAgICB9KTtcbiAgICB3cy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCAoZSkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IEpTT04ucGFyc2UoZS5kYXRhKTtcbiAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gXCJjdXN0b21cIikge1xuICAgICAgICAgIHdzPy5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KG1lc3NhZ2UuZXZlbnQsIHsgZGV0YWlsOiBtZXNzYWdlLmRhdGEgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKFwiRmFpbGVkIHRvIGhhbmRsZSBtZXNzYWdlXCIsIGVycik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHdzO1xufVxuXG5pZiAoaW1wb3J0Lm1ldGEuZW52LkNPTU1BTkQgPT09IFwic2VydmVcIikge1xuICB0cnkge1xuICAgIGNvbnN0IHdzID0gZ2V0RGV2U2VydmVyV2ViU29ja2V0KCk7XG4gICAgd3MuYWRkV3h0RXZlbnRMaXN0ZW5lcihcInd4dDpyZWxvYWQtcGFnZVwiLCAoZXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5kZXRhaWwgPT09IGxvY2F0aW9uLnBhdGhuYW1lLnN1YnN0cmluZygxKSlcbiAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgfSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5lcnJvcihcIkZhaWxlZCB0byBzZXR1cCB3ZWIgc29ja2V0IGNvbm5lY3Rpb24gd2l0aCBkZXYgc2VydmVyXCIsIGVycik7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJ3cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFNBQVMsTUFBTSxXQUFXLE1BQU07QUFHOUIsTUFBSSxPQUFPLEtBQUssQ0FBQyxNQUFNLFVBQVU7QUFDekIsVUFBQSxVQUFVLEtBQUssTUFBTTtBQUMzQixXQUFPLFNBQVMsT0FBTyxJQUFJLEdBQUcsSUFBSTtBQUFBLEVBQUEsT0FDN0I7QUFDRSxXQUFBLFNBQVMsR0FBRyxJQUFJO0FBQUEsRUFBQTtBQUUzQjtBQUNBLE1BQU0sU0FBUztBQUFBLEVBQ2IsT0FBTyxJQUFJLFNBQVMsTUFBTSxRQUFRLE9BQU8sR0FBRyxJQUFJO0FBQUEsRUFDaEQsS0FBSyxJQUFJLFNBQVMsTUFBTSxRQUFRLEtBQUssR0FBRyxJQUFJO0FBQUEsRUFDNUMsTUFBTSxJQUFJLFNBQVMsTUFBTSxRQUFRLE1BQU0sR0FBRyxJQUFJO0FBQUEsRUFDOUMsT0FBTyxJQUFJLFNBQVMsTUFBTSxRQUFRLE9BQU8sR0FBRyxJQUFJO0FBQ2xEO0FBRUEsSUFBSTtBQUNKLFNBQVMsd0JBQXdCO0FBSy9CLE1BQUksTUFBTSxNQUFNO0FBQ2QsVUFBTSxZQUFZLEdBQUcsS0FBdUIsS0FBSyxXQUF1QixJQUFJLEdBQW1CO0FBQ3hGLFdBQUEsTUFBTSw4QkFBOEIsU0FBUztBQUMvQyxTQUFBLElBQUksVUFBVSxXQUFXLFVBQVU7QUFDeEMsT0FBRyxzQkFBc0IsR0FBRyxpQkFBaUIsS0FBSyxFQUFFO0FBQ3BELE9BQUcsYUFBYSxDQUFDLE9BQU8sWUFBWSx5QkFBSSxLQUFLLEtBQUssVUFBVSxFQUFFLE1BQU0sVUFBVSxPQUFPLFFBQVMsQ0FBQTtBQUMzRixPQUFBLGlCQUFpQixRQUFRLE1BQU07QUFDaEMsYUFBTyxNQUFNLHlCQUF5QjtBQUFBLElBQUEsQ0FDdkM7QUFDRSxPQUFBLGlCQUFpQixTQUFTLE1BQU07QUFDakMsYUFBTyxNQUFNLDhCQUE4QjtBQUFBLElBQUEsQ0FDNUM7QUFDRSxPQUFBLGlCQUFpQixTQUFTLENBQUMsVUFBVTtBQUMvQixhQUFBLE1BQU0sbUNBQW1DLEtBQUs7QUFBQSxJQUFBLENBQ3REO0FBQ0UsT0FBQSxpQkFBaUIsV0FBVyxDQUFDLE1BQU07QUFDaEMsVUFBQTtBQUNGLGNBQU0sVUFBVSxLQUFLLE1BQU0sRUFBRSxJQUFJO0FBQzdCLFlBQUEsUUFBUSxTQUFTLFVBQVU7QUFDekIsbUNBQUE7QUFBQSxZQUNGLElBQUksWUFBWSxRQUFRLE9BQU8sRUFBRSxRQUFRLFFBQVEsS0FBTSxDQUFBO0FBQUE7QUFBQSxRQUN6RDtBQUFBLGVBRUssS0FBSztBQUNMLGVBQUEsTUFBTSw0QkFBNEIsR0FBRztBQUFBLE1BQUE7QUFBQSxJQUM5QyxDQUNEO0FBQUEsRUFBQTtBQUVJLFNBQUE7QUFDVDtBQUV5QztBQUNuQyxNQUFBO0FBQ0YsVUFBTUEsTUFBSyxzQkFBc0I7QUFDakNBLFFBQUcsb0JBQW9CLG1CQUFtQixDQUFDLFVBQVU7QUFDbkQsVUFBSSxNQUFNLFdBQVcsU0FBUyxTQUFTLFVBQVUsQ0FBQztBQUNoRCxpQkFBUyxPQUFPO0FBQUEsSUFBQSxDQUNuQjtBQUFBLFdBQ00sS0FBSztBQUNMLFdBQUEsTUFBTSx5REFBeUQsR0FBRztBQUFBLEVBQUE7QUFFN0U7IiwieF9nb29nbGVfaWdub3JlTGlzdCI6WzBdfQ== diff --git a/.output/chrome-mv3/icon-128.png b/.output/chrome-mv3/icon-128.png new file mode 100644 index 0000000000000000000000000000000000000000..5c92bd918b636fc8ea9e6adfe4b7323927eb0275 GIT binary patch literal 7516 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 R!RP=0002ovPDHLkV1mGAF9!es literal 0 HcmV?d00001 diff --git a/.output/chrome-mv3/icon-32.png b/.output/chrome-mv3/icon-32.png new file mode 100644 index 0000000000000000000000000000000000000000..dd91fbd709dbed8d21be6d34b14fbe3fd7fbafc6 GIT binary patch literal 1668 zcmV-~27CF5P)Z$KHE=>-*MP`y7Qq z)|~BH8X{Z?sAjrs#D8OL3Wg57u{ArfJ^4T-9M^}y2EeSx|7vEFwm`aL0M@zrj!v6! zYphK}En^UxuWaPE%sE>V$;>`U=xkRbMSlTfv?=u(n_jF#q1WJzk8=34hgN~5)QoZs zW+P=je7BKaOkI-_@g_(mF^JdFZaQO zhH;G%f?DZgOxhD)#t48Lg#evhfq3k=R)+RGD5Wq)YxGAms&<^hiiK5}NmSQVA!gyO z+kJ`no#!V)eA7SvJN$DWj+`kAJO5;AMfUoztl4BTSh1iA&n&H$d*?eUxI$5fCUlhB zsY)w}UehskqK|nqQ*ys$UkM-YFA1oTq#2O`UYs4Trla*x2`zhz$d$->7$OJ)R4Ntv zt)07EX7TB@3fF0lFt@fdj=otV5 z5e5w3qs1ARQo`Ehs{!8ISw_AT(i$~5b)k$?7YVE~LqPaLX}8ACneOd-a^x%^TGLo` zcQtCOH7#60t{7Mucpf<(U*pM9C>iWNRwTK~*#1op%kQtk{5ffyY%jYU`5OkJGBOk; z>)7^7F9M>vc~J(htgOdq?TH67*!o2`K0TPn?jK5cU~Uz*?J^=4dr+#M1)YqZDPmf~ zAe07k?)N^SdKE1=*gCIQu=Bu;5kah7UWb}A$w4JLwcd**V+_MeAd!bQ`PMvKEBEr0 zbPR-(iXDEkzemo;lMG)UEy(l5b8C>H>w_l?l%%1Iduqu98COG{lI3DsO-U&gVLT*t zNJwCDEtr$SvkrhHU1)2W7kqSn2Kgd8DdV-(lh8rGAAWUB8qwnm>(D?YxOiTzjAi4w zVQANV?vae_7kf`sTpC&wegq~YZbB1K)A19KsN)qY@%5}b#<{cV7*xxit5~;cGGg7j+b2B?NQPZU za`=_r0b(OBom2^_R7%*8j;HKeb+tCBIY0cA9=Q{WQ@5jWPd|RHgvS<)rx%Z2DjzEv z>+DgE96o(h?i-6%7F9%lI+Yell%szNHP5G)*5e$ps-yc(ouL3kLvI1V| zI7dU~a+Li871c5A!!^0q4- z&N^UY*?5d{>_r=zbV6gdV1DjJ>!`Sl>H7e>)dI3*<_(}qxo89X65`$iBIm|!pZpVs z5x79MZ{E-(McfMu_XH_proTTAHfs7h*++4Evn(*=<220D5usnxY02v!D|GlBNb@u^>cusCLE4u1)Kg*~$Bo)BXapXIPlh0=%XG O000078`5CQYESS&wl%lHezjU zlg4Ktk`&Q~U@@gul0vOXLoB7Xi56PBDzID1?!rFV{l1y&Ip^LxkMG4&zc%zFv)|0z zJNKUF@0>HU3N>g$ey}Z4xLawxS_AW8j(37CDBwf{{Rbc3fdl#Wo@x_SrJKa~d=0&e zm|l&mfE4s@1+Tl3AYSQ>4c&uxljJX4EzC1%sIM?j>+=2EOUE)6Sl>O^1+DYAnn|hr z<6Z6D@ufQv&1?N2-UUSNeb2#shwv%_u+OuJ=(G)Wq?RV5pV3PiZZnO#&;<`_Imbi* zSv2aRNiHIUZ+db0B&8Q10Q7bbzJQiZl z;o*3M&xgheA{et@FA>O^t2hrVLmi2kEQTSTJeCM>h|WX07l{?>X92Db$O3gj9^)S% zD2|126c&m3FfvZ273xUy1H46IHm+&&uySz@3+DQAk7Zy1A`+mbF`4_#jWa2L0pFvr z^OOYg2tjL4Ux=6gUBnv~BD__)A^{u(E|}wE>y6F$*c9cz{@RwB<1hCV@zVn%ICt^N z-Ak>{4@~_j((bzJnuK{rfB)AcUh6AjbUYI2A{~hZ+`;52D#d)NE0qV2tiYO>KF!0D z1r1m@FHyqYBjc1a#<^UWDo2;MfLn@PV-qDNJ{;qF4iDi)`W1BHO(Sgt2#Y8bixjvl zfF{@R5d=9A!uLJ1Ce2rL%$*rv$1QDGvamtcW^L}XLQEy;`HNTIo4?E)L5?-c8u2x& z`8|Ig!p`3f;OzNH3Q%HHv>nD;=WDi>CSeS-UYx!(&$EHf&x{b{KK1;V2(xryBd(pF z!%MFhaE{}`JY17EuhyV4+{>}qYW}Iejbito22m&!P$cGs@sPD{5r_^p1~cT5=GkRD zPsNIe*v)7@!z!Z_uTiA6c0W0Y{m+ibyzLvO%UnH$q!H9&-k=JwW@)1!PTxQgyJ(}L z#dMytd{HwNy{`eSnFX7Dj3E_zu{@#{rE{ia=XxqjPNq7(K?-zkC zjuhy61h=f3fwjvU@!UTrB=BoFQFRxxWdUn?&U*~bA38Q9_t`xj+Sd7hG4JTcPqg9( zTjv_&q5WQXbxiJaZsB-xmQ+_FfQx?i>5zPUVW%ce<=w@ROS0aETZPCKfD4Cfv>8CEE`CW$w@are~$u-`@ zREdR9CHQYFP`dyuivgp3g8-i)=-jfVy<}8L5_0sVANHWR(IlpMGjo#Aj-MLCuXfDG zHy-H0^C!o!;v>yC+dqkee;q_$e<9X1Bh+uczd+WR+a8!+Atl2j--_(Jh9q2{(?eE9d zADzO-7f(m$tVTK-uxe>57Jr~QySIZ*OCRdY2@iMtgqopARWT0AQONSw(okWx)^ta*)Ge}EbPxSS^^nkKbLt*#h9#x;Ub1cixe-D7^dGL zy5>sN_XA?SdR@uoiq@W~uT<6wB^E%O)}u-mfbl`)nX)*NV$JlzC;vNc6+?es8I^OM zlZHlZt5vs$v^KWM@ob}0iNu9S0QU^43E;*!pnA!)y;S?mn;E2rxdiqQ_$r>yR>%al zEnSpNF`hCu<8j4Gj94fgXLJ@IN7`pAShHnV;#!GOuBpkdn2xgoxPFy>*%cYbzqqOm zo7T=U{F0Ue-;b@pwLRDT=52#v>iQ)uloNbYkwRHFG6Hbv{LG6Zv7B7z_<<*DvSQ30 z2|JG-eiOexa*=0FEs?3z32)3v=g0fbCIU!_Ozz{GP2;5DMAqzOCkst%P*ckDcE zN(^=}<;z;0jTK(YOKJK3eZ9!#a+ucC6!TWog|yPvca=T3o=@H`7?X3*`Eu@jS=;92 zKj%Rm+5}vtW4Y2j$;i0IL>Qok(?W`Czy3T%%5w34AZ}vOkQn z?}IpDN#=ynlF_13ito-XL(T=wO9BJSf^_sMrh!n1V}_qA%>#6KB%m#h(&_5dO_Qz# zk(5OOFYb;cE21btXOJkCI?1$A62LN|41t{mzl2{~o#I6JEtS5+AhDR5@C@>kpviB z$syHgVBe!E8@w4y$vG>%J6QqprE)v5_CR`RZHqMdJj5S#B73g0m8#CLliX8rahMuc z=?UpoRGg@s)!emp)YRG~pIIHP&-dr)Ru@tXxgsqowE@!}DO9O`OQ<~fvO|gZu5ou- zul#~ncR!x*$ftSC5L<%S?9ydlZgjkjw(zKsxJv0p%D$*7c@l`VnS`*4Bidf04DZEl z$V0lF=2Q2}$$WZ^@-+NqTm{4+!*N>apFL_i0Sm%Eq-Fk+xlGsjOMVUNA;x+*M^Pw0 e$Vgdj;{O0t_cBbyk88dF0000" + ], + "js": [ + "src/pages/content/sidebar.tsx" + ] + }, + { + "matches": [ + "http://*/*", + "https://*/*", + "" + ], + "js": [ + "src/pages/content/quick-menu/initQuickMenu.tsx", + "src/pages/content/quick-menu/listenContextMenu.tsx" + ], + "all_frames": true + } + ], + "web_accessible_resources": [ + { + "resources": [ + "src/pages/sidebar/index.html", + "images/robot.png", + "src/pages/settings/index.html" + ], + "matches": [ + "http://*/*", + "https://*/*" + ] + } + ], + "version_name": "1.5.3", + "host_permissions": [ + "http://localhost/*" + ], + "content_security_policy": { + "extension_pages": "script-src 'self' 'wasm-unsafe-eval' http://localhost:3000; object-src 'self';", + "sandbox": "script-src 'self' 'unsafe-inline' 'unsafe-eval' http://localhost:3000; sandbox allow-scripts allow-forms allow-popups allow-modals; child-src 'self';" + } +} \ No newline at end of file diff --git a/.output/chrome-mv3/robot.png b/.output/chrome-mv3/robot.png new file mode 100644 index 0000000000000000000000000000000000000000..5e8d334b3baeb2a4cea652ccb38b9268a060d080 GIT binary patch literal 100654 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 Kz$z(&!2bvNM&#uH literal 0 HcmV?d00001 diff --git a/.output/chrome-mv3/settings.html b/.output/chrome-mv3/settings.html new file mode 100644 index 000000000..f7f59936c --- /dev/null +++ b/.output/chrome-mv3/settings.html @@ -0,0 +1,16 @@ + + + + + + + + Syncia Settings + + + +

+ + + + \ No newline at end of file diff --git a/.output/chrome-mv3/sidebar.html b/.output/chrome-mv3/sidebar.html new file mode 100644 index 000000000..68b94446a --- /dev/null +++ b/.output/chrome-mv3/sidebar.html @@ -0,0 +1,16 @@ + + + + + + + + Syncia Sidebar + + + +
+ + + + \ No newline at end of file diff --git a/.wxt/tsconfig.json b/.wxt/tsconfig.json index 0967ef424..6f2e68047 100644 --- a/.wxt/tsconfig.json +++ b/.wxt/tsconfig.json @@ -1 +1,28 @@ -{} +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "Bundler", + "noEmit": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "strict": true, + "skipLibCheck": true, + "paths": { + "@": ["../src"], + "@/*": ["../src/*"], + "~": ["../src"], + "~/*": ["../src/*"], + "@@": [".."], + "@@/*": ["../*"], + "~~": [".."], + "~~/*": ["../*"] + } + }, + "include": [ + "../**/*", + "./wxt.d.ts" + ], + "exclude": ["../.output"] +} \ No newline at end of file diff --git a/.wxt/types/globals.d.ts b/.wxt/types/globals.d.ts new file mode 100644 index 000000000..b8aa6c723 --- /dev/null +++ b/.wxt/types/globals.d.ts @@ -0,0 +1,15 @@ +// Generated by wxt +interface ImportMetaEnv { + readonly MANIFEST_VERSION: 2 | 3; + readonly BROWSER: string; + readonly CHROME: boolean; + readonly FIREFOX: boolean; + readonly SAFARI: boolean; + readonly EDGE: boolean; + readonly OPERA: boolean; + readonly COMMAND: "build" | "serve"; + readonly ENTRYPOINT: string; +} +interface ImportMeta { + readonly env: ImportMetaEnv +} diff --git a/.wxt/types/i18n.d.ts b/.wxt/types/i18n.d.ts new file mode 100644 index 000000000..0a0577a43 --- /dev/null +++ b/.wxt/types/i18n.d.ts @@ -0,0 +1,81 @@ +// Generated by wxt +import "wxt/browser"; + +declare module "wxt/browser" { + /** + * See https://developer.chrome.com/docs/extensions/reference/i18n/#method-getMessage + */ + interface GetMessageOptions { + /** + * See https://developer.chrome.com/docs/extensions/reference/i18n/#method-getMessage + */ + escapeLt?: boolean + } + + export interface WxtI18n extends I18n.Static { + /** + * The extension or app ID; you might use this string to construct URLs for resources inside the extension. Even unlocalized extensions can use this message. + * Note: You can't use this message in a manifest file. + * + * "" + */ + getMessage( + messageName: "@@extension_id", + substitutions?: string | string[], + options?: GetMessageOptions, + ): string; + /** + * "" + */ + getMessage( + messageName: "@@ui_locale", + substitutions?: string | string[], + options?: GetMessageOptions, + ): string; + /** + * The text direction for the current locale, either "ltr" for left-to-right languages such as English or "rtl" for right-to-left languages such as Japanese. + * + * "" + */ + getMessage( + messageName: "@@bidi_dir", + substitutions?: string | string[], + options?: GetMessageOptions, + ): string; + /** + * If the @@bidi_dir is "ltr", then this is "rtl"; otherwise, it's "ltr". + * + * "" + */ + getMessage( + messageName: "@@bidi_reversed_dir", + substitutions?: string | string[], + options?: GetMessageOptions, + ): string; + /** + * If the @@bidi_dir is "ltr", then this is "left"; otherwise, it's "right". + * + * "" + */ + getMessage( + messageName: "@@bidi_start_edge", + substitutions?: string | string[], + options?: GetMessageOptions, + ): string; + /** + * If the @@bidi_dir is "ltr", then this is "right"; otherwise, it's "left". + * + * "" + */ + getMessage( + messageName: "@@bidi_end_edge", + substitutions?: string | string[], + options?: GetMessageOptions, + ): string; + getMessage( + messageName: "@@extension_id" | "@@ui_locale" | "@@bidi_dir" | "@@bidi_reversed_dir" | "@@bidi_start_edge" | "@@bidi_end_edge", + substitutions?: string | string[], + options?: GetMessageOptions, + ): string; + } +} diff --git a/.wxt/types/imports.d.ts b/.wxt/types/imports.d.ts new file mode 100644 index 000000000..09da45d11 --- /dev/null +++ b/.wxt/types/imports.d.ts @@ -0,0 +1,52 @@ +// Generated by wxt +export {} +declare global { + const ChatRole: typeof import('/Users/srujangurram/Developer/Personal/Syncia/src/hooks/useCurrentChat')['ChatRole'] + const ContentScriptContext: typeof import('wxt/client')['ContentScriptContext'] + const InvalidMatchPattern: typeof import('wxt/sandbox')['InvalidMatchPattern'] + const MatchPattern: typeof import('wxt/sandbox')['MatchPattern'] + const MigrationError: typeof import('wxt/storage')['MigrationError'] + const browser: typeof import('wxt/browser')['browser'] + const createIframeUi: typeof import('wxt/client')['createIframeUi'] + const createIntegratedUi: typeof import('wxt/client')['createIntegratedUi'] + const createShadowRootUi: typeof import('wxt/client')['createShadowRootUi'] + const defineAppConfig: typeof import('wxt/sandbox')['defineAppConfig'] + const defineBackground: typeof import('wxt/sandbox')['defineBackground'] + const defineConfig: typeof import('wxt')['defineConfig'] + const defineContentScript: typeof import('wxt/sandbox')['defineContentScript'] + const defineUnlistedScript: typeof import('wxt/sandbox')['defineUnlistedScript'] + const defineWxtPlugin: typeof import('wxt/sandbox')['defineWxtPlugin'] + const fakeBrowser: typeof import('wxt/testing')['fakeBrowser'] + const getFromIndexedDB: typeof import('/Users/srujangurram/Developer/Personal/Syncia/src/hooks/useStorage')['getFromIndexedDB'] + const getStoredChatKey: typeof import('/Users/srujangurram/Developer/Personal/Syncia/src/hooks/useCurrentChat')['getStoredChatKey'] + const injectScript: typeof import('wxt/client')['injectScript'] + const readStorage: typeof import('/Users/srujangurram/Developer/Personal/Syncia/src/hooks/useStorage')['readStorage'] + const saveToIndexedDB: typeof import('/Users/srujangurram/Developer/Personal/Syncia/src/hooks/useStorage')['saveToIndexedDB'] + const setStorage: typeof import('/Users/srujangurram/Developer/Personal/Syncia/src/hooks/useStorage')['setStorage'] + const storage: typeof import('wxt/storage')['storage'] + const useAppConfig: typeof import('wxt/client')['useAppConfig'] + const useChatCompletion: typeof import('/Users/srujangurram/Developer/Personal/Syncia/src/hooks/useChatCompletion')['useChatCompletion'] + const useChatHistory: typeof import('/Users/srujangurram/Developer/Personal/Syncia/src/hooks/useChatHistory')['useChatHistory'] + const useChatModels: typeof import('/Users/srujangurram/Developer/Personal/Syncia/src/hooks/useChatModels')['useChatModels'] + const useCurrentChat: typeof import('/Users/srujangurram/Developer/Personal/Syncia/src/hooks/useCurrentChat')['useCurrentChat'] + const useMessageDraft: typeof import('/Users/srujangurram/Developer/Personal/Syncia/src/hooks/useMessageDraft')['useMessageDraft'] + const usePrompts: typeof import('/Users/srujangurram/Developer/Personal/Syncia/src/hooks/usePrompts')['usePrompts'] + const useSettings: typeof import('/Users/srujangurram/Developer/Personal/Syncia/src/hooks/useSettings')['useSettings'] + const useStorage: typeof import('/Users/srujangurram/Developer/Personal/Syncia/src/hooks/useStorage')['useStorage'] + const useThemeSync: typeof import('/Users/srujangurram/Developer/Personal/Syncia/src/hooks/useThemeSync')['default'] +} +// for type re-export +declare global { + // @ts-ignore + export type { ChatRole, ChatMessage } from '/Users/srujangurram/Developer/Personal/Syncia/src/hooks/useCurrentChat' + import('/Users/srujangurram/Developer/Personal/Syncia/src/hooks/useCurrentChat') + // @ts-ignore + export type { MessageFile, MessageDraft } from '/Users/srujangurram/Developer/Personal/Syncia/src/hooks/useMessageDraft' + import('/Users/srujangurram/Developer/Personal/Syncia/src/hooks/useMessageDraft') + // @ts-ignore + export type { PromptWithChildren, Prompt } from '/Users/srujangurram/Developer/Personal/Syncia/src/hooks/usePrompts' + import('/Users/srujangurram/Developer/Personal/Syncia/src/hooks/usePrompts') + // @ts-ignore + export type { StorageArea } from '/Users/srujangurram/Developer/Personal/Syncia/src/hooks/useStorage' + import('/Users/srujangurram/Developer/Personal/Syncia/src/hooks/useStorage') +} diff --git a/.wxt/types/paths.d.ts b/.wxt/types/paths.d.ts new file mode 100644 index 000000000..ce50ada18 --- /dev/null +++ b/.wxt/types/paths.d.ts @@ -0,0 +1,20 @@ +// Generated by wxt +import "wxt/browser"; + +declare module "wxt/browser" { + export type PublicPath = + | "/" + | "/background.js" + | "/icon-128.png" + | "/icon-16.png" + | "/icon-32.png" + | "/icon-48.png" + | "/robot.png" + | "/settings.html" + | "/sidebar.html" + type HtmlPublicPath = Extract + export interface WxtRuntime { + getURL(path: PublicPath): string; + getURL(path: `${HtmlPublicPath}${string}`): string; + } +} diff --git a/.wxt/wxt.d.ts b/.wxt/wxt.d.ts new file mode 100644 index 000000000..5eac7c647 --- /dev/null +++ b/.wxt/wxt.d.ts @@ -0,0 +1,6 @@ +// Generated by wxt +/// +/// +/// +/// +/// diff --git a/tsconfig.json b/tsconfig.json index 88ed6fa31..6c07a8524 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": ".wxt/tsconfig.json", + "extends": "./.wxt/tsconfig.json", "compilerOptions": { "target": "ESNext", "useDefineForClassFields": true,