import { c as da, g as Lc } from "./index-8614f484.mjs"; import "@fast-crud/ui-interface"; import "vue"; import "lodash-es"; import "dayjs"; import "@iconify/vue"; import "vue-router"; function O0(e) { const t = navigator.userAgent; return e === "ie" ? t.indexOf("compatible") > -1 && t.indexOf("MSIE") > -1 ? (new RegExp("MSIE (\\d+\\.\\d+);").test(t), parseFloat(RegExp.$1)) : !1 : t.indexOf(e) > -1; } const Bc = { _isIE11() { let e = 0; const t = /MSIE (\d+\.\d+);/.test(navigator.userAgent), r = !!navigator.userAgent.match(/Trident\/7.0/), a = navigator.userAgent.indexOf("rv:11.0"); return t && (e = Number(RegExp.$1)), navigator.appVersion.indexOf("MSIE 10") !== -1 && (e = 10), r && a !== -1 && (e = 11), e === 11; }, _isEdge() { return /Edge/.test(navigator.userAgent); }, _getDownloadUrl(e) { const t = "\uFEFF"; if (window.Blob && window.URL && window.URL.createObjectURL) { const r = new Blob([t + e], { type: "text/csv" }); return URL.createObjectURL(r); } else return "data:attachment/csv;charset=utf-8," + t + encodeURIComponent(e); }, download(e, t) { if (O0("ie") && O0("ie") < 10) { const r = window.top.open("about:blank", "_blank"); r.document.charset = "utf-8", r.document.write(t), r.document.close(), r.document.execCommand("SaveAs", e + ".csv"), r.close(); } else if (O0("ie") === 10 || this._isIE11() || this._isEdge()) { const r = "\uFEFF", a = new Blob([r + t], { type: "text/csv" }); navigator.msSaveBlob(a, e + ".csv"); } else { const r = document.createElement("a"); r.download = e + ".csv", r.href = this._getDownloadUrl(t), document.body.appendChild(r), r.click(), document.body.removeChild(r); } } }, Mc = `\r `, I0 = (e, t, { separator: r, quoted: a }) => { const n = t.map((i) => a ? (i = typeof i == "string" ? i.replace(/"/g, '"') : i, `"${i}"`) : i); e.push(n.join(r)); }, Uc = { separator: ",", quoted: !1 }; function Wc(e, t, r, a = !1) { r = Object.assign({}, Uc, r); let n; const i = [], s = []; return e ? (n = e.map((f) => typeof f == "string" ? f : (a || s.push(typeof f.label < "u" ? f.label : f.prop), f.prop)), s.length > 0 && I0(i, s, r)) : (n = [], t.forEach((f) => { Array.isArray(f) || (n = n.concat(Object.keys(f))); }), n.length > 0 && (n = n.filter((f, c, o) => o.indexOf(f) === c), a || I0(i, n, r))), Array.isArray(t) && t.forEach((f) => { Array.isArray(f) || (f = n.map((c) => typeof f[c] < "u" ? f[c] : "")), I0(i, f, r); }), i.join(Mc); } /*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */ (function(e) { if (e.URL = e.URL || e.webkitURL, e.Blob && e.URL) try { new Blob(); return; } catch { } var t = e.BlobBuilder || e.WebKitBlobBuilder || e.MozBlobBuilder || function(r) { var a = function(C) { return Object.prototype.toString.call(C).match(/^\[object\s(.*)\]$/)[1]; }, n = function() { this.data = []; }, i = function(b, O, S) { this.data = b, this.size = b.length, this.type = O, this.encoding = S; }, s = n.prototype, f = i.prototype, c = r.FileReaderSync, o = function(C) { this.code = this[this.name = C]; }, l = "NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR".split(" "), u = l.length, h = r.URL || r.webkitURL || r, d = h.createObjectURL, v = h.revokeObjectURL, x = h, p = r.btoa, w = r.atob, y = r.ArrayBuffer, g = r.Uint8Array; for (i.fake = f.fake = !0; u--; ) o.prototype[l[u]] = u + 1; return h.createObjectURL || (x = r.URL = {}), x.createObjectURL = function(C) { var b = C.type, O; if (b === null && (b = "application/octet-stream"), C instanceof i) return O = "data:" + b, C.encoding === "base64" ? O + ";base64," + C.data : C.encoding === "URI" ? O + "," + decodeURIComponent(C.data) : p ? O + ";base64," + p(C.data) : O + "," + encodeURIComponent(C.data); if (d) return d.call(h, C); }, x.revokeObjectURL = function(C) { C.substring(0, 5) !== "data:" && v && v.call(h, C); }, s.append = function(C) { var b = this.data; if (g && (C instanceof y || C instanceof g)) { for (var O = "", S = new g(C), B = 0, R = S.length; B < R; B++) O += String.fromCharCode(S[B]); b.push(O); } else if (a(C) === "Blob" || a(C) === "File") if (c) { var X = new c(); b.push(X.readAsBinaryString(C)); } else throw new o("NOT_READABLE_ERR"); else C instanceof i ? C.encoding === "base64" && w ? b.push(w(C.data)) : C.encoding === "URI" ? b.push(decodeURIComponent(C.data)) : C.encoding === "raw" && b.push(C.data) : (typeof C != "string" && (C += ""), b.push(unescape(encodeURIComponent(C)))); }, s.getBlob = function(C) { return arguments.length || (C = null), new i(this.data.join(""), C, "raw"); }, s.toString = function() { return "[object BlobBuilder]"; }, f.slice = function(C, b, O) { var S = arguments.length; return S < 3 && (O = null), new i( this.data.slice(C, S > 1 ? b : this.data.length), O, this.encoding ); }, f.toString = function() { return "[object Blob]"; }, f.close = function() { this.size = this.data.length = 0; }, n; }(e); e.Blob = function(a, n) { var i = n && n.type || "", s = new t(); if (a) for (var f = 0, c = a.length; f < c; f++) s.append(a[f]); return s.getBlob(i); }; })(typeof self < "u" && self || typeof window < "u" && window || globalThis.content || globalThis); var fs = { exports: {} }; (function(e, t) { (function(r, a) { a(); })(da, function() { function r(o, l) { return typeof l > "u" ? l = { autoBom: !1 } : typeof l != "object" && (console.warn("Deprecated: Expected third argument to be a object"), l = { autoBom: !l }), l.autoBom && /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(o.type) ? new Blob(["\uFEFF", o], { type: o.type }) : o; } function a(o, l, u) { var h = new XMLHttpRequest(); h.open("GET", o), h.responseType = "blob", h.onload = function() { c(h.response, l, u); }, h.onerror = function() { console.error("could not download file"); }, h.send(); } function n(o) { var l = new XMLHttpRequest(); l.open("HEAD", o, !1); try { l.send(); } catch { } return 200 <= l.status && 299 >= l.status; } function i(o) { try { o.dispatchEvent(new MouseEvent("click")); } catch { var l = document.createEvent("MouseEvents"); l.initMouseEvent("click", !0, !0, window, 0, 0, 0, 80, 20, !1, !1, !1, !1, 0, null), o.dispatchEvent(l); } } var s = typeof window == "object" && window.window === window ? window : typeof self == "object" && self.self === self ? self : typeof da == "object" && da.global === da ? da : void 0, f = s.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent), c = s.saveAs || (typeof window != "object" || window !== s ? function() { } : "download" in HTMLAnchorElement.prototype && !f ? function(o, l, u) { var h = s.URL || s.webkitURL, d = document.createElement("a"); l = l || o.name || "download", d.download = l, d.rel = "noopener", typeof o == "string" ? (d.href = o, d.origin === location.origin ? i(d) : n(d.href) ? a(o, l, u) : i(d, d.target = "_blank")) : (d.href = h.createObjectURL(o), setTimeout(function() { h.revokeObjectURL(d.href); }, 4e4), setTimeout(function() { i(d); }, 0)); } : "msSaveOrOpenBlob" in navigator ? function(o, l, u) { if (l = l || o.name || "download", typeof o != "string") navigator.msSaveOrOpenBlob(r(o, u), l); else if (n(o)) a(o, l, u); else { var h = document.createElement("a"); h.href = o, h.target = "_blank", setTimeout(function() { i(h); }); } } : function(o, l, u, h) { if (h = h || open("", "_blank"), h && (h.document.title = h.document.body.innerText = "downloading..."), typeof o == "string") return a(o, l, u); var d = o.type === "application/octet-stream", v = /constructor/i.test(s.HTMLElement) || s.safari, x = /CriOS\/[\d]+/.test(navigator.userAgent); if ((x || d && v || f) && typeof FileReader < "u") { var p = new FileReader(); p.onloadend = function() { var g = p.result; g = x ? g : g.replace(/^data:[^;]*;/, "data:attachment/file;"), h ? h.location.href = g : location = g, h = null; }, p.readAsDataURL(o); } else { var w = s.URL || s.webkitURL, y = w.createObjectURL(o); h ? h.location = y : location.href = y, h = null, setTimeout(function() { w.revokeObjectURL(y); }, 4e4); } }); s.saveAs = c.saveAs = c, e.exports = c; }); })(fs); var Hc = fs.exports; const cs = /* @__PURE__ */ Lc(Hc); /*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */ var f0 = {}; f0.version = "0.18.5"; var os = 1252, Vc = [874, 932, 936, 949, 950, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1e4], fn = { /*::[*/ 0: 1252, /* ANSI */ /*::[*/ 1: 65001, /* DEFAULT */ /*::[*/ 2: 65001, /* SYMBOL */ /*::[*/ 77: 1e4, /* MAC */ /*::[*/ 128: 932, /* SHIFTJIS */ /*::[*/ 129: 949, /* HANGUL */ /*::[*/ 130: 1361, /* JOHAB */ /*::[*/ 134: 936, /* GB2312 */ /*::[*/ 136: 950, /* CHINESEBIG5 */ /*::[*/ 161: 1253, /* GREEK */ /*::[*/ 162: 1254, /* TURKISH */ /*::[*/ 163: 1258, /* VIETNAMESE */ /*::[*/ 177: 1255, /* HEBREW */ /*::[*/ 178: 1256, /* ARABIC */ /*::[*/ 186: 1257, /* BALTIC */ /*::[*/ 204: 1251, /* RUSSIAN */ /*::[*/ 222: 874, /* THAI */ /*::[*/ 238: 1250, /* EASTEUROPE */ /*::[*/ 255: 1252, /* OEM */ /*::[*/ 69: 6969 /* MISC */ }, cn = function(e) { Vc.indexOf(e) != -1 && (os = fn[0] = e); }; function Gc() { cn(1252); } var zr = function(e) { cn(e); }; function on() { zr(1200), Gc(); } function Zn(e) { for (var t = [], r = 0, a = e.length; r < a; ++r) t[r] = e.charCodeAt(r); return t; } function Xc(e) { for (var t = [], r = 0; r < e.length >> 1; ++r) t[r] = String.fromCharCode(e.charCodeAt(2 * r) + (e.charCodeAt(2 * r + 1) << 8)); return t.join(""); } function ls(e) { for (var t = [], r = 0; r < e.length >> 1; ++r) t[r] = String.fromCharCode(e.charCodeAt(2 * r + 1) + (e.charCodeAt(2 * r) << 8)); return t.join(""); } var pa = function(e) { var t = e.charCodeAt(0), r = e.charCodeAt(1); return t == 255 && r == 254 ? Xc(e.slice(2)) : t == 254 && r == 255 ? ls(e.slice(2)) : t == 65279 ? e.slice(1) : e; }, Ja = function(t) { return String.fromCharCode(t); }, Qn = function(t) { return String.fromCharCode(t); }, mt, gt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; function Aa(e) { for (var t = "", r = 0, a = 0, n = 0, i = 0, s = 0, f = 0, c = 0, o = 0; o < e.length; ) r = e.charCodeAt(o++), i = r >> 2, a = e.charCodeAt(o++), s = (r & 3) << 4 | a >> 4, n = e.charCodeAt(o++), f = (a & 15) << 2 | n >> 6, c = n & 63, isNaN(a) ? f = c = 64 : isNaN(n) && (c = 64), t += gt.charAt(i) + gt.charAt(s) + gt.charAt(f) + gt.charAt(c); return t; } function Rr(e) { var t = "", r = 0, a = 0, n = 0, i = 0, s = 0, f = 0, c = 0; e = e.replace(/[^\w\+\/\=]/g, ""); for (var o = 0; o < e.length; ) i = gt.indexOf(e.charAt(o++)), s = gt.indexOf(e.charAt(o++)), r = i << 2 | s >> 4, t += String.fromCharCode(r), f = gt.indexOf(e.charAt(o++)), a = (s & 15) << 4 | f >> 2, f !== 64 && (t += String.fromCharCode(a)), c = gt.indexOf(e.charAt(o++)), n = (f & 3) << 6 | c, c !== 64 && (t += String.fromCharCode(n)); return t; } var Te = /* @__PURE__ */ function() { return typeof Buffer < "u" && typeof process < "u" && typeof process.versions < "u" && !!process.versions.node; }(), ut = /* @__PURE__ */ function() { if (typeof Buffer < "u") { var e = !Buffer.from; if (!e) try { Buffer.from("foo", "utf8"); } catch { e = !0; } return e ? function(t, r) { return r ? new Buffer(t, r) : new Buffer(t); } : Buffer.from.bind(Buffer); } return function() { }; }(); function Et(e) { return Te ? Buffer.alloc ? Buffer.alloc(e) : new Buffer(e) : typeof Uint8Array < "u" ? new Uint8Array(e) : new Array(e); } function ei(e) { return Te ? Buffer.allocUnsafe ? Buffer.allocUnsafe(e) : new Buffer(e) : typeof Uint8Array < "u" ? new Uint8Array(e) : new Array(e); } var Or = function(t) { return Te ? ut(t, "binary") : t.split("").map(function(r) { return r.charCodeAt(0) & 255; }); }; function w0(e) { if (typeof ArrayBuffer > "u") return Or(e); for (var t = new ArrayBuffer(e.length), r = new Uint8Array(t), a = 0; a != e.length; ++a) r[a] = e.charCodeAt(a) & 255; return t; } function Ft(e) { if (Array.isArray(e)) return e.map(function(a) { return String.fromCharCode(a); }).join(""); for (var t = [], r = 0; r < e.length; ++r) t[r] = String.fromCharCode(e[r]); return t.join(""); } function zc(e) { if (typeof Uint8Array > "u") throw new Error("Unsupported"); return new Uint8Array(e); } function ln(e) { if (typeof ArrayBuffer > "u") throw new Error("Unsupported"); if (e instanceof ArrayBuffer) return ln(new Uint8Array(e)); for (var t = new Array(e.length), r = 0; r < e.length; ++r) t[r] = e[r]; return t; } var sr = Te ? function(e) { return Buffer.concat(e.map(function(t) { return Buffer.isBuffer(t) ? t : ut(t); })); } : function(e) { if (typeof Uint8Array < "u") { var t = 0, r = 0; for (t = 0; t < e.length; ++t) r += e[t].length; var a = new Uint8Array(r), n = 0; for (t = 0, r = 0; t < e.length; r += n, ++t) if (n = e[t].length, e[t] instanceof Uint8Array) a.set(e[t], r); else { if (typeof e[t] == "string") throw "wtf"; a.set(new Uint8Array(e[t]), r); } return a; } return [].concat.apply([], e.map(function(i) { return Array.isArray(i) ? i : [].slice.call(i); })); }; function jc(e) { for (var t = [], r = 0, a = e.length + 250, n = Et(e.length + 255), i = 0; i < e.length; ++i) { var s = e.charCodeAt(i); if (s < 128) n[r++] = s; else if (s < 2048) n[r++] = 192 | s >> 6 & 31, n[r++] = 128 | s & 63; else if (s >= 55296 && s < 57344) { s = (s & 1023) + 64; var f = e.charCodeAt(++i) & 1023; n[r++] = 240 | s >> 8 & 7, n[r++] = 128 | s >> 2 & 63, n[r++] = 128 | f >> 6 & 15 | (s & 3) << 4, n[r++] = 128 | f & 63; } else n[r++] = 224 | s >> 12 & 15, n[r++] = 128 | s >> 6 & 63, n[r++] = 128 | s & 63; r > a && (t.push(n.slice(0, r)), r = 0, n = Et(65535), a = 65530); } return t.push(n.slice(0, r)), sr(t); } var Tr = /\u0000/g, ma = /[\u0001-\u0006]/g; function Qt(e) { for (var t = "", r = e.length - 1; r >= 0; ) t += e.charAt(r--); return t; } function jr(e, t) { var r = "" + e; return r.length >= t ? r : ze("0", t - r.length) + r; } function un(e, t) { var r = "" + e; return r.length >= t ? r : ze(" ", t - r.length) + r; } function c0(e, t) { var r = "" + e; return r.length >= t ? r : r + ze(" ", t - r.length); } function $c(e, t) { var r = "" + Math.round(e); return r.length >= t ? r : ze("0", t - r.length) + r; } function Kc(e, t) { var r = "" + e; return r.length >= t ? r : ze("0", t - r.length) + r; } var ri = /* @__PURE__ */ Math.pow(2, 32); function Kt(e, t) { if (e > ri || e < -ri) return $c(e, t); var r = Math.round(e); return Kc(r, t); } function o0(e, t) { return t = t || 0, e.length >= 7 + t && (e.charCodeAt(t) | 32) === 103 && (e.charCodeAt(t + 1) | 32) === 101 && (e.charCodeAt(t + 2) | 32) === 110 && (e.charCodeAt(t + 3) | 32) === 101 && (e.charCodeAt(t + 4) | 32) === 114 && (e.charCodeAt(t + 5) | 32) === 97 && (e.charCodeAt(t + 6) | 32) === 108; } var ti = [ ["Sun", "Sunday"], ["Mon", "Monday"], ["Tue", "Tuesday"], ["Wed", "Wednesday"], ["Thu", "Thursday"], ["Fri", "Friday"], ["Sat", "Saturday"] ], R0 = [ ["J", "Jan", "January"], ["F", "Feb", "February"], ["M", "Mar", "March"], ["A", "Apr", "April"], ["M", "May", "May"], ["J", "Jun", "June"], ["J", "Jul", "July"], ["A", "Aug", "August"], ["S", "Sep", "September"], ["O", "Oct", "October"], ["N", "Nov", "November"], ["D", "Dec", "December"] ]; function Yc(e) { return e || (e = {}), e[0] = "General", e[1] = "0", e[2] = "0.00", e[3] = "#,##0", e[4] = "#,##0.00", e[9] = "0%", e[10] = "0.00%", e[11] = "0.00E+00", e[12] = "# ?/?", e[13] = "# ??/??", e[14] = "m/d/yy", e[15] = "d-mmm-yy", e[16] = "d-mmm", e[17] = "mmm-yy", e[18] = "h:mm AM/PM", e[19] = "h:mm:ss AM/PM", e[20] = "h:mm", e[21] = "h:mm:ss", e[22] = "m/d/yy h:mm", e[37] = "#,##0 ;(#,##0)", e[38] = "#,##0 ;[Red](#,##0)", e[39] = "#,##0.00;(#,##0.00)", e[40] = "#,##0.00;[Red](#,##0.00)", e[45] = "mm:ss", e[46] = "[h]:mm:ss", e[47] = "mmss.0", e[48] = "##0.0E+0", e[49] = "@", e[56] = '"上午/下午 "hh"時"mm"分"ss"秒 "', e; } var de = { 0: "General", 1: "0", 2: "0.00", 3: "#,##0", 4: "#,##0.00", 9: "0%", 10: "0.00%", 11: "0.00E+00", 12: "# ?/?", 13: "# ??/??", 14: "m/d/yy", 15: "d-mmm-yy", 16: "d-mmm", 17: "mmm-yy", 18: "h:mm AM/PM", 19: "h:mm:ss AM/PM", 20: "h:mm", 21: "h:mm:ss", 22: "m/d/yy h:mm", 37: "#,##0 ;(#,##0)", 38: "#,##0 ;[Red](#,##0)", 39: "#,##0.00;(#,##0.00)", 40: "#,##0.00;[Red](#,##0.00)", 45: "mm:ss", 46: "[h]:mm:ss", 47: "mmss.0", 48: "##0.0E+0", 49: "@", 56: '"上午/下午 "hh"時"mm"分"ss"秒 "' }, ai = { 5: 37, 6: 38, 7: 39, 8: 40, // 5 -> 37 ... 8 -> 40 23: 0, 24: 0, 25: 0, 26: 0, // 23 -> 0 ... 26 -> 0 27: 14, 28: 14, 29: 14, 30: 14, 31: 14, // 27 -> 14 ... 31 -> 14 50: 14, 51: 14, 52: 14, 53: 14, 54: 14, // 50 -> 14 ... 58 -> 14 55: 14, 56: 14, 57: 14, 58: 14, 59: 1, 60: 2, 61: 3, 62: 4, // 59 -> 1 ... 62 -> 4 67: 9, 68: 10, // 67 -> 9 ... 68 -> 10 69: 12, 70: 13, 71: 14, // 69 -> 12 ... 71 -> 14 72: 14, 73: 15, 74: 16, 75: 17, // 72 -> 14 ... 75 -> 17 76: 20, 77: 21, 78: 22, // 76 -> 20 ... 78 -> 22 79: 45, 80: 46, 81: 47, // 79 -> 45 ... 81 -> 47 82: 0 // 82 -> 0 ... 65536 -> 0 (omitted) }, Jc = { // 5 -- Currency, 0 decimal, black negative 5: '"$"#,##0_);\\("$"#,##0\\)', 63: '"$"#,##0_);\\("$"#,##0\\)', // 6 -- Currency, 0 decimal, red negative 6: '"$"#,##0_);[Red]\\("$"#,##0\\)', 64: '"$"#,##0_);[Red]\\("$"#,##0\\)', // 7 -- Currency, 2 decimal, black negative 7: '"$"#,##0.00_);\\("$"#,##0.00\\)', 65: '"$"#,##0.00_);\\("$"#,##0.00\\)', // 8 -- Currency, 2 decimal, red negative 8: '"$"#,##0.00_);[Red]\\("$"#,##0.00\\)', 66: '"$"#,##0.00_);[Red]\\("$"#,##0.00\\)', // 41 -- Accounting, 0 decimal, No Symbol 41: '_(* #,##0_);_(* \\(#,##0\\);_(* "-"_);_(@_)', // 42 -- Accounting, 0 decimal, $ Symbol 42: '_("$"* #,##0_);_("$"* \\(#,##0\\);_("$"* "-"_);_(@_)', // 43 -- Accounting, 2 decimal, No Symbol 43: '_(* #,##0.00_);_(* \\(#,##0.00\\);_(* "-"??_);_(@_)', // 44 -- Accounting, 2 decimal, $ Symbol 44: '_("$"* #,##0.00_);_("$"* \\(#,##0.00\\);_("$"* "-"??_);_(@_)' }; function l0(e, t, r) { for (var a = e < 0 ? -1 : 1, n = e * a, i = 0, s = 1, f = 0, c = 1, o = 0, l = 0, u = Math.floor(n); o < t && (u = Math.floor(n), f = u * s + i, l = u * o + c, !(n - u < 5e-8)); ) n = 1 / (n - u), i = s, s = f, c = o, o = l; if (l > t && (o > t ? (l = c, f = i) : (l = o, f = s)), !r) return [0, a * f, l]; var h = Math.floor(a * f / l); return [h, a * f - h * l, l]; } function _t(e, t, r) { if (e > 2958465 || e < 0) return null; var a = e | 0, n = Math.floor(86400 * (e - a)), i = 0, s = [], f = { D: a, T: n, u: 86400 * (e - a) - n, y: 0, m: 0, d: 0, H: 0, M: 0, S: 0, q: 0 }; if (Math.abs(f.u) < 1e-6 && (f.u = 0), t && t.date1904 && (a += 1462), f.u > 0.9999 && (f.u = 0, ++n == 86400 && (f.T = n = 0, ++a, ++f.D)), a === 60) s = r ? [1317, 10, 29] : [1900, 2, 29], i = 3; else if (a === 0) s = r ? [1317, 8, 29] : [1900, 1, 0], i = 6; else { a > 60 && --a; var c = new Date(1900, 0, 1); c.setDate(c.getDate() + a - 1), s = [c.getFullYear(), c.getMonth() + 1, c.getDate()], i = c.getDay(), a < 60 && (i = (i + 6) % 7), r && (i = to(c, s)); } return f.y = s[0], f.m = s[1], f.d = s[2], f.S = n % 60, n = Math.floor(n / 60), f.M = n % 60, n = Math.floor(n / 60), f.H = n, f.q = i, f; } var us = /* @__PURE__ */ new Date(1899, 11, 31, 0, 0, 0), qc = /* @__PURE__ */ us.getTime(), Zc = /* @__PURE__ */ new Date(1900, 2, 1, 0, 0, 0); function hs(e, t) { var r = /* @__PURE__ */ e.getTime(); return t ? r -= 1461 * 24 * 60 * 60 * 1e3 : e >= Zc && (r += 24 * 60 * 60 * 1e3), (r - (qc + (/* @__PURE__ */ e.getTimezoneOffset() - /* @__PURE__ */ us.getTimezoneOffset()) * 6e4)) / (24 * 60 * 60 * 1e3); } function hn(e) { return e.indexOf(".") == -1 ? e : e.replace(/(?:\.0*|(\.\d*[1-9])0+)$/, "$1"); } function Qc(e) { return e.indexOf("E") == -1 ? e : e.replace(/(?:\.0*|(\.\d*[1-9])0+)[Ee]/, "$1E").replace(/(E[+-])(\d)$/, "$10$2"); } function eo(e) { var t = e < 0 ? 12 : 11, r = hn(e.toFixed(12)); return r.length <= t || (r = e.toPrecision(10), r.length <= t) ? r : e.toExponential(5); } function ro(e) { var t = hn(e.toFixed(11)); return t.length > (e < 0 ? 12 : 11) || t === "0" || t === "-0" ? e.toPrecision(6) : t; } function Ca(e) { var t = Math.floor(Math.log(Math.abs(e)) * Math.LOG10E), r; return t >= -4 && t <= -1 ? r = e.toPrecision(10 + t) : Math.abs(t) <= 9 ? r = eo(e) : t === 10 ? r = e.toFixed(10).substr(0, 12) : r = ro(e), hn(Qc(r.toUpperCase())); } function Pt(e, t) { switch (typeof e) { case "string": return e; case "boolean": return e ? "TRUE" : "FALSE"; case "number": return (e | 0) === e ? e.toString(10) : Ca(e); case "undefined": return ""; case "object": if (e == null) return ""; if (e instanceof Date) return Nr(14, hs(e, t && t.date1904), t); } throw new Error("unsupported value in General format: " + e); } function to(e, t) { t[0] -= 581; var r = e.getDay(); return e < 60 && (r = (r + 6) % 7), r; } function ao(e, t, r, a) { var n = "", i = 0, s = 0, f = r.y, c, o = 0; switch (e) { case 98: f = r.y + 543; case 121: switch (t.length) { case 1: case 2: c = f % 100, o = 2; break; default: c = f % 1e4, o = 4; break; } break; case 109: switch (t.length) { case 1: case 2: c = r.m, o = t.length; break; case 3: return R0[r.m - 1][1]; case 5: return R0[r.m - 1][0]; default: return R0[r.m - 1][2]; } break; case 100: switch (t.length) { case 1: case 2: c = r.d, o = t.length; break; case 3: return ti[r.q][0]; default: return ti[r.q][1]; } break; case 104: switch (t.length) { case 1: case 2: c = 1 + (r.H + 11) % 12, o = t.length; break; default: throw "bad hour format: " + t; } break; case 72: switch (t.length) { case 1: case 2: c = r.H, o = t.length; break; default: throw "bad hour format: " + t; } break; case 77: switch (t.length) { case 1: case 2: c = r.M, o = t.length; break; default: throw "bad minute format: " + t; } break; case 115: if (t != "s" && t != "ss" && t != ".0" && t != ".00" && t != ".000") throw "bad second format: " + t; return r.u === 0 && (t == "s" || t == "ss") ? jr(r.S, t.length) : (a >= 2 ? s = a === 3 ? 1e3 : 100 : s = a === 1 ? 10 : 1, i = Math.round(s * (r.S + r.u)), i >= 60 * s && (i = 0), t === "s" ? i === 0 ? "0" : "" + i / s : (n = jr(i, 2 + a), t === "ss" ? n.substr(0, 2) : "." + n.substr(2, t.length - 1))); case 90: switch (t) { case "[h]": case "[hh]": c = r.D * 24 + r.H; break; case "[m]": case "[mm]": c = (r.D * 24 + r.H) * 60 + r.M; break; case "[s]": case "[ss]": c = ((r.D * 24 + r.H) * 60 + r.M) * 60 + Math.round(r.S + r.u); break; default: throw "bad abstime format: " + t; } o = t.length === 3 ? 1 : 2; break; case 101: c = f, o = 1; break; } var l = o > 0 ? jr(c, o) : ""; return l; } function wt(e) { var t = 3; if (e.length <= t) return e; for (var r = e.length % t, a = e.substr(0, r); r != e.length; r += t) a += (a.length > 0 ? "," : "") + e.substr(r, t); return a; } var xs = /%/g; function no(e, t, r) { var a = t.replace(xs, ""), n = t.length - a.length; return ct(e, a, r * Math.pow(10, 2 * n)) + ze("%", n); } function io(e, t, r) { for (var a = t.length - 1; t.charCodeAt(a - 1) === 44; ) --a; return ct(e, t.substr(0, a), r / Math.pow(10, 3 * (t.length - a))); } function ds(e, t) { var r, a = e.indexOf("E") - e.indexOf(".") - 1; if (e.match(/^#+0.0E\+0$/)) { if (t == 0) return "0.0E+0"; if (t < 0) return "-" + ds(e, -t); var n = e.indexOf("."); n === -1 && (n = e.indexOf("E")); var i = Math.floor(Math.log(t) * Math.LOG10E) % n; if (i < 0 && (i += n), r = (t / Math.pow(10, i)).toPrecision(a + 1 + (n + i) % n), r.indexOf("e") === -1) { var s = Math.floor(Math.log(t) * Math.LOG10E); for (r.indexOf(".") === -1 ? r = r.charAt(0) + "." + r.substr(1) + "E+" + (s - r.length + i) : r += "E+" + (s - i); r.substr(0, 2) === "0."; ) r = r.charAt(0) + r.substr(2, n) + "." + r.substr(2 + n), r = r.replace(/^0+([1-9])/, "$1").replace(/^0+\./, "0."); r = r.replace(/\+-/, "-"); } r = r.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/, function(f, c, o, l) { return c + o + l.substr(0, (n + i) % n) + "." + l.substr(i) + "E"; }); } else r = t.toExponential(a); return e.match(/E\+00$/) && r.match(/e[+-]\d$/) && (r = r.substr(0, r.length - 1) + "0" + r.charAt(r.length - 1)), e.match(/E\-/) && r.match(/e\+/) && (r = r.replace(/e\+/, "e")), r.replace("e", "E"); } var vs = /# (\?+)( ?)\/( ?)(\d+)/; function so(e, t, r) { var a = parseInt(e[4], 10), n = Math.round(t * a), i = Math.floor(n / a), s = n - i * a, f = a; return r + (i === 0 ? "" : "" + i) + " " + (s === 0 ? ze(" ", e[1].length + 1 + e[4].length) : un(s, e[1].length) + e[2] + "/" + e[3] + jr(f, e[4].length)); } function fo(e, t, r) { return r + (t === 0 ? "" : "" + t) + ze(" ", e[1].length + 2 + e[4].length); } var ps = /^#*0*\.([0#]+)/, ms = /\).*[0#]/, gs = /\(###\) ###\\?-####/; function Er(e) { for (var t = "", r, a = 0; a != e.length; ++a) switch (r = e.charCodeAt(a)) { case 35: break; case 63: t += " "; break; case 48: t += "0"; break; default: t += String.fromCharCode(r); } return t; } function ni(e, t) { var r = Math.pow(10, t); return "" + Math.round(e * r) / r; } function ii(e, t) { var r = e - Math.floor(e), a = Math.pow(10, t); return t < ("" + Math.round(r * a)).length ? 0 : Math.round(r * a); } function co(e, t) { return t < ("" + Math.round((e - Math.floor(e)) * Math.pow(10, t))).length ? 1 : 0; } function oo(e) { return e < 2147483647 && e > -2147483648 ? "" + (e >= 0 ? e | 0 : e - 1 | 0) : "" + Math.floor(e); } function Br(e, t, r) { if (e.charCodeAt(0) === 40 && !t.match(ms)) { var a = t.replace(/\( */, "").replace(/ \)/, "").replace(/\)/, ""); return r >= 0 ? Br("n", a, r) : "(" + Br("n", a, -r) + ")"; } if (t.charCodeAt(t.length - 1) === 44) return io(e, t, r); if (t.indexOf("%") !== -1) return no(e, t, r); if (t.indexOf("E") !== -1) return ds(t, r); if (t.charCodeAt(0) === 36) return "$" + Br(e, t.substr(t.charAt(1) == " " ? 2 : 1), r); var n, i, s, f, c = Math.abs(r), o = r < 0 ? "-" : ""; if (t.match(/^00+$/)) return o + Kt(c, t.length); if (t.match(/^[#?]+$/)) return n = Kt(r, 0), n === "0" && (n = ""), n.length > t.length ? n : Er(t.substr(0, t.length - n.length)) + n; if (i = t.match(vs)) return so(i, c, o); if (t.match(/^#+0+$/)) return o + Kt(c, t.length - t.indexOf("0")); if (i = t.match(ps)) return n = ni(r, i[1].length).replace(/^([^\.]+)$/, "$1." + Er(i[1])).replace(/\.$/, "." + Er(i[1])).replace(/\.(\d*)$/, function(v, x) { return "." + x + ze("0", Er( /*::(*/ i[1] ).length - x.length); }), t.indexOf("0.") !== -1 ? n : n.replace(/^0\./, "."); if (t = t.replace(/^#+([0.])/, "$1"), i = t.match(/^(0*)\.(#*)$/)) return o + ni(c, i[2].length).replace(/\.(\d*[1-9])0*$/, ".$1").replace(/^(-?\d*)$/, "$1.").replace(/^0\./, i[1].length ? "0." : "."); if (i = t.match(/^#{1,3},##0(\.?)$/)) return o + wt(Kt(c, 0)); if (i = t.match(/^#,##0\.([#0]*0)$/)) return r < 0 ? "-" + Br(e, t, -r) : wt("" + (Math.floor(r) + co(r, i[1].length))) + "." + jr(ii(r, i[1].length), i[1].length); if (i = t.match(/^#,#*,#0/)) return Br(e, t.replace(/^#,#*,/, ""), r); if (i = t.match(/^([0#]+)(\\?-([0#]+))+$/)) return n = Qt(Br(e, t.replace(/[\\-]/g, ""), r)), s = 0, Qt(Qt(t.replace(/\\/g, "")).replace(/[0#]/g, function(v) { return s < n.length ? n.charAt(s++) : v === "0" ? "0" : ""; })); if (t.match(gs)) return n = Br(e, "##########", r), "(" + n.substr(0, 3) + ") " + n.substr(3, 3) + "-" + n.substr(6); var l = ""; if (i = t.match(/^([#0?]+)( ?)\/( ?)([#0?]+)/)) return s = Math.min( /*::String(*/ i[4].length, 7 ), f = l0(c, Math.pow(10, s) - 1, !1), n = "" + o, l = ct( "n", /*::String(*/ i[1], f[1] ), l.charAt(l.length - 1) == " " && (l = l.substr(0, l.length - 1) + "0"), n += l + /*::String(*/ i[2] + "/" + /*::String(*/ i[3], l = c0(f[2], s), l.length < i[4].length && (l = Er(i[4].substr(i[4].length - l.length)) + l), n += l, n; if (i = t.match(/^# ([#0?]+)( ?)\/( ?)([#0?]+)/)) return s = Math.min(Math.max(i[1].length, i[4].length), 7), f = l0(c, Math.pow(10, s) - 1, !0), o + (f[0] || (f[1] ? "" : "0")) + " " + (f[1] ? un(f[1], s) + i[2] + "/" + i[3] + c0(f[2], s) : ze(" ", 2 * s + 1 + i[2].length + i[3].length)); if (i = t.match(/^[#0?]+$/)) return n = Kt(r, 0), t.length <= n.length ? n : Er(t.substr(0, t.length - n.length)) + n; if (i = t.match(/^([#0?]+)\.([#0]+)$/)) { n = "" + r.toFixed(Math.min(i[2].length, 10)).replace(/([^0])0+$/, "$1"), s = n.indexOf("."); var u = t.indexOf(".") - s, h = t.length - n.length - u; return Er(t.substr(0, u) + n + t.substr(t.length - h)); } if (i = t.match(/^00,000\.([#0]*0)$/)) return s = ii(r, i[1].length), r < 0 ? "-" + Br(e, t, -r) : wt(oo(r)).replace(/^\d,\d{3}$/, "0$&").replace(/^\d*$/, function(v) { return "00," + (v.length < 3 ? jr(0, 3 - v.length) : "") + v; }) + "." + jr(s, i[1].length); switch (t) { case "###,##0.00": return Br(e, "#,##0.00", r); case "###,###": case "##,###": case "#,###": var d = wt(Kt(c, 0)); return d !== "0" ? o + d : ""; case "###,###.00": return Br(e, "###,##0.00", r).replace(/^0\./, "."); case "#,###.00": return Br(e, "#,##0.00", r).replace(/^0\./, "."); } throw new Error("unsupported format |" + t + "|"); } function lo(e, t, r) { for (var a = t.length - 1; t.charCodeAt(a - 1) === 44; ) --a; return ct(e, t.substr(0, a), r / Math.pow(10, 3 * (t.length - a))); } function uo(e, t, r) { var a = t.replace(xs, ""), n = t.length - a.length; return ct(e, a, r * Math.pow(10, 2 * n)) + ze("%", n); } function _s(e, t) { var r, a = e.indexOf("E") - e.indexOf(".") - 1; if (e.match(/^#+0.0E\+0$/)) { if (t == 0) return "0.0E+0"; if (t < 0) return "-" + _s(e, -t); var n = e.indexOf("."); n === -1 && (n = e.indexOf("E")); var i = Math.floor(Math.log(t) * Math.LOG10E) % n; if (i < 0 && (i += n), r = (t / Math.pow(10, i)).toPrecision(a + 1 + (n + i) % n), !r.match(/[Ee]/)) { var s = Math.floor(Math.log(t) * Math.LOG10E); r.indexOf(".") === -1 ? r = r.charAt(0) + "." + r.substr(1) + "E+" + (s - r.length + i) : r += "E+" + (s - i), r = r.replace(/\+-/, "-"); } r = r.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/, function(f, c, o, l) { return c + o + l.substr(0, (n + i) % n) + "." + l.substr(i) + "E"; }); } else r = t.toExponential(a); return e.match(/E\+00$/) && r.match(/e[+-]\d$/) && (r = r.substr(0, r.length - 1) + "0" + r.charAt(r.length - 1)), e.match(/E\-/) && r.match(/e\+/) && (r = r.replace(/e\+/, "e")), r.replace("e", "E"); } function Zr(e, t, r) { if (e.charCodeAt(0) === 40 && !t.match(ms)) { var a = t.replace(/\( */, "").replace(/ \)/, "").replace(/\)/, ""); return r >= 0 ? Zr("n", a, r) : "(" + Zr("n", a, -r) + ")"; } if (t.charCodeAt(t.length - 1) === 44) return lo(e, t, r); if (t.indexOf("%") !== -1) return uo(e, t, r); if (t.indexOf("E") !== -1) return _s(t, r); if (t.charCodeAt(0) === 36) return "$" + Zr(e, t.substr(t.charAt(1) == " " ? 2 : 1), r); var n, i, s, f, c = Math.abs(r), o = r < 0 ? "-" : ""; if (t.match(/^00+$/)) return o + jr(c, t.length); if (t.match(/^[#?]+$/)) return n = "" + r, r === 0 && (n = ""), n.length > t.length ? n : Er(t.substr(0, t.length - n.length)) + n; if (i = t.match(vs)) return fo(i, c, o); if (t.match(/^#+0+$/)) return o + jr(c, t.length - t.indexOf("0")); if (i = t.match(ps)) return n = ("" + r).replace(/^([^\.]+)$/, "$1." + Er(i[1])).replace(/\.$/, "." + Er(i[1])), n = n.replace(/\.(\d*)$/, function(v, x) { return "." + x + ze("0", Er(i[1]).length - x.length); }), t.indexOf("0.") !== -1 ? n : n.replace(/^0\./, "."); if (t = t.replace(/^#+([0.])/, "$1"), i = t.match(/^(0*)\.(#*)$/)) return o + ("" + c).replace(/\.(\d*[1-9])0*$/, ".$1").replace(/^(-?\d*)$/, "$1.").replace(/^0\./, i[1].length ? "0." : "."); if (i = t.match(/^#{1,3},##0(\.?)$/)) return o + wt("" + c); if (i = t.match(/^#,##0\.([#0]*0)$/)) return r < 0 ? "-" + Zr(e, t, -r) : wt("" + r) + "." + ze("0", i[1].length); if (i = t.match(/^#,#*,#0/)) return Zr(e, t.replace(/^#,#*,/, ""), r); if (i = t.match(/^([0#]+)(\\?-([0#]+))+$/)) return n = Qt(Zr(e, t.replace(/[\\-]/g, ""), r)), s = 0, Qt(Qt(t.replace(/\\/g, "")).replace(/[0#]/g, function(v) { return s < n.length ? n.charAt(s++) : v === "0" ? "0" : ""; })); if (t.match(gs)) return n = Zr(e, "##########", r), "(" + n.substr(0, 3) + ") " + n.substr(3, 3) + "-" + n.substr(6); var l = ""; if (i = t.match(/^([#0?]+)( ?)\/( ?)([#0?]+)/)) return s = Math.min( /*::String(*/ i[4].length, 7 ), f = l0(c, Math.pow(10, s) - 1, !1), n = "" + o, l = ct( "n", /*::String(*/ i[1], f[1] ), l.charAt(l.length - 1) == " " && (l = l.substr(0, l.length - 1) + "0"), n += l + /*::String(*/ i[2] + "/" + /*::String(*/ i[3], l = c0(f[2], s), l.length < i[4].length && (l = Er(i[4].substr(i[4].length - l.length)) + l), n += l, n; if (i = t.match(/^# ([#0?]+)( ?)\/( ?)([#0?]+)/)) return s = Math.min(Math.max(i[1].length, i[4].length), 7), f = l0(c, Math.pow(10, s) - 1, !0), o + (f[0] || (f[1] ? "" : "0")) + " " + (f[1] ? un(f[1], s) + i[2] + "/" + i[3] + c0(f[2], s) : ze(" ", 2 * s + 1 + i[2].length + i[3].length)); if (i = t.match(/^[#0?]+$/)) return n = "" + r, t.length <= n.length ? n : Er(t.substr(0, t.length - n.length)) + n; if (i = t.match(/^([#0]+)\.([#0]+)$/)) { n = "" + r.toFixed(Math.min(i[2].length, 10)).replace(/([^0])0+$/, "$1"), s = n.indexOf("."); var u = t.indexOf(".") - s, h = t.length - n.length - u; return Er(t.substr(0, u) + n + t.substr(t.length - h)); } if (i = t.match(/^00,000\.([#0]*0)$/)) return r < 0 ? "-" + Zr(e, t, -r) : wt("" + r).replace(/^\d,\d{3}$/, "0$&").replace(/^\d*$/, function(v) { return "00," + (v.length < 3 ? jr(0, 3 - v.length) : "") + v; }) + "." + jr(0, i[1].length); switch (t) { case "###,###": case "##,###": case "#,###": var d = wt("" + c); return d !== "0" ? o + d : ""; default: if (t.match(/\.[0#?]*$/)) return Zr(e, t.slice(0, t.lastIndexOf(".")), r) + Er(t.slice(t.lastIndexOf("."))); } throw new Error("unsupported format |" + t + "|"); } function ct(e, t, r) { return (r | 0) === r ? Zr(e, t, r) : Br(e, t, r); } function ho(e) { for (var t = [], r = !1, a = 0, n = 0; a < e.length; ++a) switch ( /*cc=*/ e.charCodeAt(a) ) { case 34: r = !r; break; case 95: case 42: case 92: ++a; break; case 59: t[t.length] = e.substr(n, a - n), n = a + 1; } if (t[t.length] = e.substr(n), r === !0) throw new Error("Format |" + e + "| unterminated string "); return t; } var ws = /\[[HhMmSs\u0E0A\u0E19\u0E17]*\]/; function Ht(e) { for (var t = 0, r = "", a = ""; t < e.length; ) switch (r = e.charAt(t)) { case "G": o0(e, t) && (t += 6), t++; break; case '"': for ( ; /*cc=*/ e.charCodeAt(++t) !== 34 && t < e.length; ) ; ++t; break; case "\\": t += 2; break; case "_": t += 2; break; case "@": ++t; break; case "B": case "b": if (e.charAt(t + 1) === "1" || e.charAt(t + 1) === "2") return !0; case "M": case "D": case "Y": case "H": case "S": case "E": case "m": case "d": case "y": case "h": case "s": case "e": case "g": return !0; case "A": case "a": case "上": if (e.substr(t, 3).toUpperCase() === "A/P" || e.substr(t, 5).toUpperCase() === "AM/PM" || e.substr(t, 5).toUpperCase() === "上午/下午") return !0; ++t; break; case "[": for (a = r; e.charAt(t++) !== "]" && t < e.length; ) a += e.charAt(t); if (a.match(ws)) return !0; break; case ".": case "0": case "#": for (; t < e.length && ("0#?.,E+-%".indexOf(r = e.charAt(++t)) > -1 || r == "\\" && e.charAt(t + 1) == "-" && "0#".indexOf(e.charAt(t + 2)) > -1); ) ; break; case "?": for (; e.charAt(++t) === r; ) ; break; case "*": ++t, (e.charAt(t) == " " || e.charAt(t) == "*") && ++t; break; case "(": case ")": ++t; break; case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": for (; t < e.length && "0123456789".indexOf(e.charAt(++t)) > -1; ) ; break; case " ": ++t; break; default: ++t; break; } return !1; } function xo(e, t, r, a) { for (var n = [], i = "", s = 0, f = "", c = "t", o, l, u, h = "H"; s < e.length; ) switch (f = e.charAt(s)) { case "G": if (!o0(e, s)) throw new Error("unrecognized character " + f + " in " + e); n[n.length] = { t: "G", v: "General" }, s += 7; break; case '"': for (i = ""; (u = e.charCodeAt(++s)) !== 34 && s < e.length; ) i += String.fromCharCode(u); n[n.length] = { t: "t", v: i }, ++s; break; case "\\": var d = e.charAt(++s), v = d === "(" || d === ")" ? d : "t"; n[n.length] = { t: v, v: d }, ++s; break; case "_": n[n.length] = { t: "t", v: " " }, s += 2; break; case "@": n[n.length] = { t: "T", v: t }, ++s; break; case "B": case "b": if (e.charAt(s + 1) === "1" || e.charAt(s + 1) === "2") { if (o == null && (o = _t(t, r, e.charAt(s + 1) === "2"), o == null)) return ""; n[n.length] = { t: "X", v: e.substr(s, 2) }, c = f, s += 2; break; } case "M": case "D": case "Y": case "H": case "S": case "E": f = f.toLowerCase(); case "m": case "d": case "y": case "h": case "s": case "e": case "g": if (t < 0 || o == null && (o = _t(t, r), o == null)) return ""; for (i = f; ++s < e.length && e.charAt(s).toLowerCase() === f; ) i += f; f === "m" && c.toLowerCase() === "h" && (f = "M"), f === "h" && (f = h), n[n.length] = { t: f, v: i }, c = f; break; case "A": case "a": case "上": var x = { t: f, v: f }; if (o == null && (o = _t(t, r)), e.substr(s, 3).toUpperCase() === "A/P" ? (o != null && (x.v = o.H >= 12 ? "P" : "A"), x.t = "T", h = "h", s += 3) : e.substr(s, 5).toUpperCase() === "AM/PM" ? (o != null && (x.v = o.H >= 12 ? "PM" : "AM"), x.t = "T", s += 5, h = "h") : e.substr(s, 5).toUpperCase() === "上午/下午" ? (o != null && (x.v = o.H >= 12 ? "下午" : "上午"), x.t = "T", s += 5, h = "h") : (x.t = "t", ++s), o == null && x.t === "T") return ""; n[n.length] = x, c = f; break; case "[": for (i = f; e.charAt(s++) !== "]" && s < e.length; ) i += e.charAt(s); if (i.slice(-1) !== "]") throw 'unterminated "[" block: |' + i + "|"; if (i.match(ws)) { if (o == null && (o = _t(t, r), o == null)) return ""; n[n.length] = { t: "Z", v: i.toLowerCase() }, c = i.charAt(1); } else i.indexOf("$") > -1 && (i = (i.match(/\$([^-\[\]]*)/) || [])[1] || "$", Ht(e) || (n[n.length] = { t: "t", v: i })); break; case ".": if (o != null) { for (i = f; ++s < e.length && (f = e.charAt(s)) === "0"; ) i += f; n[n.length] = { t: "s", v: i }; break; } case "0": case "#": for (i = f; ++s < e.length && "0#?.,E+-%".indexOf(f = e.charAt(s)) > -1; ) i += f; n[n.length] = { t: "n", v: i }; break; case "?": for (i = f; e.charAt(++s) === f; ) i += f; n[n.length] = { t: f, v: i }, c = f; break; case "*": ++s, (e.charAt(s) == " " || e.charAt(s) == "*") && ++s; break; case "(": case ")": n[n.length] = { t: a === 1 ? "t" : f, v: f }, ++s; break; case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": for (i = f; s < e.length && "0123456789".indexOf(e.charAt(++s)) > -1; ) i += e.charAt(s); n[n.length] = { t: "D", v: i }; break; case " ": n[n.length] = { t: f, v: f }, ++s; break; case "$": n[n.length] = { t: "t", v: "$" }, ++s; break; default: if (",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP".indexOf(f) === -1) throw new Error("unrecognized character " + f + " in " + e); n[n.length] = { t: "t", v: f }, ++s; break; } var p = 0, w = 0, y; for (s = n.length - 1, c = "t"; s >= 0; --s) switch (n[s].t) { case "h": case "H": n[s].t = h, c = "h", p < 1 && (p = 1); break; case "s": (y = n[s].v.match(/\.0+$/)) && (w = Math.max(w, y[0].length - 1)), p < 3 && (p = 3); case "d": case "y": case "M": case "e": c = n[s].t; break; case "m": c === "s" && (n[s].t = "M", p < 2 && (p = 2)); break; case "X": break; case "Z": p < 1 && n[s].v.match(/[Hh]/) && (p = 1), p < 2 && n[s].v.match(/[Mm]/) && (p = 2), p < 3 && n[s].v.match(/[Ss]/) && (p = 3); } switch (p) { case 0: break; case 1: o.u >= 0.5 && (o.u = 0, ++o.S), o.S >= 60 && (o.S = 0, ++o.M), o.M >= 60 && (o.M = 0, ++o.H); break; case 2: o.u >= 0.5 && (o.u = 0, ++o.S), o.S >= 60 && (o.S = 0, ++o.M); break; } var g = "", C; for (s = 0; s < n.length; ++s) switch (n[s].t) { case "t": case "T": case " ": case "D": break; case "X": n[s].v = "", n[s].t = ";"; break; case "d": case "m": case "y": case "h": case "H": case "M": case "s": case "e": case "b": case "Z": n[s].v = ao(n[s].t.charCodeAt(0), n[s].v, o, w), n[s].t = "t"; break; case "n": case "?": for (C = s + 1; n[C] != null && ((f = n[C].t) === "?" || f === "D" || (f === " " || f === "t") && n[C + 1] != null && (n[C + 1].t === "?" || n[C + 1].t === "t" && n[C + 1].v === "/") || n[s].t === "(" && (f === " " || f === "n" || f === ")") || f === "t" && (n[C].v === "/" || n[C].v === " " && n[C + 1] != null && n[C + 1].t == "?")); ) n[s].v += n[C].v, n[C] = { v: "", t: ";" }, ++C; g += n[s].v, s = C - 1; break; case "G": n[s].t = "t", n[s].v = Pt(t, r); break; } var b = "", O, S; if (g.length > 0) { g.charCodeAt(0) == 40 ? (O = t < 0 && g.charCodeAt(0) === 45 ? -t : t, S = ct("n", g, O)) : (O = t < 0 && a > 1 ? -t : t, S = ct("n", g, O), O < 0 && n[0] && n[0].t == "t" && (S = S.substr(1), n[0].v = "-" + n[0].v)), C = S.length - 1; var B = n.length; for (s = 0; s < n.length; ++s) if (n[s] != null && n[s].t != "t" && n[s].v.indexOf(".") > -1) { B = s; break; } var R = n.length; if (B === n.length && S.indexOf("E") === -1) { for (s = n.length - 1; s >= 0; --s) n[s] == null || "n?".indexOf(n[s].t) === -1 || (C >= n[s].v.length - 1 ? (C -= n[s].v.length, n[s].v = S.substr(C + 1, n[s].v.length)) : C < 0 ? n[s].v = "" : (n[s].v = S.substr(0, C + 1), C = -1), n[s].t = "t", R = s); C >= 0 && R < n.length && (n[R].v = S.substr(0, C + 1) + n[R].v); } else if (B !== n.length && S.indexOf("E") === -1) { for (C = S.indexOf(".") - 1, s = B; s >= 0; --s) if (!(n[s] == null || "n?".indexOf(n[s].t) === -1)) { for (l = n[s].v.indexOf(".") > -1 && s === B ? n[s].v.indexOf(".") - 1 : n[s].v.length - 1, b = n[s].v.substr(l + 1); l >= 0; --l) C >= 0 && (n[s].v.charAt(l) === "0" || n[s].v.charAt(l) === "#") && (b = S.charAt(C--) + b); n[s].v = b, n[s].t = "t", R = s; } for (C >= 0 && R < n.length && (n[R].v = S.substr(0, C + 1) + n[R].v), C = S.indexOf(".") + 1, s = B; s < n.length; ++s) if (!(n[s] == null || "n?(".indexOf(n[s].t) === -1 && s !== B)) { for (l = n[s].v.indexOf(".") > -1 && s === B ? n[s].v.indexOf(".") + 1 : 0, b = n[s].v.substr(0, l); l < n[s].v.length; ++l) C < S.length && (b += S.charAt(C++)); n[s].v = b, n[s].t = "t", R = s; } } } for (s = 0; s < n.length; ++s) n[s] != null && "n?".indexOf(n[s].t) > -1 && (O = a > 1 && t < 0 && s > 0 && n[s - 1].v === "-" ? -t : t, n[s].v = ct(n[s].t, n[s].v, O), n[s].t = "t"); var X = ""; for (s = 0; s !== n.length; ++s) n[s] != null && (X += n[s].v); return X; } var si = /\[(=|>[=]?|<[>=]?)(-?\d+(?:\.\d*)?)\]/; function fi(e, t) { if (t == null) return !1; var r = parseFloat(t[2]); switch (t[1]) { case "=": if (e == r) return !0; break; case ">": if (e > r) return !0; break; case "<": if (e < r) return !0; break; case "<>": if (e != r) return !0; break; case ">=": if (e >= r) return !0; break; case "<=": if (e <= r) return !0; break; } return !1; } function vo(e, t) { var r = ho(e), a = r.length, n = r[a - 1].indexOf("@"); if (a < 4 && n > -1 && --a, r.length > 4) throw new Error("cannot find right format for |" + r.join("|") + "|"); if (typeof t != "number") return [4, r.length === 4 || n > -1 ? r[r.length - 1] : "@"]; switch (r.length) { case 1: r = n > -1 ? ["General", "General", "General", r[0]] : [r[0], r[0], r[0], "@"]; break; case 2: r = n > -1 ? [r[0], r[0], r[0], r[1]] : [r[0], r[1], r[0], "@"]; break; case 3: r = n > -1 ? [r[0], r[1], r[0], r[2]] : [r[0], r[1], r[2], "@"]; break; } var i = t > 0 ? r[0] : t < 0 ? r[1] : r[2]; if (r[0].indexOf("[") === -1 && r[1].indexOf("[") === -1) return [a, i]; if (r[0].match(/\[[=<>]/) != null || r[1].match(/\[[=<>]/) != null) { var s = r[0].match(si), f = r[1].match(si); return fi(t, s) ? [a, r[0]] : fi(t, f) ? [a, r[1]] : [a, r[s != null && f != null ? 2 : 1]]; } return [a, i]; } function Nr(e, t, r) { r == null && (r = {}); var a = ""; switch (typeof e) { case "string": e == "m/d/yy" && r.dateNF ? a = r.dateNF : a = e; break; case "number": e == 14 && r.dateNF ? a = r.dateNF : a = (r.table != null ? r.table : de)[e], a == null && (a = r.table && r.table[ai[e]] || de[ai[e]]), a == null && (a = Jc[e] || "General"); break; } if (o0(a, 0)) return Pt(t, r); t instanceof Date && (t = hs(t, r.date1904)); var n = vo(a, t); if (o0(n[1])) return Pt(t, r); if (t === !0) t = "TRUE"; else if (t === !1) t = "FALSE"; else if (t === "" || t == null) return ""; return xo(n[1], t, r, n[0]); } function rt(e, t) { if (typeof t != "number") { t = +t || -1; for (var r = 0; r < 392; ++r) { if (de[r] == null) { t < 0 && (t = r); continue; } if (de[r] == e) { t = r; break; } } t < 0 && (t = 391); } return de[t] = e, t; } function Wa(e) { for (var t = 0; t != 392; ++t) e[t] !== void 0 && rt(e[t], t); } function sa() { de = Yc(); } var Es = { format: Nr, load: rt, _table: de, load_table: Wa, parse_date_code: _t, is_date: Ht, get_table: function() { return Es._table = de; } }, po = { 5: '"$"#,##0_);\\("$"#,##0\\)', 6: '"$"#,##0_);[Red]\\("$"#,##0\\)', 7: '"$"#,##0.00_);\\("$"#,##0.00\\)', 8: '"$"#,##0.00_);[Red]\\("$"#,##0.00\\)', 23: "General", 24: "General", 25: "General", 26: "General", 27: "m/d/yy", 28: "m/d/yy", 29: "m/d/yy", 30: "m/d/yy", 31: "m/d/yy", 32: "h:mm:ss", 33: "h:mm:ss", 34: "h:mm:ss", 35: "h:mm:ss", 36: "m/d/yy", 41: '_(* #,##0_);_(* (#,##0);_(* "-"_);_(@_)', 42: '_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)', 43: '_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)', 44: '_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)', 50: "m/d/yy", 51: "m/d/yy", 52: "m/d/yy", 53: "m/d/yy", 54: "m/d/yy", 55: "m/d/yy", 56: "m/d/yy", 57: "m/d/yy", 58: "m/d/yy", 59: "0", 60: "0.00", 61: "#,##0", 62: "#,##0.00", 63: '"$"#,##0_);\\("$"#,##0\\)', 64: '"$"#,##0_);[Red]\\("$"#,##0\\)', 65: '"$"#,##0.00_);\\("$"#,##0.00\\)', 66: '"$"#,##0.00_);[Red]\\("$"#,##0.00\\)', 67: "0%", 68: "0.00%", 69: "# ?/?", 70: "# ??/??", 71: "m/d/yy", 72: "m/d/yy", 73: "d-mmm-yy", 74: "d-mmm", 75: "mmm-yy", 76: "h:mm", 77: "h:mm:ss", 78: "m/d/yy h:mm", 79: "mm:ss", 80: "[h]:mm:ss", 81: "mmss.0" }, ks = /[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g; function mo(e) { var t = typeof e == "number" ? de[e] : e; return t = t.replace(ks, "(\\d+)"), new RegExp("^" + t + "$"); } function go(e, t, r) { var a = -1, n = -1, i = -1, s = -1, f = -1, c = -1; (t.match(ks) || []).forEach(function(u, h) { var d = parseInt(r[h + 1], 10); switch (u.toLowerCase().charAt(0)) { case "y": a = d; break; case "d": i = d; break; case "h": s = d; break; case "s": c = d; break; case "m": s >= 0 ? f = d : n = d; break; } }), c >= 0 && f == -1 && n >= 0 && (f = n, n = -1); var o = ("" + (a >= 0 ? a : (/* @__PURE__ */ new Date()).getFullYear())).slice(-4) + "-" + ("00" + (n >= 1 ? n : 1)).slice(-2) + "-" + ("00" + (i >= 1 ? i : 1)).slice(-2); o.length == 7 && (o = "0" + o), o.length == 8 && (o = "20" + o); var l = ("00" + (s >= 0 ? s : 0)).slice(-2) + ":" + ("00" + (f >= 0 ? f : 0)).slice(-2) + ":" + ("00" + (c >= 0 ? c : 0)).slice(-2); return s == -1 && f == -1 && c == -1 ? o : a == -1 && n == -1 && i == -1 ? l : o + "T" + l; } var _o = /* @__PURE__ */ function() { var e = {}; e.version = "1.2.0"; function t() { for (var S = 0, B = new Array(256), R = 0; R != 256; ++R) S = R, S = S & 1 ? -306674912 ^ S >>> 1 : S >>> 1, S = S & 1 ? -306674912 ^ S >>> 1 : S >>> 1, S = S & 1 ? -306674912 ^ S >>> 1 : S >>> 1, S = S & 1 ? -306674912 ^ S >>> 1 : S >>> 1, S = S & 1 ? -306674912 ^ S >>> 1 : S >>> 1, S = S & 1 ? -306674912 ^ S >>> 1 : S >>> 1, S = S & 1 ? -306674912 ^ S >>> 1 : S >>> 1, S = S & 1 ? -306674912 ^ S >>> 1 : S >>> 1, B[R] = S; return typeof Int32Array < "u" ? new Int32Array(B) : B; } var r = t(); function a(S) { var B = 0, R = 0, X = 0, G = typeof Int32Array < "u" ? new Int32Array(4096) : new Array(4096); for (X = 0; X != 256; ++X) G[X] = S[X]; for (X = 0; X != 256; ++X) for (R = S[X], B = 256 + X; B < 4096; B += 256) R = G[B] = R >>> 8 ^ S[R & 255]; var L = []; for (X = 1; X != 16; ++X) L[X - 1] = typeof Int32Array < "u" ? G.subarray(X * 256, X * 256 + 256) : G.slice(X * 256, X * 256 + 256); return L; } var n = a(r), i = n[0], s = n[1], f = n[2], c = n[3], o = n[4], l = n[5], u = n[6], h = n[7], d = n[8], v = n[9], x = n[10], p = n[11], w = n[12], y = n[13], g = n[14]; function C(S, B) { for (var R = B ^ -1, X = 0, G = S.length; X < G; ) R = R >>> 8 ^ r[(R ^ S.charCodeAt(X++)) & 255]; return ~R; } function b(S, B) { for (var R = B ^ -1, X = S.length - 15, G = 0; G < X; ) R = g[S[G++] ^ R & 255] ^ y[S[G++] ^ R >> 8 & 255] ^ w[S[G++] ^ R >> 16 & 255] ^ p[S[G++] ^ R >>> 24] ^ x[S[G++]] ^ v[S[G++]] ^ d[S[G++]] ^ h[S[G++]] ^ u[S[G++]] ^ l[S[G++]] ^ o[S[G++]] ^ c[S[G++]] ^ f[S[G++]] ^ s[S[G++]] ^ i[S[G++]] ^ r[S[G++]]; for (X += 15; G < X; ) R = R >>> 8 ^ r[(R ^ S[G++]) & 255]; return ~R; } function O(S, B) { for (var R = B ^ -1, X = 0, G = S.length, L = 0, J = 0; X < G; ) L = S.charCodeAt(X++), L < 128 ? R = R >>> 8 ^ r[(R ^ L) & 255] : L < 2048 ? (R = R >>> 8 ^ r[(R ^ (192 | L >> 6 & 31)) & 255], R = R >>> 8 ^ r[(R ^ (128 | L & 63)) & 255]) : L >= 55296 && L < 57344 ? (L = (L & 1023) + 64, J = S.charCodeAt(X++) & 1023, R = R >>> 8 ^ r[(R ^ (240 | L >> 8 & 7)) & 255], R = R >>> 8 ^ r[(R ^ (128 | L >> 2 & 63)) & 255], R = R >>> 8 ^ r[(R ^ (128 | J >> 6 & 15 | (L & 3) << 4)) & 255], R = R >>> 8 ^ r[(R ^ (128 | J & 63)) & 255]) : (R = R >>> 8 ^ r[(R ^ (224 | L >> 12 & 15)) & 255], R = R >>> 8 ^ r[(R ^ (128 | L >> 6 & 63)) & 255], R = R >>> 8 ^ r[(R ^ (128 | L & 63)) & 255]); return ~R; } return e.table = r, e.bstr = C, e.buf = b, e.str = O, e; }(), xe = /* @__PURE__ */ function() { var t = {}; t.version = "1.2.1"; function r(m, k) { for (var _ = m.split("/"), E = k.split("/"), T = 0, F = 0, U = Math.min(_.length, E.length); T < U; ++T) { if (F = _[T].length - E[T].length) return F; if (_[T] != E[T]) return _[T] < E[T] ? -1 : 1; } return _.length - E.length; } function a(m) { if (m.charAt(m.length - 1) == "/") return m.slice(0, -1).indexOf("/") === -1 ? m : a(m.slice(0, -1)); var k = m.lastIndexOf("/"); return k === -1 ? m : m.slice(0, k + 1); } function n(m) { if (m.charAt(m.length - 1) == "/") return n(m.slice(0, -1)); var k = m.lastIndexOf("/"); return k === -1 ? m : m.slice(k + 1); } function i(m, k) { typeof k == "string" && (k = new Date(k)); var _ = k.getHours(); _ = _ << 6 | k.getMinutes(), _ = _ << 5 | k.getSeconds() >>> 1, m.write_shift(2, _); var E = k.getFullYear() - 1980; E = E << 4 | k.getMonth() + 1, E = E << 5 | k.getDate(), m.write_shift(2, E); } function s(m) { var k = m.read_shift(2) & 65535, _ = m.read_shift(2) & 65535, E = /* @__PURE__ */ new Date(), T = _ & 31; _ >>>= 5; var F = _ & 15; _ >>>= 4, E.setMilliseconds(0), E.setFullYear(_ + 1980), E.setMonth(F - 1), E.setDate(T); var U = k & 31; k >>>= 5; var j = k & 63; return k >>>= 6, E.setHours(k), E.setMinutes(j), E.setSeconds(U << 1), E; } function f(m) { or(m, 0); for (var k = ( /*::(*/ {} ), _ = 0; m.l <= m.length - 4; ) { var E = m.read_shift(2), T = m.read_shift(2), F = m.l + T, U = {}; switch (E) { case 21589: _ = m.read_shift(1), _ & 1 && (U.mtime = m.read_shift(4)), T > 5 && (_ & 2 && (U.atime = m.read_shift(4)), _ & 4 && (U.ctime = m.read_shift(4))), U.mtime && (U.mt = new Date(U.mtime * 1e3)); break; } m.l = F, k[E] = U; } return k; } var c; function o() { return c || (c = {}); } function l(m, k) { if (m[0] == 80 && m[1] == 75) return qn(m, k); if ((m[0] | 32) == 109 && (m[1] | 32) == 105) return Oc(m, k); if (m.length < 512) throw new Error("CFB file size " + m.length + " < 512"); var _ = 3, E = 512, T = 0, F = 0, U = 0, j = 0, M = 0, W = [], H = ( /*::(*/ m.slice(0, 512) ); or(H, 0); var Z = u(H); switch (_ = Z[0], _) { case 3: E = 512; break; case 4: E = 4096; break; case 0: if (Z[1] == 0) return qn(m, k); default: throw new Error("Major Version: Expected 3 or 4 saw " + _); } E !== 512 && (H = /*::(*/ m.slice(0, E), or( H, 28 /* blob.l */ )); var se = m.slice(0, E); h(H, _); var ue = H.read_shift(4, "i"); if (_ === 3 && ue !== 0) throw new Error("# Directory Sectors: Expected 0 saw " + ue); H.l += 4, U = H.read_shift(4, "i"), H.l += 4, H.chk("00100000", "Mini Stream Cutoff Size: "), j = H.read_shift(4, "i"), T = H.read_shift(4, "i"), M = H.read_shift(4, "i"), F = H.read_shift(4, "i"); for (var ee = -1, oe = 0; oe < 109 && (ee = H.read_shift(4, "i"), !(ee < 0)); ++oe) W[oe] = ee; var _e = d(m, E); p(M, F, _e, E, W); var He = y(_e, U, W, E); He[U].name = "!Directory", T > 0 && j !== J && (He[j].name = "!MiniFAT"), He[W[0]].name = "!FAT", He.fat_addrs = W, He.ssz = E; var Ve = {}, ur = [], ua = [], ha = []; g(U, He, _e, ur, T, Ve, ua, j), v(ua, ha, ur), ur.shift(); var xa = { FileIndex: ua, FullPaths: ha }; return k && k.raw && (xa.raw = { header: se, sectors: _e }), xa; } function u(m) { if (m[m.l] == 80 && m[m.l + 1] == 75) return [0, 0]; m.chk(le, "Header Signature: "), m.l += 16; var k = m.read_shift(2, "u"); return [m.read_shift(2, "u"), k]; } function h(m, k) { var _ = 9; switch (m.l += 2, _ = m.read_shift(2)) { case 9: if (k != 3) throw new Error("Sector Shift: Expected 9 saw " + _); break; case 12: if (k != 4) throw new Error("Sector Shift: Expected 12 saw " + _); break; default: throw new Error("Sector Shift: Expected 9 or 12 saw " + _); } m.chk("0600", "Mini Sector Shift: "), m.chk("000000000000", "Reserved: "); } function d(m, k) { for (var _ = Math.ceil(m.length / k) - 1, E = [], T = 1; T < _; ++T) E[T - 1] = m.slice(T * k, (T + 1) * k); return E[_ - 1] = m.slice(_ * k), E; } function v(m, k, _) { for (var E = 0, T = 0, F = 0, U = 0, j = 0, M = _.length, W = [], H = []; E < M; ++E) W[E] = H[E] = E, k[E] = _[E]; for (; j < H.length; ++j) E = H[j], T = m[E].L, F = m[E].R, U = m[E].C, W[E] === E && (T !== -1 && W[T] !== T && (W[E] = W[T]), F !== -1 && W[F] !== F && (W[E] = W[F])), U !== -1 && (W[U] = E), T !== -1 && E != W[E] && (W[T] = W[E], H.lastIndexOf(T) < j && H.push(T)), F !== -1 && E != W[E] && (W[F] = W[E], H.lastIndexOf(F) < j && H.push(F)); for (E = 1; E < M; ++E) W[E] === E && (F !== -1 && W[F] !== F ? W[E] = W[F] : T !== -1 && W[T] !== T && (W[E] = W[T])); for (E = 1; E < M; ++E) if (m[E].type !== 0) { if (j = E, j != W[j]) do j = W[j], k[E] = k[j] + "/" + k[E]; while (j !== 0 && W[j] !== -1 && j != W[j]); W[E] = -1; } for (k[0] += "/", E = 1; E < M; ++E) m[E].type !== 2 && (k[E] += "/"); } function x(m, k, _) { for (var E = m.start, T = m.size, F = [], U = E; _ && T > 0 && U >= 0; ) F.push(k.slice(U * L, U * L + L)), T -= L, U = Ot(_, U * 4); return F.length === 0 ? z(0) : sr(F).slice(0, m.size); } function p(m, k, _, E, T) { var F = J; if (m === J) { if (k !== 0) throw new Error("DIFAT chain shorter than expected"); } else if (m !== -1) { var U = _[m], j = (E >>> 2) - 1; if (!U) return; for (var M = 0; M < j && (F = Ot(U, M * 4)) !== J; ++M) T.push(F); p(Ot(U, E - 4), k - 1, _, E, T); } } function w(m, k, _, E, T) { var F = [], U = []; T || (T = []); var j = E - 1, M = 0, W = 0; for (M = k; M >= 0; ) { T[M] = !0, F[F.length] = M, U.push(m[M]); var H = _[Math.floor(M * 4 / E)]; if (W = M * 4 & j, E < 4 + W) throw new Error("FAT boundary crossed: " + M + " 4 " + E); if (!m[H]) break; M = Ot(m[H], W); } return { nodes: F, data: _i([U]) }; } function y(m, k, _, E) { var T = m.length, F = [], U = [], j = [], M = [], W = E - 1, H = 0, Z = 0, se = 0, ue = 0; for (H = 0; H < T; ++H) if (j = [], se = H + k, se >= T && (se -= T), !U[se]) { M = []; var ee = []; for (Z = se; Z >= 0; ) { ee[Z] = !0, U[Z] = !0, j[j.length] = Z, M.push(m[Z]); var oe = _[Math.floor(Z * 4 / E)]; if (ue = Z * 4 & W, E < 4 + ue) throw new Error("FAT boundary crossed: " + Z + " 4 " + E); if (!m[oe] || (Z = Ot(m[oe], ue), ee[Z])) break; } F[se] = { nodes: j, data: _i([M]) }; } return F; } function g(m, k, _, E, T, F, U, j) { for (var M = 0, W = E.length ? 2 : 0, H = k[m].data, Z = 0, se = 0, ue; Z < H.length; Z += 128) { var ee = ( /*::(*/ H.slice(Z, Z + 128) ); or(ee, 64), se = ee.read_shift(2), ue = _n(ee, 0, se - W), E.push(ue); var oe = { name: ue, type: ee.read_shift(1), color: ee.read_shift(1), L: ee.read_shift(4, "i"), R: ee.read_shift(4, "i"), C: ee.read_shift(4, "i"), clsid: ee.read_shift(16), state: ee.read_shift(4, "i"), start: 0, size: 0 }, _e = ee.read_shift(2) + ee.read_shift(2) + ee.read_shift(2) + ee.read_shift(2); _e !== 0 && (oe.ct = C(ee, ee.l - 8)); var He = ee.read_shift(2) + ee.read_shift(2) + ee.read_shift(2) + ee.read_shift(2); He !== 0 && (oe.mt = C(ee, ee.l - 8)), oe.start = ee.read_shift(4, "i"), oe.size = ee.read_shift(4, "i"), oe.size < 0 && oe.start < 0 && (oe.size = oe.type = 0, oe.start = J, oe.name = ""), oe.type === 5 ? (M = oe.start, T > 0 && M !== J && (k[M].name = "!StreamData")) : oe.size >= 4096 ? (oe.storage = "fat", k[oe.start] === void 0 && (k[oe.start] = w(_, oe.start, k.fat_addrs, k.ssz)), k[oe.start].name = oe.name, oe.content = k[oe.start].data.slice(0, oe.size)) : (oe.storage = "minifat", oe.size < 0 ? oe.size = 0 : M !== J && oe.start !== J && k[M] && (oe.content = x(oe, k[M].data, (k[j] || {}).data))), oe.content && or(oe.content, 0), F[ue] = oe, U.push(oe); } } function C(m, k) { return new Date((Dr(m, k + 4) / 1e7 * Math.pow(2, 32) + Dr(m, k) / 1e7 - 11644473600) * 1e3); } function b(m, k) { return o(), l(c.readFileSync(m), k); } function O(m, k) { var _ = k && k.type; switch (_ || Te && Buffer.isBuffer(m) && (_ = "buffer"), _ || "base64") { case "file": return b(m, k); case "base64": return l(Or(Rr(m)), k); case "binary": return l(Or(m), k); } return l( /*::typeof blob == 'string' ? new Buffer(blob, 'utf-8') : */ m, k ); } function S(m, k) { var _ = k || {}, E = _.root || "Root Entry"; if (m.FullPaths || (m.FullPaths = []), m.FileIndex || (m.FileIndex = []), m.FullPaths.length !== m.FileIndex.length) throw new Error("inconsistent CFB structure"); m.FullPaths.length === 0 && (m.FullPaths[0] = E + "/", m.FileIndex[0] = { name: E, type: 5 }), _.CLSID && (m.FileIndex[0].clsid = _.CLSID), B(m); } function B(m) { var k = "Sh33tJ5"; if (!xe.find(m, "/" + k)) { var _ = z(4); _[0] = 55, _[1] = _[3] = 50, _[2] = 54, m.FileIndex.push({ name: k, type: 2, content: _, size: 4, L: 69, R: 69, C: 69 }), m.FullPaths.push(m.FullPaths[0] + k), R(m); } } function R(m, k) { S(m); for (var _ = !1, E = !1, T = m.FullPaths.length - 1; T >= 0; --T) { var F = m.FileIndex[T]; switch (F.type) { case 0: E ? _ = !0 : (m.FileIndex.pop(), m.FullPaths.pop()); break; case 1: case 2: case 5: E = !0, isNaN(F.R * F.L * F.C) && (_ = !0), F.R > -1 && F.L > -1 && F.R == F.L && (_ = !0); break; default: _ = !0; break; } } if (!(!_ && !k)) { var U = new Date(1987, 1, 19), j = 0, M = Object.create ? /* @__PURE__ */ Object.create(null) : {}, W = []; for (T = 0; T < m.FullPaths.length; ++T) M[m.FullPaths[T]] = !0, m.FileIndex[T].type !== 0 && W.push([m.FullPaths[T], m.FileIndex[T]]); for (T = 0; T < W.length; ++T) { var H = a(W[T][0]); E = M[H], E || (W.push([H, { name: n(H).replace("/", ""), type: 1, clsid: he, ct: U, mt: U, content: null }]), M[H] = !0); } for (W.sort(function(ue, ee) { return r(ue[0], ee[0]); }), m.FullPaths = [], m.FileIndex = [], T = 0; T < W.length; ++T) m.FullPaths[T] = W[T][0], m.FileIndex[T] = W[T][1]; for (T = 0; T < W.length; ++T) { var Z = m.FileIndex[T], se = m.FullPaths[T]; if (Z.name = n(se).replace("/", ""), Z.L = Z.R = Z.C = -(Z.color = 1), Z.size = Z.content ? Z.content.length : 0, Z.start = 0, Z.clsid = Z.clsid || he, T === 0) Z.C = W.length > 1 ? 1 : -1, Z.size = 0, Z.type = 5; else if (se.slice(-1) == "/") { for (j = T + 1; j < W.length && a(m.FullPaths[j]) != se; ++j) ; for (Z.C = j >= W.length ? -1 : j, j = T + 1; j < W.length && a(m.FullPaths[j]) != a(se); ++j) ; Z.R = j >= W.length ? -1 : j, Z.type = 1; } else a(m.FullPaths[T + 1] || "") == a(se) && (Z.R = T + 1), Z.type = 2; } } } function X(m, k) { var _ = k || {}; if (_.fileType == "mad") return Ic(m, _); switch (R(m), _.fileType) { case "zip": return Sc(m, _); } var E = function(ue) { for (var ee = 0, oe = 0, _e = 0; _e < ue.FileIndex.length; ++_e) { var He = ue.FileIndex[_e]; if (He.content) { var Ve = He.content.length; Ve > 0 && (Ve < 4096 ? ee += Ve + 63 >> 6 : oe += Ve + 511 >> 9); } } for (var ur = ue.FullPaths.length + 3 >> 2, ua = ee + 7 >> 3, ha = ee + 127 >> 7, xa = ua + oe + ur + ha, Dt = xa + 127 >> 7, D0 = Dt <= 109 ? 0 : Math.ceil((Dt - 109) / 127); xa + Dt + D0 + 127 >> 7 > Dt; ) D0 = ++Dt <= 109 ? 0 : Math.ceil((Dt - 109) / 127); var st = [1, D0, Dt, ha, ur, oe, ee, 0]; return ue.FileIndex[0].size = ee << 6, st[7] = (ue.FileIndex[0].start = st[0] + st[1] + st[2] + st[3] + st[4] + st[5]) + (st[6] + 7 >> 3), st; }(m), T = z(E[7] << 9), F = 0, U = 0; { for (F = 0; F < 8; ++F) T.write_shift(1, ie[F]); for (F = 0; F < 8; ++F) T.write_shift(2, 0); for (T.write_shift(2, 62), T.write_shift(2, 3), T.write_shift(2, 65534), T.write_shift(2, 9), T.write_shift(2, 6), F = 0; F < 3; ++F) T.write_shift(2, 0); for (T.write_shift(4, 0), T.write_shift(4, E[2]), T.write_shift(4, E[0] + E[1] + E[2] + E[3] - 1), T.write_shift(4, 0), T.write_shift(4, 4096), T.write_shift(4, E[3] ? E[0] + E[1] + E[2] - 1 : J), T.write_shift(4, E[3]), T.write_shift(-4, E[1] ? E[0] - 1 : J), T.write_shift(4, E[1]), F = 0; F < 109; ++F) T.write_shift(-4, F < E[2] ? E[1] + F : -1); } if (E[1]) for (U = 0; U < E[1]; ++U) { for (; F < 236 + U * 127; ++F) T.write_shift(-4, F < E[2] ? E[1] + F : -1); T.write_shift(-4, U === E[1] - 1 ? J : U + 1); } var j = function(ue) { for (U += ue; F < U - 1; ++F) T.write_shift(-4, F + 1); ue && (++F, T.write_shift(-4, J)); }; for (U = F = 0, U += E[1]; F < U; ++F) T.write_shift(-4, ce.DIFSECT); for (U += E[2]; F < U; ++F) T.write_shift(-4, ce.FATSECT); j(E[3]), j(E[4]); for (var M = 0, W = 0, H = m.FileIndex[0]; M < m.FileIndex.length; ++M) H = m.FileIndex[M], H.content && (W = H.content.length, !(W < 4096) && (H.start = U, j(W + 511 >> 9))); for (j(E[6] + 7 >> 3); T.l & 511; ) T.write_shift(-4, ce.ENDOFCHAIN); for (U = F = 0, M = 0; M < m.FileIndex.length; ++M) H = m.FileIndex[M], H.content && (W = H.content.length, !(!W || W >= 4096) && (H.start = U, j(W + 63 >> 6))); for (; T.l & 511; ) T.write_shift(-4, ce.ENDOFCHAIN); for (F = 0; F < E[4] << 2; ++F) { var Z = m.FullPaths[F]; if (!Z || Z.length === 0) { for (M = 0; M < 17; ++M) T.write_shift(4, 0); for (M = 0; M < 3; ++M) T.write_shift(4, -1); for (M = 0; M < 12; ++M) T.write_shift(4, 0); continue; } H = m.FileIndex[F], F === 0 && (H.start = H.size ? H.start - 1 : J); var se = F === 0 && _.root || H.name; if (W = 2 * (se.length + 1), T.write_shift(64, se, "utf16le"), T.write_shift(2, W), T.write_shift(1, H.type), T.write_shift(1, H.color), T.write_shift(-4, H.L), T.write_shift(-4, H.R), T.write_shift(-4, H.C), H.clsid) T.write_shift(16, H.clsid, "hex"); else for (M = 0; M < 4; ++M) T.write_shift(4, 0); T.write_shift(4, H.state || 0), T.write_shift(4, 0), T.write_shift(4, 0), T.write_shift(4, 0), T.write_shift(4, 0), T.write_shift(4, H.start), T.write_shift(4, H.size), T.write_shift(4, 0); } for (F = 1; F < m.FileIndex.length; ++F) if (H = m.FileIndex[F], H.size >= 4096) if (T.l = H.start + 1 << 9, Te && Buffer.isBuffer(H.content)) H.content.copy(T, T.l, 0, H.size), T.l += H.size + 511 & -512; else { for (M = 0; M < H.size; ++M) T.write_shift(1, H.content[M]); for (; M & 511; ++M) T.write_shift(1, 0); } for (F = 1; F < m.FileIndex.length; ++F) if (H = m.FileIndex[F], H.size > 0 && H.size < 4096) if (Te && Buffer.isBuffer(H.content)) H.content.copy(T, T.l, 0, H.size), T.l += H.size + 63 & -64; else { for (M = 0; M < H.size; ++M) T.write_shift(1, H.content[M]); for (; M & 63; ++M) T.write_shift(1, 0); } if (Te) T.l = T.length; else for (; T.l < T.length; ) T.write_shift(1, 0); return T; } function G(m, k) { var _ = m.FullPaths.map(function(M) { return M.toUpperCase(); }), E = _.map(function(M) { var W = M.split("/"); return W[W.length - (M.slice(-1) == "/" ? 2 : 1)]; }), T = !1; k.charCodeAt(0) === 47 ? (T = !0, k = _[0].slice(0, -1) + k) : T = k.indexOf("/") !== -1; var F = k.toUpperCase(), U = T === !0 ? _.indexOf(F) : E.indexOf(F); if (U !== -1) return m.FileIndex[U]; var j = !F.match(ma); for (F = F.replace(Tr, ""), j && (F = F.replace(ma, "!")), U = 0; U < _.length; ++U) if ((j ? _[U].replace(ma, "!") : _[U]).replace(Tr, "") == F || (j ? E[U].replace(ma, "!") : E[U]).replace(Tr, "") == F) return m.FileIndex[U]; return null; } var L = 64, J = -2, le = "d0cf11e0a1b11ae1", ie = [208, 207, 17, 224, 161, 177, 26, 225], he = "00000000000000000000000000000000", ce = { /* 2.1 Compund File Sector Numbers and Types */ MAXREGSECT: -6, DIFSECT: -4, FATSECT: -3, ENDOFCHAIN: J, FREESECT: -1, /* 2.2 Compound File Header */ HEADER_SIGNATURE: le, HEADER_MINOR_VERSION: "3e00", MAXREGSID: -6, NOSTREAM: -1, HEADER_CLSID: he, /* 2.6.1 Compound File Directory Entry */ EntryTypes: ["unknown", "storage", "stream", "lockbytes", "property", "root"] }; function be(m, k, _) { o(); var E = X(m, _); c.writeFileSync(k, E); } function V(m) { for (var k = new Array(m.length), _ = 0; _ < m.length; ++_) k[_] = String.fromCharCode(m[_]); return k.join(""); } function ve(m, k) { var _ = X(m, k); switch (k && k.type || "buffer") { case "file": return o(), c.writeFileSync(k.filename, _), _; case "binary": return typeof _ == "string" ? _ : V(_); case "base64": return Aa(typeof _ == "string" ? _ : V(_)); case "buffer": if (Te) return Buffer.isBuffer(_) ? _ : ut(_); case "array": return typeof _ == "string" ? Or(_) : _; } return _; } var ge; function D(m) { try { var k = m.InflateRaw, _ = new k(); if (_._processChunk(new Uint8Array([3, 0]), _._finishFlushFlag), _.bytesRead) ge = m; else throw new Error("zlib does not expose bytesRead"); } catch (E) { console.error("cannot use native zlib: " + (E.message || E)); } } function P(m, k) { if (!ge) return Yn(m, k); var _ = ge.InflateRaw, E = new _(), T = E._processChunk(m.slice(m.l), E._finishFlushFlag); return m.l += E.bytesRead, T; } function I(m) { return ge ? ge.deflateRawSync(m) : Se(m); } var N = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], K = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258], re = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577]; function te(m) { var k = (m << 1 | m << 11) & 139536 | (m << 5 | m << 15) & 558144; return (k >> 16 | k >> 8 | k) & 255; } for (var Q = typeof Uint8Array < "u", q = Q ? new Uint8Array(256) : [], ke = 0; ke < 256; ++ke) q[ke] = te(ke); function A(m, k) { var _ = q[m & 255]; return k <= 8 ? _ >>> 8 - k : (_ = _ << 8 | q[m >> 8 & 255], k <= 16 ? _ >>> 16 - k : (_ = _ << 8 | q[m >> 16 & 255], _ >>> 24 - k)); } function Be(m, k) { var _ = k & 7, E = k >>> 3; return (m[E] | (_ <= 6 ? 0 : m[E + 1] << 8)) >>> _ & 3; } function Ae(m, k) { var _ = k & 7, E = k >>> 3; return (m[E] | (_ <= 5 ? 0 : m[E + 1] << 8)) >>> _ & 7; } function Le(m, k) { var _ = k & 7, E = k >>> 3; return (m[E] | (_ <= 4 ? 0 : m[E + 1] << 8)) >>> _ & 15; } function ye(m, k) { var _ = k & 7, E = k >>> 3; return (m[E] | (_ <= 3 ? 0 : m[E + 1] << 8)) >>> _ & 31; } function fe(m, k) { var _ = k & 7, E = k >>> 3; return (m[E] | (_ <= 1 ? 0 : m[E + 1] << 8)) >>> _ & 127; } function Ke(m, k, _) { var E = k & 7, T = k >>> 3, F = (1 << _) - 1, U = m[T] >>> E; return _ < 8 - E || (U |= m[T + 1] << 8 - E, _ < 16 - E) || (U |= m[T + 2] << 16 - E, _ < 24 - E) || (U |= m[T + 3] << 24 - E), U & F; } function br(m, k, _) { var E = k & 7, T = k >>> 3; return E <= 5 ? m[T] |= (_ & 7) << E : (m[T] |= _ << E & 255, m[T + 1] = (_ & 7) >> 8 - E), k + 3; } function Yr(m, k, _) { var E = k & 7, T = k >>> 3; return _ = (_ & 1) << E, m[T] |= _, k + 1; } function nt(m, k, _) { var E = k & 7, T = k >>> 3; return _ <<= E, m[T] |= _ & 255, _ >>>= 8, m[T + 1] = _, k + 8; } function oa(m, k, _) { var E = k & 7, T = k >>> 3; return _ <<= E, m[T] |= _ & 255, _ >>>= 8, m[T + 1] = _ & 255, m[T + 2] = _ >>> 8, k + 16; } function dt(m, k) { var _ = m.length, E = 2 * _ > k ? 2 * _ : k + 5, T = 0; if (_ >= k) return m; if (Te) { var F = ei(E); if (m.copy) m.copy(F); else for (; T < m.length; ++T) F[T] = m[T]; return F; } else if (Q) { var U = new Uint8Array(E); if (U.set) U.set(m); else for (; T < _; ++T) U[T] = m[T]; return U; } return m.length = E, m; } function Ar(m) { for (var k = new Array(m), _ = 0; _ < m; ++_) k[_] = 0; return k; } function it(m, k, _) { var E = 1, T = 0, F = 0, U = 0, j = 0, M = m.length, W = Q ? new Uint16Array(32) : Ar(32); for (F = 0; F < 32; ++F) W[F] = 0; for (F = M; F < _; ++F) m[F] = 0; M = m.length; var H = Q ? new Uint16Array(M) : Ar(M); for (F = 0; F < M; ++F) W[T = m[F]]++, E < T && (E = T), H[F] = 0; for (W[0] = 0, F = 1; F <= E; ++F) W[F + 16] = j = j + W[F - 1] << 1; for (F = 0; F < M; ++F) j = m[F], j != 0 && (H[F] = W[j + 16]++); var Z = 0; for (F = 0; F < M; ++F) if (Z = m[F], Z != 0) for (j = A(H[F], E) >> E - Z, U = (1 << E + 4 - Z) - 1; U >= 0; --U) k[j | U << Z] = Z & 15 | F << 4; return E; } var vt = Q ? new Uint16Array(512) : Ar(512), la = Q ? new Uint16Array(32) : Ar(32); if (!Q) { for (var wr = 0; wr < 512; ++wr) vt[wr] = 0; for (wr = 0; wr < 32; ++wr) la[wr] = 0; } (function() { for (var m = [], k = 0; k < 32; k++) m.push(5); it(m, la, 32); var _ = []; for (k = 0; k <= 143; k++) _.push(8); for (; k <= 255; k++) _.push(9); for (; k <= 279; k++) _.push(7); for (; k <= 287; k++) _.push(8); it(_, vt, 288); })(); var Jr = /* @__PURE__ */ function() { for (var k = Q ? new Uint8Array(32768) : [], _ = 0, E = 0; _ < re.length - 1; ++_) for (; E < re[_ + 1]; ++E) k[E] = _; for (; E < 32768; ++E) k[E] = 29; var T = Q ? new Uint8Array(259) : []; for (_ = 0, E = 0; _ < K.length - 1; ++_) for (; E < K[_ + 1]; ++E) T[E] = _; function F(j, M) { for (var W = 0; W < j.length; ) { var H = Math.min(65535, j.length - W), Z = W + H == j.length; for (M.write_shift(1, +Z), M.write_shift(2, H), M.write_shift(2, ~H & 65535); H-- > 0; ) M[M.l++] = j[W++]; } return M.l; } function U(j, M) { for (var W = 0, H = 0, Z = Q ? new Uint16Array(32768) : []; H < j.length; ) { var se = ( /* data.length - boff; */ Math.min(65535, j.length - H) ); if (se < 10) { for (W = br(M, W, +(H + se == j.length)), W & 7 && (W += 8 - (W & 7)), M.l = W / 8 | 0, M.write_shift(2, se), M.write_shift(2, ~se & 65535); se-- > 0; ) M[M.l++] = j[H++]; W = M.l * 8; continue; } W = br(M, W, +(H + se == j.length) + 2); for (var ue = 0; se-- > 0; ) { var ee = j[H]; ue = (ue << 5 ^ ee) & 32767; var oe = -1, _e = 0; if ((oe = Z[ue]) && (oe |= H & -32768, oe > H && (oe -= 32768), oe < H)) for (; j[oe + _e] == j[H + _e] && _e < 250; ) ++_e; if (_e > 2) { ee = T[_e], ee <= 22 ? W = nt(M, W, q[ee + 1] >> 1) - 1 : (nt(M, W, 3), W += 5, nt(M, W, q[ee - 23] >> 5), W += 3); var He = ee < 8 ? 0 : ee - 4 >> 2; He > 0 && (oa(M, W, _e - K[ee]), W += He), ee = k[H - oe], W = nt(M, W, q[ee] >> 3), W -= 3; var Ve = ee < 4 ? 0 : ee - 2 >> 1; Ve > 0 && (oa(M, W, H - oe - re[ee]), W += Ve); for (var ur = 0; ur < _e; ++ur) Z[ue] = H & 32767, ue = (ue << 5 ^ j[H]) & 32767, ++H; se -= _e - 1; } else ee <= 143 ? ee = ee + 48 : W = Yr(M, W, 1), W = nt(M, W, q[ee]), Z[ue] = H & 32767, ++H; } W = nt(M, W, 0) - 1; } return M.l = (W + 7) / 8 | 0, M.l; } return function(M, W) { return M.length < 8 ? F(M, W) : U(M, W); }; }(); function Se(m) { var k = z(50 + Math.floor(m.length * 1.1)), _ = Jr(m, k); return k.slice(0, _); } var Ye = Q ? new Uint16Array(32768) : Ar(32768), Pr = Q ? new Uint16Array(32768) : Ar(32768), tr = Q ? new Uint16Array(128) : Ar(128), Ct = 1, Kn = 1; function Ec(m, k) { var _ = ye(m, k) + 257; k += 5; var E = ye(m, k) + 1; k += 5; var T = Le(m, k) + 4; k += 4; for (var F = 0, U = Q ? new Uint8Array(19) : Ar(19), j = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], M = 1, W = Q ? new Uint8Array(8) : Ar(8), H = Q ? new Uint8Array(8) : Ar(8), Z = U.length, se = 0; se < T; ++se) U[N[se]] = F = Ae(m, k), M < F && (M = F), W[F]++, k += 3; var ue = 0; for (W[0] = 0, se = 1; se <= M; ++se) H[se] = ue = ue + W[se - 1] << 1; for (se = 0; se < Z; ++se) (ue = U[se]) != 0 && (j[se] = H[ue]++); var ee = 0; for (se = 0; se < Z; ++se) if (ee = U[se], ee != 0) { ue = q[j[se]] >> 8 - ee; for (var oe = (1 << 7 - ee) - 1; oe >= 0; --oe) tr[ue | oe << ee] = ee & 7 | se << 3; } var _e = []; for (M = 1; _e.length < _ + E; ) switch (ue = tr[fe(m, k)], k += ue & 7, ue >>>= 3) { case 16: for (F = 3 + Be(m, k), k += 2, ue = _e[_e.length - 1]; F-- > 0; ) _e.push(ue); break; case 17: for (F = 3 + Ae(m, k), k += 3; F-- > 0; ) _e.push(0); break; case 18: for (F = 11 + fe(m, k), k += 7; F-- > 0; ) _e.push(0); break; default: _e.push(ue), M < ue && (M = ue); break; } var He = _e.slice(0, _), Ve = _e.slice(_); for (se = _; se < 286; ++se) He[se] = 0; for (se = E; se < 30; ++se) Ve[se] = 0; return Ct = it(He, Ye, 286), Kn = it(Ve, Pr, 30), k; } function kc(m, k) { if (m[0] == 3 && !(m[1] & 3)) return [Et(k), 2]; for (var _ = 0, E = 0, T = ei(k || 1 << 18), F = 0, U = T.length >>> 0, j = 0, M = 0; !(E & 1); ) { if (E = Ae(m, _), _ += 3, E >>> 1) E >> 1 == 1 ? (j = 9, M = 5) : (_ = Ec(m, _), j = Ct, M = Kn); else { _ & 7 && (_ += 8 - (_ & 7)); var W = m[_ >>> 3] | m[(_ >>> 3) + 1] << 8; if (_ += 32, W > 0) for (!k && U < F + W && (T = dt(T, F + W), U = T.length); W-- > 0; ) T[F++] = m[_ >>> 3], _ += 8; continue; } for (; ; ) { !k && U < F + 32767 && (T = dt(T, F + 32767), U = T.length); var H = Ke(m, _, j), Z = E >>> 1 == 1 ? vt[H] : Ye[H]; if (_ += Z & 15, Z >>>= 4, !(Z >>> 8 & 255)) T[F++] = Z; else { if (Z == 256) break; Z -= 257; var se = Z < 8 ? 0 : Z - 4 >> 2; se > 5 && (se = 0); var ue = F + K[Z]; se > 0 && (ue += Ke(m, _, se), _ += se), H = Ke(m, _, M), Z = E >>> 1 == 1 ? la[H] : Pr[H], _ += Z & 15, Z >>>= 4; var ee = Z < 4 ? 0 : Z - 2 >> 1, oe = re[Z]; for (ee > 0 && (oe += Ke(m, _, ee), _ += ee), !k && U < ue && (T = dt(T, ue + 100), U = T.length); F < ue; ) T[F] = T[F - oe], ++F; } } } return k ? [T, _ + 7 >>> 3] : [T.slice(0, F), _ + 7 >>> 3]; } function Yn(m, k) { var _ = m.slice(m.l || 0), E = kc(_, k); return m.l += E[1], E[0]; } function Jn(m, k) { if (m) typeof console < "u" && console.error(k); else throw new Error(k); } function qn(m, k) { var _ = ( /*::(*/ m ); or(_, 0); var E = [], T = [], F = { FileIndex: E, FullPaths: T }; S(F, { root: k.root }); for (var U = _.length - 4; (_[U] != 80 || _[U + 1] != 75 || _[U + 2] != 5 || _[U + 3] != 6) && U >= 0; ) --U; _.l = U + 4, _.l += 4; var j = _.read_shift(2); _.l += 6; var M = _.read_shift(4); for (_.l = M, U = 0; U < j; ++U) { _.l += 20; var W = _.read_shift(4), H = _.read_shift(4), Z = _.read_shift(2), se = _.read_shift(2), ue = _.read_shift(2); _.l += 8; var ee = _.read_shift(4), oe = f( /*::(*/ _.slice(_.l + Z, _.l + Z + se) /*:: :any)*/ ); _.l += Z + se + ue; var _e = _.l; _.l = ee + 4, Tc(_, W, H, F, oe), _.l = _e; } return F; } function Tc(m, k, _, E, T) { m.l += 2; var F = m.read_shift(2), U = m.read_shift(2), j = s(m); if (F & 8257) throw new Error("Unsupported ZIP encryption"); for (var M = m.read_shift(4), W = m.read_shift(4), H = m.read_shift(4), Z = m.read_shift(2), se = m.read_shift(2), ue = "", ee = 0; ee < Z; ++ee) ue += String.fromCharCode(m[m.l++]); if (se) { var oe = f( /*::(*/ m.slice(m.l, m.l + se) /*:: :any)*/ ); (oe[21589] || {}).mt && (j = oe[21589].mt), ((T || {})[21589] || {}).mt && (j = T[21589].mt); } m.l += se; var _e = m.slice(m.l, m.l + W); switch (U) { case 8: _e = P(m, H); break; case 0: break; default: throw new Error("Unsupported ZIP Compression method " + U); } var He = !1; F & 8 && (M = m.read_shift(4), M == 134695760 && (M = m.read_shift(4), He = !0), W = m.read_shift(4), H = m.read_shift(4)), W != k && Jn(He, "Bad compressed size: " + k + " != " + W), H != _ && Jn(He, "Bad uncompressed size: " + _ + " != " + H), C0(E, ue, _e, { unsafe: !0, mt: j }); } function Sc(m, k) { var _ = k || {}, E = [], T = [], F = z(1), U = _.compression ? 8 : 0, j = 0, M = 0, W = 0, H = 0, Z = 0, se = m.FullPaths[0], ue = se, ee = m.FileIndex[0], oe = [], _e = 0; for (M = 1; M < m.FullPaths.length; ++M) if (ue = m.FullPaths[M].slice(se.length), ee = m.FileIndex[M], !(!ee.size || !ee.content || ue == "Sh33tJ5")) { var He = H, Ve = z(ue.length); for (W = 0; W < ue.length; ++W) Ve.write_shift(1, ue.charCodeAt(W) & 127); Ve = Ve.slice(0, Ve.l), oe[Z] = _o.buf( /*::((*/ ee.content, 0 ); var ur = ee.content; U == 8 && (ur = I(ur)), F = z(30), F.write_shift(4, 67324752), F.write_shift(2, 20), F.write_shift(2, j), F.write_shift(2, U), ee.mt ? i(F, ee.mt) : F.write_shift(4, 0), F.write_shift(-4, oe[Z]), F.write_shift(4, ur.length), F.write_shift( 4, /*::(*/ ee.content.length ), F.write_shift(2, Ve.length), F.write_shift(2, 0), H += F.length, E.push(F), H += Ve.length, E.push(Ve), H += ur.length, E.push(ur), F = z(46), F.write_shift(4, 33639248), F.write_shift(2, 0), F.write_shift(2, 20), F.write_shift(2, j), F.write_shift(2, U), F.write_shift(4, 0), F.write_shift(-4, oe[Z]), F.write_shift(4, ur.length), F.write_shift( 4, /*::(*/ ee.content.length ), F.write_shift(2, Ve.length), F.write_shift(2, 0), F.write_shift(2, 0), F.write_shift(2, 0), F.write_shift(2, 0), F.write_shift(4, 0), F.write_shift(4, He), _e += F.l, T.push(F), _e += Ve.length, T.push(Ve), ++Z; } return F = z(22), F.write_shift(4, 101010256), F.write_shift(2, 0), F.write_shift(2, 0), F.write_shift(2, Z), F.write_shift(2, Z), F.write_shift(4, _e), F.write_shift(4, H), F.write_shift(2, 0), sr([sr(E), sr(T), F]); } var Ya = { htm: "text/html", xml: "text/xml", gif: "image/gif", jpg: "image/jpeg", png: "image/png", mso: "application/x-mso", thmx: "application/vnd.ms-officetheme", sh33tj5: "application/octet-stream" }; function Fc(m, k) { if (m.ctype) return m.ctype; var _ = m.name || "", E = _.match(/\.([^\.]+)$/); return E && Ya[E[1]] || k && (E = (_ = k).match(/[\.\\]([^\.\\])+$/), E && Ya[E[1]]) ? Ya[E[1]] : "application/octet-stream"; } function yc(m) { for (var k = Aa(m), _ = [], E = 0; E < k.length; E += 76) _.push(k.slice(E, E + 76)); return _.join(`\r `) + `\r `; } function Ac(m) { var k = m.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7E-\xFF=]/g, function(W) { var H = W.charCodeAt(0).toString(16).toUpperCase(); return "=" + (H.length == 1 ? "0" + H : H); }); k = k.replace(/ $/mg, "=20").replace(/\t$/mg, "=09"), k.charAt(0) == ` ` && (k = "=0D" + k.slice(1)), k = k.replace(/\r(?!\n)/mg, "=0D").replace(/\n\n/mg, ` =0A`).replace(/([^\r\n])\n/mg, "$1=0A"); for (var _ = [], E = k.split(`\r `), T = 0; T < E.length; ++T) { var F = E[T]; if (F.length == 0) { _.push(""); continue; } for (var U = 0; U < F.length; ) { var j = 76, M = F.slice(U, U + j); M.charAt(j - 1) == "=" ? j-- : M.charAt(j - 2) == "=" ? j -= 2 : M.charAt(j - 3) == "=" && (j -= 3), M = F.slice(U, U + j), U += j, U < F.length && (M += "="), _.push(M); } } return _.join(`\r `); } function Cc(m) { for (var k = [], _ = 0; _ < m.length; ++_) { for (var E = m[_]; _ <= m.length && E.charAt(E.length - 1) == "="; ) E = E.slice(0, E.length - 1) + m[++_]; k.push(E); } for (var T = 0; T < k.length; ++T) k[T] = k[T].replace(/[=][0-9A-Fa-f]{2}/g, function(F) { return String.fromCharCode(parseInt(F.slice(1), 16)); }); return Or(k.join(`\r `)); } function Dc(m, k, _) { for (var E = "", T = "", F = "", U, j = 0; j < 10; ++j) { var M = k[j]; if (!M || M.match(/^\s*$/)) break; var W = M.match(/^(.*?):\s*([^\s].*)$/); if (W) switch (W[1].toLowerCase()) { case "content-location": E = W[2].trim(); break; case "content-type": F = W[2].trim(); break; case "content-transfer-encoding": T = W[2].trim(); break; } } switch (++j, T.toLowerCase()) { case "base64": U = Or(Rr(k.slice(j).join(""))); break; case "quoted-printable": U = Cc(k.slice(j)); break; default: throw new Error("Unsupported Content-Transfer-Encoding " + T); } var H = C0(m, E.slice(_.length), U, { unsafe: !0 }); F && (H.ctype = F); } function Oc(m, k) { if (V(m.slice(0, 13)).toLowerCase() != "mime-version:") throw new Error("Unsupported MAD header"); var _ = k && k.root || "", E = (Te && Buffer.isBuffer(m) ? m.toString("binary") : V(m)).split(`\r `), T = 0, F = ""; for (T = 0; T < E.length; ++T) if (F = E[T], !!/^Content-Location:/i.test(F) && (F = F.slice(F.indexOf("file")), _ || (_ = F.slice(0, F.lastIndexOf("/") + 1)), F.slice(0, _.length) != _)) for (; _.length > 0 && (_ = _.slice(0, _.length - 1), _ = _.slice(0, _.lastIndexOf("/") + 1), F.slice(0, _.length) != _); ) ; var U = (E[1] || "").match(/boundary="(.*?)"/); if (!U) throw new Error("MAD cannot find boundary"); var j = "--" + (U[1] || ""), M = [], W = [], H = { FileIndex: M, FullPaths: W }; S(H); var Z, se = 0; for (T = 0; T < E.length; ++T) { var ue = E[T]; ue !== j && ue !== j + "--" || (se++ && Dc(H, E.slice(Z, T), _), Z = T); } return H; } function Ic(m, k) { var _ = k || {}, E = _.boundary || "SheetJS"; E = "------=" + E; for (var T = [ "MIME-Version: 1.0", 'Content-Type: multipart/related; boundary="' + E.slice(2) + '"', "", "", "" ], F = m.FullPaths[0], U = F, j = m.FileIndex[0], M = 1; M < m.FullPaths.length; ++M) if (U = m.FullPaths[M].slice(F.length), j = m.FileIndex[M], !(!j.size || !j.content || U == "Sh33tJ5")) { U = U.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7E-\xFF]/g, function(_e) { return "_x" + _e.charCodeAt(0).toString(16) + "_"; }).replace(/[\u0080-\uFFFF]/g, function(_e) { return "_u" + _e.charCodeAt(0).toString(16) + "_"; }); for (var W = j.content, H = Te && Buffer.isBuffer(W) ? W.toString("binary") : V(W), Z = 0, se = Math.min(1024, H.length), ue = 0, ee = 0; ee <= se; ++ee) (ue = H.charCodeAt(ee)) >= 32 && ue < 128 && ++Z; var oe = Z >= se * 4 / 5; T.push(E), T.push("Content-Location: " + (_.root || "file:///C:/SheetJS/") + U), T.push("Content-Transfer-Encoding: " + (oe ? "quoted-printable" : "base64")), T.push("Content-Type: " + Fc(j, U)), T.push(""), T.push(oe ? Ac(H) : yc(H)); } return T.push(E + `--\r `), T.join(`\r `); } function Rc(m) { var k = {}; return S(k, m), k; } function C0(m, k, _, E) { var T = E && E.unsafe; T || S(m); var F = !T && xe.find(m, k); if (!F) { var U = m.FullPaths[0]; k.slice(0, U.length) == U ? U = k : (U.slice(-1) != "/" && (U += "/"), U = (U + k).replace("//", "/")), F = { name: n(k), type: 2 }, m.FileIndex.push(F), m.FullPaths.push(U), T || xe.utils.cfb_gc(m); } return F.content = _, F.size = _ ? _.length : 0, E && (E.CLSID && (F.clsid = E.CLSID), E.mt && (F.mt = E.mt), E.ct && (F.ct = E.ct)), F; } function Nc(m, k) { S(m); var _ = xe.find(m, k); if (_) { for (var E = 0; E < m.FileIndex.length; ++E) if (m.FileIndex[E] == _) return m.FileIndex.splice(E, 1), m.FullPaths.splice(E, 1), !0; } return !1; } function bc(m, k, _) { S(m); var E = xe.find(m, k); if (E) { for (var T = 0; T < m.FileIndex.length; ++T) if (m.FileIndex[T] == E) return m.FileIndex[T].name = n(_), m.FullPaths[T] = _, !0; } return !1; } function Pc(m) { R(m, !0); } return t.find = G, t.read = O, t.parse = l, t.write = ve, t.writeFile = be, t.utils = { cfb_new: Rc, cfb_add: C0, cfb_del: Nc, cfb_mov: bc, cfb_gc: Pc, ReadShift: _a, CheckField: zs, prep_blob: or, bconcat: sr, use_zlib: D, _deflateRaw: Se, _inflateRaw: Yn, consts: ce }, t; }(); function wo(e) { return typeof e == "string" ? w0(e) : Array.isArray(e) ? zc(e) : e; } function Ha(e, t, r) { if (typeof Deno < "u") { if (r && typeof t == "string") switch (r) { case "utf8": t = new TextEncoder(r).encode(t); break; case "binary": t = w0(t); break; default: throw new Error("Unsupported encoding " + r); } return Deno.writeFileSync(e, t); } var a = r == "utf8" ? et(t) : t; if (typeof IE_SaveFile < "u") return IE_SaveFile(a, e); if (typeof Blob < "u") { var n = new Blob([wo(a)], { type: "application/octet-stream" }); if (typeof navigator < "u" && navigator.msSaveBlob) return navigator.msSaveBlob(n, e); if (typeof saveAs < "u") return saveAs(n, e); if (typeof URL < "u" && typeof document < "u" && document.createElement && URL.createObjectURL) { var i = URL.createObjectURL(n); if (typeof chrome == "object" && typeof (chrome.downloads || {}).download == "function") return URL.revokeObjectURL && typeof setTimeout < "u" && setTimeout(function() { URL.revokeObjectURL(i); }, 6e4), chrome.downloads.download({ url: i, filename: e, saveAs: !0 }); var s = document.createElement("a"); if (s.download != null) return s.download = e, s.href = i, document.body.appendChild(s), s.click(), document.body.removeChild(s), URL.revokeObjectURL && typeof setTimeout < "u" && setTimeout(function() { URL.revokeObjectURL(i); }, 6e4), i; } } if (typeof $ < "u" && typeof File < "u" && typeof Folder < "u") try { var f = File(e); return f.open("w"), f.encoding = "binary", Array.isArray(t) && (t = Ft(t)), f.write(t), f.close(), t; } catch (c) { if (!c.message || !c.message.match(/onstruct/)) throw c; } throw new Error("cannot save file " + e); } function Eo(e) { if (typeof Deno < "u") return Deno.readFileSync(e); if (typeof $ < "u" && typeof File < "u" && typeof Folder < "u") try { var t = File(e); t.open("r"), t.encoding = "binary"; var r = t.read(); return t.close(), r; } catch (a) { if (!a.message || !a.message.match(/onstruct/)) throw a; } throw new Error("Cannot access file " + e); } function $e(e) { for (var t = Object.keys(e), r = [], a = 0; a < t.length; ++a) Object.prototype.hasOwnProperty.call(e, t[a]) && r.push(t[a]); return r; } function ci(e, t) { for (var r = [], a = $e(e), n = 0; n !== a.length; ++n) r[e[a[n]][t]] == null && (r[e[a[n]][t]] = a[n]); return r; } function E0(e) { for (var t = [], r = $e(e), a = 0; a !== r.length; ++a) t[e[r[a]]] = r[a]; return t; } function k0(e) { for (var t = [], r = $e(e), a = 0; a !== r.length; ++a) t[e[r[a]]] = parseInt(r[a], 10); return t; } function ko(e) { for (var t = [], r = $e(e), a = 0; a !== r.length; ++a) t[e[r[a]]] == null && (t[e[r[a]]] = []), t[e[r[a]]].push(r[a]); return t; } var u0 = /* @__PURE__ */ new Date(1899, 11, 30, 0, 0, 0); function nr(e, t) { var r = /* @__PURE__ */ e.getTime(); t && (r -= 1462 * 24 * 60 * 60 * 1e3); var a = /* @__PURE__ */ u0.getTime() + (/* @__PURE__ */ e.getTimezoneOffset() - /* @__PURE__ */ u0.getTimezoneOffset()) * 6e4; return (r - a) / (24 * 60 * 60 * 1e3); } var Ts = /* @__PURE__ */ new Date(), To = /* @__PURE__ */ u0.getTime() + (/* @__PURE__ */ Ts.getTimezoneOffset() - /* @__PURE__ */ u0.getTimezoneOffset()) * 6e4, oi = /* @__PURE__ */ Ts.getTimezoneOffset(); function T0(e) { var t = /* @__PURE__ */ new Date(); return t.setTime(e * 24 * 60 * 60 * 1e3 + To), t.getTimezoneOffset() !== oi && t.setTime(t.getTime() + (t.getTimezoneOffset() - oi) * 6e4), t; } function So(e) { var t = 0, r = 0, a = !1, n = e.match(/P([0-9\.]+Y)?([0-9\.]+M)?([0-9\.]+D)?T([0-9\.]+H)?([0-9\.]+M)?([0-9\.]+S)?/); if (!n) throw new Error("|" + e + "| is not an ISO8601 Duration"); for (var i = 1; i != n.length; ++i) if (n[i]) { switch (r = 1, i > 3 && (a = !0), n[i].slice(n[i].length - 1)) { case "Y": throw new Error("Unsupported ISO Duration Field: " + n[i].slice(n[i].length - 1)); case "D": r *= 24; case "H": r *= 60; case "M": if (a) r *= 60; else throw new Error("Unsupported ISO Duration Field: M"); } t += r * parseInt(n[i], 10); } return t; } var li = /* @__PURE__ */ new Date("2017-02-19T19:06:09.000Z"), Ss = /* @__PURE__ */ isNaN(/* @__PURE__ */ li.getFullYear()) ? /* @__PURE__ */ new Date("2/19/17") : li, Fo = /* @__PURE__ */ Ss.getFullYear() == 2017; function Ue(e, t) { var r = new Date(e); if (Fo) return t > 0 ? r.setTime(r.getTime() + r.getTimezoneOffset() * 60 * 1e3) : t < 0 && r.setTime(r.getTime() - r.getTimezoneOffset() * 60 * 1e3), r; if (e instanceof Date) return e; if (Ss.getFullYear() == 1917 && !isNaN(r.getFullYear())) { var a = r.getFullYear(); return e.indexOf("" + a) > -1 || r.setFullYear(r.getFullYear() + 100), r; } var n = e.match(/\d+/g) || ["2017", "2", "19", "0", "0", "0"], i = new Date(+n[0], +n[1] - 1, +n[2], +n[3] || 0, +n[4] || 0, +n[5] || 0); return e.indexOf("Z") > -1 && (i = new Date(i.getTime() - i.getTimezoneOffset() * 60 * 1e3)), i; } function Lt(e, t) { if (Te && Buffer.isBuffer(e)) { if (t) { if (e[0] == 255 && e[1] == 254) return et(e.slice(2).toString("utf16le")); if (e[1] == 254 && e[2] == 255) return et(ls(e.slice(2).toString("binary"))); } return e.toString("binary"); } if (typeof TextDecoder < "u") try { if (t) { if (e[0] == 255 && e[1] == 254) return et(new TextDecoder("utf-16le").decode(e.slice(2))); if (e[0] == 254 && e[1] == 255) return et(new TextDecoder("utf-16be").decode(e.slice(2))); } var r = { "€": "€", "‚": "‚", ƒ: "ƒ", "„": "„", "…": "…", "†": "†", "‡": "‡", "ˆ": "ˆ", "‰": "‰", Š: "Š", "‹": "‹", Œ: "Œ", Ž: "Ž", "‘": "‘", "’": "’", "“": "“", "”": "”", "•": "•", "–": "–", "—": "—", "˜": "˜", "™": "™", š: "š", "›": "›", œ: "œ", ž: "ž", Ÿ: "Ÿ" }; return Array.isArray(e) && (e = new Uint8Array(e)), new TextDecoder("latin1").decode(e).replace(/[€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ]/g, function(i) { return r[i] || i; }); } catch { } for (var a = [], n = 0; n != e.length; ++n) a.push(String.fromCharCode(e[n])); return a.join(""); } function We(e) { if (typeof JSON < "u" && !Array.isArray(e)) return JSON.parse(JSON.stringify(e)); if (typeof e != "object" || e == null) return e; if (e instanceof Date) return new Date(e.getTime()); var t = {}; for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = We(e[r])); return t; } function ze(e, t) { for (var r = ""; r.length < t; ) r += e; return r; } function $r(e) { var t = Number(e); if (!isNaN(t)) return isFinite(t) ? t : NaN; if (!/\d/.test(e)) return t; var r = 1, a = e.replace(/([\d]),([\d])/g, "$1$2").replace(/[$]/g, "").replace(/[%]/g, function() { return r *= 100, ""; }); return !isNaN(t = Number(a)) || (a = a.replace(/[(](.*)[)]/, function(n, i) { return r = -r, i; }), !isNaN(t = Number(a))) ? t / r : t; } var yo = ["january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december"]; function aa(e) { var t = new Date(e), r = /* @__PURE__ */ new Date(NaN), a = t.getYear(), n = t.getMonth(), i = t.getDate(); if (isNaN(i)) return r; var s = e.toLowerCase(); if (s.match(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/)) { if (s = s.replace(/[^a-z]/g, "").replace(/([^a-z]|^)[ap]m?([^a-z]|$)/, ""), s.length > 3 && yo.indexOf(s) == -1) return r; } else if (s.match(/[a-z]/)) return r; return a < 0 || a > 8099 ? r : (n > 0 || i > 1) && a != 101 ? t : e.match(/[^-0-9:,\/\\]/) ? r : t; } var Ao = /* @__PURE__ */ function() { var e = "abacaba".split(/(:?b)/i).length == 5; return function(r, a, n) { if (e || typeof a == "string") return r.split(a); for (var i = r.split(a), s = [i[0]], f = 1; f < i.length; ++f) s.push(n), s.push(i[f]); return s; }; }(); function Fs(e) { return e ? e.content && e.type ? Lt(e.content, !0) : e.data ? pa(e.data) : e.asNodeBuffer && Te ? pa(e.asNodeBuffer().toString("binary")) : e.asBinary ? pa(e.asBinary()) : e._data && e._data.getContent ? pa(Lt(Array.prototype.slice.call(e._data.getContent(), 0))) : null : null; } function ys(e) { if (!e) return null; if (e.data) return Zn(e.data); if (e.asNodeBuffer && Te) return e.asNodeBuffer(); if (e._data && e._data.getContent) { var t = e._data.getContent(); return typeof t == "string" ? Zn(t) : Array.prototype.slice.call(t); } return e.content && e.type ? e.content : null; } function Co(e) { return e && e.name.slice(-4) === ".bin" ? ys(e) : Fs(e); } function Wr(e, t) { for (var r = e.FullPaths || $e(e.files), a = t.toLowerCase().replace(/[\/]/g, "\\"), n = a.replace(/\\/g, "/"), i = 0; i < r.length; ++i) { var s = r[i].replace(/^Root Entry[\/]/, "").toLowerCase(); if (a == s || n == s) return e.files ? e.files[r[i]] : e.FileIndex[i]; } return null; } function xn(e, t) { var r = Wr(e, t); if (r == null) throw new Error("Cannot find file " + t + " in zip"); return r; } function er(e, t, r) { if (!r) return Co(xn(e, t)); if (!t) return null; try { return er(e, t); } catch { return null; } } function Ir(e, t, r) { if (!r) return Fs(xn(e, t)); if (!t) return null; try { return Ir(e, t); } catch { return null; } } function As(e, t, r) { if (!r) return ys(xn(e, t)); if (!t) return null; try { return As(e, t); } catch { return null; } } function ui(e) { for (var t = e.FullPaths || $e(e.files), r = [], a = 0; a < t.length; ++a) t[a].slice(-1) != "/" && r.push(t[a].replace(/^Root Entry[\/]/, "")); return r.sort(); } function Ee(e, t, r) { if (e.FullPaths) { if (typeof r == "string") { var a; return Te ? a = ut(r) : a = jc(r), xe.utils.cfb_add(e, t, a); } xe.utils.cfb_add(e, t, r); } else e.file(t, r); } function dn() { return xe.utils.cfb_new(); } function Cs(e, t) { switch (t.type) { case "base64": return xe.read(e, { type: "base64" }); case "binary": return xe.read(e, { type: "binary" }); case "buffer": case "array": return xe.read(e, { type: "buffer" }); } throw new Error("Unrecognized type " + t.type); } function ga(e, t) { if (e.charAt(0) == "/") return e.slice(1); var r = t.split("/"); t.slice(-1) != "/" && r.pop(); for (var a = e.split("/"); a.length !== 0; ) { var n = a.shift(); n === ".." ? r.pop() : n !== "." && r.push(n); } return r.join("/"); } var Ze = `\r `, Do = /([^"\s?>\/]+)\s*=\s*((?:")([^"]*)(?:")|(?:')([^']*)(?:')|([^'">\s]+))/g, hi = /<[\/\?]?[a-zA-Z0-9:_-]+(?:\s+[^"\s?>\/]+\s*=\s*(?:"[^"]*"|'[^']*'|[^'">\s=]+))*\s*[\/\?]?>/mg, Oo = /<[^>]*>/g, _r = /* @__PURE__ */ Ze.match(hi) ? hi : Oo, Io = /<\w*:/, Ro = /<(\/?)\w+:/; function me(e, t, r) { for (var a = {}, n = 0, i = 0; n !== e.length && !((i = e.charCodeAt(n)) === 32 || i === 10 || i === 13); ++n) ; if (t || (a[0] = e.slice(0, n)), n === e.length) return a; var s = e.match(Do), f = 0, c = "", o = 0, l = "", u = "", h = 1; if (s) for (o = 0; o != s.length; ++o) { for (u = s[o], i = 0; i != u.length && u.charCodeAt(i) !== 61; ++i) ; for (l = u.slice(0, i).trim(); u.charCodeAt(i + 1) == 32; ) ++i; for (h = (n = u.charCodeAt(i + 1)) == 34 || n == 39 ? 1 : 0, c = u.slice(i + 1 + h, u.length - h), f = 0; f != l.length && l.charCodeAt(f) !== 58; ++f) ; if (f === l.length) l.indexOf("_") > 0 && (l = l.slice(0, l.indexOf("_"))), a[l] = c, r || (a[l.toLowerCase()] = c); else { var d = (f === 5 && l.slice(0, 5) === "xmlns" ? "xmlns" : "") + l.slice(f + 1); if (a[d] && l.slice(f - 3, f) == "ext") continue; a[d] = c, r || (a[d.toLowerCase()] = c); } } return a; } function tt(e) { return e.replace(Ro, "<$1"); } var Ds = { """: '"', "'": "'", ">": ">", "<": "<", "&": "&" }, vn = /* @__PURE__ */ E0(Ds), Ce = /* @__PURE__ */ function() { var e = /&(?:quot|apos|gt|lt|amp|#x?([\da-fA-F]+));/ig, t = /_x([\da-fA-F]{4})_/ig; return function r(a) { var n = a + "", i = n.indexOf(" -1 ? 16 : 10)) || f; }).replace(t, function(f, c) { return String.fromCharCode(parseInt(c, 16)); }); var s = n.indexOf("]]>"); return r(n.slice(0, i)) + n.slice(i + 9, s) + r(n.slice(s + 3)); }; }(), pn = /[&<>'"]/g, No = /[\u0000-\u0008\u000b-\u001f]/g; function Ne(e) { var t = e + ""; return t.replace(pn, function(r) { return vn[r]; }).replace(No, function(r) { return "_x" + ("000" + r.charCodeAt(0).toString(16)).slice(-4) + "_"; }); } function xi(e) { return Ne(e).replace(/ /g, "_x0020_"); } var Os = /[\u0000-\u001f]/g; function mn(e) { var t = e + ""; return t.replace(pn, function(r) { return vn[r]; }).replace(/\n/g, "
").replace(Os, function(r) { return "&#x" + ("000" + r.charCodeAt(0).toString(16)).slice(-4) + ";"; }); } function bo(e) { var t = e + ""; return t.replace(pn, function(r) { return vn[r]; }).replace(Os, function(r) { return "&#x" + r.charCodeAt(0).toString(16).toUpperCase() + ";"; }); } var di = /* @__PURE__ */ function() { var e = /&#(\d+);/g; function t(r, a) { return String.fromCharCode(parseInt(a, 10)); } return function(a) { return a.replace(e, t); }; }(); function Po(e) { return e.replace(/(\r\n|[\r\n])/g, " "); } function Me(e) { switch (e) { case 1: case !0: case "1": case "true": case "TRUE": return !0; default: return !1; } } function N0(e) { for (var t = "", r = 0, a = 0, n = 0, i = 0, s = 0, f = 0; r < e.length; ) { if (a = e.charCodeAt(r++), a < 128) { t += String.fromCharCode(a); continue; } if (n = e.charCodeAt(r++), a > 191 && a < 224) { s = (a & 31) << 6, s |= n & 63, t += String.fromCharCode(s); continue; } if (i = e.charCodeAt(r++), a < 240) { t += String.fromCharCode((a & 15) << 12 | (n & 63) << 6 | i & 63); continue; } s = e.charCodeAt(r++), f = ((a & 7) << 18 | (n & 63) << 12 | (i & 63) << 6 | s & 63) - 65536, t += String.fromCharCode(55296 + (f >>> 10 & 1023)), t += String.fromCharCode(56320 + (f & 1023)); } return t; } function vi(e) { var t = Et(2 * e.length), r, a, n = 1, i = 0, s = 0, f; for (a = 0; a < e.length; a += n) n = 1, (f = e.charCodeAt(a)) < 128 ? r = f : f < 224 ? (r = (f & 31) * 64 + (e.charCodeAt(a + 1) & 63), n = 2) : f < 240 ? (r = (f & 15) * 4096 + (e.charCodeAt(a + 1) & 63) * 64 + (e.charCodeAt(a + 2) & 63), n = 3) : (n = 4, r = (f & 7) * 262144 + (e.charCodeAt(a + 1) & 63) * 4096 + (e.charCodeAt(a + 2) & 63) * 64 + (e.charCodeAt(a + 3) & 63), r -= 65536, s = 55296 + (r >>> 10 & 1023), r = 56320 + (r & 1023)), s !== 0 && (t[i++] = s & 255, t[i++] = s >>> 8, s = 0), t[i++] = r % 256, t[i++] = r >>> 8; return t.slice(0, i).toString("ucs2"); } function pi(e) { return ut(e, "binary").toString("utf8"); } var qa = "foo bar baz☃🍣", Pe = Te && (/* @__PURE__ */ pi(qa) == /* @__PURE__ */ N0(qa) && pi || /* @__PURE__ */ vi(qa) == /* @__PURE__ */ N0(qa) && vi) || N0, et = Te ? function(e) { return ut(e, "utf8").toString("binary"); } : function(e) { for (var t = [], r = 0, a = 0, n = 0; r < e.length; ) switch (a = e.charCodeAt(r++), !0) { case a < 128: t.push(String.fromCharCode(a)); break; case a < 2048: t.push(String.fromCharCode(192 + (a >> 6))), t.push(String.fromCharCode(128 + (a & 63))); break; case (a >= 55296 && a < 57344): a -= 55296, n = e.charCodeAt(r++) - 56320 + (a << 10), t.push(String.fromCharCode(240 + (n >> 18 & 7))), t.push(String.fromCharCode(144 + (n >> 12 & 63))), t.push(String.fromCharCode(128 + (n >> 6 & 63))), t.push(String.fromCharCode(128 + (n & 63))); break; default: t.push(String.fromCharCode(224 + (a >> 12))), t.push(String.fromCharCode(128 + (a >> 6 & 63))), t.push(String.fromCharCode(128 + (a & 63))); } return t.join(""); }, Da = /* @__PURE__ */ function() { var e = {}; return function(r, a) { var n = r + "|" + (a || ""); return e[n] ? e[n] : e[n] = new RegExp("<(?:\\w+:)?" + r + '(?: xml:space="preserve")?(?:[^>]*)>([\\s\\S]*?)", a || ""); }; }(), Is = /* @__PURE__ */ function() { var e = [ ["nbsp", " "], ["middot", "·"], ["quot", '"'], ["apos", "'"], ["gt", ">"], ["lt", "<"], ["amp", "&"] ].map(function(t) { return [new RegExp("&" + t[0] + ";", "ig"), t[1]]; }); return function(r) { for (var a = r.replace(/^[\t\n\r ]+/, "").replace(/[\t\n\r ]+$/, "").replace(/>\s+/g, ">").replace(/\s+/g, ` `).replace(/<[^>]*>/g, ""), n = 0; n < e.length; ++n) a = a.replace(e[n][0], e[n][1]); return a; }; }(), Lo = /* @__PURE__ */ function() { var e = {}; return function(r) { return e[r] !== void 0 ? e[r] : e[r] = new RegExp("<(?:vt:)?" + r + ">([\\s\\S]*?)", "g"); }; }(), Bo = /<\/?(?:vt:)?variant>/g, Mo = /<(?:vt:)([^>]*)>([\s\S]*)" + t + ""; } function Oa(e) { return $e(e).map(function(t) { return " " + t + '="' + e[t] + '"'; }).join(""); } function ae(e, t, r) { return "<" + e + (r != null ? Oa(r) : "") + (t != null ? (t.match(Rs) ? ' xml:space="preserve"' : "") + ">" + t + ""; } function j0(e, t) { try { return e.toISOString().replace(/\.\d*/, ""); } catch (r) { if (t) throw r; } return ""; } function Uo(e, t) { switch (typeof e) { case "string": var r = ae("vt:lpwstr", Ne(e)); return t && (r = r.replace(/"/g, "_x0022_")), r; case "number": return ae((e | 0) == e ? "vt:i4" : "vt:r8", Ne(String(e))); case "boolean": return ae("vt:bool", e ? "true" : "false"); } if (e instanceof Date) return ae("vt:filetime", j0(e)); throw new Error("Unable to serialize " + e); } function gn(e) { if (Te && /*::typeof Buffer !== "undefined" && d != null && d instanceof Buffer &&*/ Buffer.isBuffer(e)) return e.toString("utf8"); if (typeof e == "string") return e; if (typeof Uint8Array < "u" && e instanceof Uint8Array) return Pe(Ft(ln(e))); throw new Error("Bad input format: expected Buffer or string"); } var Ia = /<(\/?)([^\s?>:\/]+)(?:[\s?:\/][^>]*)?>/mg, ar = { CORE_PROPS: "http://schemas.openxmlformats.org/package/2006/metadata/core-properties", CUST_PROPS: "http://schemas.openxmlformats.org/officeDocument/2006/custom-properties", EXT_PROPS: "http://schemas.openxmlformats.org/officeDocument/2006/extended-properties", CT: "http://schemas.openxmlformats.org/package/2006/content-types", RELS: "http://schemas.openxmlformats.org/package/2006/relationships", TCMNT: "http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments", dc: "http://purl.org/dc/elements/1.1/", dcterms: "http://purl.org/dc/terms/", dcmitype: "http://purl.org/dc/dcmitype/", mx: "http://schemas.microsoft.com/office/mac/excel/2008/main", r: "http://schemas.openxmlformats.org/officeDocument/2006/relationships", sjs: "http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties", vt: "http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes", xsi: "http://www.w3.org/2001/XMLSchema-instance", xsd: "http://www.w3.org/2001/XMLSchema" }, Vt = [ "http://schemas.openxmlformats.org/spreadsheetml/2006/main", "http://purl.oclc.org/ooxml/spreadsheetml/main", "http://schemas.microsoft.com/office/excel/2006/main", "http://schemas.microsoft.com/office/excel/2006/2" ], Cr = { o: "urn:schemas-microsoft-com:office:office", x: "urn:schemas-microsoft-com:office:excel", ss: "urn:schemas-microsoft-com:office:spreadsheet", dt: "uuid:C2F41010-65B3-11d1-A29F-00AA00C14882", mv: "http://macVmlSchemaUri", v: "urn:schemas-microsoft-com:vml", html: "http://www.w3.org/TR/REC-html40" }; function Wo(e, t) { for (var r = 1 - 2 * (e[t + 7] >>> 7), a = ((e[t + 7] & 127) << 4) + (e[t + 6] >>> 4 & 15), n = e[t + 6] & 15, i = 5; i >= 0; --i) n = n * 256 + e[t + i]; return a == 2047 ? n == 0 ? r * (1 / 0) : NaN : (a == 0 ? a = -1022 : (a -= 1023, n += Math.pow(2, 52)), r * Math.pow(2, a - 52) * n); } function Ho(e, t, r) { var a = (t < 0 || 1 / t == -1 / 0 ? 1 : 0) << 7, n = 0, i = 0, s = a ? -t : t; isFinite(s) ? s == 0 ? n = i = 0 : (n = Math.floor(Math.log(s) / Math.LN2), i = s * Math.pow(2, 52 - n), n <= -1023 && (!isFinite(i) || i < Math.pow(2, 52)) ? n = -1022 : (i -= Math.pow(2, 52), n += 1023)) : (n = 2047, i = isNaN(t) ? 26985 : 0); for (var f = 0; f <= 5; ++f, i /= 256) e[r + f] = i & 255; e[r + 6] = (n & 15) << 4 | i & 15, e[r + 7] = n >> 4 | a; } var gi = function(e) { for (var t = [], r = 10240, a = 0; a < e[0].length; ++a) if (e[0][a]) for (var n = 0, i = e[0][a].length; n < i; n += r) t.push.apply(t, e[0][a].slice(n, n + r)); return t; }, _i = Te ? function(e) { return e[0].length > 0 && Buffer.isBuffer(e[0][0]) ? Buffer.concat(e[0].map(function(t) { return Buffer.isBuffer(t) ? t : ut(t); })) : gi(e); } : gi, wi = function(e, t, r) { for (var a = [], n = t; n < r; n += 2) a.push(String.fromCharCode(ft(e, n))); return a.join("").replace(Tr, ""); }, _n = Te ? function(e, t, r) { return Buffer.isBuffer(e) ? e.toString("utf16le", t, r).replace(Tr, "") : wi(e, t, r); } : wi, Ei = function(e, t, r) { for (var a = [], n = t; n < t + r; ++n) a.push(("0" + e[n].toString(16)).slice(-2)); return a.join(""); }, Ns = Te ? function(e, t, r) { return Buffer.isBuffer(e) ? e.toString("hex", t, t + r) : Ei(e, t, r); } : Ei, ki = function(e, t, r) { for (var a = [], n = t; n < r; n++) a.push(String.fromCharCode(qt(e, n))); return a.join(""); }, Va = Te ? function(t, r, a) { return Buffer.isBuffer(t) ? t.toString("utf8", r, a) : ki(t, r, a); } : ki, bs = function(e, t) { var r = Dr(e, t); return r > 0 ? Va(e, t + 4, t + 4 + r - 1) : ""; }, Ps = bs, Ls = function(e, t) { var r = Dr(e, t); return r > 0 ? Va(e, t + 4, t + 4 + r - 1) : ""; }, Bs = Ls, Ms = function(e, t) { var r = 2 * Dr(e, t); return r > 0 ? Va(e, t + 4, t + 4 + r - 1) : ""; }, Us = Ms, Ws = function(t, r) { var a = Dr(t, r); return a > 0 ? _n(t, r + 4, r + 4 + a) : ""; }, Hs = Ws, Vs = function(e, t) { var r = Dr(e, t); return r > 0 ? Va(e, t + 4, t + 4 + r) : ""; }, Gs = Vs, Xs = function(e, t) { return Wo(e, t); }, h0 = Xs, wn = function(t) { return Array.isArray(t) || typeof Uint8Array < "u" && t instanceof Uint8Array; }; Te && (Ps = function(t, r) { if (!Buffer.isBuffer(t)) return bs(t, r); var a = t.readUInt32LE(r); return a > 0 ? t.toString("utf8", r + 4, r + 4 + a - 1) : ""; }, Bs = function(t, r) { if (!Buffer.isBuffer(t)) return Ls(t, r); var a = t.readUInt32LE(r); return a > 0 ? t.toString("utf8", r + 4, r + 4 + a - 1) : ""; }, Us = function(t, r) { if (!Buffer.isBuffer(t)) return Ms(t, r); var a = 2 * t.readUInt32LE(r); return t.toString("utf16le", r + 4, r + 4 + a - 1); }, Hs = function(t, r) { if (!Buffer.isBuffer(t)) return Ws(t, r); var a = t.readUInt32LE(r); return t.toString("utf16le", r + 4, r + 4 + a); }, Gs = function(t, r) { if (!Buffer.isBuffer(t)) return Vs(t, r); var a = t.readUInt32LE(r); return t.toString("utf8", r + 4, r + 4 + a); }, h0 = function(t, r) { return Buffer.isBuffer(t) ? t.readDoubleLE(r) : Xs(t, r); }, wn = function(t) { return Buffer.isBuffer(t) || Array.isArray(t) || typeof Uint8Array < "u" && t instanceof Uint8Array; }); var qt = function(e, t) { return e[t]; }, ft = function(e, t) { return e[t + 1] * 256 + e[t]; }, Vo = function(e, t) { var r = e[t + 1] * 256 + e[t]; return r < 32768 ? r : (65535 - r + 1) * -1; }, Dr = function(e, t) { return e[t + 3] * (1 << 24) + (e[t + 2] << 16) + (e[t + 1] << 8) + e[t]; }, Ot = function(e, t) { return e[t + 3] << 24 | e[t + 2] << 16 | e[t + 1] << 8 | e[t]; }, Go = function(e, t) { return e[t] << 24 | e[t + 1] << 16 | e[t + 2] << 8 | e[t + 3]; }; function _a(e, t) { var r = "", a, n, i = [], s, f, c, o; switch (t) { case "dbcs": if (o = this.l, Te && Buffer.isBuffer(this)) r = this.slice(this.l, this.l + 2 * e).toString("utf16le"); else for (c = 0; c < e; ++c) r += String.fromCharCode(ft(this, o)), o += 2; e *= 2; break; case "utf8": r = Va(this, this.l, this.l + e); break; case "utf16le": e *= 2, r = _n(this, this.l, this.l + e); break; case "wstr": return _a.call(this, e, "dbcs"); case "lpstr-ansi": r = Ps(this, this.l), e = 4 + Dr(this, this.l); break; case "lpstr-cp": r = Bs(this, this.l), e = 4 + Dr(this, this.l); break; case "lpwstr": r = Us(this, this.l), e = 4 + 2 * Dr(this, this.l); break; case "lpp4": e = 4 + Dr(this, this.l), r = Hs(this, this.l), e & 2 && (e += 2); break; case "8lpp4": e = 4 + Dr(this, this.l), r = Gs(this, this.l), e & 3 && (e += 4 - (e & 3)); break; case "cstr": for (e = 0, r = ""; (s = qt(this, this.l + e++)) !== 0; ) i.push(Ja(s)); r = i.join(""); break; case "_wstr": for (e = 0, r = ""; (s = ft(this, this.l + e)) !== 0; ) i.push(Ja(s)), e += 2; e += 2, r = i.join(""); break; case "dbcs-cont": for (r = "", o = this.l, c = 0; c < e; ++c) { if (this.lens && this.lens.indexOf(o) !== -1) return s = qt(this, o), this.l = o + 1, f = _a.call(this, e - c, s ? "dbcs-cont" : "sbcs-cont"), i.join("") + f; i.push(Ja(ft(this, o))), o += 2; } r = i.join(""), e *= 2; break; case "cpstr": case "sbcs-cont": for (r = "", o = this.l, c = 0; c != e; ++c) { if (this.lens && this.lens.indexOf(o) !== -1) return s = qt(this, o), this.l = o + 1, f = _a.call(this, e - c, s ? "dbcs-cont" : "sbcs-cont"), i.join("") + f; i.push(Ja(qt(this, o))), o += 1; } r = i.join(""); break; default: switch (e) { case 1: return a = qt(this, this.l), this.l++, a; case 2: return a = (t === "i" ? Vo : ft)(this, this.l), this.l += 2, a; case 4: case -4: return t === "i" || !(this[this.l + 3] & 128) ? (a = (e > 0 ? Ot : Go)(this, this.l), this.l += 4, a) : (n = Dr(this, this.l), this.l += 4, n); case 8: case -8: if (t === "f") return e == 8 ? n = h0(this, this.l) : n = h0([this[this.l + 7], this[this.l + 6], this[this.l + 5], this[this.l + 4], this[this.l + 3], this[this.l + 2], this[this.l + 1], this[this.l + 0]], 0), this.l += 8, n; e = 8; case 16: r = Ns(this, this.l, e); break; } } return this.l += e, r; } var Xo = function(e, t, r) { e[r] = t & 255, e[r + 1] = t >>> 8 & 255, e[r + 2] = t >>> 16 & 255, e[r + 3] = t >>> 24 & 255; }, zo = function(e, t, r) { e[r] = t & 255, e[r + 1] = t >> 8 & 255, e[r + 2] = t >> 16 & 255, e[r + 3] = t >> 24 & 255; }, jo = function(e, t, r) { e[r] = t & 255, e[r + 1] = t >>> 8 & 255; }; function $o(e, t, r) { var a = 0, n = 0; if (r === "dbcs") { for (n = 0; n != t.length; ++n) jo(this, t.charCodeAt(n), this.l + 2 * n); a = 2 * t.length; } else if (r === "sbcs") { for (t = t.replace(/[^\x00-\x7F]/g, "_"), n = 0; n != t.length; ++n) this[this.l + n] = t.charCodeAt(n) & 255; a = t.length; } else if (r === "hex") { for (; n < e; ++n) this[this.l++] = parseInt(t.slice(2 * n, 2 * n + 2), 16) || 0; return this; } else if (r === "utf16le") { var i = Math.min(this.l + e, this.length); for (n = 0; n < Math.min(t.length, e); ++n) { var s = t.charCodeAt(n); this[this.l++] = s & 255, this[this.l++] = s >> 8; } for (; this.l < i; ) this[this.l++] = 0; return this; } else switch (e) { case 1: a = 1, this[this.l] = t & 255; break; case 2: a = 2, this[this.l] = t & 255, t >>>= 8, this[this.l + 1] = t & 255; break; case 3: a = 3, this[this.l] = t & 255, t >>>= 8, this[this.l + 1] = t & 255, t >>>= 8, this[this.l + 2] = t & 255; break; case 4: a = 4, Xo(this, t, this.l); break; case 8: if (a = 8, r === "f") { Ho(this, t, this.l); break; } case 16: break; case -4: a = 4, zo(this, t, this.l); break; } return this.l += a, this; } function zs(e, t) { var r = Ns(this, this.l, e.length >> 1); if (r !== e) throw new Error(t + "Expected " + e + " saw " + r); this.l += e.length >> 1; } function or(e, t) { e.l = t, e.read_shift = /*::(*/ _a, e.chk = zs, e.write_shift = $o; } function gr(e, t) { e.l += t; } function z(e) { var t = Et(e); return or(t, 0), t; } function ht(e, t, r) { if (e) { var a, n, i; or(e, e.l || 0); for (var s = e.length, f = 0, c = 0; e.l < s; ) { f = e.read_shift(1), f & 128 && (f = (f & 127) + ((e.read_shift(1) & 127) << 7)); var o = Ba[f] || Ba[65535]; for (a = e.read_shift(1), i = a & 127, n = 1; n < 4 && a & 128; ++n) i += ((a = e.read_shift(1)) & 127) << 7 * n; c = e.l + i; var l = o.f && o.f(e, i, r); if (e.l = c, t(l, o, f)) return; } } } function Fr() { var e = [], t = Te ? 256 : 2048, r = function(o) { var l = z(o); return or(l, 0), l; }, a = r(t), n = function() { a && (a.length > a.l && (a = a.slice(0, a.l), a.l = a.length), a.length > 0 && e.push(a), a = null); }, i = function(o) { return a && o < a.length - a.l ? a : (n(), a = r(Math.max(o + 1, t))); }, s = function() { return n(), sr(e); }, f = function(o) { n(), a = o, a.l == null && (a.l = a.length), i(t); }; return { next: i, push: f, end: s, _bufs: e }; } function Y(e, t, r, a) { var n = +t, i; if (!isNaN(n)) { a || (a = Ba[n].p || (r || []).length || 0), i = 1 + (n >= 128 ? 1 : 0) + 1, a >= 128 && ++i, a >= 16384 && ++i, a >= 2097152 && ++i; var s = e.next(i); n <= 127 ? s.write_shift(1, n) : (s.write_shift(1, (n & 127) + 128), s.write_shift(1, n >> 7)); for (var f = 0; f != 4; ++f) if (a >= 128) s.write_shift(1, (a & 127) + 128), a >>= 7; else { s.write_shift(1, a); break; } /*:: length != null &&*/ a > 0 && wn(r) && e.push(r); } } function wa(e, t, r) { var a = We(e); if (t.s ? (a.cRel && (a.c += t.s.c), a.rRel && (a.r += t.s.r)) : (a.cRel && (a.c += t.c), a.rRel && (a.r += t.r)), !r || r.biff < 12) { for (; a.c >= 256; ) a.c -= 256; for (; a.r >= 65536; ) a.r -= 65536; } return a; } function Ti(e, t, r) { var a = We(e); return a.s = wa(a.s, t.s, r), a.e = wa(a.e, t.s, r), a; } function Ea(e, t) { if (e.cRel && e.c < 0) for (e = We(e); e.c < 0; ) e.c += t > 8 ? 16384 : 256; if (e.rRel && e.r < 0) for (e = We(e); e.r < 0; ) e.r += t > 8 ? 1048576 : t > 5 ? 65536 : 16384; var r = pe(e); return !e.cRel && e.cRel != null && (r = Jo(r)), !e.rRel && e.rRel != null && (r = Ko(r)), r; } function b0(e, t) { return e.s.r == 0 && !e.s.rRel && e.e.r == (t.biff >= 12 ? 1048575 : t.biff >= 8 ? 65536 : 16384) && !e.e.rRel ? (e.s.cRel ? "" : "$") + Ge(e.s.c) + ":" + (e.e.cRel ? "" : "$") + Ge(e.e.c) : e.s.c == 0 && !e.s.cRel && e.e.c == (t.biff >= 12 ? 16383 : 255) && !e.e.cRel ? (e.s.rRel ? "" : "$") + qe(e.s.r) + ":" + (e.e.rRel ? "" : "$") + qe(e.e.r) : Ea(e.s, t.biff) + ":" + Ea(e.e, t.biff); } function En(e) { return parseInt(Yo(e), 10) - 1; } function qe(e) { return "" + (e + 1); } function Ko(e) { return e.replace(/([A-Z]|^)(\d+)$/, "$1$$$2"); } function Yo(e) { return e.replace(/\$(\d+)$/, "$1"); } function kn(e) { for (var t = qo(e), r = 0, a = 0; a !== t.length; ++a) r = 26 * r + t.charCodeAt(a) - 64; return r - 1; } function Ge(e) { if (e < 0) throw new Error("invalid column " + e); var t = ""; for (++e; e; e = Math.floor((e - 1) / 26)) t = String.fromCharCode((e - 1) % 26 + 65) + t; return t; } function Jo(e) { return e.replace(/^([A-Z])/, "$$$1"); } function qo(e) { return e.replace(/^\$([A-Z])/, "$1"); } function Zo(e) { return e.replace(/(\$?[A-Z]*)(\$?\d*)/, "$1,$2").split(","); } function Xe(e) { for (var t = 0, r = 0, a = 0; a < e.length; ++a) { var n = e.charCodeAt(a); n >= 48 && n <= 57 ? t = 10 * t + (n - 48) : n >= 65 && n <= 90 && (r = 26 * r + (n - 64)); } return { c: r - 1, r: t - 1 }; } function pe(e) { for (var t = e.c + 1, r = ""; t; t = (t - 1) / 26 | 0) r = String.fromCharCode((t - 1) % 26 + 65) + r; return r + (e.r + 1); } function yr(e) { var t = e.indexOf(":"); return t == -1 ? { s: Xe(e), e: Xe(e) } : { s: Xe(e.slice(0, t)), e: Xe(e.slice(t + 1)) }; } function we(e, t) { return typeof t > "u" || typeof t == "number" ? we(e.s, e.e) : (typeof e != "string" && (e = pe(e)), typeof t != "string" && (t = pe(t)), e == t ? e : e + ":" + t); } function De(e) { var t = { s: { c: 0, r: 0 }, e: { c: 0, r: 0 } }, r = 0, a = 0, n = 0, i = e.length; for (r = 0; a < i && !((n = e.charCodeAt(a) - 64) < 1 || n > 26); ++a) r = 26 * r + n; for (t.s.c = --r, r = 0; a < i && !((n = e.charCodeAt(a) - 48) < 0 || n > 9); ++a) r = 10 * r + n; if (t.s.r = --r, a === i || n != 10) return t.e.c = t.s.c, t.e.r = t.s.r, t; for (++a, r = 0; a != i && !((n = e.charCodeAt(a) - 64) < 1 || n > 26); ++a) r = 26 * r + n; for (t.e.c = --r, r = 0; a != i && !((n = e.charCodeAt(a) - 48) < 0 || n > 9); ++a) r = 10 * r + n; return t.e.r = --r, t; } function Si(e, t) { var r = e.t == "d" && t instanceof Date; if (e.z != null) try { return e.w = Nr(e.z, r ? nr(t) : t); } catch { } try { return e.w = Nr((e.XF || {}).numFmtId || (r ? 14 : 0), r ? nr(t) : t); } catch { return "" + t; } } function lt(e, t, r) { return e == null || e.t == null || e.t == "z" ? "" : e.w !== void 0 ? e.w : (e.t == "d" && !e.z && r && r.dateNF && (e.z = r.dateNF), e.t == "e" ? xt[e.v] || e.v : t == null ? Si(e, e.v) : Si(e, t)); } function yt(e, t) { var r = t && t.sheet ? t.sheet : "Sheet1", a = {}; return a[r] = e, { SheetNames: [r], Sheets: a }; } function js(e, t, r) { var a = r || {}, n = e ? Array.isArray(e) : a.dense, i = e || (n ? [] : {}), s = 0, f = 0; if (i && a.origin != null) { if (typeof a.origin == "number") s = a.origin; else { var c = typeof a.origin == "string" ? Xe(a.origin) : a.origin; s = c.r, f = c.c; } i["!ref"] || (i["!ref"] = "A1:A1"); } var o = { s: { c: 1e7, r: 1e7 }, e: { c: 0, r: 0 } }; if (i["!ref"]) { var l = De(i["!ref"]); o.s.c = l.s.c, o.s.r = l.s.r, o.e.c = Math.max(o.e.c, l.e.c), o.e.r = Math.max(o.e.r, l.e.r), s == -1 && (o.e.r = s = l.e.r + 1); } for (var u = 0; u != t.length; ++u) if (t[u]) { if (!Array.isArray(t[u])) throw new Error("aoa_to_sheet expects an array of arrays"); for (var h = 0; h != t[u].length; ++h) if (!(typeof t[u][h] > "u")) { var d = { v: t[u][h] }, v = s + u, x = f + h; if (o.s.r > v && (o.s.r = v), o.s.c > x && (o.s.c = x), o.e.r < v && (o.e.r = v), o.e.c < x && (o.e.c = x), t[u][h] && typeof t[u][h] == "object" && !Array.isArray(t[u][h]) && !(t[u][h] instanceof Date)) d = t[u][h]; else if (Array.isArray(d.v) && (d.f = t[u][h][1], d.v = d.v[0]), d.v === null) if (d.f) d.t = "n"; else if (a.nullError) d.t = "e", d.v = 0; else if (a.sheetStubs) d.t = "z"; else continue; else typeof d.v == "number" ? d.t = "n" : typeof d.v == "boolean" ? d.t = "b" : d.v instanceof Date ? (d.z = a.dateNF || de[14], a.cellDates ? (d.t = "d", d.w = Nr(d.z, nr(d.v))) : (d.t = "n", d.v = nr(d.v), d.w = Nr(d.z, d.v))) : d.t = "s"; if (n) i[v] || (i[v] = []), i[v][x] && i[v][x].z && (d.z = i[v][x].z), i[v][x] = d; else { var p = pe({ c: x, r: v }); i[p] && i[p].z && (d.z = i[p].z), i[p] = d; } } } return o.s.c < 1e7 && (i["!ref"] = we(o)), i; } function fa(e, t) { return js(null, e, t); } function Qo(e) { return e.read_shift(4, "i"); } function Kr(e, t) { return t || (t = z(4)), t.write_shift(4, e), t; } function mr(e) { var t = e.read_shift(4); return t === 0 ? "" : e.read_shift(t, "dbcs"); } function fr(e, t) { var r = !1; return t == null && (r = !0, t = z(4 + 2 * e.length)), t.write_shift(4, e.length), e.length > 0 && t.write_shift(0, e, "dbcs"), r ? t.slice(0, t.l) : t; } function el(e) { return { ich: e.read_shift(2), ifnt: e.read_shift(2) }; } function rl(e, t) { return t || (t = z(4)), t.write_shift(2, e.ich || 0), t.write_shift(2, e.ifnt || 0), t; } function Tn(e, t) { var r = e.l, a = e.read_shift(1), n = mr(e), i = [], s = { t: n, h: n }; if (a & 1) { for (var f = e.read_shift(4), c = 0; c != f; ++c) i.push(el(e)); s.r = i; } else s.r = [{ ich: 0, ifnt: 0 }]; return e.l = r + t, s; } function tl(e, t) { var r = !1; return t == null && (r = !0, t = z(15 + 4 * e.t.length)), t.write_shift(1, 0), fr(e.t, t), r ? t.slice(0, t.l) : t; } var al = Tn; function nl(e, t) { var r = !1; return t == null && (r = !0, t = z(23 + 4 * e.t.length)), t.write_shift(1, 1), fr(e.t, t), t.write_shift(4, 1), rl({ ich: 0, ifnt: 0 }, t), r ? t.slice(0, t.l) : t; } function Gr(e) { var t = e.read_shift(4), r = e.read_shift(2); return r += e.read_shift(1) << 16, e.l++, { c: t, iStyleRef: r }; } function Gt(e, t) { return t == null && (t = z(8)), t.write_shift(-4, e.c), t.write_shift(3, e.iStyleRef || e.s), t.write_shift(1, 0), t; } function Xt(e) { var t = e.read_shift(2); return t += e.read_shift(1) << 16, e.l++, { c: -1, iStyleRef: t }; } function zt(e, t) { return t == null && (t = z(4)), t.write_shift(3, e.iStyleRef || e.s), t.write_shift(1, 0), t; } var il = mr, $s = fr; function Sn(e) { var t = e.read_shift(4); return t === 0 || t === 4294967295 ? "" : e.read_shift(t, "dbcs"); } function x0(e, t) { var r = !1; return t == null && (r = !0, t = z(127)), t.write_shift(4, e.length > 0 ? e.length : 4294967295), e.length > 0 && t.write_shift(0, e, "dbcs"), r ? t.slice(0, t.l) : t; } var sl = mr, $0 = Sn, Fn = x0; function yn(e) { var t = e.slice(e.l, e.l + 4), r = t[0] & 1, a = t[0] & 2; e.l += 4; var n = a === 0 ? h0([0, 0, 0, 0, t[0] & 252, t[1], t[2], t[3]], 0) : Ot(t, 0) >> 2; return r ? n / 100 : n; } function Ks(e, t) { t == null && (t = z(4)); var r = 0, a = 0, n = e * 100; if (e == (e | 0) && e >= -(1 << 29) && e < 1 << 29 ? a = 1 : n == (n | 0) && n >= -(1 << 29) && n < 1 << 29 && (a = 1, r = 1), a) t.write_shift(-4, ((r ? n : e) << 2) + (r + 2)); else throw new Error("unsupported RkNumber " + e); } function Ys(e) { var t = { s: {}, e: {} }; return t.s.r = e.read_shift(4), t.e.r = e.read_shift(4), t.s.c = e.read_shift(4), t.e.c = e.read_shift(4), t; } function fl(e, t) { return t || (t = z(16)), t.write_shift(4, e.s.r), t.write_shift(4, e.e.r), t.write_shift(4, e.s.c), t.write_shift(4, e.e.c), t; } var jt = Ys, ca = fl; function pr(e) { if (e.length - e.l < 8) throw "XLS Xnum Buffer underflow"; return e.read_shift(8, "f"); } function Bt(e, t) { return (t || z(8)).write_shift(8, e, "f"); } function cl(e) { var t = {}, r = e.read_shift(1), a = r >>> 1, n = e.read_shift(1), i = e.read_shift(2, "i"), s = e.read_shift(1), f = e.read_shift(1), c = e.read_shift(1); switch (e.l++, a) { case 0: t.auto = 1; break; case 1: t.index = n; var o = It[n]; o && (t.rgb = Na(o)); break; case 2: t.rgb = Na([s, f, c]); break; case 3: t.theme = n; break; } return i != 0 && (t.tint = i > 0 ? i / 32767 : i / 32768), t; } function d0(e, t) { if (t || (t = z(8)), !e || e.auto) return t.write_shift(4, 0), t.write_shift(4, 0), t; e.index != null ? (t.write_shift(1, 2), t.write_shift(1, e.index)) : e.theme != null ? (t.write_shift(1, 6), t.write_shift(1, e.theme)) : (t.write_shift(1, 5), t.write_shift(1, 0)); var r = e.tint || 0; if (r > 0 ? r *= 32767 : r < 0 && (r *= 32768), t.write_shift(2, r), !e.rgb || e.theme != null) t.write_shift(2, 0), t.write_shift(1, 0), t.write_shift(1, 0); else { var a = e.rgb || "FFFFFF"; typeof a == "number" && (a = ("000000" + a.toString(16)).slice(-6)), t.write_shift(1, parseInt(a.slice(0, 2), 16)), t.write_shift(1, parseInt(a.slice(2, 4), 16)), t.write_shift(1, parseInt(a.slice(4, 6), 16)), t.write_shift(1, 255); } return t; } function ol(e) { var t = e.read_shift(1); e.l++; var r = { fBold: t & 1, fItalic: t & 2, fUnderline: t & 4, fStrikeout: t & 8, fOutline: t & 16, fShadow: t & 32, fCondense: t & 64, fExtend: t & 128 }; return r; } function ll(e, t) { t || (t = z(2)); var r = (e.italic ? 2 : 0) | (e.strike ? 8 : 0) | (e.outline ? 16 : 0) | (e.shadow ? 32 : 0) | (e.condense ? 64 : 0) | (e.extend ? 128 : 0); return t.write_shift(1, r), t.write_shift(1, 0), t; } function Js(e, t) { var r = { 2: "BITMAP", 3: "METAFILEPICT", 8: "DIB", 14: "ENHMETAFILE" }, a = e.read_shift(4); switch (a) { case 0: return ""; case 4294967295: case 4294967294: return r[e.read_shift(4)] || ""; } if (a > 400) throw new Error("Unsupported Clipboard: " + a.toString(16)); return e.l -= 4, e.read_shift(0, t == 1 ? "lpstr" : "lpwstr"); } function ul(e) { return Js(e, 1); } function hl(e) { return Js(e, 2); } var An = 2, Sr = 3, Za = 11, Fi = 12, v0 = 19, Qa = 64, xl = 65, dl = 71, vl = 4108, pl = 4126, ir = 80, qs = 81, ml = [ir, qs], K0 = { /*::[*/ 1: { n: "CodePage", t: An }, /*::[*/ 2: { n: "Category", t: ir }, /*::[*/ 3: { n: "PresentationFormat", t: ir }, /*::[*/ 4: { n: "ByteCount", t: Sr }, /*::[*/ 5: { n: "LineCount", t: Sr }, /*::[*/ 6: { n: "ParagraphCount", t: Sr }, /*::[*/ 7: { n: "SlideCount", t: Sr }, /*::[*/ 8: { n: "NoteCount", t: Sr }, /*::[*/ 9: { n: "HiddenCount", t: Sr }, /*::[*/ 10: { n: "MultimediaClipCount", t: Sr }, /*::[*/ 11: { n: "ScaleCrop", t: Za }, /*::[*/ 12: { n: "HeadingPairs", t: vl /* VT_VECTOR | VT_VARIANT */ }, /*::[*/ 13: { n: "TitlesOfParts", t: pl /* VT_VECTOR | VT_LPSTR */ }, /*::[*/ 14: { n: "Manager", t: ir }, /*::[*/ 15: { n: "Company", t: ir }, /*::[*/ 16: { n: "LinksUpToDate", t: Za }, /*::[*/ 17: { n: "CharacterCount", t: Sr }, /*::[*/ 19: { n: "SharedDoc", t: Za }, /*::[*/ 22: { n: "HyperlinksChanged", t: Za }, /*::[*/ 23: { n: "AppVersion", t: Sr, p: "version" }, /*::[*/ 24: { n: "DigSig", t: xl }, /*::[*/ 26: { n: "ContentType", t: ir }, /*::[*/ 27: { n: "ContentStatus", t: ir }, /*::[*/ 28: { n: "Language", t: ir }, /*::[*/ 29: { n: "Version", t: ir }, /*::[*/ 255: {}, /* [MS-OLEPS] 2.18 */ /*::[*/ 2147483648: { n: "Locale", t: v0 }, /*::[*/ 2147483651: { n: "Behavior", t: v0 }, /*::[*/ 1919054434: {} }, Y0 = { /*::[*/ 1: { n: "CodePage", t: An }, /*::[*/ 2: { n: "Title", t: ir }, /*::[*/ 3: { n: "Subject", t: ir }, /*::[*/ 4: { n: "Author", t: ir }, /*::[*/ 5: { n: "Keywords", t: ir }, /*::[*/ 6: { n: "Comments", t: ir }, /*::[*/ 7: { n: "Template", t: ir }, /*::[*/ 8: { n: "LastAuthor", t: ir }, /*::[*/ 9: { n: "RevNumber", t: ir }, /*::[*/ 10: { n: "EditTime", t: Qa }, /*::[*/ 11: { n: "LastPrinted", t: Qa }, /*::[*/ 12: { n: "CreatedDate", t: Qa }, /*::[*/ 13: { n: "ModifiedDate", t: Qa }, /*::[*/ 14: { n: "PageCount", t: Sr }, /*::[*/ 15: { n: "WordCount", t: Sr }, /*::[*/ 16: { n: "CharCount", t: Sr }, /*::[*/ 17: { n: "Thumbnail", t: dl }, /*::[*/ 18: { n: "Application", t: ir }, /*::[*/ 19: { n: "DocSecurity", t: Sr }, /*::[*/ 255: {}, /* [MS-OLEPS] 2.18 */ /*::[*/ 2147483648: { n: "Locale", t: v0 }, /*::[*/ 2147483651: { n: "Behavior", t: v0 }, /*::[*/ 1919054434: {} }, yi = { /*::[*/ 1: "US", // United States /*::[*/ 2: "CA", // Canada /*::[*/ 3: "", // Latin America (except Brazil) /*::[*/ 7: "RU", // Russia /*::[*/ 20: "EG", // Egypt /*::[*/ 30: "GR", // Greece /*::[*/ 31: "NL", // Netherlands /*::[*/ 32: "BE", // Belgium /*::[*/ 33: "FR", // France /*::[*/ 34: "ES", // Spain /*::[*/ 36: "HU", // Hungary /*::[*/ 39: "IT", // Italy /*::[*/ 41: "CH", // Switzerland /*::[*/ 43: "AT", // Austria /*::[*/ 44: "GB", // United Kingdom /*::[*/ 45: "DK", // Denmark /*::[*/ 46: "SE", // Sweden /*::[*/ 47: "NO", // Norway /*::[*/ 48: "PL", // Poland /*::[*/ 49: "DE", // Germany /*::[*/ 52: "MX", // Mexico /*::[*/ 55: "BR", // Brazil /*::[*/ 61: "AU", // Australia /*::[*/ 64: "NZ", // New Zealand /*::[*/ 66: "TH", // Thailand /*::[*/ 81: "JP", // Japan /*::[*/ 82: "KR", // Korea /*::[*/ 84: "VN", // Viet Nam /*::[*/ 86: "CN", // China /*::[*/ 90: "TR", // Turkey /*::[*/ 105: "JS", // Ramastan /*::[*/ 213: "DZ", // Algeria /*::[*/ 216: "MA", // Morocco /*::[*/ 218: "LY", // Libya /*::[*/ 351: "PT", // Portugal /*::[*/ 354: "IS", // Iceland /*::[*/ 358: "FI", // Finland /*::[*/ 420: "CZ", // Czech Republic /*::[*/ 886: "TW", // Taiwan /*::[*/ 961: "LB", // Lebanon /*::[*/ 962: "JO", // Jordan /*::[*/ 963: "SY", // Syria /*::[*/ 964: "IQ", // Iraq /*::[*/ 965: "KW", // Kuwait /*::[*/ 966: "SA", // Saudi Arabia /*::[*/ 971: "AE", // United Arab Emirates /*::[*/ 972: "IL", // Israel /*::[*/ 974: "QA", // Qatar /*::[*/ 981: "IR", // Iran /*::[*/ 65535: "US" // United States }, gl = [ null, "solid", "mediumGray", "darkGray", "lightGray", "darkHorizontal", "darkVertical", "darkDown", "darkUp", "darkGrid", "darkTrellis", "lightHorizontal", "lightVertical", "lightDown", "lightUp", "lightGrid", "lightTrellis", "gray125", "gray0625" ]; function _l(e) { return e.map(function(t) { return [t >> 16 & 255, t >> 8 & 255, t & 255]; }); } var wl = /* @__PURE__ */ _l([ /* Color Constants */ 0, 16777215, 16711680, 65280, 255, 16776960, 16711935, 65535, /* Overridable Defaults */ 0, 16777215, 16711680, 65280, 255, 16776960, 16711935, 65535, 8388608, 32768, 128, 8421376, 8388736, 32896, 12632256, 8421504, 10066431, 10040166, 16777164, 13434879, 6684774, 16744576, 26316, 13421823, 128, 16711935, 16776960, 65535, 8388736, 8388608, 32896, 255, 52479, 13434879, 13434828, 16777113, 10079487, 16751052, 13408767, 16764057, 3368703, 3394764, 10079232, 16763904, 16750848, 16737792, 6710937, 9868950, 13158, 3381606, 13056, 3355392, 10040064, 10040166, 3355545, 3355443, /* Other entries to appease BIFF8/12 */ 16777215, /* 0x40 icvForeground ?? */ 0, /* 0x41 icvBackground ?? */ 0, /* 0x42 icvFrame ?? */ 0, /* 0x43 icv3D ?? */ 0, /* 0x44 icv3DText ?? */ 0, /* 0x45 icv3DHilite ?? */ 0, /* 0x46 icv3DShadow ?? */ 0, /* 0x47 icvHilite ?? */ 0, /* 0x48 icvCtlText ?? */ 0, /* 0x49 icvCtlScrl ?? */ 0, /* 0x4A icvCtlInv ?? */ 0, /* 0x4B icvCtlBody ?? */ 0, /* 0x4C icvCtlFrame ?? */ 0, /* 0x4D icvCtlFore ?? */ 0, /* 0x4E icvCtlBack ?? */ 0, /* 0x4F icvCtlNeutral */ 0, /* 0x50 icvInfoBk ?? */ 0 /* 0x51 icvInfoText ?? */ ]), It = /* @__PURE__ */ We(wl), xt = { /*::[*/ 0: "#NULL!", /*::[*/ 7: "#DIV/0!", /*::[*/ 15: "#VALUE!", /*::[*/ 23: "#REF!", /*::[*/ 29: "#NAME?", /*::[*/ 36: "#NUM!", /*::[*/ 42: "#N/A", /*::[*/ 43: "#GETTING_DATA", /*::[*/ 255: "#WTF?" }, Zs = { "#NULL!": 0, "#DIV/0!": 7, "#VALUE!": 15, "#REF!": 23, "#NAME?": 29, "#NUM!": 36, "#N/A": 42, "#GETTING_DATA": 43, "#WTF?": 255 }, J0 = { /* Workbook */ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": "workbooks", "application/vnd.ms-excel.sheet.macroEnabled.main+xml": "workbooks", "application/vnd.ms-excel.sheet.binary.macroEnabled.main": "workbooks", "application/vnd.ms-excel.addin.macroEnabled.main+xml": "workbooks", "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": "workbooks", /* Worksheet */ "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": "sheets", "application/vnd.ms-excel.worksheet": "sheets", "application/vnd.ms-excel.binIndexWs": "TODO", /* Binary Index */ /* Chartsheet */ "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": "charts", "application/vnd.ms-excel.chartsheet": "charts", /* Macrosheet */ "application/vnd.ms-excel.macrosheet+xml": "macros", "application/vnd.ms-excel.macrosheet": "macros", "application/vnd.ms-excel.intlmacrosheet": "TODO", "application/vnd.ms-excel.binIndexMs": "TODO", /* Binary Index */ /* Dialogsheet */ "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": "dialogs", "application/vnd.ms-excel.dialogsheet": "dialogs", /* Shared Strings */ "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml": "strs", "application/vnd.ms-excel.sharedStrings": "strs", /* Styles */ "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": "styles", "application/vnd.ms-excel.styles": "styles", /* File Properties */ "application/vnd.openxmlformats-package.core-properties+xml": "coreprops", "application/vnd.openxmlformats-officedocument.custom-properties+xml": "custprops", "application/vnd.openxmlformats-officedocument.extended-properties+xml": "extprops", /* Custom Data Properties */ "application/vnd.openxmlformats-officedocument.customXmlProperties+xml": "TODO", "application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty": "TODO", /* Comments */ "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": "comments", "application/vnd.ms-excel.comments": "comments", "application/vnd.ms-excel.threadedcomments+xml": "threadedcomments", "application/vnd.ms-excel.person+xml": "people", /* Metadata (Stock/Geography and Dynamic Array) */ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml": "metadata", "application/vnd.ms-excel.sheetMetadata": "metadata", /* PivotTable */ "application/vnd.ms-excel.pivotTable": "TODO", "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml": "TODO", /* Chart Objects */ "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": "TODO", /* Chart Colors */ "application/vnd.ms-office.chartcolorstyle+xml": "TODO", /* Chart Style */ "application/vnd.ms-office.chartstyle+xml": "TODO", /* Chart Advanced */ "application/vnd.ms-office.chartex+xml": "TODO", /* Calculation Chain */ "application/vnd.ms-excel.calcChain": "calcchains", "application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml": "calcchains", /* Printer Settings */ "application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings": "TODO", /* ActiveX */ "application/vnd.ms-office.activeX": "TODO", "application/vnd.ms-office.activeX+xml": "TODO", /* Custom Toolbars */ "application/vnd.ms-excel.attachedToolbars": "TODO", /* External Data Connections */ "application/vnd.ms-excel.connections": "TODO", "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": "TODO", /* External Links */ "application/vnd.ms-excel.externalLink": "links", "application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml": "links", /* PivotCache */ "application/vnd.ms-excel.pivotCacheDefinition": "TODO", "application/vnd.ms-excel.pivotCacheRecords": "TODO", "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml": "TODO", "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml": "TODO", /* Query Table */ "application/vnd.ms-excel.queryTable": "TODO", "application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml": "TODO", /* Shared Workbook */ "application/vnd.ms-excel.userNames": "TODO", "application/vnd.ms-excel.revisionHeaders": "TODO", "application/vnd.ms-excel.revisionLog": "TODO", "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml": "TODO", "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml": "TODO", "application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml": "TODO", /* Single Cell Table */ "application/vnd.ms-excel.tableSingleCells": "TODO", "application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml": "TODO", /* Slicer */ "application/vnd.ms-excel.slicer": "TODO", "application/vnd.ms-excel.slicerCache": "TODO", "application/vnd.ms-excel.slicer+xml": "TODO", "application/vnd.ms-excel.slicerCache+xml": "TODO", /* Sort Map */ "application/vnd.ms-excel.wsSortMap": "TODO", /* Table */ "application/vnd.ms-excel.table": "TODO", "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": "TODO", /* Themes */ "application/vnd.openxmlformats-officedocument.theme+xml": "themes", /* Theme Override */ "application/vnd.openxmlformats-officedocument.themeOverride+xml": "TODO", /* Timeline */ "application/vnd.ms-excel.Timeline+xml": "TODO", /* verify */ "application/vnd.ms-excel.TimelineCache+xml": "TODO", /* verify */ /* VBA */ "application/vnd.ms-office.vbaProject": "vba", "application/vnd.ms-office.vbaProjectSignature": "TODO", /* Volatile Dependencies */ "application/vnd.ms-office.volatileDependencies": "TODO", "application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml": "TODO", /* Control Properties */ "application/vnd.ms-excel.controlproperties+xml": "TODO", /* Data Model */ "application/vnd.openxmlformats-officedocument.model+data": "TODO", /* Survey */ "application/vnd.ms-excel.Survey+xml": "TODO", /* Drawing */ "application/vnd.openxmlformats-officedocument.drawing+xml": "drawings", "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": "TODO", "application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml": "TODO", "application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml": "TODO", "application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml": "TODO", "application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml": "TODO", /* VML */ "application/vnd.openxmlformats-officedocument.vmlDrawing": "TODO", "application/vnd.openxmlformats-package.relationships+xml": "rels", "application/vnd.openxmlformats-officedocument.oleObject": "TODO", /* Image */ "image/png": "TODO", sheet: "js" }, e0 = { workbooks: { xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml", xlsm: "application/vnd.ms-excel.sheet.macroEnabled.main+xml", xlsb: "application/vnd.ms-excel.sheet.binary.macroEnabled.main", xlam: "application/vnd.ms-excel.addin.macroEnabled.main+xml", xltx: "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml" }, strs: { /* Shared Strings */ xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml", xlsb: "application/vnd.ms-excel.sharedStrings" }, comments: { /* Comments */ xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml", xlsb: "application/vnd.ms-excel.comments" }, sheets: { /* Worksheet */ xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml", xlsb: "application/vnd.ms-excel.worksheet" }, charts: { /* Chartsheet */ xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml", xlsb: "application/vnd.ms-excel.chartsheet" }, dialogs: { /* Dialogsheet */ xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml", xlsb: "application/vnd.ms-excel.dialogsheet" }, macros: { /* Macrosheet (Excel 4.0 Macros) */ xlsx: "application/vnd.ms-excel.macrosheet+xml", xlsb: "application/vnd.ms-excel.macrosheet" }, metadata: { /* Metadata (Stock/Geography and Dynamic Array) */ xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml", xlsb: "application/vnd.ms-excel.sheetMetadata" }, styles: { /* Styles */ xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml", xlsb: "application/vnd.ms-excel.styles" } }; function Cn() { return { workbooks: [], sheets: [], charts: [], dialogs: [], macros: [], rels: [], strs: [], comments: [], threadedcomments: [], links: [], coreprops: [], extprops: [], custprops: [], themes: [], styles: [], calcchains: [], vba: [], drawings: [], metadata: [], people: [], TODO: [], xmlns: "" }; } function El(e) { var t = Cn(); if (!e || !e.match) return t; var r = {}; if ((e.match(_r) || []).forEach(function(a) { var n = me(a); switch (n[0].replace(Io, "<")) { case " 0 ? t.calcchains[0] : "", t.sst = t.strs.length > 0 ? t.strs[0] : "", t.style = t.styles.length > 0 ? t.styles[0] : "", t.defaults = r, delete t.calcchains, t; } function Qs(e, t) { var r = ko(J0), a = [], n; a[a.length] = Ze, a[a.length] = ae("Types", null, { xmlns: ar.CT, "xmlns:xsd": ar.xsd, "xmlns:xsi": ar.xsi }), a = a.concat([ ["xml", "application/xml"], ["bin", "application/vnd.ms-excel.sheet.binary.macroEnabled.main"], ["vml", "application/vnd.openxmlformats-officedocument.vmlDrawing"], ["data", "application/vnd.openxmlformats-officedocument.model+data"], /* from test files */ ["bmp", "image/bmp"], ["png", "image/png"], ["gif", "image/gif"], ["emf", "image/x-emf"], ["wmf", "image/x-wmf"], ["jpg", "image/jpeg"], ["jpeg", "image/jpeg"], ["tif", "image/tiff"], ["tiff", "image/tiff"], ["pdf", "application/pdf"], ["rels", "application/vnd.openxmlformats-package.relationships+xml"] ].map(function(c) { return ae("Default", null, { Extension: c[0], ContentType: c[1] }); })); var i = function(c) { e[c] && e[c].length > 0 && (n = e[c][0], a[a.length] = ae("Override", null, { PartName: (n[0] == "/" ? "" : "/") + n, ContentType: e0[c][t.bookType] || e0[c].xlsx })); }, s = function(c) { (e[c] || []).forEach(function(o) { a[a.length] = ae("Override", null, { PartName: (o[0] == "/" ? "" : "/") + o, ContentType: e0[c][t.bookType] || e0[c].xlsx }); }); }, f = function(c) { (e[c] || []).forEach(function(o) { a[a.length] = ae("Override", null, { PartName: (o[0] == "/" ? "" : "/") + o, ContentType: r[c][0] }); }); }; return i("workbooks"), s("sheets"), s("charts"), f("themes"), ["strs", "styles"].forEach(i), ["coreprops", "extprops", "custprops"].forEach(f), f("vba"), f("comments"), f("threadedcomments"), f("drawings"), s("metadata"), f("people"), a.length > 2 && (a[a.length] = "", a[1] = a[1].replace("/>", ">")), a.join(""); } var Fe = { WB: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument", SHEET: "http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument", HLINK: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink", VML: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing", XPATH: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath", XMISS: "http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing", XLINK: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink", CXML: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml", CXMLP: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps", CMNT: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments", CORE_PROPS: "http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties", EXT_PROPS: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties", CUST_PROPS: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties", SST: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings", STY: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles", THEME: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme", CHART: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart", CHARTEX: "http://schemas.microsoft.com/office/2014/relationships/chartEx", CS: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet", WS: [ "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet", "http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet" ], DS: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet", MS: "http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet", IMG: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", DRAW: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing", XLMETA: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata", TCMNT: "http://schemas.microsoft.com/office/2017/10/relationships/threadedComment", PEOPLE: "http://schemas.microsoft.com/office/2017/10/relationships/person", VBA: "http://schemas.microsoft.com/office/2006/relationships/vbaProject" }; function Ra(e) { var t = e.lastIndexOf("/"); return e.slice(0, t + 1) + "_rels/" + e.slice(t + 1) + ".rels"; } function ka(e, t) { var r = { "!id": {} }; if (!e) return r; t.charAt(0) !== "/" && (t = "/" + t); var a = {}; return (e.match(_r) || []).forEach(function(n) { var i = me(n); if (i[0] === " 2 && (t[t.length] = "", t[1] = t[1].replace("/>", ">")), t.join(""); } function Re(e, t, r, a, n, i) { if (n || (n = {}), e["!id"] || (e["!id"] = {}), e["!idx"] || (e["!idx"] = 1), t < 0) for (t = e["!idx"]; e["!id"]["rId" + t]; ++t) ; if (e["!idx"] = t + 1, n.Id = "rId" + t, n.Type = a, n.Target = r, i ? n.TargetMode = i : [Fe.HLINK, Fe.XPATH, Fe.XMISS].indexOf(n.Type) > -1 && (n.TargetMode = "External"), e["!id"][n.Id]) throw new Error("Cannot rewrite rId " + t); return e["!id"][n.Id] = n, e[("/" + n.Target).replace("//", "/")] = n, t; } var kl = "application/vnd.oasis.opendocument.spreadsheet"; function Tl(e, t) { for (var r = gn(e), a, n; a = Ia.exec(r); ) switch (a[3]) { case "manifest": break; case "file-entry": if (n = me(a[0], !1), n.path == "/" && n.type !== kl) throw new Error("This OpenDocument is not a spreadsheet"); break; case "encryption-data": case "algorithm": case "start-key-generation": case "key-derivation": throw new Error("Unsupported ODS Encryption"); default: if (t && t.WTF) throw a; } } function Sl(e) { var t = [Ze]; t.push(` `), t.push(` `); for (var r = 0; r < e.length; ++r) t.push(' `); return t.push(""), t.join(""); } function Ai(e, t, r) { return [ ' `, ' `, ` ` ].join(""); } function Fl(e, t) { return [ ' `, ' `, ` ` ].join(""); } function yl(e) { var t = [Ze]; t.push(` `); for (var r = 0; r != e.length; ++r) t.push(Ai(e[r][0], e[r][1])), t.push(Fl("", e[r][0])); return t.push(Ai("", "Document", "pkg")), t.push(""), t.join(""); } function ef() { return 'SheetJS ' + f0.version + ""; } var Vr = [ ["cp:category", "Category"], ["cp:contentStatus", "ContentStatus"], ["cp:keywords", "Keywords"], ["cp:lastModifiedBy", "LastAuthor"], ["cp:lastPrinted", "LastPrinted"], ["cp:revision", "RevNumber"], ["cp:version", "Version"], ["dc:creator", "Author"], ["dc:description", "Comments"], ["dc:identifier", "Identifier"], ["dc:language", "Language"], ["dc:subject", "Subject"], ["dc:title", "Title"], ["dcterms:created", "CreatedDate", "date"], ["dcterms:modified", "ModifiedDate", "date"] ], Al = /* @__PURE__ */ function() { for (var e = new Array(Vr.length), t = 0; t < Vr.length; ++t) { var r = Vr[t], a = "(?:" + r[0].slice(0, r[0].indexOf(":")) + ":)" + r[0].slice(r[0].indexOf(":") + 1); e[t] = new RegExp("<" + a + "[^>]*>([\\s\\S]*?)"); } return e; }(); function rf(e) { var t = {}; e = Pe(e); for (var r = 0; r < Vr.length; ++r) { var a = Vr[r], n = e.match(Al[r]); n != null && n.length > 0 && (t[a[1]] = Ce(n[1])), a[2] === "date" && t[a[1]] && (t[a[1]] = Ue(t[a[1]])); } return t; } function P0(e, t, r, a, n) { n[e] != null || t == null || t === "" || (n[e] = t, t = Ne(t), a[a.length] = r ? ae(e, t, r) : lr(e, t)); } function tf(e, t) { var r = t || {}, a = [Ze, ae("cp:coreProperties", null, { //'xmlns': XMLNS.CORE_PROPS, "xmlns:cp": ar.CORE_PROPS, "xmlns:dc": ar.dc, "xmlns:dcterms": ar.dcterms, "xmlns:dcmitype": ar.dcmitype, "xmlns:xsi": ar.xsi })], n = {}; if (!e && !r.Props) return a.join(""); e && (e.CreatedDate != null && P0("dcterms:created", typeof e.CreatedDate == "string" ? e.CreatedDate : j0(e.CreatedDate, r.WTF), { "xsi:type": "dcterms:W3CDTF" }, a, n), e.ModifiedDate != null && P0("dcterms:modified", typeof e.ModifiedDate == "string" ? e.ModifiedDate : j0(e.ModifiedDate, r.WTF), { "xsi:type": "dcterms:W3CDTF" }, a, n)); for (var i = 0; i != Vr.length; ++i) { var s = Vr[i], f = r.Props && r.Props[s[1]] != null ? r.Props[s[1]] : e ? e[s[1]] : null; f === !0 ? f = "1" : f === !1 ? f = "0" : typeof f == "number" && (f = String(f)), f != null && P0(s[0], f, null, a, n); } return a.length > 2 && (a[a.length] = "", a[1] = a[1].replace("/>", ">")), a.join(""); } var Rt = [ ["Application", "Application", "string"], ["AppVersion", "AppVersion", "string"], ["Company", "Company", "string"], ["DocSecurity", "DocSecurity", "string"], ["Manager", "Manager", "string"], ["HyperlinksChanged", "HyperlinksChanged", "bool"], ["SharedDoc", "SharedDoc", "bool"], ["LinksUpToDate", "LinksUpToDate", "bool"], ["ScaleCrop", "ScaleCrop", "bool"], ["HeadingPairs", "HeadingPairs", "raw"], ["TitlesOfParts", "TitlesOfParts", "raw"] ], af = [ "Worksheets", "SheetNames", "NamedRanges", "DefinedNames", "Chartsheets", "ChartNames" ]; function nf(e, t, r, a) { var n = []; if (typeof e == "string") n = mi(e, a); else for (var i = 0; i < e.length; ++i) n = n.concat(e[i].map(function(l) { return { v: l }; })); var s = typeof t == "string" ? mi(t, a).map(function(l) { return l.v; }) : t, f = 0, c = 0; if (s.length > 0) for (var o = 0; o !== n.length; o += 2) { switch (c = +n[o + 1].v, n[o].v) { case "Worksheets": case "工作表": case "Листы": case "أوراق العمل": case "ワークシート": case "גליונות עבודה": case "Arbeitsblätter": case "Çalışma Sayfaları": case "Feuilles de calcul": case "Fogli di lavoro": case "Folhas de cálculo": case "Planilhas": case "Regneark": case "Hojas de cálculo": case "Werkbladen": r.Worksheets = c, r.SheetNames = s.slice(f, f + c); break; case "Named Ranges": case "Rangos con nombre": case "名前付き一覧": case "Benannte Bereiche": case "Navngivne områder": r.NamedRanges = c, r.DefinedNames = s.slice(f, f + c); break; case "Charts": case "Diagramme": r.Chartsheets = c, r.ChartNames = s.slice(f, f + c); break; } f += c; } } function Cl(e, t, r) { var a = {}; return t || (t = {}), e = Pe(e), Rt.forEach(function(n) { var i = (e.match(Da(n[0])) || [])[1]; switch (n[2]) { case "string": i && (t[n[1]] = Ce(i)); break; case "bool": t[n[1]] = i === "true"; break; case "raw": var s = e.match(new RegExp("<" + n[0] + "[^>]*>([\\s\\S]*?)")); s && s.length > 0 && (a[n[1]] = s[1]); break; } }), a.HeadingPairs && a.TitlesOfParts && nf(a.HeadingPairs, a.TitlesOfParts, t, r), t; } function sf(e) { var t = [], r = ae; return e || (e = {}), e.Application = "SheetJS", t[t.length] = Ze, t[t.length] = ae("Properties", null, { xmlns: ar.EXT_PROPS, "xmlns:vt": ar.vt }), Rt.forEach(function(a) { if (e[a[1]] !== void 0) { var n; switch (a[2]) { case "string": n = Ne(String(e[a[1]])); break; case "bool": n = e[a[1]] ? "true" : "false"; break; } n !== void 0 && (t[t.length] = r(a[0], n)); } }), t[t.length] = r("HeadingPairs", r("vt:vector", r("vt:variant", "Worksheets") + r("vt:variant", r("vt:i4", String(e.Worksheets))), { size: 2, baseType: "variant" })), t[t.length] = r("TitlesOfParts", r("vt:vector", e.SheetNames.map(function(a) { return "" + Ne(a) + ""; }).join(""), { size: e.Worksheets, baseType: "lpstr" })), t.length > 2 && (t[t.length] = "", t[1] = t[1].replace("/>", ">")), t.join(""); } var Dl = /<[^>]+>[^<]*/g; function Ol(e, t) { var r = {}, a = "", n = e.match(Dl); if (n) for (var i = 0; i != n.length; ++i) { var s = n[i], f = me(s); switch (f[0]) { case "": a = null; break; default: if (s.indexOf(""), o = c[0].slice(4), l = c[1]; switch (o) { case "lpstr": case "bstr": case "lpwstr": r[a] = Ce(l); break; case "bool": r[a] = Me(l); break; case "i1": case "i2": case "i4": case "i8": case "int": case "uint": r[a] = parseInt(l, 10); break; case "r4": case "r8": case "decimal": r[a] = parseFloat(l); break; case "filetime": case "date": r[a] = Ue(l); break; case "cy": case "error": r[a] = Ce(l); break; default: if (o.slice(-1) == "/") break; t.WTF && typeof console < "u" && console.warn("Unexpected", s, o, c); } } else if (s.slice(0, 2) !== " 2 && (t[t.length] = "", t[1] = t[1].replace("/>", ">")), t.join(""); } var q0 = { Title: "Title", Subject: "Subject", Author: "Author", Keywords: "Keywords", Comments: "Description", LastAuthor: "LastAuthor", RevNumber: "Revision", Application: "AppName", /* TotalTime: 'TotalTime', */ LastPrinted: "LastPrinted", CreatedDate: "Created", ModifiedDate: "LastSaved", /* Pages */ /* Words */ /* Characters */ Category: "Category", /* PresentationFormat */ Manager: "Manager", Company: "Company", /* Guid */ /* HyperlinkBase */ /* Bytes */ /* Lines */ /* Paragraphs */ /* CharactersWithSpaces */ AppVersion: "Version", ContentStatus: "ContentStatus", /* NOTE: missing from schema */ Identifier: "Identifier", /* NOTE: missing from schema */ Language: "Language" /* NOTE: missing from schema */ }, L0; function Il(e, t, r) { L0 || (L0 = E0(q0)), t = L0[t] || t, e[t] = r; } function Rl(e, t) { var r = []; return $e(q0).map(function(a) { for (var n = 0; n < Vr.length; ++n) if (Vr[n][1] == a) return Vr[n]; for (n = 0; n < Rt.length; ++n) if (Rt[n][1] == a) return Rt[n]; throw a; }).forEach(function(a) { if (e[a[1]] != null) { var n = t && t.Props && t.Props[a[1]] != null ? t.Props[a[1]] : e[a[1]]; switch (a[2]) { case "date": n = new Date(n).toISOString().replace(/\.\d*Z/, "Z"); break; } typeof n == "number" ? n = String(n) : n === !0 || n === !1 ? n = n ? "1" : "0" : n instanceof Date && (n = new Date(n).toISOString().replace(/\.\d*Z/, "")), r.push(lr(q0[a[1]] || a[1], n)); } }), ae("DocumentProperties", r.join(""), { xmlns: Cr.o }); } function Nl(e, t) { var r = ["Worksheets", "SheetNames"], a = "CustomDocumentProperties", n = []; return e && $e(e).forEach(function(i) { if (Object.prototype.hasOwnProperty.call(e, i)) { for (var s = 0; s < Vr.length; ++s) if (i == Vr[s][1]) return; for (s = 0; s < Rt.length; ++s) if (i == Rt[s][1]) return; for (s = 0; s < r.length; ++s) if (i == r[s]) return; var f = e[i], c = "string"; typeof f == "number" ? (c = "float", f = String(f)) : f === !0 || f === !1 ? (c = "boolean", f = f ? "1" : "0") : f = String(f), n.push(ae(xi(i), f, { "dt:dt": c })); } }), t && $e(t).forEach(function(i) { if (Object.prototype.hasOwnProperty.call(t, i) && !(e && Object.prototype.hasOwnProperty.call(e, i))) { var s = t[i], f = "string"; typeof s == "number" ? (f = "float", s = String(s)) : s === !0 || s === !1 ? (f = "boolean", s = s ? "1" : "0") : s instanceof Date ? (f = "dateTime.tz", s = s.toISOString()) : s = String(s), n.push(ae(xi(i), s, { "dt:dt": f })); } }), "<" + a + ' xmlns="' + Cr.o + '">' + n.join("") + ""; } function Dn(e) { var t = e.read_shift(4), r = e.read_shift(4); return new Date((r / 1e7 * Math.pow(2, 32) + t / 1e7 - 11644473600) * 1e3).toISOString().replace(/\.000/, ""); } function bl(e) { var t = typeof e == "string" ? new Date(Date.parse(e)) : e, r = t.getTime() / 1e3 + 11644473600, a = r % Math.pow(2, 32), n = (r - a) / Math.pow(2, 32); a *= 1e7, n *= 1e7; var i = a / Math.pow(2, 32) | 0; i > 0 && (a = a % Math.pow(2, 32), n += i); var s = z(8); return s.write_shift(4, a), s.write_shift(4, n), s; } function cf(e, t, r) { var a = e.l, n = e.read_shift(0, "lpstr-cp"); if (r) for (; e.l - a & 3; ) ++e.l; return n; } function of(e, t, r) { var a = e.read_shift(0, "lpwstr"); return r && (e.l += 4 - (a.length + 1 & 3) & 3), a; } function lf(e, t, r) { return t === 31 ? of(e) : cf(e, t, r); } function Z0(e, t, r) { return lf(e, t, r === !1 ? 0 : 4); } function Pl(e, t) { if (!t) throw new Error("VtUnalignedString must have positive length"); return lf(e, t, 0); } function Ll(e) { for (var t = e.read_shift(4), r = [], a = 0; a != t; ++a) { var n = e.l; r[a] = e.read_shift(0, "lpwstr").replace(Tr, ""), e.l - n & 2 && (e.l += 2); } return r; } function Bl(e) { for (var t = e.read_shift(4), r = [], a = 0; a != t; ++a) r[a] = e.read_shift(0, "lpstr-cp").replace(Tr, ""); return r; } function Ml(e) { var t = e.l, r = p0(e, qs); e[e.l] == 0 && e[e.l + 1] == 0 && e.l - t & 2 && (e.l += 2); var a = p0(e, Sr); return [r, a]; } function Ul(e) { for (var t = e.read_shift(4), r = [], a = 0; a < t / 2; ++a) r.push(Ml(e)); return r; } function Ci(e, t) { for (var r = e.read_shift(4), a = {}, n = 0; n != r; ++n) { var i = e.read_shift(4), s = e.read_shift(4); a[i] = e.read_shift(s, t === 1200 ? "utf16le" : "utf8").replace(Tr, "").replace(ma, "!"), t === 1200 && s % 2 && (e.l += 2); } return e.l & 3 && (e.l = e.l >> 2 + 1 << 2), a; } function uf(e) { var t = e.read_shift(4), r = e.slice(e.l, e.l + t); return e.l += t, (t & 3) > 0 && (e.l += 4 - (t & 3) & 3), r; } function Wl(e) { var t = {}; return t.Size = e.read_shift(4), e.l += t.Size + 3 - (t.Size - 1) % 4, t; } function p0(e, t, r) { var a = e.read_shift(2), n, i = r || {}; if (e.l += 2, t !== Fi && a !== t && ml.indexOf(t) === -1 && !((t & 65534) == 4126 && (a & 65534) == 4126)) throw new Error("Expected type " + t + " saw " + a); switch (t === Fi ? a : t) { case 2: return n = e.read_shift(2, "i"), i.raw || (e.l += 2), n; case 3: return n = e.read_shift(4, "i"), n; case 11: return e.read_shift(4) !== 0; case 19: return n = e.read_shift(4), n; case 30: return cf(e, a, 4).replace(Tr, ""); case 31: return of(e); case 64: return Dn(e); case 65: return uf(e); case 71: return Wl(e); case 80: return Z0(e, a, !i.raw).replace(Tr, ""); case 81: return Pl( e, a /*, 4*/ ).replace(Tr, ""); case 4108: return Ul(e); case 4126: case 4127: return a == 4127 ? Ll(e) : Bl(e); default: throw new Error("TypedPropertyValue unrecognized type " + t + " " + a); } } function Di(e, t) { var r = z(4), a = z(4); switch (r.write_shift(4, e == 80 ? 31 : e), e) { case 3: a.write_shift(-4, t); break; case 5: a = z(8), a.write_shift(8, t, "f"); break; case 11: a.write_shift(4, t ? 1 : 0); break; case 64: a = bl(t); break; case 31: case 80: for (a = z(4 + 2 * (t.length + 1) + (t.length % 2 ? 0 : 2)), a.write_shift(4, t.length + 1), a.write_shift(0, t, "dbcs"); a.l != a.length; ) a.write_shift(1, 0); break; default: throw new Error("TypedPropertyValue unrecognized type " + e + " " + t); } return sr([r, a]); } function Oi(e, t) { var r = e.l, a = e.read_shift(4), n = e.read_shift(4), i = [], s = 0, f = 0, c = -1, o = {}; for (s = 0; s != n; ++s) { var l = e.read_shift(4), u = e.read_shift(4); i[s] = [l, u + r]; } i.sort(function(y, g) { return y[1] - g[1]; }); var h = {}; for (s = 0; s != n; ++s) { if (e.l !== i[s][1]) { var d = !0; if (s > 0 && t) switch (t[i[s - 1][0]].t) { case 2: e.l + 2 === i[s][1] && (e.l += 2, d = !1); break; case 80: e.l <= i[s][1] && (e.l = i[s][1], d = !1); break; case 4108: e.l <= i[s][1] && (e.l = i[s][1], d = !1); break; } if ((!t || s == 0) && e.l <= i[s][1] && (d = !1, e.l = i[s][1]), d) throw new Error("Read Error: Expected address " + i[s][1] + " at " + e.l + " :" + s); } if (t) { var v = t[i[s][0]]; if (h[v.n] = p0(e, v.t, { raw: !0 }), v.p === "version" && (h[v.n] = String(h[v.n] >> 16) + "." + ("0000" + String(h[v.n] & 65535)).slice(-4)), v.n == "CodePage") switch (h[v.n]) { case 0: h[v.n] = 1252; case 874: case 932: case 936: case 949: case 950: case 1250: case 1251: case 1253: case 1254: case 1255: case 1256: case 1257: case 1258: case 1e4: case 1200: case 1201: case 1252: case 65e3: case -536: case 65001: case -535: zr(f = h[v.n] >>> 0 & 65535); break; default: throw new Error("Unsupported CodePage: " + h[v.n]); } } else if (i[s][0] === 1) { if (f = h.CodePage = p0(e, An), zr(f), c !== -1) { var x = e.l; e.l = i[c][1], o = Ci(e, f), e.l = x; } } else if (i[s][0] === 0) { if (f === 0) { c = s, e.l = i[s + 1][1]; continue; } o = Ci(e, f); } else { var p = o[i[s][0]], w; switch (e[e.l]) { case 65: e.l += 4, w = uf(e); break; case 30: e.l += 4, w = Z0(e, e[e.l - 4]).replace(/\u0000+$/, ""); break; case 31: e.l += 4, w = Z0(e, e[e.l - 4]).replace(/\u0000+$/, ""); break; case 3: e.l += 4, w = e.read_shift(4, "i"); break; case 19: e.l += 4, w = e.read_shift(4); break; case 5: e.l += 4, w = e.read_shift(8, "f"); break; case 11: e.l += 4, w = Je(e, 4); break; case 64: e.l += 4, w = Ue(Dn(e)); break; default: throw new Error("unparsed value: " + e[e.l]); } h[p] = w; } } return e.l = r + a, h; } var hf = ["CodePage", "Thumbnail", "_PID_LINKBASE", "_PID_HLINKS", "SystemIdentifier", "FMTID"]; function Hl(e) { switch (typeof e) { case "boolean": return 11; case "number": return (e | 0) == e ? 3 : 5; case "string": return 31; case "object": if (e instanceof Date) return 64; break; } return -1; } function Ii(e, t, r) { var a = z(8), n = [], i = [], s = 8, f = 0, c = z(8), o = z(8); if (c.write_shift(4, 2), c.write_shift(4, 1200), o.write_shift(4, 1), i.push(c), n.push(o), s += 8 + c.length, !t) { o = z(8), o.write_shift(4, 0), n.unshift(o); var l = [z(4)]; for (l[0].write_shift(4, e.length), f = 0; f < e.length; ++f) { var u = e[f][0]; for (c = z(4 + 4 + 2 * (u.length + 1) + (u.length % 2 ? 0 : 2)), c.write_shift(4, f + 2), c.write_shift(4, u.length + 1), c.write_shift(0, u, "dbcs"); c.l != c.length; ) c.write_shift(1, 0); l.push(c); } c = sr(l), i.unshift(c), s += 8 + c.length; } for (f = 0; f < e.length; ++f) if (!(t && !t[e[f][0]]) && !(hf.indexOf(e[f][0]) > -1 || af.indexOf(e[f][0]) > -1) && e[f][1] != null) { var h = e[f][1], d = 0; if (t) { d = +t[e[f][0]]; var v = r[d]; if (v.p == "version" && typeof h == "string") { var x = h.split("."); h = (+x[0] << 16) + (+x[1] || 0); } c = Di(v.t, h); } else { var p = Hl(h); p == -1 && (p = 31, h = String(h)), c = Di(p, h); } i.push(c), o = z(8), o.write_shift(4, t ? d : 2 + f), n.push(o), s += 8 + c.length; } var w = 8 * (i.length + 1); for (f = 0; f < i.length; ++f) n[f].write_shift(4, w), w += i[f].length; return a.write_shift(4, s), a.write_shift(4, i.length), sr([a].concat(n).concat(i)); } function Ri(e, t, r) { var a = e.content; if (!a) return {}; or(a, 0); var n, i, s, f, c = 0; a.chk("feff", "Byte Order: "), a.read_shift(2); var o = a.read_shift(4), l = a.read_shift(16); if (l !== xe.utils.consts.HEADER_CLSID && l !== r) throw new Error("Bad PropertySet CLSID " + l); if (n = a.read_shift(4), n !== 1 && n !== 2) throw new Error("Unrecognized #Sets: " + n); if (i = a.read_shift(16), f = a.read_shift(4), n === 1 && f !== a.l) throw new Error("Length mismatch: " + f + " !== " + a.l); n === 2 && (s = a.read_shift(16), c = a.read_shift(4)); var u = Oi(a, t), h = { SystemIdentifier: o }; for (var d in u) h[d] = u[d]; if (h.FMTID = i, n === 1) return h; if (c - a.l == 2 && (a.l += 2), a.l !== c) throw new Error("Length mismatch 2: " + a.l + " !== " + c); var v; try { v = Oi(a, null); } catch { } for (d in v) h[d] = v[d]; return h.FMTID = [i, s], h; } function Ni(e, t, r, a, n, i) { var s = z(n ? 68 : 48), f = [s]; s.write_shift(2, 65534), s.write_shift(2, 0), s.write_shift(4, 842412599), s.write_shift(16, xe.utils.consts.HEADER_CLSID, "hex"), s.write_shift(4, n ? 2 : 1), s.write_shift(16, t, "hex"), s.write_shift(4, n ? 68 : 48); var c = Ii(e, r, a); if (f.push(c), n) { var o = Ii(n, null, null); s.write_shift(16, i, "hex"), s.write_shift(4, 68 + c.length), f.push(o); } return sr(f); } function pt(e, t) { return e.read_shift(t), null; } function Vl(e, t) { t || (t = z(e)); for (var r = 0; r < e; ++r) t.write_shift(1, 0); return t; } function Gl(e, t, r) { for (var a = [], n = e.l + t; e.l < n; ) a.push(r(e, n - e.l)); if (n !== e.l) throw new Error("Slurp error"); return a; } function Je(e, t) { return e.read_shift(t) === 1; } function kr(e, t) { return t || (t = z(2)), t.write_shift(2, +!!e), t; } function rr(e) { return e.read_shift(2, "u"); } function Hr(e, t) { return t || (t = z(2)), t.write_shift(2, e), t; } function xf(e, t) { return Gl(e, t, rr); } function Xl(e) { var t = e.read_shift(1), r = e.read_shift(1); return r === 1 ? t : t === 1; } function df(e, t, r) { return r || (r = z(2)), r.write_shift(1, t == "e" ? +e : +!!e), r.write_shift(1, t == "e" ? 1 : 0), r; } function Ga(e, t, r) { var a = e.read_shift(r && r.biff >= 12 ? 2 : 1), n = "sbcs-cont"; if (r && r.biff >= 8, !r || r.biff == 8) { var i = e.read_shift(1); i && (n = "dbcs-cont"); } else r.biff == 12 && (n = "wstr"); r.biff >= 2 && r.biff <= 5 && (n = "cpstr"); var s = a ? e.read_shift(a, n) : ""; return s; } function zl(e) { var t = e.read_shift(2), r = e.read_shift(1), a = r & 4, n = r & 8, i = 1 + (r & 1), s = 0, f, c = {}; n && (s = e.read_shift(2)), a && (f = e.read_shift(4)); var o = i == 2 ? "dbcs-cont" : "sbcs-cont", l = t === 0 ? "" : e.read_shift(t, o); return n && (e.l += 4 * s), a && (e.l += f), c.t = l, n || (c.raw = "" + c.t + "", c.r = c.t), c; } function jl(e) { var t = e.t || "", r = z(3 + 0); r.write_shift(2, t.length), r.write_shift(1, 1); var a = z(2 * t.length); a.write_shift(2 * t.length, t, "utf16le"); var n = [r, a]; return sr(n); } function Mt(e, t, r) { var a; if (r) { if (r.biff >= 2 && r.biff <= 5) return e.read_shift(t, "cpstr"); if (r.biff >= 12) return e.read_shift(t, "dbcs-cont"); } var n = e.read_shift(1); return n === 0 ? a = e.read_shift(t, "sbcs-cont") : a = e.read_shift(t, "dbcs-cont"), a; } function Xa(e, t, r) { var a = e.read_shift(r && r.biff == 2 ? 1 : 2); return a === 0 ? (e.l++, "") : Mt(e, a, r); } function $t(e, t, r) { if (r.biff > 5) return Xa(e, t, r); var a = e.read_shift(1); return a === 0 ? (e.l++, "") : e.read_shift(a, r.biff <= 4 || !e.lens ? "cpstr" : "sbcs-cont"); } function vf(e, t, r) { return r || (r = z(3 + 2 * e.length)), r.write_shift(2, e.length), r.write_shift(1, 1), r.write_shift(31, e, "utf16le"), r; } function $l(e) { var t = e.read_shift(1); e.l++; var r = e.read_shift(2); return e.l += 2, [t, r]; } function Kl(e) { var t = e.read_shift(4), r = e.l, a = !1; t > 24 && (e.l += t - 24, e.read_shift(16) === "795881f43b1d7f48af2c825dc4852763" && (a = !0), e.l = r); var n = e.read_shift((a ? t - 24 : t) >> 1, "utf16le").replace(Tr, ""); return a && (e.l += 24), n; } function Yl(e) { for (var t = e.read_shift(2), r = ""; t-- > 0; ) r += "../"; var a = e.read_shift(0, "lpstr-ansi"); if (e.l += 2, e.read_shift(2) != 57005) throw new Error("Bad FileMoniker"); var n = e.read_shift(4); if (n === 0) return r + a.replace(/\\/g, "/"); var i = e.read_shift(4); if (e.read_shift(2) != 3) throw new Error("Bad FileMoniker"); var s = e.read_shift(i >> 1, "utf16le").replace(Tr, ""); return r + s; } function Jl(e, t) { var r = e.read_shift(16); switch (r) { case "e0c9ea79f9bace118c8200aa004ba90b": return Kl(e); case "0303000000000000c000000000000046": return Yl(e); default: throw new Error("Unsupported Moniker " + r); } } function r0(e) { var t = e.read_shift(4), r = t > 0 ? e.read_shift(t, "utf16le").replace(Tr, "") : ""; return r; } function bi(e, t) { t || (t = z(6 + e.length * 2)), t.write_shift(4, 1 + e.length); for (var r = 0; r < e.length; ++r) t.write_shift(2, e.charCodeAt(r)); return t.write_shift(2, 0), t; } function ql(e, t) { var r = e.l + t, a = e.read_shift(4); if (a !== 2) throw new Error("Unrecognized streamVersion: " + a); var n = e.read_shift(2); e.l += 2; var i, s, f, c, o = "", l, u; n & 16 && (i = r0(e, r - e.l)), n & 128 && (s = r0(e, r - e.l)), (n & 257) === 257 && (f = r0(e, r - e.l)), (n & 257) === 1 && (c = Jl(e, r - e.l)), n & 8 && (o = r0(e, r - e.l)), n & 32 && (l = e.read_shift(16)), n & 64 && (u = Dn( e /*, 8*/ )), e.l = r; var h = s || f || c || ""; h && o && (h += "#" + o), h || (h = "#" + o), n & 2 && h.charAt(0) == "/" && h.charAt(1) != "/" && (h = "file://" + h); var d = { Target: h }; return l && (d.guid = l), u && (d.time = u), i && (d.Tooltip = i), d; } function Zl(e) { var t = z(512), r = 0, a = e.Target; a.slice(0, 7) == "file://" && (a = a.slice(7)); var n = a.indexOf("#"), i = n > -1 ? 31 : 23; switch (a.charAt(0)) { case "#": i = 28; break; case ".": i &= -3; break; } t.write_shift(4, 2), t.write_shift(4, i); var s = [8, 6815827, 6619237, 4849780, 83]; for (r = 0; r < s.length; ++r) t.write_shift(4, s[r]); if (i == 28) a = a.slice(1), bi(a, t); else if (i & 2) { for (s = "e0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b".split(" "), r = 0; r < s.length; ++r) t.write_shift(1, parseInt(s[r], 16)); var f = n > -1 ? a.slice(0, n) : a; for (t.write_shift(4, 2 * (f.length + 1)), r = 0; r < f.length; ++r) t.write_shift(2, f.charCodeAt(r)); t.write_shift(2, 0), i & 8 && bi(n > -1 ? a.slice(n + 1) : "", t); } else { for (s = "03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46".split(" "), r = 0; r < s.length; ++r) t.write_shift(1, parseInt(s[r], 16)); for (var c = 0; a.slice(c * 3, c * 3 + 3) == "../" || a.slice(c * 3, c * 3 + 3) == "..\\"; ) ++c; for (t.write_shift(2, c), t.write_shift(4, a.length - 3 * c + 1), r = 0; r < a.length - 3 * c; ++r) t.write_shift(1, a.charCodeAt(r + 3 * c) & 255); for (t.write_shift(1, 0), t.write_shift(2, 65535), t.write_shift(2, 57005), r = 0; r < 6; ++r) t.write_shift(4, 0); } return t.slice(0, t.l); } function pf(e) { var t = e.read_shift(1), r = e.read_shift(1), a = e.read_shift(1), n = e.read_shift(1); return [t, r, a, n]; } function mf(e, t) { var r = pf(e); return r[3] = 0, r; } function at(e) { var t = e.read_shift(2), r = e.read_shift(2), a = e.read_shift(2); return { r: t, c: r, ixfe: a }; } function Ut(e, t, r, a) { return a || (a = z(6)), a.write_shift(2, e), a.write_shift(2, t), a.write_shift(2, r || 0), a; } function Ql(e) { var t = e.read_shift(2), r = e.read_shift(2); return e.l += 8, { type: t, flags: r }; } function eu(e, t, r) { return t === 0 ? "" : $t(e, t, r); } function ru(e, t, r) { var a = r.biff > 8 ? 4 : 2, n = e.read_shift(a), i = e.read_shift(a, "i"), s = e.read_shift(a, "i"); return [n, i, s]; } function gf(e) { var t = e.read_shift(2), r = yn(e); return [t, r]; } function tu(e, t, r) { e.l += 4, t -= 4; var a = e.l + t, n = Ga(e, t, r), i = e.read_shift(2); if (a -= e.l, i !== a) throw new Error("Malformed AddinUdf: padding = " + a + " != " + i); return e.l += i, n; } function S0(e) { var t = e.read_shift(2), r = e.read_shift(2), a = e.read_shift(2), n = e.read_shift(2); return { s: { c: a, r: t }, e: { c: n, r } }; } function _f(e, t) { return t || (t = z(8)), t.write_shift(2, e.s.r), t.write_shift(2, e.e.r), t.write_shift(2, e.s.c), t.write_shift(2, e.e.c), t; } function wf(e) { var t = e.read_shift(2), r = e.read_shift(2), a = e.read_shift(1), n = e.read_shift(1); return { s: { c: a, r: t }, e: { c: n, r } }; } var au = wf; function Ef(e) { e.l += 4; var t = e.read_shift(2), r = e.read_shift(2), a = e.read_shift(2); return e.l += 12, [r, t, a]; } function nu(e) { var t = {}; return e.l += 4, e.l += 16, t.fSharedNote = e.read_shift(2), e.l += 4, t; } function iu(e) { var t = {}; return e.l += 4, e.cf = e.read_shift(2), t; } function hr(e) { e.l += 2, e.l += e.read_shift(2); } var su = { /*::[*/ 0: hr, /* FtEnd */ /*::[*/ 4: hr, /* FtMacro */ /*::[*/ 5: hr, /* FtButton */ /*::[*/ 6: hr, /* FtGmo */ /*::[*/ 7: iu, /* FtCf */ /*::[*/ 8: hr, /* FtPioGrbit */ /*::[*/ 9: hr, /* FtPictFmla */ /*::[*/ 10: hr, /* FtCbls */ /*::[*/ 11: hr, /* FtRbo */ /*::[*/ 12: hr, /* FtSbs */ /*::[*/ 13: nu, /* FtNts */ /*::[*/ 14: hr, /* FtSbsFmla */ /*::[*/ 15: hr, /* FtGboData */ /*::[*/ 16: hr, /* FtEdoData */ /*::[*/ 17: hr, /* FtRboData */ /*::[*/ 18: hr, /* FtCblsData */ /*::[*/ 19: hr, /* FtLbsData */ /*::[*/ 20: hr, /* FtCblsFmla */ /*::[*/ 21: Ef }; function fu(e, t) { for (var r = e.l + t, a = []; e.l < r; ) { var n = e.read_shift(2); e.l -= 2; try { a.push(su[n](e, r - e.l)); } catch { return e.l = r, a; } } return e.l != r && (e.l = r), a; } function t0(e, t) { var r = { BIFFVer: 0, dt: 0 }; switch (r.BIFFVer = e.read_shift(2), t -= 2, t >= 2 && (r.dt = e.read_shift(2), e.l -= 2), r.BIFFVer) { case 1536: case 1280: case 1024: case 768: case 512: case 2: case 7: break; default: if (t > 6) throw new Error("Unexpected BIFF Ver " + r.BIFFVer); } return e.read_shift(t), r; } function On(e, t, r) { var a = 1536, n = 16; switch (r.bookType) { case "biff8": break; case "biff5": a = 1280, n = 8; break; case "biff4": a = 4, n = 6; break; case "biff3": a = 3, n = 6; break; case "biff2": a = 2, n = 4; break; case "xla": break; default: throw new Error("unsupported BIFF version"); } var i = z(n); return i.write_shift(2, a), i.write_shift(2, t), n > 4 && i.write_shift(2, 29282), n > 6 && i.write_shift(2, 1997), n > 8 && (i.write_shift(2, 49161), i.write_shift(2, 1), i.write_shift(2, 1798), i.write_shift(2, 0)), i; } function cu(e, t) { return t === 0 || e.read_shift(2), 1200; } function ou(e, t, r) { if (r.enc) return e.l += t, ""; var a = e.l, n = $t(e, 0, r); return e.read_shift(t + a - e.l), n; } function lu(e, t) { var r = !t || t.biff == 8, a = z(r ? 112 : 54); for (a.write_shift(t.biff == 8 ? 2 : 1, 7), r && a.write_shift(1, 0), a.write_shift(4, 859007059), a.write_shift(4, 5458548 | (r ? 0 : 536870912)); a.l < a.length; ) a.write_shift(1, r ? 0 : 32); return a; } function uu(e, t, r) { var a = r && r.biff == 8 || t == 2 ? e.read_shift(2) : (e.l += t, 0); return { fDialog: a & 16, fBelow: a & 64, fRight: a & 128 }; } function hu(e, t, r) { var a = e.read_shift(4), n = e.read_shift(1) & 3, i = e.read_shift(1); switch (i) { case 0: i = "Worksheet"; break; case 1: i = "Macrosheet"; break; case 2: i = "Chartsheet"; break; case 6: i = "VBAModule"; break; } var s = Ga(e, 0, r); return s.length === 0 && (s = "Sheet1"), { pos: a, hs: n, dt: i, name: s }; } function xu(e, t) { var r = !t || t.biff >= 8 ? 2 : 1, a = z(8 + r * e.name.length); a.write_shift(4, e.pos), a.write_shift(1, e.hs || 0), a.write_shift(1, e.dt), a.write_shift(1, e.name.length), t.biff >= 8 && a.write_shift(1, 1), a.write_shift(r * e.name.length, e.name, t.biff < 8 ? "sbcs" : "utf16le"); var n = a.slice(0, a.l); return n.l = a.l, n; } function du(e, t) { for (var r = e.l + t, a = e.read_shift(4), n = e.read_shift(4), i = [], s = 0; s != n && e.l < r; ++s) i.push(zl(e)); return i.Count = a, i.Unique = n, i; } function vu(e, t) { var r = z(8); r.write_shift(4, e.Count), r.write_shift(4, e.Unique); for (var a = [], n = 0; n < e.length; ++n) a[n] = jl(e[n]); var i = sr([r].concat(a)); return i.parts = [r.length].concat(a.map(function(s) { return s.length; })), i; } function pu(e, t) { var r = {}; return r.dsst = e.read_shift(2), e.l += t - 2, r; } function mu(e) { var t = {}; t.r = e.read_shift(2), t.c = e.read_shift(2), t.cnt = e.read_shift(2) - t.c; var r = e.read_shift(2); e.l += 4; var a = e.read_shift(1); return e.l += 3, a & 7 && (t.level = a & 7), a & 32 && (t.hidden = !0), a & 64 && (t.hpt = r / 20), t; } function gu(e) { var t = Ql(e); if (t.type != 2211) throw new Error("Invalid Future Record " + t.type); var r = e.read_shift(4); return r !== 0; } function _u(e) { return e.read_shift(2), e.read_shift(4); } function Pi(e, t, r) { var a = 0; r && r.biff == 2 || (a = e.read_shift(2)); var n = e.read_shift(2); r && r.biff == 2 && (a = 1 - (n >> 15), n &= 32767); var i = { Unsynced: a & 1, DyZero: (a & 2) >> 1, ExAsc: (a & 4) >> 2, ExDsc: (a & 8) >> 3 }; return [i, n]; } function wu(e) { var t = e.read_shift(2), r = e.read_shift(2), a = e.read_shift(2), n = e.read_shift(2), i = e.read_shift(2), s = e.read_shift(2), f = e.read_shift(2), c = e.read_shift(2), o = e.read_shift(2); return { Pos: [t, r], Dim: [a, n], Flags: i, CurTab: s, FirstTab: f, Selected: c, TabRatio: o }; } function Eu() { var e = z(18); return e.write_shift(2, 0), e.write_shift(2, 0), e.write_shift(2, 29280), e.write_shift(2, 17600), e.write_shift(2, 56), e.write_shift(2, 0), e.write_shift(2, 0), e.write_shift(2, 1), e.write_shift(2, 500), e; } function ku(e, t, r) { if (r && r.biff >= 2 && r.biff < 5) return {}; var a = e.read_shift(2); return { RTL: a & 64 }; } function Tu(e) { var t = z(18), r = 1718; return e && e.RTL && (r |= 64), t.write_shift(2, r), t.write_shift(4, 0), t.write_shift(4, 64), t.write_shift(4, 0), t.write_shift(4, 0), t; } function Su() { } function Fu(e, t, r) { var a = { dyHeight: e.read_shift(2), fl: e.read_shift(2) }; switch (r && r.biff || 8) { case 2: break; case 3: case 4: e.l += 2; break; default: e.l += 10; break; } return a.name = Ga(e, 0, r), a; } function yu(e, t) { var r = e.name || "Arial", a = t && t.biff == 5, n = a ? 15 + r.length : 16 + 2 * r.length, i = z(n); return i.write_shift(2, (e.sz || 12) * 20), i.write_shift(4, 0), i.write_shift(2, 400), i.write_shift(4, 0), i.write_shift(2, 0), i.write_shift(1, r.length), a || i.write_shift(1, 1), i.write_shift((a ? 1 : 2) * r.length, r, a ? "sbcs" : "utf16le"), i; } function Au(e) { var t = at(e); return t.isst = e.read_shift(4), t; } function Cu(e, t, r, a) { var n = z(10); return Ut(e, t, a, n), n.write_shift(4, r), n; } function Du(e, t, r) { r.biffguess && r.biff == 2 && (r.biff = 5); var a = e.l + t, n = at(e); r.biff == 2 && e.l++; var i = Xa(e, a - e.l, r); return n.val = i, n; } function Ou(e, t, r, a, n) { var i = !n || n.biff == 8, s = z(6 + 2 + +i + (1 + i) * r.length); return Ut(e, t, a, s), s.write_shift(2, r.length), i && s.write_shift(1, 1), s.write_shift((1 + i) * r.length, r, i ? "utf16le" : "sbcs"), s; } function Iu(e, t, r) { var a = e.read_shift(2), n = $t(e, 0, r); return [a, n]; } function Ru(e, t, r, a) { var n = r && r.biff == 5; a || (a = z(n ? 3 + t.length : 5 + 2 * t.length)), a.write_shift(2, e), a.write_shift(n ? 1 : 2, t.length), n || a.write_shift(1, 1), a.write_shift((n ? 1 : 2) * t.length, t, n ? "sbcs" : "utf16le"); var i = a.length > a.l ? a.slice(0, a.l) : a; return i.l == null && (i.l = i.length), i; } var Nu = $t; function Li(e, t, r) { var a = e.l + t, n = r.biff == 8 || !r.biff ? 4 : 2, i = e.read_shift(n), s = e.read_shift(n), f = e.read_shift(2), c = e.read_shift(2); return e.l = a, { s: { r: i, c: f }, e: { r: s, c } }; } function bu(e, t) { var r = t.biff == 8 || !t.biff ? 4 : 2, a = z(2 * r + 6); return a.write_shift(r, e.s.r), a.write_shift(r, e.e.r + 1), a.write_shift(2, e.s.c), a.write_shift(2, e.e.c + 1), a.write_shift(2, 0), a; } function Pu(e) { var t = e.read_shift(2), r = e.read_shift(2), a = gf(e); return { r: t, c: r, ixfe: a[0], rknum: a[1] }; } function Lu(e, t) { for (var r = e.l + t - 2, a = e.read_shift(2), n = e.read_shift(2), i = []; e.l < r; ) i.push(gf(e)); if (e.l !== r) throw new Error("MulRK read error"); var s = e.read_shift(2); if (i.length != s - n + 1) throw new Error("MulRK length mismatch"); return { r: a, c: n, C: s, rkrec: i }; } function Bu(e, t) { for (var r = e.l + t - 2, a = e.read_shift(2), n = e.read_shift(2), i = []; e.l < r; ) i.push(e.read_shift(2)); if (e.l !== r) throw new Error("MulBlank read error"); var s = e.read_shift(2); if (i.length != s - n + 1) throw new Error("MulBlank length mismatch"); return { r: a, c: n, C: s, ixfe: i }; } function Mu(e, t, r, a) { var n = {}, i = e.read_shift(4), s = e.read_shift(4), f = e.read_shift(4), c = e.read_shift(2); return n.patternType = gl[f >> 26], a.cellStyles && (n.alc = i & 7, n.fWrap = i >> 3 & 1, n.alcV = i >> 4 & 7, n.fJustLast = i >> 7 & 1, n.trot = i >> 8 & 255, n.cIndent = i >> 16 & 15, n.fShrinkToFit = i >> 20 & 1, n.iReadOrder = i >> 22 & 2, n.fAtrNum = i >> 26 & 1, n.fAtrFnt = i >> 27 & 1, n.fAtrAlc = i >> 28 & 1, n.fAtrBdr = i >> 29 & 1, n.fAtrPat = i >> 30 & 1, n.fAtrProt = i >> 31 & 1, n.dgLeft = s & 15, n.dgRight = s >> 4 & 15, n.dgTop = s >> 8 & 15, n.dgBottom = s >> 12 & 15, n.icvLeft = s >> 16 & 127, n.icvRight = s >> 23 & 127, n.grbitDiag = s >> 30 & 3, n.icvTop = f & 127, n.icvBottom = f >> 7 & 127, n.icvDiag = f >> 14 & 127, n.dgDiag = f >> 21 & 15, n.icvFore = c & 127, n.icvBack = c >> 7 & 127, n.fsxButton = c >> 14 & 1), n; } function Uu(e, t, r) { var a = {}; return a.ifnt = e.read_shift(2), a.numFmtId = e.read_shift(2), a.flags = e.read_shift(2), a.fStyle = a.flags >> 2 & 1, t -= 6, a.data = Mu(e, t, a.fStyle, r), a; } function Bi(e, t, r, a) { var n = r && r.biff == 5; a || (a = z(n ? 16 : 20)), a.write_shift(2, 0), e.style ? (a.write_shift(2, e.numFmtId || 0), a.write_shift(2, 65524)) : (a.write_shift(2, e.numFmtId || 0), a.write_shift(2, t << 4)); var i = 0; return e.numFmtId > 0 && n && (i |= 1024), a.write_shift(4, i), a.write_shift(4, 0), n || a.write_shift(4, 0), a.write_shift(2, 0), a; } function Wu(e) { e.l += 4; var t = [e.read_shift(2), e.read_shift(2)]; if (t[0] !== 0 && t[0]--, t[1] !== 0 && t[1]--, t[0] > 7 || t[1] > 7) throw new Error("Bad Gutters: " + t.join("|")); return t; } function Hu(e) { var t = z(8); return t.write_shift(4, 0), t.write_shift(2, e[0] ? e[0] + 1 : 0), t.write_shift(2, e[1] ? e[1] + 1 : 0), t; } function Mi(e, t, r) { var a = at(e); (r.biff == 2 || t == 9) && ++e.l; var n = Xl(e); return a.val = n, a.t = n === !0 || n === !1 ? "b" : "e", a; } function Vu(e, t, r, a, n, i) { var s = z(8); return Ut(e, t, a, s), df(r, i, s), s; } function Gu(e, t, r) { r.biffguess && r.biff == 2 && (r.biff = 5); var a = at(e), n = pr(e); return a.val = n, a; } function Xu(e, t, r, a) { var n = z(14); return Ut(e, t, a, n), Bt(r, n), n; } var Ui = eu; function zu(e, t, r) { var a = e.l + t, n = e.read_shift(2), i = e.read_shift(2); if (r.sbcch = i, i == 1025 || i == 14849) return [i, n]; if (i < 1 || i > 255) throw new Error("Unexpected SupBook type: " + i); for (var s = Mt(e, i), f = []; a > e.l; ) f.push(Xa(e)); return [i, n, s, f]; } function Wi(e, t, r) { var a = e.read_shift(2), n, i = { fBuiltIn: a & 1, fWantAdvise: a >>> 1 & 1, fWantPict: a >>> 2 & 1, fOle: a >>> 3 & 1, fOleLink: a >>> 4 & 1, cf: a >>> 5 & 1023, fIcon: a >>> 15 & 1 }; return r.sbcch === 14849 && (n = tu(e, t - 2, r)), i.body = n || e.read_shift(t - 2), typeof n == "string" && (i.Name = n), i; } var ju = [ "_xlnm.Consolidate_Area", "_xlnm.Auto_Open", "_xlnm.Auto_Close", "_xlnm.Extract", "_xlnm.Database", "_xlnm.Criteria", "_xlnm.Print_Area", "_xlnm.Print_Titles", "_xlnm.Recorder", "_xlnm.Data_Form", "_xlnm.Auto_Activate", "_xlnm.Auto_Deactivate", "_xlnm.Sheet_Title", "_xlnm._FilterDatabase" ]; function Hi(e, t, r) { var a = e.l + t, n = e.read_shift(2), i = e.read_shift(1), s = e.read_shift(1), f = e.read_shift(r && r.biff == 2 ? 1 : 2), c = 0; (!r || r.biff >= 5) && (r.biff != 5 && (e.l += 2), c = e.read_shift(2), r.biff == 5 && (e.l += 2), e.l += 4); var o = Mt(e, s, r); n & 32 && (o = ju[o.charCodeAt(0)]); var l = a - e.l; r && r.biff == 2 && --l; var u = a == e.l || f === 0 || !(l > 0) ? [] : fv(e, l, r, f); return { chKey: i, Name: o, itab: c, rgce: u }; } function kf(e, t, r) { if (r.biff < 8) return $u(e, t, r); for (var a = [], n = e.l + t, i = e.read_shift(r.biff > 8 ? 4 : 2); i-- !== 0; ) a.push(ru(e, r.biff > 8 ? 12 : 6, r)); if (e.l != n) throw new Error("Bad ExternSheet: " + e.l + " != " + n); return a; } function $u(e, t, r) { e[e.l + 1] == 3 && e[e.l]++; var a = Ga(e, t, r); return a.charCodeAt(0) == 3 ? a.slice(1) : a; } function Ku(e, t, r) { if (r.biff < 8) { e.l += t; return; } var a = e.read_shift(2), n = e.read_shift(2), i = Mt(e, a, r), s = Mt(e, n, r); return [i, s]; } function Yu(e, t, r) { var a = wf(e); e.l++; var n = e.read_shift(1); return t -= 8, [cv(e, t, r), n, a]; } function Vi(e, t, r) { var a = au(e); switch (r.biff) { case 2: e.l++, t -= 7; break; case 3: case 4: e.l += 2, t -= 8; break; default: e.l += 6, t -= 12; } return [a, iv(e, t, r)]; } function Ju(e) { var t = e.read_shift(4) !== 0, r = e.read_shift(4) !== 0, a = e.read_shift(4); return [t, r, a]; } function qu(e, t, r) { if (!(r.biff < 8)) { var a = e.read_shift(2), n = e.read_shift(2), i = e.read_shift(2), s = e.read_shift(2), f = $t(e, 0, r); return r.biff < 8 && e.read_shift(1), [{ r: a, c: n }, f, s, i]; } } function Zu(e, t, r) { return qu(e, t, r); } function Qu(e, t) { for (var r = [], a = e.read_shift(2); a--; ) r.push(S0(e)); return r; } function eh(e) { var t = z(2 + e.length * 8); t.write_shift(2, e.length); for (var r = 0; r < e.length; ++r) _f(e[r], t); return t; } function rh(e, t, r) { if (r && r.biff < 8) return ah(e, t, r); var a = Ef(e), n = fu(e, t - 22, a[1]); return { cmo: a, ft: n }; } var th = { 8: function(e, t) { var r = e.l + t; e.l += 10; var a = e.read_shift(2); e.l += 4, e.l += 2, e.l += 2, e.l += 2, e.l += 4; var n = e.read_shift(1); return e.l += n, e.l = r, { fmt: a }; } }; function ah(e, t, r) { e.l += 4; var a = e.read_shift(2), n = e.read_shift(2), i = e.read_shift(2); e.l += 2, e.l += 2, e.l += 2, e.l += 2, e.l += 2, e.l += 2, e.l += 2, e.l += 2, e.l += 2, e.l += 6, t -= 36; var s = []; return s.push((th[a] || gr)(e, t, r)), { cmo: [n, a, i], ft: s }; } function nh(e, t, r) { var a = e.l, n = ""; try { e.l += 4; var i = (r.lastobj || { cmo: [0, 0] }).cmo[1], s; [0, 5, 7, 11, 12, 14].indexOf(i) == -1 ? e.l += 6 : s = $l(e, 6, r); var f = e.read_shift(2); e.read_shift(2), rr(e, 2); var c = e.read_shift(2); e.l += c; for (var o = 1; o < e.lens.length - 1; ++o) { if (e.l - a != e.lens[o]) throw new Error("TxO: bad continue record"); var l = e[e.l], u = Mt(e, e.lens[o + 1] - e.lens[o] - 1); if (n += u, n.length >= (l ? f : 2 * f)) break; } if (n.length !== f && n.length !== f * 2) throw new Error("cchText: " + f + " != " + n.length); return e.l = a + t, { t: n }; } catch { return e.l = a + t, { t: n }; } } function ih(e, t) { var r = S0(e); e.l += 16; var a = ql(e, t - 24); return [r, a]; } function sh(e) { var t = z(24), r = Xe(e[0]); t.write_shift(2, r.r), t.write_shift(2, r.r), t.write_shift(2, r.c), t.write_shift(2, r.c); for (var a = "d0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b".split(" "), n = 0; n < 16; ++n) t.write_shift(1, parseInt(a[n], 16)); return sr([t, Zl(e[1])]); } function fh(e, t) { e.read_shift(2); var r = S0(e), a = e.read_shift((t - 10) / 2, "dbcs-cont"); return a = a.replace(Tr, ""), [r, a]; } function ch(e) { var t = e[1].Tooltip, r = z(10 + 2 * (t.length + 1)); r.write_shift(2, 2048); var a = Xe(e[0]); r.write_shift(2, a.r), r.write_shift(2, a.r), r.write_shift(2, a.c), r.write_shift(2, a.c); for (var n = 0; n < t.length; ++n) r.write_shift(2, t.charCodeAt(n)); return r.write_shift(2, 0), r; } function oh(e) { var t = [0, 0], r; return r = e.read_shift(2), t[0] = yi[r] || r, r = e.read_shift(2), t[1] = yi[r] || r, t; } function lh(e) { return e || (e = z(4)), e.write_shift(2, 1), e.write_shift(2, 1), e; } function uh(e) { for (var t = e.read_shift(2), r = []; t-- > 0; ) r.push(mf(e)); return r; } function hh(e) { for (var t = e.read_shift(2), r = []; t-- > 0; ) r.push(mf(e)); return r; } function xh(e) { e.l += 2; var t = { cxfs: 0, crc: 0 }; return t.cxfs = e.read_shift(2), t.crc = e.read_shift(4), t; } function Tf(e, t, r) { if (!r.cellStyles) return gr(e, t); var a = r && r.biff >= 12 ? 4 : 2, n = e.read_shift(a), i = e.read_shift(a), s = e.read_shift(a), f = e.read_shift(a), c = e.read_shift(2); a == 2 && (e.l += 2); var o = { s: n, e: i, w: s, ixfe: f, flags: c }; return (r.biff >= 5 || !r.biff) && (o.level = c >> 8 & 7), o; } function dh(e, t) { var r = z(12); r.write_shift(2, t), r.write_shift(2, t), r.write_shift(2, e.width * 256), r.write_shift(2, 0); var a = 0; return e.hidden && (a |= 1), r.write_shift(1, a), a = e.level || 0, r.write_shift(1, a), r.write_shift(2, 0), r; } function vh(e, t) { var r = {}; return t < 32 || (e.l += 16, r.header = pr(e), r.footer = pr(e), e.l += 2), r; } function ph(e, t, r) { var a = { area: !1 }; if (r.biff != 5) return e.l += t, a; var n = e.read_shift(1); return e.l += 3, n & 16 && (a.area = !0), a; } function mh(e) { for (var t = z(2 * e), r = 0; r < e; ++r) t.write_shift(2, r + 1); return t; } var gh = at, _h = xf, wh = Xa; function Eh(e) { var t = e.read_shift(2), r = e.read_shift(2), a = e.read_shift(4), n = { fmt: t, env: r, len: a, data: e.slice(e.l, e.l + a) }; return e.l += a, n; } function kh(e, t, r) { r.biffguess && r.biff == 5 && (r.biff = 2); var a = at(e); ++e.l; var n = $t(e, t - 7, r); return a.t = "str", a.val = n, a; } function Th(e) { var t = at(e); ++e.l; var r = pr(e); return t.t = "n", t.val = r, t; } function Sh(e, t, r) { var a = z(15); return Ka(a, e, t), a.write_shift(8, r, "f"), a; } function Fh(e) { var t = at(e); ++e.l; var r = e.read_shift(2); return t.t = "n", t.val = r, t; } function yh(e, t, r) { var a = z(9); return Ka(a, e, t), a.write_shift(2, r), a; } function Ah(e) { var t = e.read_shift(1); return t === 0 ? (e.l++, "") : e.read_shift(t, "sbcs-cont"); } function Ch(e, t) { e.l += 6, e.l += 2, e.l += 1, e.l += 3, e.l += 1, e.l += t - 13; } function Dh(e, t, r) { var a = e.l + t, n = at(e), i = e.read_shift(2), s = Mt(e, i, r); return e.l = a, n.t = "str", n.val = s, n; } var Oh = [2, 3, 48, 49, 131, 139, 140, 245], Q0 = /* @__PURE__ */ function() { var e = { /* Code Pages Supported by Visual FoxPro */ /*::[*/ 1: 437, /*::[*/ 2: 850, /*::[*/ 3: 1252, /*::[*/ 4: 1e4, /*::[*/ 100: 852, /*::[*/ 101: 866, /*::[*/ 102: 865, /*::[*/ 103: 861, /*::[*/ 104: 895, /*::[*/ 105: 620, /*::[*/ 106: 737, /*::[*/ 107: 857, /*::[*/ 120: 950, /*::[*/ 121: 949, /*::[*/ 122: 936, /*::[*/ 123: 932, /*::[*/ 124: 874, /*::[*/ 125: 1255, /*::[*/ 126: 1256, /*::[*/ 150: 10007, /*::[*/ 151: 10029, /*::[*/ 152: 10006, /*::[*/ 200: 1250, /*::[*/ 201: 1251, /*::[*/ 202: 1254, /*::[*/ 203: 1253, /* shapefile DBF extension */ /*::[*/ 0: 20127, /*::[*/ 8: 865, /*::[*/ 9: 437, /*::[*/ 10: 850, /*::[*/ 11: 437, /*::[*/ 13: 437, /*::[*/ 14: 850, /*::[*/ 15: 437, /*::[*/ 16: 850, /*::[*/ 17: 437, /*::[*/ 18: 850, /*::[*/ 19: 932, /*::[*/ 20: 850, /*::[*/ 21: 437, /*::[*/ 22: 850, /*::[*/ 23: 865, /*::[*/ 24: 437, /*::[*/ 25: 437, /*::[*/ 26: 850, /*::[*/ 27: 437, /*::[*/ 28: 863, /*::[*/ 29: 850, /*::[*/ 31: 852, /*::[*/ 34: 852, /*::[*/ 35: 852, /*::[*/ 36: 860, /*::[*/ 37: 850, /*::[*/ 38: 866, /*::[*/ 55: 850, /*::[*/ 64: 852, /*::[*/ 77: 936, /*::[*/ 78: 949, /*::[*/ 79: 950, /*::[*/ 80: 874, /*::[*/ 87: 1252, /*::[*/ 88: 1252, /*::[*/ 89: 1252, /*::[*/ 108: 863, /*::[*/ 134: 737, /*::[*/ 135: 852, /*::[*/ 136: 857, /*::[*/ 204: 1257, /*::[*/ 255: 16969 }, t = E0({ /*::[*/ 1: 437, /*::[*/ 2: 850, /*::[*/ 3: 1252, /*::[*/ 4: 1e4, /*::[*/ 100: 852, /*::[*/ 101: 866, /*::[*/ 102: 865, /*::[*/ 103: 861, /*::[*/ 104: 895, /*::[*/ 105: 620, /*::[*/ 106: 737, /*::[*/ 107: 857, /*::[*/ 120: 950, /*::[*/ 121: 949, /*::[*/ 122: 936, /*::[*/ 123: 932, /*::[*/ 124: 874, /*::[*/ 125: 1255, /*::[*/ 126: 1256, /*::[*/ 150: 10007, /*::[*/ 151: 10029, /*::[*/ 152: 10006, /*::[*/ 200: 1250, /*::[*/ 201: 1251, /*::[*/ 202: 1254, /*::[*/ 203: 1253, /*::[*/ 0: 20127 }); function r(f, c) { var o = [], l = Et(1); switch (c.type) { case "base64": l = Or(Rr(f)); break; case "binary": l = Or(f); break; case "buffer": case "array": l = f; break; } or(l, 0); var u = l.read_shift(1), h = !!(u & 136), d = !1, v = !1; switch (u) { case 2: break; case 3: break; case 48: d = !0, h = !0; break; case 49: d = !0, h = !0; break; case 131: break; case 139: break; case 140: v = !0; break; case 245: break; default: throw new Error("DBF Unsupported Version: " + u.toString(16)); } var x = 0, p = 521; u == 2 && (x = l.read_shift(2)), l.l += 3, u != 2 && (x = l.read_shift(4)), x > 1048576 && (x = 1e6), u != 2 && (p = l.read_shift(2)); var w = l.read_shift(2), y = c.codepage || 1252; u != 2 && (l.l += 16, l.read_shift(1), l[l.l] !== 0 && (y = e[l[l.l]]), l.l += 1, l.l += 2), v && (l.l += 36); for (var g = [], C = {}, b = Math.min(l.length, u == 2 ? 521 : p - 10 - (d ? 264 : 0)), O = v ? 32 : 11; l.l < b && l[l.l] != 13; ) switch (C = {}, C.name = mt.utils.decode(y, l.slice(l.l, l.l + O)).replace(/[\u0000\r\n].*$/g, ""), l.l += O, C.type = String.fromCharCode(l.read_shift(1)), u != 2 && !v && (C.offset = l.read_shift(4)), C.len = l.read_shift(1), u == 2 && (C.offset = l.read_shift(2)), C.dec = l.read_shift(1), C.name.length && g.push(C), u != 2 && (l.l += v ? 13 : 14), C.type) { case "B": (!d || C.len != 8) && c.WTF && "" + C.name + C.type; break; case "G": case "P": c.WTF && "" + C.name + C.type; break; case "+": case "0": case "@": case "C": case "D": case "F": case "I": case "L": case "M": case "N": case "O": case "T": case "Y": break; default: throw new Error("Unknown Field Type: " + C.type); } if (l[l.l] !== 13 && (l.l = p - 1), l.read_shift(1) !== 13) throw new Error("DBF Terminator not found " + l.l + " " + l[l.l]); l.l = p; var S = 0, B = 0; for (o[0] = [], B = 0; B != g.length; ++B) o[0][B] = g[B].name; for (; x-- > 0; ) { if (l[l.l] === 42) { l.l += w; continue; } for (++l.l, o[++S] = [], B = 0, B = 0; B != g.length; ++B) { var R = l.slice(l.l, l.l + g[B].len); l.l += g[B].len, or(R, 0); var X = mt.utils.decode(y, R); switch (g[B].type) { case "C": X.trim().length && (o[S][B] = X.replace(/\s+$/, "")); break; case "D": X.length === 8 ? o[S][B] = new Date(+X.slice(0, 4), +X.slice(4, 6) - 1, +X.slice(6, 8)) : o[S][B] = X; break; case "F": o[S][B] = parseFloat(X.trim()); break; case "+": case "I": o[S][B] = v ? R.read_shift(-4, "i") ^ 2147483648 : R.read_shift(4, "i"); break; case "L": switch (X.trim().toUpperCase()) { case "Y": case "T": o[S][B] = !0; break; case "N": case "F": o[S][B] = !1; break; case "": case "?": break; default: throw new Error("DBF Unrecognized L:|" + X + "|"); } break; case "M": if (!h) throw new Error("DBF Unexpected MEMO for type " + u.toString(16)); o[S][B] = "##MEMO##" + (v ? parseInt(X.trim(), 10) : R.read_shift(4)); break; case "N": X = X.replace(/\u0000/g, "").trim(), X && X != "." && (o[S][B] = +X || 0); break; case "@": o[S][B] = new Date(R.read_shift(-8, "f") - 621356832e5); break; case "T": o[S][B] = new Date((R.read_shift(4) - 2440588) * 864e5 + R.read_shift(4)); break; case "Y": o[S][B] = R.read_shift(4, "i") / 1e4 + R.read_shift(4, "i") / 1e4 * Math.pow(2, 32); break; case "O": o[S][B] = -R.read_shift(-8, "f"); break; case "B": if (d && g[B].len == 8) { o[S][B] = R.read_shift(8, "f"); break; } case "G": case "P": R.l += g[B].len; break; case "0": if (g[B].name === "_NullFlags") break; default: throw new Error("DBF Unsupported data type " + g[B].type); } } } if (u != 2 && l.l < l.length && l[l.l++] != 26) throw new Error("DBF EOF Marker missing " + (l.l - 1) + " of " + l.length + " " + l[l.l - 1].toString(16)); return c && c.sheetRows && (o = o.slice(0, c.sheetRows)), c.DBF = g, o; } function a(f, c) { var o = c || {}; o.dateNF || (o.dateNF = "yyyymmdd"); var l = fa(r(f, o), o); return l["!cols"] = o.DBF.map(function(u) { return { wch: u.len, DBF: u }; }), delete o.DBF, l; } function n(f, c) { try { return yt(a(f, c), c); } catch (o) { if (c && c.WTF) throw o; } return { SheetNames: [], Sheets: {} }; } var i = { B: 8, C: 250, L: 1, D: 8, "?": 0, "": 0 }; function s(f, c) { var o = c || {}; if (+o.codepage >= 0 && zr(+o.codepage), o.type == "string") throw new Error("Cannot write DBF to JS string"); var l = Fr(), u = _0(f, { header: 1, raw: !0, cellDates: !0 }), h = u[0], d = u.slice(1), v = f["!cols"] || [], x = 0, p = 0, w = 0, y = 1; for (x = 0; x < h.length; ++x) { if (((v[x] || {}).DBF || {}).name) { h[x] = v[x].DBF.name, ++w; continue; } if (h[x] != null) { if (++w, typeof h[x] == "number" && (h[x] = h[x].toString(10)), typeof h[x] != "string") throw new Error("DBF Invalid column name " + h[x] + " |" + typeof h[x] + "|"); if (h.indexOf(h[x]) !== x) { for (p = 0; p < 1024; ++p) if (h.indexOf(h[x] + "_" + p) == -1) { h[x] += "_" + p; break; } } } } var g = De(f["!ref"]), C = [], b = [], O = []; for (x = 0; x <= g.e.c - g.s.c; ++x) { var S = "", B = "", R = 0, X = []; for (p = 0; p < d.length; ++p) d[p][x] != null && X.push(d[p][x]); if (X.length == 0 || h[x] == null) { C[x] = "?"; continue; } for (p = 0; p < X.length; ++p) { switch (typeof X[p]) { case "number": B = "B"; break; case "string": B = "C"; break; case "boolean": B = "L"; break; case "object": B = X[p] instanceof Date ? "D" : "C"; break; default: B = "C"; } R = Math.max(R, String(X[p]).length), S = S && S != B ? "C" : B; } R > 250 && (R = 250), B = ((v[x] || {}).DBF || {}).type, B == "C" && v[x].DBF.len > R && (R = v[x].DBF.len), S == "B" && B == "N" && (S = "N", O[x] = v[x].DBF.dec, R = v[x].DBF.len), b[x] = S == "C" || B == "N" ? R : i[S] || 0, y += b[x], C[x] = S; } var G = l.next(32); for (G.write_shift(4, 318902576), G.write_shift(4, d.length), G.write_shift(2, 296 + 32 * w), G.write_shift(2, y), x = 0; x < 4; ++x) G.write_shift(4, 0); for (G.write_shift(4, 0 | (+t[ /*::String(*/ os /*::)*/ ] || 3) << 8), x = 0, p = 0; x < h.length; ++x) if (h[x] != null) { var L = l.next(32), J = (h[x].slice(-10) + "\0\0\0\0\0\0\0\0\0\0\0").slice(0, 11); L.write_shift(1, J, "sbcs"), L.write_shift(1, C[x] == "?" ? "C" : C[x], "sbcs"), L.write_shift(4, p), L.write_shift(1, b[x] || i[C[x]] || 0), L.write_shift(1, O[x] || 0), L.write_shift(1, 2), L.write_shift(4, 0), L.write_shift(1, 0), L.write_shift(4, 0), L.write_shift(4, 0), p += b[x] || i[C[x]] || 0; } var le = l.next(264); for (le.write_shift(4, 13), x = 0; x < 65; ++x) le.write_shift(4, 0); for (x = 0; x < d.length; ++x) { var ie = l.next(y); for (ie.write_shift(1, 0), p = 0; p < h.length; ++p) if (h[p] != null) switch (C[p]) { case "L": ie.write_shift(1, d[x][p] == null ? 63 : d[x][p] ? 84 : 70); break; case "B": ie.write_shift(8, d[x][p] || 0, "f"); break; case "N": var he = "0"; for (typeof d[x][p] == "number" && (he = d[x][p].toFixed(O[p] || 0)), w = 0; w < b[p] - he.length; ++w) ie.write_shift(1, 32); ie.write_shift(1, he, "sbcs"); break; case "D": d[x][p] ? (ie.write_shift(4, ("0000" + d[x][p].getFullYear()).slice(-4), "sbcs"), ie.write_shift(2, ("00" + (d[x][p].getMonth() + 1)).slice(-2), "sbcs"), ie.write_shift(2, ("00" + d[x][p].getDate()).slice(-2), "sbcs")) : ie.write_shift(8, "00000000", "sbcs"); break; case "C": var ce = String(d[x][p] != null ? d[x][p] : "").slice(0, b[p]); for (ie.write_shift(1, ce, "sbcs"), w = 0; w < b[p] - ce.length; ++w) ie.write_shift(1, 32); break; } } return l.next(1).write_shift(1, 26), l.end(); } return { to_workbook: n, to_sheet: a, from_sheet: s }; }(), Sf = /* @__PURE__ */ function() { var e = { AA: "À", BA: "Á", CA: "Â", DA: 195, HA: "Ä", JA: 197, AE: "È", BE: "É", CE: "Ê", HE: "Ë", AI: "Ì", BI: "Í", CI: "Î", HI: "Ï", AO: "Ò", BO: "Ó", CO: "Ô", DO: 213, HO: "Ö", AU: "Ù", BU: "Ú", CU: "Û", HU: "Ü", Aa: "à", Ba: "á", Ca: "â", Da: 227, Ha: "ä", Ja: 229, Ae: "è", Be: "é", Ce: "ê", He: "ë", Ai: "ì", Bi: "í", Ci: "î", Hi: "ï", Ao: "ò", Bo: "ó", Co: "ô", Do: 245, Ho: "ö", Au: "ù", Bu: "ú", Cu: "û", Hu: "ü", KC: "Ç", Kc: "ç", q: "æ", z: "œ", a: "Æ", j: "Œ", DN: 209, Dn: 241, Hy: 255, S: 169, c: 170, R: 174, "B ": 180, /*::[*/ 0: 176, /*::[*/ 1: 177, /*::[*/ 2: 178, /*::[*/ 3: 179, /*::[*/ 5: 181, /*::[*/ 6: 182, /*::[*/ 7: 183, Q: 185, k: 186, b: 208, i: 216, l: 222, s: 240, y: 248, "!": 161, '"': 162, "#": 163, "(": 164, "%": 165, "'": 167, "H ": 168, "+": 171, ";": 187, "<": 188, "=": 189, ">": 190, "?": 191, "{": 223 }, t = new RegExp("\x1BN(" + $e(e).join("|").replace(/\|\|\|/, "|\\||").replace(/([?()+])/g, "\\$1") + "|\\|)", "gm"), r = function(h, d) { var v = e[d]; return typeof v == "number" ? Qn(v) : v; }, a = function(h, d, v) { var x = d.charCodeAt(0) - 32 << 4 | v.charCodeAt(0) - 48; return x == 59 ? h : Qn(x); }; e["|"] = 254; function n(h, d) { switch (d.type) { case "base64": return i(Rr(h), d); case "binary": return i(h, d); case "buffer": return i(Te && Buffer.isBuffer(h) ? h.toString("binary") : Ft(h), d); case "array": return i(Lt(h), d); } throw new Error("Unrecognized type " + d.type); } function i(h, d) { var v = h.split(/[\n\r]+/), x = -1, p = -1, w = 0, y = 0, g = [], C = [], b = null, O = {}, S = [], B = [], R = [], X = 0, G; for (+d.codepage >= 0 && zr(+d.codepage); w !== v.length; ++w) { X = 0; var L = v[w].trim().replace(/\x1B([\x20-\x2F])([\x30-\x3F])/g, a).replace(t, r), J = L.replace(/;;/g, "\0").split(";").map(function(N) { return N.replace(/\u0000/g, ";"); }), le = J[0], ie; if (L.length > 0) switch (le) { case "ID": break; case "E": break; case "B": break; case "O": break; case "W": break; case "P": J[1].charAt(0) == "P" && C.push(L.slice(3).replace(/;;/g, ";")); break; case "C": var he = !1, ce = !1, be = !1, V = !1, ve = -1, ge = -1; for (y = 1; y < J.length; ++y) switch (J[y].charAt(0)) { case "A": break; case "X": p = parseInt(J[y].slice(1)) - 1, ce = !0; break; case "Y": for (x = parseInt(J[y].slice(1)) - 1, ce || (p = 0), G = g.length; G <= x; ++G) g[G] = []; break; case "K": ie = J[y].slice(1), ie.charAt(0) === '"' ? ie = ie.slice(1, ie.length - 1) : ie === "TRUE" ? ie = !0 : ie === "FALSE" ? ie = !1 : isNaN($r(ie)) ? isNaN(aa(ie).getDate()) || (ie = Ue(ie)) : (ie = $r(ie), b !== null && Ht(b) && (ie = T0(ie))), he = !0; break; case "E": V = !0; var D = ra(J[y].slice(1), { r: x, c: p }); g[x][p] = [g[x][p], D]; break; case "S": be = !0, g[x][p] = [g[x][p], "S5S"]; break; case "G": break; case "R": ve = parseInt(J[y].slice(1)) - 1; break; case "C": ge = parseInt(J[y].slice(1)) - 1; break; default: if (d && d.WTF) throw new Error("SYLK bad record " + L); } if (he && (g[x][p] && g[x][p].length == 2 ? g[x][p][0] = ie : g[x][p] = ie, b = null), be) { if (V) throw new Error("SYLK shared formula cannot have own formula"); var P = ve > -1 && g[ve][ge]; if (!P || !P[1]) throw new Error("SYLK shared formula cannot find base"); g[x][p][1] = Vf(P[1], { r: x - ve, c: p - ge }); } break; case "F": var I = 0; for (y = 1; y < J.length; ++y) switch (J[y].charAt(0)) { case "X": p = parseInt(J[y].slice(1)) - 1, ++I; break; case "Y": for (x = parseInt(J[y].slice(1)) - 1, G = g.length; G <= x; ++G) g[G] = []; break; case "M": X = parseInt(J[y].slice(1)) / 20; break; case "F": break; case "G": break; case "P": b = C[parseInt(J[y].slice(1))]; break; case "S": break; case "D": break; case "N": break; case "W": for (R = J[y].slice(1).split(" "), G = parseInt(R[0], 10); G <= parseInt(R[1], 10); ++G) X = parseInt(R[2], 10), B[G - 1] = X === 0 ? { hidden: !0 } : { wch: X }, kt(B[G - 1]); break; case "C": p = parseInt(J[y].slice(1)) - 1, B[p] || (B[p] = {}); break; case "R": x = parseInt(J[y].slice(1)) - 1, S[x] || (S[x] = {}), X > 0 ? (S[x].hpt = X, S[x].hpx = ia(X)) : X === 0 && (S[x].hidden = !0); break; default: if (d && d.WTF) throw new Error("SYLK bad record " + L); } I < 1 && (b = null); break; default: if (d && d.WTF) throw new Error("SYLK bad record " + L); } } return S.length > 0 && (O["!rows"] = S), B.length > 0 && (O["!cols"] = B), d && d.sheetRows && (g = g.slice(0, d.sheetRows)), [g, O]; } function s(h, d) { var v = n(h, d), x = v[0], p = v[1], w = fa(x, d); return $e(p).forEach(function(y) { w[y] = p[y]; }), w; } function f(h, d) { return yt(s(h, d), d); } function c(h, d, v, x) { var p = "C;Y" + (v + 1) + ";X" + (x + 1) + ";K"; switch (h.t) { case "n": p += h.v || 0, h.f && !h.F && (p += ";E" + Ln(h.f, { r: v, c: x })); break; case "b": p += h.v ? "TRUE" : "FALSE"; break; case "e": p += h.w || h.v; break; case "d": p += '"' + (h.w || h.v) + '"'; break; case "s": p += '"' + h.v.replace(/"/g, "").replace(/;/g, ";;") + '"'; break; } return p; } function o(h, d) { d.forEach(function(v, x) { var p = "F;W" + (x + 1) + " " + (x + 1) + " "; v.hidden ? p += "0" : (typeof v.width == "number" && !v.wpx && (v.wpx = ba(v.width)), typeof v.wpx == "number" && !v.wch && (v.wch = Pa(v.wpx)), typeof v.wch == "number" && (p += Math.round(v.wch))), p.charAt(p.length - 1) != " " && h.push(p); }); } function l(h, d) { d.forEach(function(v, x) { var p = "F;"; v.hidden ? p += "M0;" : v.hpt ? p += "M" + 20 * v.hpt + ";" : v.hpx && (p += "M" + 20 * La(v.hpx) + ";"), p.length > 2 && h.push(p + "R" + (x + 1)); }); } function u(h, d) { var v = ["ID;PWXL;N;E"], x = [], p = De(h["!ref"]), w, y = Array.isArray(h), g = `\r `; v.push("P;PGeneral"), v.push("F;P0;DG0G8;M255"), h["!cols"] && o(v, h["!cols"]), h["!rows"] && l(v, h["!rows"]), v.push("B;Y" + (p.e.r - p.s.r + 1) + ";X" + (p.e.c - p.s.c + 1) + ";D" + [p.s.c, p.s.r, p.e.c, p.e.r].join(" ")); for (var C = p.s.r; C <= p.e.r; ++C) for (var b = p.s.c; b <= p.e.c; ++b) { var O = pe({ r: C, c: b }); w = y ? (h[C] || [])[b] : h[O], !(!w || w.v == null && (!w.f || w.F)) && x.push(c(w, h, C, b)); } return v.join(g) + g + x.join(g) + g + "E" + g; } return { to_workbook: f, to_sheet: s, from_sheet: u }; }(), Ff = /* @__PURE__ */ function() { function e(i, s) { switch (s.type) { case "base64": return t(Rr(i), s); case "binary": return t(i, s); case "buffer": return t(Te && Buffer.isBuffer(i) ? i.toString("binary") : Ft(i), s); case "array": return t(Lt(i), s); } throw new Error("Unrecognized type " + s.type); } function t(i, s) { for (var f = i.split(` `), c = -1, o = -1, l = 0, u = []; l !== f.length; ++l) { if (f[l].trim() === "BOT") { u[++c] = [], o = 0; continue; } if (!(c < 0)) { var h = f[l].trim().split(","), d = h[0], v = h[1]; ++l; for (var x = f[l] || ""; (x.match(/["]/g) || []).length & 1 && l < f.length - 1; ) x += ` ` + f[++l]; switch (x = x.trim(), +d) { case -1: if (x === "BOT") { u[++c] = [], o = 0; continue; } else if (x !== "EOD") throw new Error("Unrecognized DIF special command " + x); break; case 0: x === "TRUE" ? u[c][o] = !0 : x === "FALSE" ? u[c][o] = !1 : isNaN($r(v)) ? isNaN(aa(v).getDate()) ? u[c][o] = v : u[c][o] = Ue(v) : u[c][o] = $r(v), ++o; break; case 1: x = x.slice(1, x.length - 1), x = x.replace(/""/g, '"'), x && x.match(/^=".*"$/) && (x = x.slice(2, -1)), u[c][o++] = x !== "" ? x : null; break; } if (x === "EOD") break; } } return s && s.sheetRows && (u = u.slice(0, s.sheetRows)), u; } function r(i, s) { return fa(e(i, s), s); } function a(i, s) { return yt(r(i, s), s); } var n = /* @__PURE__ */ function() { var i = function(c, o, l, u, h) { c.push(o), c.push(l + "," + u), c.push('"' + h.replace(/"/g, '""') + '"'); }, s = function(c, o, l, u) { c.push(o + "," + l), c.push(o == 1 ? '"' + u.replace(/"/g, '""') + '"' : u); }; return function(c) { var o = [], l = De(c["!ref"]), u, h = Array.isArray(c); i(o, "TABLE", 0, 1, "sheetjs"), i(o, "VECTORS", 0, l.e.r - l.s.r + 1, ""), i(o, "TUPLES", 0, l.e.c - l.s.c + 1, ""), i(o, "DATA", 0, 0, ""); for (var d = l.s.r; d <= l.e.r; ++d) { s(o, -1, 0, "BOT"); for (var v = l.s.c; v <= l.e.c; ++v) { var x = pe({ r: d, c: v }); if (u = h ? (c[d] || [])[v] : c[x], !u) { s(o, 1, 0, ""); continue; } switch (u.t) { case "n": var p = u.w; !p && u.v != null && (p = u.v), p == null ? u.f && !u.F ? s(o, 1, 0, "=" + u.f) : s(o, 1, 0, "") : s(o, 0, p, "V"); break; case "b": s(o, 0, u.v ? 1 : 0, u.v ? "TRUE" : "FALSE"); break; case "s": s(o, 1, 0, isNaN(u.v) ? u.v : '="' + u.v + '"'); break; case "d": u.w || (u.w = Nr(u.z || de[14], nr(Ue(u.v)))), s(o, 0, u.w, "V"); break; default: s(o, 1, 0, ""); } } } s(o, -1, 0, "EOD"); var w = `\r `, y = o.join(w); return y; }; }(); return { to_workbook: a, to_sheet: r, from_sheet: n }; }(), yf = /* @__PURE__ */ function() { function e(u) { return u.replace(/\\b/g, "\\").replace(/\\c/g, ":").replace(/\\n/g, ` `); } function t(u) { return u.replace(/\\/g, "\\b").replace(/:/g, "\\c").replace(/\n/g, "\\n"); } function r(u, h) { for (var d = u.split(` `), v = -1, x = -1, p = 0, w = []; p !== d.length; ++p) { var y = d[p].trim().split(":"); if (y[0] === "cell") { var g = Xe(y[1]); if (w.length <= g.r) for (v = w.length; v <= g.r; ++v) w[v] || (w[v] = []); switch (v = g.r, x = g.c, y[2]) { case "t": w[v][x] = e(y[3]); break; case "v": w[v][x] = +y[3]; break; case "vtf": var C = y[y.length - 1]; case "vtc": switch (y[3]) { case "nl": w[v][x] = !!+y[4]; break; default: w[v][x] = +y[4]; break; } y[2] == "vtf" && (w[v][x] = [w[v][x], C]); } } } return h && h.sheetRows && (w = w.slice(0, h.sheetRows)), w; } function a(u, h) { return fa(r(u, h), h); } function n(u, h) { return yt(a(u, h), h); } var i = [ "socialcalc:version:1.5", "MIME-Version: 1.0", "Content-Type: multipart/mixed; boundary=SocialCalcSpreadsheetControlSave" ].join(` `), s = [ "--SocialCalcSpreadsheetControlSave", "Content-type: text/plain; charset=UTF-8" ].join(` `) + ` `, f = [ "# SocialCalc Spreadsheet Control Save", "part:sheet" ].join(` `), c = "--SocialCalcSpreadsheetControlSave--"; function o(u) { if (!u || !u["!ref"]) return ""; for (var h = [], d = [], v, x = "", p = yr(u["!ref"]), w = Array.isArray(u), y = p.s.r; y <= p.e.r; ++y) for (var g = p.s.c; g <= p.e.c; ++g) if (x = pe({ r: y, c: g }), v = w ? (u[y] || [])[g] : u[x], !(!v || v.v == null || v.t === "z")) { switch (d = ["cell", x, "t"], v.t) { case "s": case "str": d.push(t(v.v)); break; case "n": v.f ? (d[2] = "vtf", d[3] = "n", d[4] = v.v, d[5] = t(v.f)) : (d[2] = "v", d[3] = v.v); break; case "b": d[2] = "vt" + (v.f ? "f" : "c"), d[3] = "nl", d[4] = v.v ? "1" : "0", d[5] = t(v.f || (v.v ? "TRUE" : "FALSE")); break; case "d": var C = nr(Ue(v.v)); d[2] = "vtc", d[3] = "nd", d[4] = "" + C, d[5] = v.w || Nr(v.z || de[14], C); break; case "e": continue; } h.push(d.join(":")); } return h.push("sheet:c:" + (p.e.c - p.s.c + 1) + ":r:" + (p.e.r - p.s.r + 1) + ":tvf:1"), h.push("valueformat:1:text-wiki"), h.join(` `); } function l(u) { return [i, s, f, s, o(u), c].join(` `); } return { to_workbook: n, to_sheet: a, from_sheet: l }; }(), na = /* @__PURE__ */ function() { function e(l, u, h, d, v) { v.raw ? u[h][d] = l : l === "" || (l === "TRUE" ? u[h][d] = !0 : l === "FALSE" ? u[h][d] = !1 : isNaN($r(l)) ? isNaN(aa(l).getDate()) ? u[h][d] = l : u[h][d] = Ue(l) : u[h][d] = $r(l)); } function t(l, u) { var h = u || {}, d = []; if (!l || l.length === 0) return d; for (var v = l.split(/[\r\n]/), x = v.length - 1; x >= 0 && v[x].length === 0; ) --x; for (var p = 10, w = 0, y = 0; y <= x; ++y) w = v[y].indexOf(" "), w == -1 ? w = v[y].length : w++, p = Math.max(p, w); for (y = 0; y <= x; ++y) { d[y] = []; var g = 0; for (e(v[y].slice(0, p).trim(), d, y, g, h), g = 1; g <= (v[y].length - p) / 10 + 1; ++g) e(v[y].slice(p + (g - 1) * 10, p + g * 10).trim(), d, y, g, h); } return h.sheetRows && (d = d.slice(0, h.sheetRows)), d; } var r = { /*::[*/ 44: ",", /*::[*/ 9: " ", /*::[*/ 59: ";", /*::[*/ 124: "|" }, a = { /*::[*/ 44: 3, /*::[*/ 9: 2, /*::[*/ 59: 1, /*::[*/ 124: 0 }; function n(l) { for (var u = {}, h = !1, d = 0, v = 0; d < l.length; ++d) (v = l.charCodeAt(d)) == 34 ? h = !h : !h && v in r && (u[v] = (u[v] || 0) + 1); v = []; for (d in u) Object.prototype.hasOwnProperty.call(u, d) && v.push([u[d], d]); if (!v.length) { u = a; for (d in u) Object.prototype.hasOwnProperty.call(u, d) && v.push([u[d], d]); } return v.sort(function(x, p) { return x[0] - p[0] || a[x[1]] - a[p[1]]; }), r[v.pop()[1]] || 44; } function i(l, u) { var h = u || {}, d = "", v = h.dense ? [] : {}, x = { s: { c: 0, r: 0 }, e: { c: 0, r: 0 } }; l.slice(0, 4) == "sep=" ? l.charCodeAt(5) == 13 && l.charCodeAt(6) == 10 ? (d = l.charAt(4), l = l.slice(7)) : l.charCodeAt(5) == 13 || l.charCodeAt(5) == 10 ? (d = l.charAt(4), l = l.slice(6)) : d = n(l.slice(0, 1024)) : h && h.FS ? d = h.FS : d = n(l.slice(0, 1024)); var p = 0, w = 0, y = 0, g = 0, C = 0, b = d.charCodeAt(0), O = !1, S = 0, B = l.charCodeAt(0); l = l.replace(/\r\n/mg, ` `); var R = h.dateNF != null ? mo(h.dateNF) : null; function X() { var G = l.slice(g, C), L = {}; if (G.charAt(0) == '"' && G.charAt(G.length - 1) == '"' && (G = G.slice(1, -1).replace(/""/g, '"')), G.length === 0) L.t = "z"; else if (h.raw) L.t = "s", L.v = G; else if (G.trim().length === 0) L.t = "s", L.v = G; else if (G.charCodeAt(0) == 61) G.charCodeAt(1) == 34 && G.charCodeAt(G.length - 1) == 34 ? (L.t = "s", L.v = G.slice(2, -1).replace(/""/g, '"')) : zx(G) ? (L.t = "n", L.f = G.slice(1)) : (L.t = "s", L.v = G); else if (G == "TRUE") L.t = "b", L.v = !0; else if (G == "FALSE") L.t = "b", L.v = !1; else if (!isNaN(y = $r(G))) L.t = "n", h.cellText !== !1 && (L.w = G), L.v = y; else if (!isNaN(aa(G).getDate()) || R && G.match(R)) { L.z = h.dateNF || de[14]; var J = 0; R && G.match(R) && (G = go(G, h.dateNF, G.match(R) || []), J = 1), h.cellDates ? (L.t = "d", L.v = Ue(G, J)) : (L.t = "n", L.v = nr(Ue(G, J))), h.cellText !== !1 && (L.w = Nr(L.z, L.v instanceof Date ? nr(L.v) : L.v)), h.cellNF || delete L.z; } else L.t = "s", L.v = G; if (L.t == "z" || (h.dense ? (v[p] || (v[p] = []), v[p][w] = L) : v[pe({ c: w, r: p })] = L), g = C + 1, B = l.charCodeAt(g), x.e.c < w && (x.e.c = w), x.e.r < p && (x.e.r = p), S == b) ++w; else if (w = 0, ++p, h.sheetRows && h.sheetRows <= p) return !0; } e: for (; C < l.length; ++C) switch (S = l.charCodeAt(C)) { case 34: B === 34 && (O = !O); break; case b: case 10: case 13: if (!O && X()) break e; break; } return C - g > 0 && X(), v["!ref"] = we(x), v; } function s(l, u) { return !(u && u.PRN) || u.FS || l.slice(0, 4) == "sep=" || l.indexOf(" ") >= 0 || l.indexOf(",") >= 0 || l.indexOf(";") >= 0 ? i(l, u) : fa(t(l, u), u); } function f(l, u) { var h = "", d = u.type == "string" ? [0, 0, 0, 0] : Xn(l, u); switch (u.type) { case "base64": h = Rr(l); break; case "binary": h = l; break; case "buffer": u.codepage == 65001 ? h = l.toString("utf8") : u.codepage && typeof mt < "u" ? h = mt.utils.decode(u.codepage, l) : h = Te && Buffer.isBuffer(l) ? l.toString("binary") : Ft(l); break; case "array": h = Lt(l); break; case "string": h = l; break; default: throw new Error("Unrecognized type " + u.type); } return d[0] == 239 && d[1] == 187 && d[2] == 191 ? h = Pe(h.slice(3)) : u.type != "string" && u.type != "buffer" && u.codepage == 65001 ? h = Pe(h) : u.type == "binary" && typeof mt < "u" && u.codepage && (h = mt.utils.decode(u.codepage, mt.utils.encode(28591, h))), h.slice(0, 19) == "socialcalc:version:" ? yf.to_sheet(u.type == "string" ? h : Pe(h), u) : s(h, u); } function c(l, u) { return yt(f(l, u), u); } function o(l) { for (var u = [], h = De(l["!ref"]), d, v = Array.isArray(l), x = h.s.r; x <= h.e.r; ++x) { for (var p = [], w = h.s.c; w <= h.e.c; ++w) { var y = pe({ r: x, c: w }); if (d = v ? (l[x] || [])[w] : l[y], !d || d.v == null) { p.push(" "); continue; } for (var g = (d.w || (lt(d), d.w) || "").slice(0, 10); g.length < 10; ) g += " "; p.push(g + (w === 0 ? " " : "")); } u.push(p.join("")); } return u.join(` `); } return { to_workbook: c, to_sheet: f, from_sheet: o }; }(); function Ih(e, t) { var r = t || {}, a = !!r.WTF; r.WTF = !0; try { var n = Sf.to_workbook(e, r); return r.WTF = a, n; } catch (i) { if (r.WTF = a, !i.message.match(/SYLK bad record ID/) && a) throw i; return na.to_workbook(e, t); } } var Nt = /* @__PURE__ */ function() { function e(D, P, I) { if (D) { or(D, D.l || 0); for (var N = I.Enum || ve; D.l < D.length; ) { var K = D.read_shift(2), re = N[K] || N[65535], te = D.read_shift(2), Q = D.l + te, q = re.f && re.f(D, te, I); if (D.l = Q, P(q, re, K)) return; } } } function t(D, P) { switch (P.type) { case "base64": return r(Or(Rr(D)), P); case "binary": return r(Or(D), P); case "buffer": case "array": return r(D, P); } throw "Unsupported type " + P.type; } function r(D, P) { if (!D) return D; var I = P || {}, N = I.dense ? [] : {}, K = "Sheet1", re = "", te = 0, Q = {}, q = [], ke = [], A = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } }, Be = I.sheetRows || 0; if (D[2] == 0 && (D[3] == 8 || D[3] == 9) && D.length >= 16 && D[14] == 5 && D[15] === 108) throw new Error("Unsupported Works 3 for Mac file"); if (D[2] == 2) I.Enum = ve, e(D, function(fe, Ke, br) { switch (br) { case 0: I.vers = fe, fe >= 4096 && (I.qpro = !0); break; case 6: A = fe; break; case 204: fe && (re = fe); break; case 222: re = fe; break; case 15: case 51: I.qpro || (fe[1].v = fe[1].v.slice(1)); case 13: case 14: case 16: br == 14 && (fe[2] & 112) == 112 && (fe[2] & 15) > 1 && (fe[2] & 15) < 15 && (fe[1].z = I.dateNF || de[14], I.cellDates && (fe[1].t = "d", fe[1].v = T0(fe[1].v))), I.qpro && fe[3] > te && (N["!ref"] = we(A), Q[K] = N, q.push(K), N = I.dense ? [] : {}, A = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } }, te = fe[3], K = re || "Sheet" + (te + 1), re = ""); var Yr = I.dense ? (N[fe[0].r] || [])[fe[0].c] : N[pe(fe[0])]; if (Yr) { Yr.t = fe[1].t, Yr.v = fe[1].v, fe[1].z != null && (Yr.z = fe[1].z), fe[1].f != null && (Yr.f = fe[1].f); break; } I.dense ? (N[fe[0].r] || (N[fe[0].r] = []), N[fe[0].r][fe[0].c] = fe[1]) : N[pe(fe[0])] = fe[1]; break; } }, I); else if (D[2] == 26 || D[2] == 14) I.Enum = ge, D[2] == 14 && (I.qpro = !0, D.l = 0), e(D, function(fe, Ke, br) { switch (br) { case 204: K = fe; break; case 22: fe[1].v = fe[1].v.slice(1); case 23: case 24: case 25: case 37: case 39: case 40: if (fe[3] > te && (N["!ref"] = we(A), Q[K] = N, q.push(K), N = I.dense ? [] : {}, A = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } }, te = fe[3], K = "Sheet" + (te + 1)), Be > 0 && fe[0].r >= Be) break; I.dense ? (N[fe[0].r] || (N[fe[0].r] = []), N[fe[0].r][fe[0].c] = fe[1]) : N[pe(fe[0])] = fe[1], A.e.c < fe[0].c && (A.e.c = fe[0].c), A.e.r < fe[0].r && (A.e.r = fe[0].r); break; case 27: fe[14e3] && (ke[fe[14e3][0]] = fe[14e3][1]); break; case 1537: ke[fe[0]] = fe[1], fe[0] == te && (K = fe[1]); break; } }, I); else throw new Error("Unrecognized LOTUS BOF " + D[2]); if (N["!ref"] = we(A), Q[re || K] = N, q.push(re || K), !ke.length) return { SheetNames: q, Sheets: Q }; for (var Ae = {}, Le = [], ye = 0; ye < ke.length; ++ye) Q[q[ye]] ? (Le.push(ke[ye] || q[ye]), Ae[ke[ye]] = Q[ke[ye]] || Q[q[ye]]) : (Le.push(ke[ye]), Ae[ke[ye]] = { "!ref": "A1" }); return { SheetNames: Le, Sheets: Ae }; } function a(D, P) { var I = P || {}; if (+I.codepage >= 0 && zr(+I.codepage), I.type == "string") throw new Error("Cannot write WK1 to JS string"); var N = Fr(), K = De(D["!ref"]), re = Array.isArray(D), te = []; ne(N, 0, i(1030)), ne(N, 6, c(K)); for (var Q = Math.min(K.e.r, 8191), q = K.s.r; q <= Q; ++q) for (var ke = qe(q), A = K.s.c; A <= K.e.c; ++A) { q === K.s.r && (te[A] = Ge(A)); var Be = te[A] + ke, Ae = re ? (D[q] || [])[A] : D[Be]; if (!(!Ae || Ae.t == "z")) if (Ae.t == "n") (Ae.v | 0) == Ae.v && Ae.v >= -32768 && Ae.v <= 32767 ? ne(N, 13, d(q, A, Ae.v)) : ne(N, 14, x(q, A, Ae.v)); else { var Le = lt(Ae); ne(N, 15, u(q, A, Le.slice(0, 239))); } } return ne(N, 1), N.end(); } function n(D, P) { var I = P || {}; if (+I.codepage >= 0 && zr(+I.codepage), I.type == "string") throw new Error("Cannot write WK3 to JS string"); var N = Fr(); ne(N, 0, s(D)); for (var K = 0, re = 0; K < D.SheetNames.length; ++K) (D.Sheets[D.SheetNames[K]] || {})["!ref"] && ne(N, 27, V(D.SheetNames[K], re++)); var te = 0; for (K = 0; K < D.SheetNames.length; ++K) { var Q = D.Sheets[D.SheetNames[K]]; if (!(!Q || !Q["!ref"])) { for (var q = De(Q["!ref"]), ke = Array.isArray(Q), A = [], Be = Math.min(q.e.r, 8191), Ae = q.s.r; Ae <= Be; ++Ae) for (var Le = qe(Ae), ye = q.s.c; ye <= q.e.c; ++ye) { Ae === q.s.r && (A[ye] = Ge(ye)); var fe = A[ye] + Le, Ke = ke ? (Q[Ae] || [])[ye] : Q[fe]; if (!(!Ke || Ke.t == "z")) if (Ke.t == "n") ne(N, 23, X(Ae, ye, te, Ke.v)); else { var br = lt(Ke); ne(N, 22, S(Ae, ye, te, br.slice(0, 239))); } } ++te; } } return ne(N, 1), N.end(); } function i(D) { var P = z(2); return P.write_shift(2, D), P; } function s(D) { var P = z(26); P.write_shift(2, 4096), P.write_shift(2, 4), P.write_shift(4, 0); for (var I = 0, N = 0, K = 0, re = 0; re < D.SheetNames.length; ++re) { var te = D.SheetNames[re], Q = D.Sheets[te]; if (!(!Q || !Q["!ref"])) { ++K; var q = yr(Q["!ref"]); I < q.e.r && (I = q.e.r), N < q.e.c && (N = q.e.c); } } return I > 8191 && (I = 8191), P.write_shift(2, I), P.write_shift(1, K), P.write_shift(1, N), P.write_shift(2, 0), P.write_shift(2, 0), P.write_shift(1, 1), P.write_shift(1, 2), P.write_shift(4, 0), P.write_shift(4, 0), P; } function f(D, P, I) { var N = { s: { c: 0, r: 0 }, e: { c: 0, r: 0 } }; return P == 8 && I.qpro ? (N.s.c = D.read_shift(1), D.l++, N.s.r = D.read_shift(2), N.e.c = D.read_shift(1), D.l++, N.e.r = D.read_shift(2), N) : (N.s.c = D.read_shift(2), N.s.r = D.read_shift(2), P == 12 && I.qpro && (D.l += 2), N.e.c = D.read_shift(2), N.e.r = D.read_shift(2), P == 12 && I.qpro && (D.l += 2), N.s.c == 65535 && (N.s.c = N.e.c = N.s.r = N.e.r = 0), N); } function c(D) { var P = z(8); return P.write_shift(2, D.s.c), P.write_shift(2, D.s.r), P.write_shift(2, D.e.c), P.write_shift(2, D.e.r), P; } function o(D, P, I) { var N = [{ c: 0, r: 0 }, { t: "n", v: 0 }, 0, 0]; return I.qpro && I.vers != 20768 ? (N[0].c = D.read_shift(1), N[3] = D.read_shift(1), N[0].r = D.read_shift(2), D.l += 2) : (N[2] = D.read_shift(1), N[0].c = D.read_shift(2), N[0].r = D.read_shift(2)), N; } function l(D, P, I) { var N = D.l + P, K = o(D, P, I); if (K[1].t = "s", I.vers == 20768) { D.l++; var re = D.read_shift(1); return K[1].v = D.read_shift(re, "utf8"), K; } return I.qpro && D.l++, K[1].v = D.read_shift(N - D.l, "cstr"), K; } function u(D, P, I) { var N = z(7 + I.length); N.write_shift(1, 255), N.write_shift(2, P), N.write_shift(2, D), N.write_shift(1, 39); for (var K = 0; K < N.length; ++K) { var re = I.charCodeAt(K); N.write_shift(1, re >= 128 ? 95 : re); } return N.write_shift(1, 0), N; } function h(D, P, I) { var N = o(D, P, I); return N[1].v = D.read_shift(2, "i"), N; } function d(D, P, I) { var N = z(7); return N.write_shift(1, 255), N.write_shift(2, P), N.write_shift(2, D), N.write_shift(2, I, "i"), N; } function v(D, P, I) { var N = o(D, P, I); return N[1].v = D.read_shift(8, "f"), N; } function x(D, P, I) { var N = z(13); return N.write_shift(1, 255), N.write_shift(2, P), N.write_shift(2, D), N.write_shift(8, I, "f"), N; } function p(D, P, I) { var N = D.l + P, K = o(D, P, I); if (K[1].v = D.read_shift(8, "f"), I.qpro) D.l = N; else { var re = D.read_shift(2); C(D.slice(D.l, D.l + re), K), D.l += re; } return K; } function w(D, P, I) { var N = P & 32768; return P &= -32769, P = (N ? D : 0) + (P >= 8192 ? P - 16384 : P), (N ? "" : "$") + (I ? Ge(P) : qe(P)); } var y = { 51: ["FALSE", 0], 52: ["TRUE", 0], 70: ["LEN", 1], 80: ["SUM", 69], 81: ["AVERAGEA", 69], 82: ["COUNTA", 69], 83: ["MINA", 69], 84: ["MAXA", 69], 111: ["T", 1] }, g = [ "", "", "", "", "", "", "", "", // eslint-disable-line no-mixed-spaces-and-tabs "", "+", "-", "*", "/", "^", "=", "<>", // eslint-disable-line no-mixed-spaces-and-tabs "<=", ">=", "<", ">", "", "", "", "", // eslint-disable-line no-mixed-spaces-and-tabs "&", "", "", "", "", "", "", "" // eslint-disable-line no-mixed-spaces-and-tabs ]; function C(D, P) { or(D, 0); for (var I = [], N = 0, K = "", re = "", te = "", Q = ""; D.l < D.length; ) { var q = D[D.l++]; switch (q) { case 0: I.push(D.read_shift(8, "f")); break; case 1: re = w(P[0].c, D.read_shift(2), !0), K = w(P[0].r, D.read_shift(2), !1), I.push(re + K); break; case 2: { var ke = w(P[0].c, D.read_shift(2), !0), A = w(P[0].r, D.read_shift(2), !1); re = w(P[0].c, D.read_shift(2), !0), K = w(P[0].r, D.read_shift(2), !1), I.push(ke + A + ":" + re + K); } break; case 3: if (D.l < D.length) { console.error("WK1 premature formula end"); return; } break; case 4: I.push("(" + I.pop() + ")"); break; case 5: I.push(D.read_shift(2)); break; case 6: { for (var Be = ""; q = D[D.l++]; ) Be += String.fromCharCode(q); I.push('"' + Be.replace(/"/g, '""') + '"'); } break; case 8: I.push("-" + I.pop()); break; case 23: I.push("+" + I.pop()); break; case 22: I.push("NOT(" + I.pop() + ")"); break; case 20: case 21: Q = I.pop(), te = I.pop(), I.push(["AND", "OR"][q - 20] + "(" + te + "," + Q + ")"); break; default: if (q < 32 && g[q]) Q = I.pop(), te = I.pop(), I.push(te + g[q] + Q); else if (y[q]) { if (N = y[q][1], N == 69 && (N = D[D.l++]), N > I.length) { console.error("WK1 bad formula parse 0x" + q.toString(16) + ":|" + I.join("|") + "|"); return; } var Ae = I.slice(-N); I.length -= N, I.push(y[q][0] + "(" + Ae.join(",") + ")"); } else return q <= 7 ? console.error("WK1 invalid opcode " + q.toString(16)) : q <= 24 ? console.error("WK1 unsupported op " + q.toString(16)) : q <= 30 ? console.error("WK1 invalid opcode " + q.toString(16)) : q <= 115 ? console.error("WK1 unsupported function opcode " + q.toString(16)) : console.error("WK1 unrecognized opcode " + q.toString(16)); } } I.length == 1 ? P[1].f = "" + I[0] : console.error("WK1 bad formula parse |" + I.join("|") + "|"); } function b(D) { var P = [{ c: 0, r: 0 }, { t: "n", v: 0 }, 0]; return P[0].r = D.read_shift(2), P[3] = D[D.l++], P[0].c = D[D.l++], P; } function O(D, P) { var I = b(D); return I[1].t = "s", I[1].v = D.read_shift(P - 4, "cstr"), I; } function S(D, P, I, N) { var K = z(6 + N.length); K.write_shift(2, D), K.write_shift(1, I), K.write_shift(1, P), K.write_shift(1, 39); for (var re = 0; re < N.length; ++re) { var te = N.charCodeAt(re); K.write_shift(1, te >= 128 ? 95 : te); } return K.write_shift(1, 0), K; } function B(D, P) { var I = b(D); I[1].v = D.read_shift(2); var N = I[1].v >> 1; if (I[1].v & 1) switch (N & 7) { case 0: N = (N >> 3) * 5e3; break; case 1: N = (N >> 3) * 500; break; case 2: N = (N >> 3) / 20; break; case 3: N = (N >> 3) / 200; break; case 4: N = (N >> 3) / 2e3; break; case 5: N = (N >> 3) / 2e4; break; case 6: N = (N >> 3) / 16; break; case 7: N = (N >> 3) / 64; break; } return I[1].v = N, I; } function R(D, P) { var I = b(D), N = D.read_shift(4), K = D.read_shift(4), re = D.read_shift(2); if (re == 65535) return N === 0 && K === 3221225472 ? (I[1].t = "e", I[1].v = 15) : N === 0 && K === 3489660928 ? (I[1].t = "e", I[1].v = 42) : I[1].v = 0, I; var te = re & 32768; return re = (re & 32767) - 16446, I[1].v = (1 - te * 2) * (K * Math.pow(2, re + 32) + N * Math.pow(2, re)), I; } function X(D, P, I, N) { var K = z(14); if (K.write_shift(2, D), K.write_shift(1, I), K.write_shift(1, P), N == 0) return K.write_shift(4, 0), K.write_shift(4, 0), K.write_shift(2, 65535), K; var re = 0, te = 0, Q = 0, q = 0; return N < 0 && (re = 1, N = -N), te = Math.log2(N) | 0, N /= Math.pow(2, te - 31), q = N >>> 0, q & 2147483648 || (N /= 2, ++te, q = N >>> 0), N -= q, q |= 2147483648, q >>>= 0, N *= Math.pow(2, 32), Q = N >>> 0, K.write_shift(4, Q), K.write_shift(4, q), te += 16383 + (re ? 32768 : 0), K.write_shift(2, te), K; } function G(D, P) { var I = R(D); return D.l += P - 14, I; } function L(D, P) { var I = b(D), N = D.read_shift(4); return I[1].v = N >> 6, I; } function J(D, P) { var I = b(D), N = D.read_shift(8, "f"); return I[1].v = N, I; } function le(D, P) { var I = J(D); return D.l += P - 10, I; } function ie(D, P) { return D[D.l + P - 1] == 0 ? D.read_shift(P, "cstr") : ""; } function he(D, P) { var I = D[D.l++]; I > P - 1 && (I = P - 1); for (var N = ""; N.length < I; ) N += String.fromCharCode(D[D.l++]); return N; } function ce(D, P, I) { if (!(!I.qpro || P < 21)) { var N = D.read_shift(1); D.l += 17, D.l += 1, D.l += 2; var K = D.read_shift(P - 21, "cstr"); return [N, K]; } } function be(D, P) { for (var I = {}, N = D.l + P; D.l < N; ) { var K = D.read_shift(2); if (K == 14e3) { for (I[K] = [0, ""], I[K][0] = D.read_shift(2); D[D.l]; ) I[K][1] += String.fromCharCode(D[D.l]), D.l++; D.l++; } } return I; } function V(D, P) { var I = z(5 + D.length); I.write_shift(2, 14e3), I.write_shift(2, P); for (var N = 0; N < D.length; ++N) { var K = D.charCodeAt(N); I[I.l++] = K > 127 ? 95 : K; } return I[I.l++] = 0, I; } var ve = { /*::[*/ 0: { n: "BOF", f: rr }, /*::[*/ 1: { n: "EOF" }, /*::[*/ 2: { n: "CALCMODE" }, /*::[*/ 3: { n: "CALCORDER" }, /*::[*/ 4: { n: "SPLIT" }, /*::[*/ 5: { n: "SYNC" }, /*::[*/ 6: { n: "RANGE", f }, /*::[*/ 7: { n: "WINDOW1" }, /*::[*/ 8: { n: "COLW1" }, /*::[*/ 9: { n: "WINTWO" }, /*::[*/ 10: { n: "COLW2" }, /*::[*/ 11: { n: "NAME" }, /*::[*/ 12: { n: "BLANK" }, /*::[*/ 13: { n: "INTEGER", f: h }, /*::[*/ 14: { n: "NUMBER", f: v }, /*::[*/ 15: { n: "LABEL", f: l }, /*::[*/ 16: { n: "FORMULA", f: p }, /*::[*/ 24: { n: "TABLE" }, /*::[*/ 25: { n: "ORANGE" }, /*::[*/ 26: { n: "PRANGE" }, /*::[*/ 27: { n: "SRANGE" }, /*::[*/ 28: { n: "FRANGE" }, /*::[*/ 29: { n: "KRANGE1" }, /*::[*/ 32: { n: "HRANGE" }, /*::[*/ 35: { n: "KRANGE2" }, /*::[*/ 36: { n: "PROTEC" }, /*::[*/ 37: { n: "FOOTER" }, /*::[*/ 38: { n: "HEADER" }, /*::[*/ 39: { n: "SETUP" }, /*::[*/ 40: { n: "MARGINS" }, /*::[*/ 41: { n: "LABELFMT" }, /*::[*/ 42: { n: "TITLES" }, /*::[*/ 43: { n: "SHEETJS" }, /*::[*/ 45: { n: "GRAPH" }, /*::[*/ 46: { n: "NGRAPH" }, /*::[*/ 47: { n: "CALCCOUNT" }, /*::[*/ 48: { n: "UNFORMATTED" }, /*::[*/ 49: { n: "CURSORW12" }, /*::[*/ 50: { n: "WINDOW" }, /*::[*/ 51: { n: "STRING", f: l }, /*::[*/ 55: { n: "PASSWORD" }, /*::[*/ 56: { n: "LOCKED" }, /*::[*/ 60: { n: "QUERY" }, /*::[*/ 61: { n: "QUERYNAME" }, /*::[*/ 62: { n: "PRINT" }, /*::[*/ 63: { n: "PRINTNAME" }, /*::[*/ 64: { n: "GRAPH2" }, /*::[*/ 65: { n: "GRAPHNAME" }, /*::[*/ 66: { n: "ZOOM" }, /*::[*/ 67: { n: "SYMSPLIT" }, /*::[*/ 68: { n: "NSROWS" }, /*::[*/ 69: { n: "NSCOLS" }, /*::[*/ 70: { n: "RULER" }, /*::[*/ 71: { n: "NNAME" }, /*::[*/ 72: { n: "ACOMM" }, /*::[*/ 73: { n: "AMACRO" }, /*::[*/ 74: { n: "PARSE" }, /*::[*/ 102: { n: "PRANGES??" }, /*::[*/ 103: { n: "RRANGES??" }, /*::[*/ 104: { n: "FNAME??" }, /*::[*/ 105: { n: "MRANGES??" }, /*::[*/ 204: { n: "SHEETNAMECS", f: ie }, /*::[*/ 222: { n: "SHEETNAMELP", f: he }, /*::[*/ 65535: { n: "" } }, ge = { /*::[*/ 0: { n: "BOF" }, /*::[*/ 1: { n: "EOF" }, /*::[*/ 2: { n: "PASSWORD" }, /*::[*/ 3: { n: "CALCSET" }, /*::[*/ 4: { n: "WINDOWSET" }, /*::[*/ 5: { n: "SHEETCELLPTR" }, /*::[*/ 6: { n: "SHEETLAYOUT" }, /*::[*/ 7: { n: "COLUMNWIDTH" }, /*::[*/ 8: { n: "HIDDENCOLUMN" }, /*::[*/ 9: { n: "USERRANGE" }, /*::[*/ 10: { n: "SYSTEMRANGE" }, /*::[*/ 11: { n: "ZEROFORCE" }, /*::[*/ 12: { n: "SORTKEYDIR" }, /*::[*/ 13: { n: "FILESEAL" }, /*::[*/ 14: { n: "DATAFILLNUMS" }, /*::[*/ 15: { n: "PRINTMAIN" }, /*::[*/ 16: { n: "PRINTSTRING" }, /*::[*/ 17: { n: "GRAPHMAIN" }, /*::[*/ 18: { n: "GRAPHSTRING" }, /*::[*/ 19: { n: "??" }, /*::[*/ 20: { n: "ERRCELL" }, /*::[*/ 21: { n: "NACELL" }, /*::[*/ 22: { n: "LABEL16", f: O }, /*::[*/ 23: { n: "NUMBER17", f: R }, /*::[*/ 24: { n: "NUMBER18", f: B }, /*::[*/ 25: { n: "FORMULA19", f: G }, /*::[*/ 26: { n: "FORMULA1A" }, /*::[*/ 27: { n: "XFORMAT", f: be }, /*::[*/ 28: { n: "DTLABELMISC" }, /*::[*/ 29: { n: "DTLABELCELL" }, /*::[*/ 30: { n: "GRAPHWINDOW" }, /*::[*/ 31: { n: "CPA" }, /*::[*/ 32: { n: "LPLAUTO" }, /*::[*/ 33: { n: "QUERY" }, /*::[*/ 34: { n: "HIDDENSHEET" }, /*::[*/ 35: { n: "??" }, /*::[*/ 37: { n: "NUMBER25", f: L }, /*::[*/ 38: { n: "??" }, /*::[*/ 39: { n: "NUMBER27", f: J }, /*::[*/ 40: { n: "FORMULA28", f: le }, /*::[*/ 142: { n: "??" }, /*::[*/ 147: { n: "??" }, /*::[*/ 150: { n: "??" }, /*::[*/ 151: { n: "??" }, /*::[*/ 152: { n: "??" }, /*::[*/ 153: { n: "??" }, /*::[*/ 154: { n: "??" }, /*::[*/ 155: { n: "??" }, /*::[*/ 156: { n: "??" }, /*::[*/ 163: { n: "??" }, /*::[*/ 174: { n: "??" }, /*::[*/ 175: { n: "??" }, /*::[*/ 176: { n: "??" }, /*::[*/ 177: { n: "??" }, /*::[*/ 184: { n: "??" }, /*::[*/ 185: { n: "??" }, /*::[*/ 186: { n: "??" }, /*::[*/ 187: { n: "??" }, /*::[*/ 188: { n: "??" }, /*::[*/ 195: { n: "??" }, /*::[*/ 201: { n: "??" }, /*::[*/ 204: { n: "SHEETNAMECS", f: ie }, /*::[*/ 205: { n: "??" }, /*::[*/ 206: { n: "??" }, /*::[*/ 207: { n: "??" }, /*::[*/ 208: { n: "??" }, /*::[*/ 256: { n: "??" }, /*::[*/ 259: { n: "??" }, /*::[*/ 260: { n: "??" }, /*::[*/ 261: { n: "??" }, /*::[*/ 262: { n: "??" }, /*::[*/ 263: { n: "??" }, /*::[*/ 265: { n: "??" }, /*::[*/ 266: { n: "??" }, /*::[*/ 267: { n: "??" }, /*::[*/ 268: { n: "??" }, /*::[*/ 270: { n: "??" }, /*::[*/ 271: { n: "??" }, /*::[*/ 384: { n: "??" }, /*::[*/ 389: { n: "??" }, /*::[*/ 390: { n: "??" }, /*::[*/ 393: { n: "??" }, /*::[*/ 396: { n: "??" }, /*::[*/ 512: { n: "??" }, /*::[*/ 514: { n: "??" }, /*::[*/ 513: { n: "??" }, /*::[*/ 516: { n: "??" }, /*::[*/ 517: { n: "??" }, /*::[*/ 640: { n: "??" }, /*::[*/ 641: { n: "??" }, /*::[*/ 642: { n: "??" }, /*::[*/ 643: { n: "??" }, /*::[*/ 644: { n: "??" }, /*::[*/ 645: { n: "??" }, /*::[*/ 646: { n: "??" }, /*::[*/ 647: { n: "??" }, /*::[*/ 648: { n: "??" }, /*::[*/ 658: { n: "??" }, /*::[*/ 659: { n: "??" }, /*::[*/ 660: { n: "??" }, /*::[*/ 661: { n: "??" }, /*::[*/ 662: { n: "??" }, /*::[*/ 665: { n: "??" }, /*::[*/ 666: { n: "??" }, /*::[*/ 768: { n: "??" }, /*::[*/ 772: { n: "??" }, /*::[*/ 1537: { n: "SHEETINFOQP", f: ce }, /*::[*/ 1600: { n: "??" }, /*::[*/ 1602: { n: "??" }, /*::[*/ 1793: { n: "??" }, /*::[*/ 1794: { n: "??" }, /*::[*/ 1795: { n: "??" }, /*::[*/ 1796: { n: "??" }, /*::[*/ 1920: { n: "??" }, /*::[*/ 2048: { n: "??" }, /*::[*/ 2049: { n: "??" }, /*::[*/ 2052: { n: "??" }, /*::[*/ 2688: { n: "??" }, /*::[*/ 10998: { n: "??" }, /*::[*/ 12849: { n: "??" }, /*::[*/ 28233: { n: "??" }, /*::[*/ 28484: { n: "??" }, /*::[*/ 65535: { n: "" } }; return { sheet_to_wk1: a, book_to_wk3: n, to_workbook: t }; }(); function Rh(e) { var t = {}, r = e.match(_r), a = 0, n = !1; if (r) for (; a != r.length; ++a) { var i = me(r[a]); switch (i[0].replace(/\w*:/g, "")) { case "": case "": t.shadow = 1; break; case "": break; case "": case "": t.outline = 1; break; case "": break; case "": case "": t.strike = 1; break; case "": break; case "": case "": t.u = 1; break; case "": break; case "": case "": t.b = 1; break; case "": break; case "": case "": t.i = 1; break; case "": break; case "": case "": case "": break; case "": case "": case "": break; case "": case "": case "": break; case "": case "": case "": break; case "": case "": break; case "": n = !1; break; default: if (i[0].charCodeAt(1) !== 47 && !n) throw new Error("Unrecognized rich format " + i[0]); } } return t; } var Nh = /* @__PURE__ */ function() { var e = Da("t"), t = Da("rPr"); function r(i) { var s = i.match(e); if (!s) return { t: "s", v: "" }; var f = { t: "s", v: Ce(s[1]) }, c = i.match(t); return c && (f.s = Rh(c[1])), f; } var a = /<(?:\w+:)?r>/g, n = /<\/(?:\w+:)?r>/; return function(s) { return s.replace(a, "").split(n).map(r).filter(function(f) { return f.v; }); }; }(), bh = /* @__PURE__ */ function() { var t = /(\r\n|\n)/g; function r(n, i, s) { var f = []; n.u && f.push("text-decoration: underline;"), n.uval && f.push("text-underline-style:" + n.uval + ";"), n.sz && f.push("font-size:" + n.sz + "pt;"), n.outline && f.push("text-effect: outline;"), n.shadow && f.push("text-shadow: auto;"), i.push(''), n.b && (i.push(""), s.push("")), n.i && (i.push(""), s.push("")), n.strike && (i.push(""), s.push("")); var c = n.valign || ""; return c == "superscript" || c == "super" ? c = "sup" : c == "subscript" && (c = "sub"), c != "" && (i.push("<" + c + ">"), s.push("")), s.push(""), n; } function a(n) { var i = [[], n.v, []]; return n.v ? (n.s && r(n.s, i[0], i[2]), i[0].join("") + i[1].replace(t, "
") + i[2].join("")) : ""; } return function(i) { return i.map(a).join(""); }; }(), Ph = /<(?:\w+:)?t[^>]*>([^<]*)<\/(?:\w+:)?t>/g, Lh = /<(?:\w+:)?r>/, Bh = /<(?:\w+:)?rPh.*?>([\s\S]*?)<\/(?:\w+:)?rPh>/g; function In(e, t) { var r = t ? t.cellHTML : !0, a = {}; return e ? (e.match(/^\s*<(?:\w+:)?t[^>]*>/) ? (a.t = Ce(Pe(e.slice(e.indexOf(">") + 1).split(/<\/(?:\w+:)?t>/)[0] || "")), a.r = Pe(e), r && (a.h = mn(a.t))) : ( /*y = */ e.match(Lh) && (a.r = Pe(e), a.t = Ce(Pe((e.replace(Bh, "").match(Ph) || []).join("").replace(_r, ""))), r && (a.h = bh(Nh(a.r)))) ), a) : { t: "" }; } var Mh = /<(?:\w+:)?sst([^>]*)>([\s\S]*)<\/(?:\w+:)?sst>/, Uh = /<(?:\w+:)?(?:si|sstItem)>/g, Wh = /<\/(?:\w+:)?(?:si|sstItem)>/; function Hh(e, t) { var r = [], a = ""; if (!e) return r; var n = e.match(Mh); if (n) { a = n[2].replace(Uh, "").split(Wh); for (var i = 0; i != a.length; ++i) { var s = In(a[i].trim(), t); s != null && (r[r.length] = s); } n = me(n[1]), r.Count = n.count, r.Unique = n.uniqueCount; } return r; } var Vh = /^\s|\s$|[\t\n\r]/; function Af(e, t) { if (!t.bookSST) return ""; var r = [Ze]; r[r.length] = ae("sst", null, { xmlns: Vt[0], count: e.Count, uniqueCount: e.Unique }); for (var a = 0; a != e.length; ++a) if (e[a] != null) { var n = e[a], i = ""; n.r ? i += n.r : (i += ""), i += "", r[r.length] = i; } return r.length > 2 && (r[r.length] = "", r[1] = r[1].replace("/>", ">")), r.join(""); } function Gh(e) { return [e.read_shift(4), e.read_shift(4)]; } function Xh(e, t) { var r = [], a = !1; return ht(e, function(i, s, f) { switch (f) { case 159: r.Count = i[0], r.Unique = i[1]; break; case 19: r.push(i); break; case 160: return !0; case 35: a = !0; break; case 36: a = !1; break; default: if (s.T, !a || t.WTF) throw new Error("Unexpected record 0x" + f.toString(16)); } }), r; } function zh(e, t) { return t || (t = z(8)), t.write_shift(4, e.Count), t.write_shift(4, e.Unique), t; } var jh = tl; function $h(e) { var t = Fr(); Y(t, 159, zh(e)); for (var r = 0; r < e.length; ++r) Y(t, 19, jh(e[r])); return Y( t, 160 /* BrtEndSst */ ), t.end(); } function Cf(e) { for (var t = [], r = e.split(""), a = 0; a < r.length; ++a) t[a] = r[a].charCodeAt(0); return t; } function ot(e, t) { var r = {}; return r.Major = e.read_shift(2), r.Minor = e.read_shift(2), t >= 4 && (e.l += t - 4), r; } function Kh(e) { var t = {}; return t.id = e.read_shift(0, "lpp4"), t.R = ot(e, 4), t.U = ot(e, 4), t.W = ot(e, 4), t; } function Yh(e) { for (var t = e.read_shift(4), r = e.l + t - 4, a = {}, n = e.read_shift(4), i = []; n-- > 0; ) i.push({ t: e.read_shift(4), v: e.read_shift(0, "lpp4") }); if (a.name = e.read_shift(0, "lpp4"), a.comps = i, e.l != r) throw new Error("Bad DataSpaceMapEntry: " + e.l + " != " + r); return a; } function Jh(e) { var t = []; e.l += 4; for (var r = e.read_shift(4); r-- > 0; ) t.push(Yh(e)); return t; } function qh(e) { var t = []; e.l += 4; for (var r = e.read_shift(4); r-- > 0; ) t.push(e.read_shift(0, "lpp4")); return t; } function Zh(e) { var t = {}; return e.read_shift(4), e.l += 4, t.id = e.read_shift(0, "lpp4"), t.name = e.read_shift(0, "lpp4"), t.R = ot(e, 4), t.U = ot(e, 4), t.W = ot(e, 4), t; } function Qh(e) { var t = Zh(e); if (t.ename = e.read_shift(0, "8lpp4"), t.blksz = e.read_shift(4), t.cmode = e.read_shift(4), e.read_shift(4) != 4) throw new Error("Bad !Primary record"); return t; } function Df(e, t) { var r = e.l + t, a = {}; a.Flags = e.read_shift(4) & 63, e.l += 4, a.AlgID = e.read_shift(4); var n = !1; switch (a.AlgID) { case 26126: case 26127: case 26128: n = a.Flags == 36; break; case 26625: n = a.Flags == 4; break; case 0: n = a.Flags == 16 || a.Flags == 4 || a.Flags == 36; break; default: throw "Unrecognized encryption algorithm: " + a.AlgID; } if (!n) throw new Error("Encryption Flags/AlgID mismatch"); return a.AlgIDHash = e.read_shift(4), a.KeySize = e.read_shift(4), a.ProviderType = e.read_shift(4), e.l += 8, a.CSPName = e.read_shift(r - e.l >> 1, "utf16le"), e.l = r, a; } function Of(e, t) { var r = {}, a = e.l + t; return e.l += 4, r.Salt = e.slice(e.l, e.l + 16), e.l += 16, r.Verifier = e.slice(e.l, e.l + 16), e.l += 16, e.read_shift(4), r.VerifierHash = e.slice(e.l, a), e.l = a, r; } function e1(e) { var t = ot(e); switch (t.Minor) { case 2: return [t.Minor, r1(e)]; case 3: return [t.Minor, t1()]; case 4: return [t.Minor, a1(e)]; } throw new Error("ECMA-376 Encrypted file unrecognized Version: " + t.Minor); } function r1(e) { var t = e.read_shift(4); if ((t & 63) != 36) throw new Error("EncryptionInfo mismatch"); var r = e.read_shift(4), a = Df(e, r), n = Of(e, e.length - e.l); return { t: "Std", h: a, v: n }; } function t1() { throw new Error("File is password-protected: ECMA-376 Extensible"); } function a1(e) { var t = ["saltSize", "blockSize", "keyBits", "hashSize", "cipherAlgorithm", "cipherChaining", "hashAlgorithm", "saltValue"]; e.l += 4; var r = e.read_shift(e.length - e.l, "utf8"), a = {}; return r.replace(_r, function(i) { var s = me(i); switch (tt(s[0])) { case "": break; case "": case "": break; case "": break; case " 4 || a.Major < 2) throw new Error("unrecognized major version code: " + a.Major); r.Flags = e.read_shift(4), t -= 4; var n = e.read_shift(4); return t -= 4, r.EncryptionHeader = Df(e, n), t -= n, r.EncryptionVerifier = Of(e, t), r; } function i1(e) { var t = {}, r = t.EncryptionVersionInfo = ot(e, 4); if (r.Major != 1 || r.Minor != 1) throw "unrecognized version code " + r.Major + " : " + r.Minor; return t.Salt = e.read_shift(16), t.EncryptedVerifier = e.read_shift(16), t.EncryptedVerifierHash = e.read_shift(16), t; } function Rn(e) { var t = 0, r, a = Cf(e), n = a.length + 1, i, s, f, c, o; for (r = Et(n), r[0] = a.length, i = 1; i != n; ++i) r[i] = a[i - 1]; for (i = n - 1; i >= 0; --i) s = r[i], f = t & 16384 ? 1 : 0, c = t << 1 & 32767, o = f | c, t = o ^ s; return t ^ 52811; } var If = /* @__PURE__ */ function() { var e = [187, 255, 255, 186, 255, 255, 185, 128, 0, 190, 15, 0, 191, 15, 0], t = [57840, 7439, 52380, 33984, 4364, 3600, 61902, 12606, 6258, 57657, 54287, 34041, 10252, 43370, 20163], r = [44796, 19929, 39858, 10053, 20106, 40212, 10761, 31585, 63170, 64933, 60267, 50935, 40399, 11199, 17763, 35526, 1453, 2906, 5812, 11624, 23248, 885, 1770, 3540, 7080, 14160, 28320, 56640, 55369, 41139, 20807, 41614, 21821, 43642, 17621, 28485, 56970, 44341, 19019, 38038, 14605, 29210, 60195, 50791, 40175, 10751, 21502, 43004, 24537, 18387, 36774, 3949, 7898, 15796, 31592, 63184, 47201, 24803, 49606, 37805, 14203, 28406, 56812, 17824, 35648, 1697, 3394, 6788, 13576, 27152, 43601, 17539, 35078, 557, 1114, 2228, 4456, 30388, 60776, 51953, 34243, 7079, 14158, 28316, 14128, 28256, 56512, 43425, 17251, 34502, 7597, 13105, 26210, 52420, 35241, 883, 1766, 3532, 4129, 8258, 16516, 33032, 4657, 9314, 18628], a = function(s) { return (s / 2 | s * 128) & 255; }, n = function(s, f) { return a(s ^ f); }, i = function(s) { for (var f = t[s.length - 1], c = 104, o = s.length - 1; o >= 0; --o) for (var l = s[o], u = 0; u != 7; ++u) l & 64 && (f ^= r[c]), l *= 2, --c; return f; }; return function(s) { for (var f = Cf(s), c = i(f), o = f.length, l = Et(16), u = 0; u != 16; ++u) l[u] = 0; var h, d, v; for ((o & 1) === 1 && (h = c >> 8, l[o] = n(e[0], h), --o, h = c & 255, d = f[f.length - 1], l[o] = n(d, h)); o > 0; ) --o, h = c >> 8, l[o] = n(f[o], h), --o, h = c & 255, l[o] = n(f[o], h); for (o = 15, v = 15 - f.length; v > 0; ) h = c >> 8, l[o] = n(e[v], h), --o, --v, h = c & 255, l[o] = n(f[o], h), --o, --v; return l; }; }(), s1 = function(e, t, r, a, n) { n || (n = t), a || (a = If(e)); var i, s; for (i = 0; i != t.length; ++i) s = t[i], s ^= a[r], s = (s >> 5 | s << 3) & 255, n[i] = s, ++r; return [n, r, a]; }, f1 = function(e) { var t = 0, r = If(e); return function(a) { var n = s1("", a, t, r); return t = n[1], n[0]; }; }; function c1(e, t, r, a) { var n = { key: rr(e), verificationBytes: rr(e) }; return r.password && (n.verifier = Rn(r.password)), a.valid = n.verificationBytes === n.verifier, a.valid && (a.insitu = f1(r.password)), n; } function o1(e, t, r) { var a = r || {}; return a.Info = e.read_shift(2), e.l -= 2, a.Info === 1 ? a.Data = i1(e) : a.Data = n1(e, t), a; } function l1(e, t, r) { var a = { Type: r.biff >= 8 ? e.read_shift(2) : 0 }; return a.Type ? o1(e, t - 2, a) : c1(e, r.biff >= 8 ? t : t - 2, r, a), a; } var Rf = /* @__PURE__ */ function() { function e(n, i) { switch (i.type) { case "base64": return t(Rr(n), i); case "binary": return t(n, i); case "buffer": return t(Te && Buffer.isBuffer(n) ? n.toString("binary") : Ft(n), i); case "array": return t(Lt(n), i); } throw new Error("Unrecognized type " + i.type); } function t(n, i) { var s = i || {}, f = s.dense ? [] : {}, c = n.match(/\\trowd.*?\\row\b/g); if (!c.length) throw new Error("RTF missing table"); var o = { s: { c: 0, r: 0 }, e: { c: 0, r: c.length - 1 } }; return c.forEach(function(l, u) { Array.isArray(f) && (f[u] = []); for (var h = /\\\w+\b/g, d = 0, v, x = -1; v = h.exec(l); ) { switch (v[0]) { case "\\cell": var p = l.slice(d, h.lastIndex - v[0].length); if (p[0] == " " && (p = p.slice(1)), ++x, p.length) { var w = { v: p, t: "s" }; Array.isArray(f) ? f[u][x] = w : f[pe({ r: u, c: x })] = w; } break; } d = h.lastIndex; } x > o.e.c && (o.e.c = x); }), f["!ref"] = we(o), f; } function r(n, i) { return yt(e(n, i), i); } function a(n) { for (var i = ["{\\rtf1\\ansi"], s = De(n["!ref"]), f, c = Array.isArray(n), o = s.s.r; o <= s.e.r; ++o) { i.push("\\trowd\\trautofit1"); for (var l = s.s.c; l <= s.e.c; ++l) i.push("\\cellx" + (l + 1)); for (i.push("\\pard\\intbl"), l = s.s.c; l <= s.e.c; ++l) { var u = pe({ r: o, c: l }); f = c ? (n[o] || [])[l] : n[u], !(!f || f.v == null && (!f.f || f.F)) && (i.push(" " + (f.w || (lt(f), f.w))), i.push("\\cell")); } i.push("\\pard\\intbl\\row"); } return i.join("") + "}"; } return { to_workbook: r, to_sheet: e, from_sheet: a }; }(); function u1(e) { var t = e.slice(e[0] === "#" ? 1 : 0).slice(0, 6); return [parseInt(t.slice(0, 2), 16), parseInt(t.slice(2, 4), 16), parseInt(t.slice(4, 6), 16)]; } function Na(e) { for (var t = 0, r = 1; t != 3; ++t) r = r * 256 + (e[t] > 255 ? 255 : e[t] < 0 ? 0 : e[t]); return r.toString(16).toUpperCase().slice(1); } function h1(e) { var t = e[0] / 255, r = e[1] / 255, a = e[2] / 255, n = Math.max(t, r, a), i = Math.min(t, r, a), s = n - i; if (s === 0) return [0, 0, t]; var f = 0, c = 0, o = n + i; switch (c = s / (o > 1 ? 2 - o : o), n) { case t: f = ((r - a) / s + 6) % 6; break; case r: f = (a - t) / s + 2; break; case a: f = (t - r) / s + 4; break; } return [f / 6, c, o / 2]; } function x1(e) { var t = e[0], r = e[1], a = e[2], n = r * 2 * (a < 0.5 ? a : 1 - a), i = a - n / 2, s = [i, i, i], f = 6 * t, c; if (r !== 0) switch (f | 0) { case 0: case 6: c = n * f, s[0] += n, s[1] += c; break; case 1: c = n * (2 - f), s[0] += c, s[1] += n; break; case 2: c = n * (f - 2), s[1] += n, s[2] += c; break; case 3: c = n * (4 - f), s[1] += c, s[2] += n; break; case 4: c = n * (f - 4), s[2] += n, s[0] += c; break; case 5: c = n * (6 - f), s[2] += c, s[0] += n; break; } for (var o = 0; o != 3; ++o) s[o] = Math.round(s[o] * 255); return s; } function m0(e, t) { if (t === 0) return e; var r = h1(u1(e)); return t < 0 ? r[2] = r[2] * (1 + t) : r[2] = 1 - (1 - r[2]) * (1 - t), Na(x1(r)); } var Nf = 6, d1 = 15, v1 = 1, vr = Nf; function ba(e) { return Math.floor((e + Math.round(128 / vr) / 256) * vr); } function Pa(e) { return Math.floor((e - 5) / vr * 100 + 0.5) / 100; } function g0(e) { return Math.round((e * vr + 5) / vr * 256) / 256; } function B0(e) { return g0(Pa(ba(e))); } function Nn(e) { var t = Math.abs(e - B0(e)), r = vr; if (t > 5e-3) for (vr = v1; vr < d1; ++vr) Math.abs(e - B0(e)) <= t && (t = Math.abs(e - B0(e)), r = vr); vr = r; } function kt(e) { e.width ? (e.wpx = ba(e.width), e.wch = Pa(e.wpx), e.MDW = vr) : e.wpx ? (e.wch = Pa(e.wpx), e.width = g0(e.wch), e.MDW = vr) : typeof e.wch == "number" && (e.width = g0(e.wch), e.wpx = ba(e.width), e.MDW = vr), e.customWidth && delete e.customWidth; } var p1 = 96, bf = p1; function La(e) { return e * 96 / bf; } function ia(e) { return e * bf / 96; } var m1 = { None: "none", Solid: "solid", Gray50: "mediumGray", Gray75: "darkGray", Gray25: "lightGray", HorzStripe: "darkHorizontal", VertStripe: "darkVertical", ReverseDiagStripe: "darkDown", DiagStripe: "darkUp", DiagCross: "darkGrid", ThickDiagCross: "darkTrellis", ThinHorzStripe: "lightHorizontal", ThinVertStripe: "lightVertical", ThinReverseDiagStripe: "lightDown", ThinHorzCross: "lightGrid" }; function g1(e, t, r, a) { t.Borders = []; var n = {}, i = !1; (e[0].match(_r) || []).forEach(function(s) { var f = me(s); switch (tt(f[0])) { case "": case "": break; case "": case "": n = /*::(*/ {}, f.diagonalUp && (n.diagonalUp = Me(f.diagonalUp)), f.diagonalDown && (n.diagonalDown = Me(f.diagonalDown)), t.Borders.push(n); break; case "": break; case "": break; case "": break; case "": break; case "": break; case "": break; case "": break; case "": break; case "": break; case "": break; case "": break; case "": break; case "": break; case "": case "": break; case "": break; case "": case "": break; case "": break; case "": case "": break; case "": break; case "": case "": break; case "": break; case "": case "": break; case "": break; case "": break; case "": case "": break; case "": case "": break; case "": i = !1; break; default: if (a && a.WTF && !i) throw new Error("unrecognized " + f[0] + " in borders"); } }); } function _1(e, t, r, a) { t.Fills = []; var n = {}, i = !1; (e[0].match(_r) || []).forEach(function(s) { var f = me(s); switch (tt(f[0])) { case "": case "": break; case "": case "": n = {}, t.Fills.push(n); break; case "": break; case "": break; case "": t.Fills.push(n), n = {}; break; case "": f.patternType && (n.patternType = f.patternType); break; case "": case "": break; case "": case "": break; case "": case "": break; case "": break; case "": break; case "": break; case "": break; case "": case "": break; case "": i = !1; break; default: if (a && a.WTF && !i) throw new Error("unrecognized " + f[0] + " in fills"); } }); } function w1(e, t, r, a) { t.Fonts = []; var n = {}, i = !1; (e[0].match(_r) || []).forEach(function(s) { var f = me(s); switch (tt(f[0])) { case "": case "": break; case "": break; case "": case "": t.Fonts.push(n), n = {}; break; case "": case "": break; case "": n.bold = 1; break; case "": n.italic = 1; break; case "": n.underline = 1; break; case "": n.strike = 1; break; case "": n.outline = 1; break; case "": n.shadow = 1; break; case "": n.condense = 1; break; case "": n.extend = 1; break; case "": case "": break; case "": case "": break; case "": case "": break; case "": case "": break; case "": case "": break; case "": i = !1; break; case "": case "": break; case "": i = !1; break; default: if (a && a.WTF && !i) throw new Error("unrecognized " + f[0] + " in fonts"); } }); } function E1(e, t, r) { t.NumberFmt = []; for (var a = $e(de), n = 0; n < a.length; ++n) t.NumberFmt[a[n]] = de[a[n]]; var i = e[0].match(_r); if (i) for (n = 0; n < i.length; ++n) { var s = me(i[n]); switch (tt(s[0])) { case "": case "": case "": break; case " 0) { if (c > 392) { for (c = 392; c > 60 && t.NumberFmt[c] != null; --c) ; t.NumberFmt[c] = f; } rt(f, c); } } break; case "": break; default: if (r.WTF) throw new Error("unrecognized " + s[0] + " in numFmts"); } } } function k1(e) { var t = [""]; return [[5, 8], [23, 26], [41, 44], [ /*63*/ 50, /*66],[164,*/ 392 ]].forEach(function(r) { for (var a = r[0]; a <= r[1]; ++a) e[a] != null && (t[t.length] = ae("numFmt", null, { numFmtId: a, formatCode: Ne(e[a]) })); }), t.length === 1 ? "" : (t[t.length] = "", t[0] = ae("numFmts", null, { count: t.length - 2 }).replace("/>", ">"), t.join("")); } var a0 = ["numFmtId", "fillId", "fontId", "borderId", "xfId"], n0 = ["applyAlignment", "applyBorder", "applyFill", "applyFont", "applyNumberFormat", "applyProtection", "pivotButton", "quotePrefix"]; function T1(e, t, r) { t.CellXf = []; var a, n = !1; (e[0].match(_r) || []).forEach(function(i) { var s = me(i), f = 0; switch (tt(s[0])) { case "": case "": case "": break; case "": for (a = s, delete a[0], f = 0; f < a0.length; ++f) a[a0[f]] && (a[a0[f]] = parseInt(a[a0[f]], 10)); for (f = 0; f < n0.length; ++f) a[n0[f]] && (a[n0[f]] = Me(a[n0[f]])); if (t.NumberFmt && a.numFmtId > 392) { for (f = 392; f > 60; --f) if (t.NumberFmt[a.numFmtId] == t.NumberFmt[f]) { a.numFmtId = f; break; } } t.CellXf.push(a); break; case "": break; case "": var c = {}; s.vertical && (c.vertical = s.vertical), s.horizontal && (c.horizontal = s.horizontal), s.textRotation != null && (c.textRotation = s.textRotation), s.indent && (c.indent = s.indent), s.wrapText && (c.wrapText = Me(s.wrapText)), a.alignment = c; break; case "": break; case "": case "": break; case "": n = !1; break; case "": case "": break; case "": n = !1; break; default: if (r && r.WTF && !n) throw new Error("unrecognized " + s[0] + " in cellXfs"); } }); } function S1(e) { var t = []; return t[t.length] = ae("cellXfs", null), e.forEach(function(r) { t[t.length] = ae("xf", null, r); }), t[t.length] = "", t.length === 2 ? "" : (t[0] = ae("cellXfs", null, { count: t.length - 2 }).replace("/>", ">"), t.join("")); } var F1 = /* @__PURE__ */ function() { var t = /<(?:\w+:)?numFmts([^>]*)>[\S\s]*?<\/(?:\w+:)?numFmts>/, r = /<(?:\w+:)?cellXfs([^>]*)>[\S\s]*?<\/(?:\w+:)?cellXfs>/, a = /<(?:\w+:)?fills([^>]*)>[\S\s]*?<\/(?:\w+:)?fills>/, n = /<(?:\w+:)?fonts([^>]*)>[\S\s]*?<\/(?:\w+:)?fonts>/, i = /<(?:\w+:)?borders([^>]*)>[\S\s]*?<\/(?:\w+:)?borders>/; return function(f, c, o) { var l = {}; if (!f) return l; f = f.replace(//mg, "").replace(//gm, ""); var u; return (u = f.match(t)) && E1(u, l, o), (u = f.match(n)) && w1(u, l, c, o), (u = f.match(a)) && _1(u, l, c, o), (u = f.match(i)) && g1(u, l, c, o), (u = f.match(r)) && T1(u, l, o), l; }; }(); function Pf(e, t) { var r = [Ze, ae("styleSheet", null, { xmlns: Vt[0], "xmlns:vt": ar.vt })], a; return e.SSF && (a = k1(e.SSF)) != null && (r[r.length] = a), r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', (a = S1(t.cellXfs)) && (r[r.length] = a), r[r.length] = '', r[r.length] = '', r[r.length] = '', r.length > 2 && (r[r.length] = "", r[1] = r[1].replace("/>", ">")), r.join(""); } function y1(e, t) { var r = e.read_shift(2), a = mr(e); return [r, a]; } function A1(e, t, r) { r || (r = z(6 + 4 * t.length)), r.write_shift(2, e), fr(t, r); var a = r.length > r.l ? r.slice(0, r.l) : r; return r.l == null && (r.l = r.length), a; } function C1(e, t, r) { var a = {}; a.sz = e.read_shift(2) / 20; var n = ol(e); n.fItalic && (a.italic = 1), n.fCondense && (a.condense = 1), n.fExtend && (a.extend = 1), n.fShadow && (a.shadow = 1), n.fOutline && (a.outline = 1), n.fStrikeout && (a.strike = 1); var i = e.read_shift(2); switch (i === 700 && (a.bold = 1), e.read_shift(2)) { case 1: a.vertAlign = "superscript"; break; case 2: a.vertAlign = "subscript"; break; } var s = e.read_shift(1); s != 0 && (a.underline = s); var f = e.read_shift(1); f > 0 && (a.family = f); var c = e.read_shift(1); switch (c > 0 && (a.charset = c), e.l++, a.color = cl(e), e.read_shift(1)) { case 1: a.scheme = "major"; break; case 2: a.scheme = "minor"; break; } return a.name = mr(e), a; } function D1(e, t) { t || (t = z(25 + 4 * 32)), t.write_shift(2, e.sz * 20), ll(e, t), t.write_shift(2, e.bold ? 700 : 400); var r = 0; e.vertAlign == "superscript" ? r = 1 : e.vertAlign == "subscript" && (r = 2), t.write_shift(2, r), t.write_shift(1, e.underline || 0), t.write_shift(1, e.family || 0), t.write_shift(1, e.charset || 0), t.write_shift(1, 0), d0(e.color, t); var a = 0; return e.scheme == "major" && (a = 1), e.scheme == "minor" && (a = 2), t.write_shift(1, a), fr(e.name, t), t.length > t.l ? t.slice(0, t.l) : t; } var O1 = [ "none", "solid", "mediumGray", "darkGray", "lightGray", "darkHorizontal", "darkVertical", "darkDown", "darkUp", "darkGrid", "darkTrellis", "lightHorizontal", "lightVertical", "lightDown", "lightUp", "lightGrid", "lightTrellis", "gray125", "gray0625" ], M0, I1 = gr; function Gi(e, t) { t || (t = z(4 * 3 + 8 * 7 + 16 * 1)), M0 || (M0 = E0(O1)); var r = M0[e.patternType]; r == null && (r = 40), t.write_shift(4, r); var a = 0; if (r != 40) for (d0({ auto: 1 }, t), d0({ auto: 1 }, t); a < 12; ++a) t.write_shift(4, 0); else { for (; a < 4; ++a) t.write_shift(4, 0); for (; a < 12; ++a) t.write_shift(4, 0); } return t.length > t.l ? t.slice(0, t.l) : t; } function R1(e, t) { var r = e.l + t, a = e.read_shift(2), n = e.read_shift(2); return e.l = r, { ixfe: a, numFmtId: n }; } function Lf(e, t, r) { r || (r = z(16)), r.write_shift(2, t || 0), r.write_shift(2, e.numFmtId || 0), r.write_shift(2, 0), r.write_shift(2, 0), r.write_shift(2, 0), r.write_shift(1, 0), r.write_shift(1, 0); var a = 0; return r.write_shift(1, a), r.write_shift(1, 0), r.write_shift(1, 0), r.write_shift(1, 0), r; } function va(e, t) { return t || (t = z(10)), t.write_shift(1, 0), t.write_shift(1, 0), t.write_shift(4, 0), t.write_shift(4, 0), t; } var N1 = gr; function b1(e, t) { return t || (t = z(51)), t.write_shift(1, 0), va(null, t), va(null, t), va(null, t), va(null, t), va(null, t), t.length > t.l ? t.slice(0, t.l) : t; } function P1(e, t) { return t || (t = z(12 + 4 * 10)), t.write_shift(4, e.xfId), t.write_shift(2, 1), t.write_shift(1, +e.builtinId), t.write_shift(1, 0), x0(e.name || "", t), t.length > t.l ? t.slice(0, t.l) : t; } function L1(e, t, r) { var a = z(2052); return a.write_shift(4, e), x0(t, a), x0(r, a), a.length > a.l ? a.slice(0, a.l) : a; } function B1(e, t, r) { var a = {}; a.NumberFmt = []; for (var n in de) a.NumberFmt[n] = de[n]; a.CellXf = [], a.Fonts = []; var i = [], s = !1; return ht(e, function(c, o, l) { switch (l) { case 44: a.NumberFmt[c[0]] = c[1], rt(c[1], c[0]); break; case 43: a.Fonts.push(c), c.color.theme != null && t && t.themeElements && t.themeElements.clrScheme && (c.color.rgb = m0(t.themeElements.clrScheme[c.color.theme].rgb, c.color.tint || 0)); break; case 1025: break; case 45: break; case 46: break; case 47: i[i.length - 1] == 617 && a.CellXf.push(c); break; case 48: case 507: case 572: case 475: break; case 1171: case 2102: case 1130: case 512: case 2095: case 3072: break; case 35: s = !0; break; case 36: s = !1; break; case 37: i.push(l), s = !0; break; case 38: i.pop(), s = !1; break; default: if (o.T > 0) i.push(l); else if (o.T < 0) i.pop(); else if (!s || r.WTF && i[i.length - 1] != 37) throw new Error("Unexpected record 0x" + l.toString(16)); } }), a; } function M1(e, t) { if (t) { var r = 0; [[5, 8], [23, 26], [41, 44], [ /*63*/ 50, /*66],[164,*/ 392 ]].forEach(function(a) { for (var n = a[0]; n <= a[1]; ++n) t[n] != null && ++r; }), r != 0 && (Y(e, 615, Kr(r)), [[5, 8], [23, 26], [41, 44], [ /*63*/ 50, /*66],[164,*/ 392 ]].forEach(function(a) { for (var n = a[0]; n <= a[1]; ++n) t[n] != null && Y(e, 44, A1(n, t[n])); }), Y( e, 616 /* BrtEndFmts */ )); } } function U1(e) { var t = 1; Y(e, 611, Kr(t)), Y(e, 43, D1({ sz: 12, color: { theme: 1 }, name: "Calibri", family: 2, scheme: "minor" })), Y( e, 612 /* BrtEndFonts */ ); } function W1(e) { var t = 2; Y(e, 603, Kr(t)), Y(e, 45, Gi({ patternType: "none" })), Y(e, 45, Gi({ patternType: "gray125" })), Y( e, 604 /* BrtEndFills */ ); } function H1(e) { var t = 1; Y(e, 613, Kr(t)), Y(e, 46, b1()), Y( e, 614 /* BrtEndBorders */ ); } function V1(e) { var t = 1; Y(e, 626, Kr(t)), Y(e, 47, Lf({ numFmtId: 0, fontId: 0, fillId: 0, borderId: 0 }, 65535)), Y( e, 627 /* BrtEndCellStyleXFs */ ); } function G1(e, t) { Y(e, 617, Kr(t.length)), t.forEach(function(r) { Y(e, 47, Lf(r, 0)); }), Y( e, 618 /* BrtEndCellXFs */ ); } function X1(e) { var t = 1; Y(e, 619, Kr(t)), Y(e, 48, P1({ xfId: 0, builtinId: 0, name: "Normal" })), Y( e, 620 /* BrtEndStyles */ ); } function z1(e) { var t = 0; Y(e, 505, Kr(t)), Y( e, 506 /* BrtEndDXFs */ ); } function j1(e) { var t = 0; Y(e, 508, L1(t, "TableStyleMedium9", "PivotStyleMedium4")), Y( e, 509 /* BrtEndTableStyles */ ); } function $1(e, t) { var r = Fr(); return Y( r, 278 /* BrtBeginStyleSheet */ ), M1(r, e.SSF), U1(r), W1(r), H1(r), V1(r), G1(r, t.cellXfs), X1(r), z1(r), j1(r), Y( r, 279 /* BrtEndStyleSheet */ ), r.end(); } var K1 = [ "", "", "", "", "", "", "", "", "", "", "", "" ]; function Y1(e, t, r) { t.themeElements.clrScheme = []; var a = {}; (e[0].match(_r) || []).forEach(function(n) { var i = me(n); switch (i[0]) { case "": break; case "": case "": case "": case "": case "": case "": case "": case "": case "": case "": case "": case "": case "": case "": case "": case "": case "": case "": case "": case "": case "": case "": case "": case "": i[0].charAt(1) === "/" ? (t.themeElements.clrScheme[K1.indexOf(i[0])] = a, a = {}) : a.name = i[0].slice(3, i[0].length - 1); break; default: if (r && r.WTF) throw new Error("Unrecognized " + i[0] + " in clrScheme"); } }); } function J1() { } function q1() { } var Z1 = /]*)>[\s\S]*<\/a:clrScheme>/, Q1 = /]*)>[\s\S]*<\/a:fontScheme>/, ex = /]*)>[\s\S]*<\/a:fmtScheme>/; function rx(e, t, r) { t.themeElements = {}; var a; [ /* clrScheme CT_ColorScheme */ ["clrScheme", Z1, Y1], /* fontScheme CT_FontScheme */ ["fontScheme", Q1, J1], /* fmtScheme CT_StyleMatrix */ ["fmtScheme", ex, q1] ].forEach(function(n) { if (!(a = e.match(n[1]))) throw new Error(n[0] + " not found in themeElements"); n[2](a, t, r); }); } var tx = /]*)>[\s\S]*<\/a:themeElements>/; function Bf(e, t) { (!e || e.length === 0) && (e = bn()); var r, a = {}; if (!(r = e.match(tx))) throw new Error("themeElements not found in theme"); return rx(r[0], a, t), a.raw = e, a; } function bn(e, t) { if (t && t.themeXLSX) return t.themeXLSX; if (e && typeof e.raw == "string") return e.raw; var r = [Ze]; return r[r.length] = '', r[r.length] = "", r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = "", r[r.length] = '', r[r.length] = "", r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = "", r[r.length] = "", r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = "", r[r.length] = "", r[r.length] = '', r[r.length] = "", r[r.length] = '', r[r.length] = '', r[r.length] = "", r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = "", r[r.length] = '', r[r.length] = "", r[r.length] = '', r[r.length] = "", r[r.length] = '', r[r.length] = '', r[r.length] = "", r[r.length] = '', r[r.length] = "", r[r.length] = "", r[r.length] = "", r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = "", r[r.length] = "", r[r.length] = "", r[r.length] = "", r[r.length] = '', r[r.length] = "", r[r.length] = "", r[r.length] = "", r[r.length] = "", r[r.length] = '', r[r.length] = "", r[r.length] = "", r[r.length] = "", r[r.length] = "", r[r.length] = '', r[r.length] = "", r[r.length] = '', r[r.length] = '', r[r.length] = "", r[r.length] = "", r[r.length] = "", r[r.length] = '', r[r.length] = '', r[r.length] = "", r[r.length] = '', r[r.length] = '', r[r.length] = '', r[r.length] = "", r[r.length] = '', r[r.length] = "", r[r.length] = '', r[r.length] = "", r[r.length] = '', r[r.length] = '', r[r.length] = "", r[r.length] = '', r[r.length] = "", r[r.length] = "", r[r.length] = "", r[r.length] = "", r[r.length] = "", r[r.length] = "", r[r.length] = '', r[r.length] = "", r[r.length] = "", r[r.length] = '', r[r.length] = "", r[r.length] = "", r[r.length] = "", r[r.length] = "", r.join(""); } function ax(e, t, r) { var a = e.l + t, n = e.read_shift(4); if (n !== 124226) { if (!r.cellStyles) { e.l = a; return; } var i = e.slice(e.l); e.l = a; var s; try { s = Cs(i, { type: "array" }); } catch { return; } var f = Ir(s, "theme/theme/theme1.xml", !0); if (f) return Bf(f, r); } } function nx(e) { return e.read_shift(4); } function ix(e) { var t = {}; switch (t.xclrType = e.read_shift(2), t.nTintShade = e.read_shift(2), t.xclrType) { case 0: e.l += 4; break; case 1: t.xclrValue = sx(e, 4); break; case 2: t.xclrValue = pf(e); break; case 3: t.xclrValue = nx(e); break; case 4: e.l += 4; break; } return e.l += 8, t; } function sx(e, t) { return gr(e, t); } function fx(e, t) { return gr(e, t); } function cx(e) { var t = e.read_shift(2), r = e.read_shift(2) - 4, a = [t]; switch (t) { case 4: case 5: case 7: case 8: case 9: case 10: case 11: case 13: a[1] = ix(e); break; case 6: a[1] = fx(e, r); break; case 14: case 15: a[1] = e.read_shift(r === 1 ? 1 : 2); break; default: throw new Error("Unrecognized ExtProp type: " + t + " " + r); } return a; } function ox(e, t) { var r = e.l + t; e.l += 2; var a = e.read_shift(2); e.l += 2; for (var n = e.read_shift(2), i = []; n-- > 0; ) i.push(cx(e, r - e.l)); return { ixfe: a, ext: i }; } function lx(e, t) { t.forEach(function(r) { switch (r[0]) { } }); } function ux(e, t) { return { flags: e.read_shift(4), version: e.read_shift(4), name: mr(e) }; } function hx(e) { var t = z(12 + 2 * e.name.length); return t.write_shift(4, e.flags), t.write_shift(4, e.version), fr(e.name, t), t.slice(0, t.l); } function xx(e) { for (var t = [], r = e.read_shift(4); r-- > 0; ) t.push([e.read_shift(4), e.read_shift(4)]); return t; } function dx(e) { var t = z(4 + 8 * e.length); t.write_shift(4, e.length); for (var r = 0; r < e.length; ++r) t.write_shift(4, e[r][0]), t.write_shift(4, e[r][1]); return t; } function vx(e, t) { var r = z(8 + 2 * t.length); return r.write_shift(4, e), fr(t, r), r.slice(0, r.l); } function px(e) { return e.l += 4, e.read_shift(4) != 0; } function mx(e, t) { var r = z(8); return r.write_shift(4, e), r.write_shift(4, t ? 1 : 0), r; } function gx(e, t, r) { var a = { Types: [], Cell: [], Value: [] }, n = r || {}, i = [], s = !1, f = 2; return ht(e, function(c, o, l) { switch (l) { case 335: a.Types.push({ name: c.name }); break; case 51: c.forEach(function(u) { f == 1 ? a.Cell.push({ type: a.Types[u[0] - 1].name, index: u[1] }) : f == 0 && a.Value.push({ type: a.Types[u[0] - 1].name, index: u[1] }); }); break; case 337: f = c ? 1 : 0; break; case 338: f = 2; break; case 35: i.push(l), s = !0; break; case 36: i.pop(), s = !1; break; default: if (!o.T) { if (!s || n.WTF && i[i.length - 1] != 35) throw new Error("Unexpected record 0x" + l.toString(16)); } } }), a; } function _x() { var e = Fr(); return Y(e, 332), Y(e, 334, Kr(1)), Y(e, 335, hx({ name: "XLDAPR", version: 12e4, flags: 3496657072 })), Y(e, 336), Y(e, 339, vx(1, "XLDAPR")), Y(e, 52), Y(e, 35, Kr(514)), Y(e, 4096, Kr(0)), Y(e, 4097, Hr(1)), Y(e, 36), Y(e, 53), Y(e, 340), Y(e, 337, mx(1, !0)), Y(e, 51, dx([[1, 0]])), Y(e, 338), Y(e, 333), e.end(); } function wx(e, t, r) { var a = { Types: [], Cell: [], Value: [] }; if (!e) return a; var n = !1, i = 2, s; return e.replace(_r, function(f) { var c = me(f); switch (tt(c[0])) { case "": break; case "": break; case "": break; case "": break; case "": break; case "": break; case "": break; case "": i = 2; break; case "": i = 2; break; case "": case "": case "": break; case "": n = !1; break; case " `), e.join(""); } function Ex(e) { var t = []; if (!e) return t; var r = 1; return (e.match(_r) || []).forEach(function(a) { var n = me(a); switch (n[0]) { case "": case "": break; case "]*r:id="([^"]*)"/) || ["", ""])[1]; return t["!id"][r].Target; } var Zt = 1024; function Uf(e, t) { for (var r = [21600, 21600], a = ["m0,0l0", r[1], r[0], r[1], r[0], "0xe"].join(","), n = [ ae("xml", null, { "xmlns:v": Cr.v, "xmlns:o": Cr.o, "xmlns:x": Cr.x, "xmlns:mv": Cr.mv }).replace(/\/>/, ">"), ae("o:shapelayout", ae("o:idmap", null, { "v:ext": "edit", data: e }), { "v:ext": "edit" }), ae("v:shapetype", [ ae("v:stroke", null, { joinstyle: "miter" }), ae("v:path", null, { gradientshapeok: "t", "o:connecttype": "rect" }) ].join(""), { id: "_x0000_t202", "o:spt": 202, coordsize: r.join(","), path: a }) ]; Zt < e * 1e3; ) Zt += 1e3; return t.forEach(function(i) { var s = Xe(i[0]), f = ( /*::(*/ { color2: "#BEFF82", type: "gradient" } ); f.type == "gradient" && (f.angle = "-180"); var c = f.type == "gradient" ? ae("o:fill", null, { type: "gradientUnscaled", "v:ext": "view" }) : null, o = ae("v:fill", c, f), l = { on: "t", obscured: "t" }; ++Zt, n = n.concat([ "", o, ae("v:shadow", null, l), ae("v:path", null, { "o:connecttype": "none" }), '
', '', "", "", /* Part 4 19.4.2.3 Anchor (Anchor) */ lr("x:Anchor", [s.c + 1, 0, s.r + 1, 0, s.c + 3, 20, s.r + 5, 20].join(",")), lr("x:AutoFill", "False"), lr("x:Row", String(s.r)), lr("x:Column", String(s.c)), i[1].hidden ? "" : "", "", "" ]); }), n.push(""), n.join(""); } function Xi(e, t, r, a) { var n = Array.isArray(e), i; t.forEach(function(s) { var f = Xe(s.ref); if (n ? (e[f.r] || (e[f.r] = []), i = e[f.r][f.c]) : i = e[s.ref], !i) { i = { t: "z" }, n ? e[f.r][f.c] = i : e[s.ref] = i; var c = De(e["!ref"] || "BDWGO1000001:A1"); c.s.r > f.r && (c.s.r = f.r), c.e.r < f.r && (c.e.r = f.r), c.s.c > f.c && (c.s.c = f.c), c.e.c < f.c && (c.e.c = f.c); var o = we(c); o !== e["!ref"] && (e["!ref"] = o); } i.c || (i.c = []); var l = { a: s.author, t: s.t, r: s.r, T: r }; s.h && (l.h = s.h); for (var u = i.c.length - 1; u >= 0; --u) { if (!r && i.c[u].T) return; r && !i.c[u].T && i.c.splice(u, 1); } if (r && a) { for (u = 0; u < a.length; ++u) if (l.a == a[u].id) { l.a = a[u].name || l.a; break; } } i.c.push(l); }); } function yx(e, t) { if (e.match(/<(?:\w+:)?comments *\/>/)) return []; var r = [], a = [], n = e.match(/<(?:\w+:)?authors>([\s\S]*)<\/(?:\w+:)?authors>/); n && n[1] && n[1].split(/<\/\w*:?author>/).forEach(function(s) { if (!(s === "" || s.trim() === "")) { var f = s.match(/<(?:\w+:)?author[^>]*>(.*)/); f && r.push(f[1]); } }); var i = e.match(/<(?:\w+:)?commentList>([\s\S]*)<\/(?:\w+:)?commentList>/); return i && i[1] && i[1].split(/<\/\w*:?comment>/).forEach(function(s) { if (!(s === "" || s.trim() === "")) { var f = s.match(/<(?:\w+:)?comment[^>]*>/); if (f) { var c = me(f[0]), o = { author: c.authorId && r[c.authorId] || "sheetjsghost", ref: c.ref, guid: c.guid }, l = Xe(c.ref); if (!(t.sheetRows && t.sheetRows <= l.r)) { var u = s.match(/<(?:\w+:)?text>([\s\S]*)<\/(?:\w+:)?text>/), h = !!u && !!u[1] && In(u[1]) || { r: "", t: "", h: "" }; o.r = h.r, h.r == "" && (h.t = h.h = ""), o.t = (h.t || "").replace(/\r\n/g, ` `).replace(/\r/g, ` `), t.cellHTML && (o.h = h.h), a.push(o); } } } }), a; } function Wf(e) { var t = [Ze, ae("comments", null, { xmlns: Vt[0] })], r = []; return t.push(""), e.forEach(function(a) { a[1].forEach(function(n) { var i = Ne(n.a); r.indexOf(i) == -1 && (r.push(i), t.push("" + i + "")), n.T && n.ID && r.indexOf("tc=" + n.ID) == -1 && (r.push("tc=" + n.ID), t.push("tc=" + n.ID + "")); }); }), r.length == 0 && (r.push("SheetJ5"), t.push("SheetJ5")), t.push(""), t.push(""), e.forEach(function(a) { var n = 0, i = []; if (a[1][0] && a[1][0].T && a[1][0].ID ? n = r.indexOf("tc=" + a[1][0].ID) : a[1].forEach(function(c) { c.a && (n = r.indexOf(Ne(c.a))), i.push(c.t || ""); }), t.push(''), i.length <= 1) t.push(lr("t", Ne(i[0] || ""))); else { for (var s = `Comment: ` + i[0] + ` `, f = 1; f < i.length; ++f) s += `Reply: ` + i[f] + ` `; t.push(lr("t", Ne(s))); } t.push(""); }), t.push(""), t.length > 2 && (t[t.length] = "", t[1] = t[1].replace("/>", ">")), t.join(""); } function Ax(e, t) { var r = [], a = !1, n = {}, i = 0; return e.replace(_r, function(f, c) { var o = me(f); switch (tt(o[0])) { case "": break; case "": n.t != null && r.push(n); break; case "": case "": n.t = e.slice(i, c).replace(/\r\n/g, ` `).replace(/\r/g, ` `); break; case "": a = !0; break; case "": a = !1; break; case "": case "
": case "": break; case "": a = !1; break; default: if (!a && t.WTF) throw new Error("unrecognized " + o[0] + " in threaded comments"); } return f; }), r; } function Cx(e, t, r) { var a = [Ze, ae("ThreadedComments", null, { xmlns: ar.TCMNT }).replace(/[\/]>/, ">")]; return e.forEach(function(n) { var i = ""; (n[1] || []).forEach(function(s, f) { if (!s.T) { delete s.ID; return; } s.a && t.indexOf(s.a) == -1 && t.push(s.a); var c = { ref: n[0], id: "{54EE7951-7262-4200-6969-" + ("000000000000" + r.tcid++).slice(-12) + "}" }; f == 0 ? i = c.id : c.parentId = i, s.ID = c.id, s.a && (c.personId = "{54EE7950-7262-4200-6969-" + ("000000000000" + t.indexOf(s.a)).slice(-12) + "}"), a.push(ae("threadedComment", lr("text", s.t || ""), c)); }); }), a.push(""), a.join(""); } function Dx(e, t) { var r = [], a = !1; return e.replace(_r, function(i) { var s = me(i); switch (tt(s[0])) { case "": break; case "": break; case "": case "": case "": break; case "": a = !1; break; default: if (!a && t.WTF) throw new Error("unrecognized " + s[0] + " in threaded comments"); } return i; }), r; } function Ox(e) { var t = [Ze, ae("personList", null, { xmlns: ar.TCMNT, "xmlns:x": Vt[0] }).replace(/[\/]>/, ">")]; return e.forEach(function(r, a) { t.push(ae("person", null, { displayName: r, id: "{54EE7950-7262-4200-6969-" + ("000000000000" + a).slice(-12) + "}", userId: r, providerId: "None" })); }), t.push(""), t.join(""); } function Ix(e) { var t = {}; t.iauthor = e.read_shift(4); var r = jt(e); return t.rfx = r.s, t.ref = pe(r.s), e.l += 16, t; } function Rx(e, t) { return t == null && (t = z(36)), t.write_shift(4, e[1].iauthor), ca(e[0], t), t.write_shift(4, 0), t.write_shift(4, 0), t.write_shift(4, 0), t.write_shift(4, 0), t; } var Nx = mr; function bx(e) { return fr(e.slice(0, 54)); } function Px(e, t) { var r = [], a = [], n = {}, i = !1; return ht(e, function(f, c, o) { switch (o) { case 632: a.push(f); break; case 635: n = f; break; case 637: n.t = f.t, n.h = f.h, n.r = f.r; break; case 636: if (n.author = a[n.iauthor], delete n.iauthor, t.sheetRows && n.rfx && t.sheetRows <= n.rfx.r) break; n.t || (n.t = ""), delete n.rfx, r.push(n); break; case 3072: break; case 35: i = !0; break; case 36: i = !1; break; case 37: break; case 38: break; default: if (!c.T) { if (!i || t.WTF) throw new Error("Unexpected record 0x" + o.toString(16)); } } }), r; } function Lx(e) { var t = Fr(), r = []; return Y( t, 628 /* BrtBeginComments */ ), Y( t, 630 /* BrtBeginCommentAuthors */ ), e.forEach(function(a) { a[1].forEach(function(n) { r.indexOf(n.a) > -1 || (r.push(n.a.slice(0, 54)), Y(t, 632, bx(n.a))); }); }), Y( t, 631 /* BrtEndCommentAuthors */ ), Y( t, 633 /* BrtBeginCommentList */ ), e.forEach(function(a) { a[1].forEach(function(n) { n.iauthor = r.indexOf(n.a); var i = { s: Xe(a[0]), e: Xe(a[0]) }; Y(t, 635, Rx([i, n])), n.t && n.t.length > 0 && Y(t, 637, nl(n)), Y( t, 636 /* BrtEndComment */ ), delete n.iauthor; }); }), Y( t, 634 /* BrtEndCommentList */ ), Y( t, 629 /* BrtEndComments */ ), t.end(); } var Bx = "application/vnd.ms-office.vbaProject"; function Mx(e) { var t = xe.utils.cfb_new({ root: "R" }); return e.FullPaths.forEach(function(r, a) { if (!(r.slice(-1) === "/" || !r.match(/_VBA_PROJECT_CUR/))) { var n = r.replace(/^[^\/]*/, "R").replace(/\/_VBA_PROJECT_CUR\u0000*/, ""); xe.utils.cfb_add(t, n, e.FileIndex[a].content); } }), xe.write(t); } function Ux(e, t) { t.FullPaths.forEach(function(r, a) { if (a != 0) { var n = r.replace(/[^\/]*[\/]/, "/_VBA_PROJECT_CUR/"); n.slice(-1) !== "/" && xe.utils.cfb_add(e, n, t.FileIndex[a].content); } }); } var Hf = ["xlsb", "xlsm", "xlam", "biff8", "xla"]; function Wx() { return { "!type": "dialog" }; } function Hx() { return { "!type": "dialog" }; } function Vx() { return { "!type": "macro" }; } function Gx() { return { "!type": "macro" }; } var ra = /* @__PURE__ */ function() { var e = /(^|[^A-Za-z_])R(\[?-?\d+\]|[1-9]\d*|)C(\[?-?\d+\]|[1-9]\d*|)(?![A-Za-z0-9_])/g, t = { r: 0, c: 0 }; function r(a, n, i, s) { var f = !1, c = !1; i.length == 0 ? c = !0 : i.charAt(0) == "[" && (c = !0, i = i.slice(1, -1)), s.length == 0 ? f = !0 : s.charAt(0) == "[" && (f = !0, s = s.slice(1, -1)); var o = i.length > 0 ? parseInt(i, 10) | 0 : 0, l = s.length > 0 ? parseInt(s, 10) | 0 : 0; return f ? l += t.c : --l, c ? o += t.r : --o, n + (f ? "" : "$") + Ge(l) + (c ? "" : "$") + qe(o); } return function(n, i) { return t = i, n.replace(e, r); }; }(), Pn = /(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\d{4}|104[0-7]\d{3}|1048[0-4]\d{2}|10485[0-6]\d|104857[0-6]|[1-9]\d{0,5})(?![_.\(A-Za-z0-9])/g, Ln = /* @__PURE__ */ function() { return function(t, r) { return t.replace(Pn, function(a, n, i, s, f, c) { var o = kn(s) - (i ? 0 : r.c), l = En(c) - (f ? 0 : r.r), u = l == 0 ? "" : f ? l + 1 : "[" + l + "]", h = o == 0 ? "" : i ? o + 1 : "[" + o + "]"; return n + "R" + u + "C" + h; }); }; }(); function Vf(e, t) { return e.replace(Pn, function(r, a, n, i, s, f) { return a + (n == "$" ? n + i : Ge(kn(i) + t.c)) + (s == "$" ? s + f : qe(En(f) + t.r)); }); } function Xx(e, t, r) { var a = yr(t), n = a.s, i = Xe(r), s = { r: i.r - n.r, c: i.c - n.c }; return Vf(e, s); } function zx(e) { return e.length != 1; } function zi(e) { return e.replace(/_xlfn\./g, ""); } function Qe(e) { e.l += 1; } function Tt(e, t) { var r = e.read_shift(t == 1 ? 1 : 2); return [r & 16383, r >> 14 & 1, r >> 15 & 1]; } function Gf(e, t, r) { var a = 2; if (r) { if (r.biff >= 2 && r.biff <= 5) return Xf(e); r.biff == 12 && (a = 4); } var n = e.read_shift(a), i = e.read_shift(a), s = Tt(e, 2), f = Tt(e, 2); return { s: { r: n, c: s[0], cRel: s[1], rRel: s[2] }, e: { r: i, c: f[0], cRel: f[1], rRel: f[2] } }; } function Xf(e) { var t = Tt(e, 2), r = Tt(e, 2), a = e.read_shift(1), n = e.read_shift(1); return { s: { r: t[0], c: a, cRel: t[1], rRel: t[2] }, e: { r: r[0], c: n, cRel: r[1], rRel: r[2] } }; } function jx(e, t, r) { if (r.biff < 8) return Xf(e); var a = e.read_shift(r.biff == 12 ? 4 : 2), n = e.read_shift(r.biff == 12 ? 4 : 2), i = Tt(e, 2), s = Tt(e, 2); return { s: { r: a, c: i[0], cRel: i[1], rRel: i[2] }, e: { r: n, c: s[0], cRel: s[1], rRel: s[2] } }; } function zf(e, t, r) { if (r && r.biff >= 2 && r.biff <= 5) return $x(e); var a = e.read_shift(r && r.biff == 12 ? 4 : 2), n = Tt(e, 2); return { r: a, c: n[0], cRel: n[1], rRel: n[2] }; } function $x(e) { var t = Tt(e, 2), r = e.read_shift(1); return { r: t[0], c: r, cRel: t[1], rRel: t[2] }; } function Kx(e) { var t = e.read_shift(2), r = e.read_shift(2); return { r: t, c: r & 255, fQuoted: !!(r & 16384), cRel: r >> 15, rRel: r >> 15 }; } function Yx(e, t, r) { var a = r && r.biff ? r.biff : 8; if (a >= 2 && a <= 5) return Jx(e); var n = e.read_shift(a >= 12 ? 4 : 2), i = e.read_shift(2), s = (i & 16384) >> 14, f = (i & 32768) >> 15; if (i &= 16383, f == 1) for (; n > 524287; ) n -= 1048576; if (s == 1) for (; i > 8191; ) i = i - 16384; return { r: n, c: i, cRel: s, rRel: f }; } function Jx(e) { var t = e.read_shift(2), r = e.read_shift(1), a = (t & 32768) >> 15, n = (t & 16384) >> 14; return t &= 16383, a == 1 && t >= 8192 && (t = t - 16384), n == 1 && r >= 128 && (r = r - 256), { r: t, c: r, cRel: n, rRel: a }; } function qx(e, t, r) { var a = (e[e.l++] & 96) >> 5, n = Gf(e, r.biff >= 2 && r.biff <= 5 ? 6 : 8, r); return [a, n]; } function Zx(e, t, r) { var a = (e[e.l++] & 96) >> 5, n = e.read_shift(2, "i"), i = 8; if (r) switch (r.biff) { case 5: e.l += 12, i = 6; break; case 12: i = 12; break; } var s = Gf(e, i, r); return [a, n, s]; } function Qx(e, t, r) { var a = (e[e.l++] & 96) >> 5; return e.l += r && r.biff > 8 ? 12 : r.biff < 8 ? 6 : 8, [a]; } function ed(e, t, r) { var a = (e[e.l++] & 96) >> 5, n = e.read_shift(2), i = 8; if (r) switch (r.biff) { case 5: e.l += 12, i = 6; break; case 12: i = 12; break; } return e.l += i, [a, n]; } function rd(e, t, r) { var a = (e[e.l++] & 96) >> 5, n = jx(e, t - 1, r); return [a, n]; } function td(e, t, r) { var a = (e[e.l++] & 96) >> 5; return e.l += r.biff == 2 ? 6 : r.biff == 12 ? 14 : 7, [a]; } function ji(e) { var t = e[e.l + 1] & 1, r = 1; return e.l += 4, [t, r]; } function ad(e, t, r) { e.l += 2; for (var a = e.read_shift(r && r.biff == 2 ? 1 : 2), n = [], i = 0; i <= a; ++i) n.push(e.read_shift(r && r.biff == 2 ? 1 : 2)); return n; } function nd(e, t, r) { var a = e[e.l + 1] & 255 ? 1 : 0; return e.l += 2, [a, e.read_shift(r && r.biff == 2 ? 1 : 2)]; } function id(e, t, r) { var a = e[e.l + 1] & 255 ? 1 : 0; return e.l += 2, [a, e.read_shift(r && r.biff == 2 ? 1 : 2)]; } function sd(e) { var t = e[e.l + 1] & 255 ? 1 : 0; return e.l += 2, [t, e.read_shift(2)]; } function fd(e, t, r) { var a = e[e.l + 1] & 255 ? 1 : 0; return e.l += r && r.biff == 2 ? 3 : 4, [a]; } function jf(e) { var t = e.read_shift(1), r = e.read_shift(1); return [t, r]; } function cd(e) { return e.read_shift(2), jf(e); } function od(e) { return e.read_shift(2), jf(e); } function ld(e, t, r) { var a = (e[e.l] & 96) >> 5; e.l += 1; var n = zf(e, 0, r); return [a, n]; } function ud(e, t, r) { var a = (e[e.l] & 96) >> 5; e.l += 1; var n = Yx(e, 0, r); return [a, n]; } function hd(e, t, r) { var a = (e[e.l] & 96) >> 5; e.l += 1; var n = e.read_shift(2); r && r.biff == 5 && (e.l += 12); var i = zf(e, 0, r); return [a, n, i]; } function xd(e, t, r) { var a = (e[e.l] & 96) >> 5; e.l += 1; var n = e.read_shift(r && r.biff <= 3 ? 1 : 2); return [pv[n], Yf[n], a]; } function dd(e, t, r) { var a = e[e.l++], n = e.read_shift(1), i = r && r.biff <= 3 ? [a == 88 ? -1 : 0, e.read_shift(1)] : vd(e); return [n, (i[0] === 0 ? Yf : vv)[i[1]]]; } function vd(e) { return [e[e.l + 1] >> 7, e.read_shift(2) & 32767]; } function pd(e, t, r) { e.l += r && r.biff == 2 ? 3 : 4; } function md(e, t, r) { if (e.l++, r && r.biff == 12) return [e.read_shift(4, "i"), 0]; var a = e.read_shift(2), n = e.read_shift(r && r.biff == 2 ? 1 : 2); return [a, n]; } function gd(e) { return e.l++, xt[e.read_shift(1)]; } function _d(e) { return e.l++, e.read_shift(2); } function wd(e) { return e.l++, e.read_shift(1) !== 0; } function Ed(e) { return e.l++, pr(e); } function kd(e, t, r) { return e.l++, Ga(e, t - 1, r); } function Td(e, t) { var r = [e.read_shift(1)]; if (t == 12) switch (r[0]) { case 2: r[0] = 4; break; case 4: r[0] = 16; break; case 0: r[0] = 1; break; case 1: r[0] = 2; break; } switch (r[0]) { case 4: r[1] = Je(e, 1) ? "TRUE" : "FALSE", t != 12 && (e.l += 7); break; case 37: case 16: r[1] = xt[e[e.l]], e.l += t == 12 ? 4 : 8; break; case 0: e.l += 8; break; case 1: r[1] = pr(e); break; case 2: r[1] = $t(e, 0, { biff: t > 0 && t < 8 ? 2 : t }); break; default: throw new Error("Bad SerAr: " + r[0]); } return r; } function Sd(e, t, r) { for (var a = e.read_shift(r.biff == 12 ? 4 : 2), n = [], i = 0; i != a; ++i) n.push((r.biff == 12 ? jt : S0)(e)); return n; } function Fd(e, t, r) { var a = 0, n = 0; r.biff == 12 ? (a = e.read_shift(4), n = e.read_shift(4)) : (n = 1 + e.read_shift(1), a = 1 + e.read_shift(2)), r.biff >= 2 && r.biff < 8 && (--a, --n == 0 && (n = 256)); for (var i = 0, s = []; i != a && (s[i] = []); ++i) for (var f = 0; f != n; ++f) s[i][f] = Td(e, r.biff); return s; } function yd(e, t, r) { var a = e.read_shift(1) >>> 5 & 3, n = !r || r.biff >= 8 ? 4 : 2, i = e.read_shift(n); switch (r.biff) { case 2: e.l += 5; break; case 3: case 4: e.l += 8; break; case 5: e.l += 12; break; } return [a, 0, i]; } function Ad(e, t, r) { if (r.biff == 5) return Cd(e); var a = e.read_shift(1) >>> 5 & 3, n = e.read_shift(2), i = e.read_shift(4); return [a, n, i]; } function Cd(e) { var t = e.read_shift(1) >>> 5 & 3, r = e.read_shift(2, "i"); e.l += 8; var a = e.read_shift(2); return e.l += 12, [t, r, a]; } function Dd(e, t, r) { var a = e.read_shift(1) >>> 5 & 3; e.l += r && r.biff == 2 ? 3 : 4; var n = e.read_shift(r && r.biff == 2 ? 1 : 2); return [a, n]; } function Od(e, t, r) { var a = e.read_shift(1) >>> 5 & 3, n = e.read_shift(r && r.biff == 2 ? 1 : 2); return [a, n]; } function Id(e, t, r) { var a = e.read_shift(1) >>> 5 & 3; return e.l += 4, r.biff < 8 && e.l--, r.biff == 12 && (e.l += 2), [a]; } function Rd(e, t, r) { var a = (e[e.l++] & 96) >> 5, n = e.read_shift(2), i = 4; if (r) switch (r.biff) { case 5: i = 15; break; case 12: i = 6; break; } return e.l += i, [a, n]; } var Nd = gr, bd = gr, Pd = gr; function za(e, t, r) { return e.l += 2, [Kx(e)]; } function Bn(e) { return e.l += 6, []; } var Ld = za, Bd = Bn, Md = Bn, Ud = za; function $f(e) { return e.l += 2, [rr(e), e.read_shift(2) & 1]; } var Wd = za, Hd = $f, Vd = Bn, Gd = za, Xd = za, zd = [ "Data", "All", "Headers", "??", "?Data2", "??", "?DataHeaders", "??", "Totals", "??", "??", "??", "?DataTotals", "??", "??", "??", "?Current" ]; function jd(e) { e.l += 2; var t = e.read_shift(2), r = e.read_shift(2), a = e.read_shift(4), n = e.read_shift(2), i = e.read_shift(2), s = zd[r >> 2 & 31]; return { ixti: t, coltype: r & 3, rt: s, idx: a, c: n, C: i }; } function $d(e) { return e.l += 2, [e.read_shift(4)]; } function Kd(e, t, r) { return e.l += 5, e.l += 2, e.l += r.biff == 2 ? 1 : 4, ["PTGSHEET"]; } function Yd(e, t, r) { return e.l += r.biff == 2 ? 4 : 5, ["PTGENDSHEET"]; } function Jd(e) { var t = e.read_shift(1) >>> 5 & 3, r = e.read_shift(2); return [t, r]; } function qd(e) { var t = e.read_shift(1) >>> 5 & 3, r = e.read_shift(2); return [t, r]; } function Zd(e) { return e.l += 4, [0, 0]; } var $i = { /*::[*/ 1: { n: "PtgExp", f: md }, /*::[*/ 2: { n: "PtgTbl", f: Pd }, /*::[*/ 3: { n: "PtgAdd", f: Qe }, /*::[*/ 4: { n: "PtgSub", f: Qe }, /*::[*/ 5: { n: "PtgMul", f: Qe }, /*::[*/ 6: { n: "PtgDiv", f: Qe }, /*::[*/ 7: { n: "PtgPower", f: Qe }, /*::[*/ 8: { n: "PtgConcat", f: Qe }, /*::[*/ 9: { n: "PtgLt", f: Qe }, /*::[*/ 10: { n: "PtgLe", f: Qe }, /*::[*/ 11: { n: "PtgEq", f: Qe }, /*::[*/ 12: { n: "PtgGe", f: Qe }, /*::[*/ 13: { n: "PtgGt", f: Qe }, /*::[*/ 14: { n: "PtgNe", f: Qe }, /*::[*/ 15: { n: "PtgIsect", f: Qe }, /*::[*/ 16: { n: "PtgUnion", f: Qe }, /*::[*/ 17: { n: "PtgRange", f: Qe }, /*::[*/ 18: { n: "PtgUplus", f: Qe }, /*::[*/ 19: { n: "PtgUminus", f: Qe }, /*::[*/ 20: { n: "PtgPercent", f: Qe }, /*::[*/ 21: { n: "PtgParen", f: Qe }, /*::[*/ 22: { n: "PtgMissArg", f: Qe }, /*::[*/ 23: { n: "PtgStr", f: kd }, /*::[*/ 26: { n: "PtgSheet", f: Kd }, /*::[*/ 27: { n: "PtgEndSheet", f: Yd }, /*::[*/ 28: { n: "PtgErr", f: gd }, /*::[*/ 29: { n: "PtgBool", f: wd }, /*::[*/ 30: { n: "PtgInt", f: _d }, /*::[*/ 31: { n: "PtgNum", f: Ed }, /*::[*/ 32: { n: "PtgArray", f: td }, /*::[*/ 33: { n: "PtgFunc", f: xd }, /*::[*/ 34: { n: "PtgFuncVar", f: dd }, /*::[*/ 35: { n: "PtgName", f: yd }, /*::[*/ 36: { n: "PtgRef", f: ld }, /*::[*/ 37: { n: "PtgArea", f: qx }, /*::[*/ 38: { n: "PtgMemArea", f: Dd }, /*::[*/ 39: { n: "PtgMemErr", f: Nd }, /*::[*/ 40: { n: "PtgMemNoMem", f: bd }, /*::[*/ 41: { n: "PtgMemFunc", f: Od }, /*::[*/ 42: { n: "PtgRefErr", f: Id }, /*::[*/ 43: { n: "PtgAreaErr", f: Qx }, /*::[*/ 44: { n: "PtgRefN", f: ud }, /*::[*/ 45: { n: "PtgAreaN", f: rd }, /*::[*/ 46: { n: "PtgMemAreaN", f: Jd }, /*::[*/ 47: { n: "PtgMemNoMemN", f: qd }, /*::[*/ 57: { n: "PtgNameX", f: Ad }, /*::[*/ 58: { n: "PtgRef3d", f: hd }, /*::[*/ 59: { n: "PtgArea3d", f: Zx }, /*::[*/ 60: { n: "PtgRefErr3d", f: Rd }, /*::[*/ 61: { n: "PtgAreaErr3d", f: ed }, /*::[*/ 255: {} }, Qd = { /*::[*/ 64: 32, /*::[*/ 96: 32, /*::[*/ 65: 33, /*::[*/ 97: 33, /*::[*/ 66: 34, /*::[*/ 98: 34, /*::[*/ 67: 35, /*::[*/ 99: 35, /*::[*/ 68: 36, /*::[*/ 100: 36, /*::[*/ 69: 37, /*::[*/ 101: 37, /*::[*/ 70: 38, /*::[*/ 102: 38, /*::[*/ 71: 39, /*::[*/ 103: 39, /*::[*/ 72: 40, /*::[*/ 104: 40, /*::[*/ 73: 41, /*::[*/ 105: 41, /*::[*/ 74: 42, /*::[*/ 106: 42, /*::[*/ 75: 43, /*::[*/ 107: 43, /*::[*/ 76: 44, /*::[*/ 108: 44, /*::[*/ 77: 45, /*::[*/ 109: 45, /*::[*/ 78: 46, /*::[*/ 110: 46, /*::[*/ 79: 47, /*::[*/ 111: 47, /*::[*/ 88: 34, /*::[*/ 120: 34, /*::[*/ 89: 57, /*::[*/ 121: 57, /*::[*/ 90: 58, /*::[*/ 122: 58, /*::[*/ 91: 59, /*::[*/ 123: 59, /*::[*/ 92: 60, /*::[*/ 124: 60, /*::[*/ 93: 61, /*::[*/ 125: 61 }, ev = { /*::[*/ 1: { n: "PtgElfLel", f: $f }, /*::[*/ 2: { n: "PtgElfRw", f: Gd }, /*::[*/ 3: { n: "PtgElfCol", f: Ld }, /*::[*/ 6: { n: "PtgElfRwV", f: Xd }, /*::[*/ 7: { n: "PtgElfColV", f: Ud }, /*::[*/ 10: { n: "PtgElfRadical", f: Wd }, /*::[*/ 11: { n: "PtgElfRadicalS", f: Vd }, /*::[*/ 13: { n: "PtgElfColS", f: Bd }, /*::[*/ 15: { n: "PtgElfColSV", f: Md }, /*::[*/ 16: { n: "PtgElfRadicalLel", f: Hd }, /*::[*/ 25: { n: "PtgList", f: jd }, /*::[*/ 29: { n: "PtgSxName", f: $d }, /*::[*/ 255: {} }, rv = { /*::[*/ 0: { n: "PtgAttrNoop", f: Zd }, /*::[*/ 1: { n: "PtgAttrSemi", f: fd }, /*::[*/ 2: { n: "PtgAttrIf", f: id }, /*::[*/ 4: { n: "PtgAttrChoose", f: ad }, /*::[*/ 8: { n: "PtgAttrGoto", f: nd }, /*::[*/ 16: { n: "PtgAttrSum", f: pd }, /*::[*/ 32: { n: "PtgAttrBaxcel", f: ji }, /*::[*/ 33: { n: "PtgAttrBaxcel", f: ji }, /*::[*/ 64: { n: "PtgAttrSpace", f: cd }, /*::[*/ 65: { n: "PtgAttrSpaceSemi", f: od }, /*::[*/ 128: { n: "PtgAttrIfError", f: sd }, /*::[*/ 255: {} }; function ja(e, t, r, a) { if (a.biff < 8) return gr(e, t); for (var n = e.l + t, i = [], s = 0; s !== r.length; ++s) switch (r[s][0]) { case "PtgArray": r[s][1] = Fd(e, 0, a), i.push(r[s][1]); break; case "PtgMemArea": r[s][2] = Sd(e, r[s][1], a), i.push(r[s][2]); break; case "PtgExp": a && a.biff == 12 && (r[s][1][1] = e.read_shift(4), i.push(r[s][1])); break; case "PtgList": case "PtgElfRadicalS": case "PtgElfColS": case "PtgElfColSV": throw "Unsupported " + r[s][0]; } return t = n - e.l, t !== 0 && i.push(gr(e, t)), i; } function $a(e, t, r) { for (var a = e.l + t, n, i, s = []; a != e.l; ) t = a - e.l, i = e[e.l], n = $i[i] || $i[Qd[i]], (i === 24 || i === 25) && (n = (i === 24 ? ev : rv)[e[e.l + 1]]), !n || !n.f ? gr(e, t) : s.push([n.n, n.f(e, t, r)]); return s; } function tv(e) { for (var t = [], r = 0; r < e.length; ++r) { for (var a = e[r], n = [], i = 0; i < a.length; ++i) { var s = a[i]; if (s) switch (s[0]) { case 2: n.push('"' + s[1].replace(/"/g, '""') + '"'); break; default: n.push(s[1]); } else n.push(""); } t.push(n.join(",")); } return t.join(";"); } var av = { PtgAdd: "+", PtgConcat: "&", PtgDiv: "/", PtgEq: "=", PtgGe: ">=", PtgGt: ">", PtgLe: "<=", PtgLt: "<", PtgMul: "*", PtgNe: "<>", PtgPower: "^", PtgSub: "-" }; function nv(e, t) { if (!e && !(t && t.biff <= 5 && t.biff >= 2)) throw new Error("empty sheet name"); return /[^\w\u4E00-\u9FFF\u3040-\u30FF]/.test(e) ? "'" + e + "'" : e; } function Kf(e, t, r) { if (!e) return "SH33TJSERR0"; if (r.biff > 8 && (!e.XTI || !e.XTI[t])) return e.SheetNames[t]; if (!e.XTI) return "SH33TJSERR6"; var a = e.XTI[t]; if (r.biff < 8) return t > 1e4 && (t -= 65536), t < 0 && (t = -t), t == 0 ? "" : e.XTI[t - 1]; if (!a) return "SH33TJSERR1"; var n = ""; if (r.biff > 8) switch (e[a[0]][0]) { case 357: return n = a[1] == -1 ? "#REF" : e.SheetNames[a[1]], a[1] == a[2] ? n : n + ":" + e.SheetNames[a[2]]; case 358: return r.SID != null ? e.SheetNames[r.SID] : "SH33TJSSAME" + e[a[0]][0]; case 355: default: return "SH33TJSSRC" + e[a[0]][0]; } switch (e[a[0]][0][0]) { case 1025: return n = a[1] == -1 ? "#REF" : e.SheetNames[a[1]] || "SH33TJSERR3", a[1] == a[2] ? n : n + ":" + e.SheetNames[a[2]]; case 14849: return e[a[0]].slice(1).map(function(i) { return i.Name; }).join(";;"); default: return e[a[0]][0][3] ? (n = a[1] == -1 ? "#REF" : e[a[0]][0][3][a[1]] || "SH33TJSERR4", a[1] == a[2] ? n : n + ":" + e[a[0]][0][3][a[2]]) : "SH33TJSERR2"; } } function Ki(e, t, r) { var a = Kf(e, t, r); return a == "#REF" ? a : nv(a, r); } function dr(e, t, r, a, n) { var i = n && n.biff || 8, s = ( /*range != null ? range :*/ { s: { c: 0, r: 0 }, e: { c: 0, r: 0 } } ), f = [], c, o, l, u = 0, h = 0, d, v = ""; if (!e[0] || !e[0][0]) return ""; for (var x = -1, p = "", w = 0, y = e[0].length; w < y; ++w) { var g = e[0][w]; switch (g[0]) { case "PtgUminus": f.push("-" + f.pop()); break; case "PtgUplus": f.push("+" + f.pop()); break; case "PtgPercent": f.push(f.pop() + "%"); break; case "PtgAdd": case "PtgConcat": case "PtgDiv": case "PtgEq": case "PtgGe": case "PtgGt": case "PtgLe": case "PtgLt": case "PtgMul": case "PtgNe": case "PtgPower": case "PtgSub": if (c = f.pop(), o = f.pop(), x >= 0) { switch (e[0][x][1][0]) { case 0: p = ze(" ", e[0][x][1][1]); break; case 1: p = ze("\r", e[0][x][1][1]); break; default: if (p = "", n.WTF) throw new Error("Unexpected PtgAttrSpaceType " + e[0][x][1][0]); } o = o + p, x = -1; } f.push(o + av[g[0]] + c); break; case "PtgIsect": c = f.pop(), o = f.pop(), f.push(o + " " + c); break; case "PtgUnion": c = f.pop(), o = f.pop(), f.push(o + "," + c); break; case "PtgRange": c = f.pop(), o = f.pop(), f.push(o + ":" + c); break; case "PtgAttrChoose": break; case "PtgAttrGoto": break; case "PtgAttrIf": break; case "PtgAttrIfError": break; case "PtgRef": l = wa(g[1][1], s, n), f.push(Ea(l, i)); break; case "PtgRefN": l = r ? wa(g[1][1], r, n) : g[1][1], f.push(Ea(l, i)); break; case "PtgRef3d": u = /*::Number(*/ g[1][1], l = wa(g[1][2], s, n), v = Ki(a, u, n), f.push(v + "!" + Ea(l, i)); break; case "PtgFunc": case "PtgFuncVar": var C = g[1][0], b = g[1][1]; C || (C = 0), C &= 127; var O = C == 0 ? [] : f.slice(-C); f.length -= C, b === "User" && (b = O.shift()), f.push(b + "(" + O.join(",") + ")"); break; case "PtgBool": f.push(g[1] ? "TRUE" : "FALSE"); break; case "PtgInt": f.push( /*::String(*/ g[1] /*::)*/ ); break; case "PtgNum": f.push(String(g[1])); break; case "PtgStr": f.push('"' + g[1].replace(/"/g, '""') + '"'); break; case "PtgErr": f.push( /*::String(*/ g[1] /*::)*/ ); break; case "PtgAreaN": d = Ti(g[1][1], r ? { s: r } : s, n), f.push(b0(d, n)); break; case "PtgArea": d = Ti(g[1][1], s, n), f.push(b0(d, n)); break; case "PtgArea3d": u = /*::Number(*/ g[1][1], d = g[1][2], v = Ki(a, u, n), f.push(v + "!" + b0(d, n)); break; case "PtgAttrSum": f.push("SUM(" + f.pop() + ")"); break; case "PtgAttrBaxcel": case "PtgAttrSemi": break; case "PtgName": h = g[1][2]; var S = (a.names || [])[h - 1] || (a[0] || [])[h], B = S ? S.Name : "SH33TJSNAME" + String(h); B && B.slice(0, 6) == "_xlfn." && !n.xlfn && (B = B.slice(6)), f.push(B); break; case "PtgNameX": var R = g[1][1]; h = g[1][2]; var X; if (n.biff <= 5) R < 0 && (R = -R), a[R] && (X = a[R][h]); else { var G = ""; if (((a[R] || [])[0] || [])[0] == 14849 || (((a[R] || [])[0] || [])[0] == 1025 ? a[R][h] && a[R][h].itab > 0 && (G = a.SheetNames[a[R][h].itab - 1] + "!") : G = a.SheetNames[h - 1] + "!"), a[R] && a[R][h]) G += a[R][h].Name; else if (a[0] && a[0][h]) G += a[0][h].Name; else { var L = (Kf(a, R, n) || "").split(";;"); L[h - 1] ? G = L[h - 1] : G += "SH33TJSERRX"; } f.push(G); break; } X || (X = { Name: "SH33TJSERRY" }), f.push(X.Name); break; case "PtgParen": var J = "(", le = ")"; if (x >= 0) { switch (p = "", e[0][x][1][0]) { case 2: J = ze(" ", e[0][x][1][1]) + J; break; case 3: J = ze("\r", e[0][x][1][1]) + J; break; case 4: le = ze(" ", e[0][x][1][1]) + le; break; case 5: le = ze("\r", e[0][x][1][1]) + le; break; default: if (n.WTF) throw new Error("Unexpected PtgAttrSpaceType " + e[0][x][1][0]); } x = -1; } f.push(J + f.pop() + le); break; case "PtgRefErr": f.push("#REF!"); break; case "PtgRefErr3d": f.push("#REF!"); break; case "PtgExp": l = { c: g[1][1], r: g[1][0] }; var ie = { c: r.c, r: r.r }; if (a.sharedf[pe(l)]) { var he = a.sharedf[pe(l)]; f.push(dr(he, s, ie, a, n)); } else { var ce = !1; for (c = 0; c != a.arrayf.length; ++c) if (o = a.arrayf[c], !(l.c < o[0].s.c || l.c > o[0].e.c) && !(l.r < o[0].s.r || l.r > o[0].e.r)) { f.push(dr(o[1], s, ie, a, n)), ce = !0; break; } ce || f.push( /*::String(*/ g[1] /*::)*/ ); } break; case "PtgArray": f.push("{" + tv( /*::(*/ g[1] /*:: :any)*/ ) + "}"); break; case "PtgMemArea": break; case "PtgAttrSpace": case "PtgAttrSpaceSemi": x = w; break; case "PtgTbl": break; case "PtgMemErr": break; case "PtgMissArg": f.push(""); break; case "PtgAreaErr": f.push("#REF!"); break; case "PtgAreaErr3d": f.push("#REF!"); break; case "PtgList": f.push("Table" + g[1].idx + "[#" + g[1].rt + "]"); break; case "PtgMemAreaN": case "PtgMemNoMemN": case "PtgAttrNoop": case "PtgSheet": case "PtgEndSheet": break; case "PtgMemFunc": break; case "PtgMemNoMem": break; case "PtgElfCol": case "PtgElfColS": case "PtgElfColSV": case "PtgElfColV": case "PtgElfLel": case "PtgElfRadical": case "PtgElfRadicalLel": case "PtgElfRadicalS": case "PtgElfRw": case "PtgElfRwV": throw new Error("Unsupported ELFs"); case "PtgSxName": throw new Error("Unrecognized Formula Token: " + String(g)); default: throw new Error("Unrecognized Formula Token: " + String(g)); } var be = ["PtgAttrSpace", "PtgAttrSpaceSemi", "PtgAttrGoto"]; if (n.biff != 3 && x >= 0 && be.indexOf(e[0][w][0]) == -1) { g = e[0][x]; var V = !0; switch (g[1][0]) { case 4: V = !1; case 0: p = ze(" ", g[1][1]); break; case 5: V = !1; case 1: p = ze("\r", g[1][1]); break; default: if (p = "", n.WTF) throw new Error("Unexpected PtgAttrSpaceType " + g[1][0]); } f.push((V ? p : "") + f.pop() + (V ? "" : p)), x = -1; } } if (f.length > 1 && n.WTF) throw new Error("bad formula stack"); return f[0]; } function iv(e, t, r) { var a = e.l + t, n = r.biff == 2 ? 1 : 2, i, s = e.read_shift(n); if (s == 65535) return [[], gr(e, t - 2)]; var f = $a(e, s, r); return t !== s + n && (i = ja(e, t - s - n, f, r)), e.l = a, [f, i]; } function sv(e, t, r) { var a = e.l + t, n = r.biff == 2 ? 1 : 2, i, s = e.read_shift(n); if (s == 65535) return [[], gr(e, t - 2)]; var f = $a(e, s, r); return t !== s + n && (i = ja(e, t - s - n, f, r)), e.l = a, [f, i]; } function fv(e, t, r, a) { var n = e.l + t, i = $a(e, a, r), s; return n !== e.l && (s = ja(e, n - e.l, i, r)), [i, s]; } function cv(e, t, r) { var a = e.l + t, n, i = e.read_shift(2), s = $a(e, i, r); return i == 65535 ? [[], gr(e, t - 2)] : (t !== i + 2 && (n = ja(e, a - i - 2, s, r)), [s, n]); } function ov(e) { var t; if (ft(e, e.l + 6) !== 65535) return [pr(e), "n"]; switch (e[e.l]) { case 0: return e.l += 8, ["String", "s"]; case 1: return t = e[e.l + 2] === 1, e.l += 8, [t, "b"]; case 2: return t = e[e.l + 2], e.l += 8, [t, "e"]; case 3: return e.l += 8, ["", "s"]; } return []; } function lv(e) { if (e == null) { var t = z(8); return t.write_shift(1, 3), t.write_shift(1, 0), t.write_shift(2, 0), t.write_shift(2, 0), t.write_shift(2, 65535), t; } else if (typeof e == "number") return Bt(e); return Bt(0); } function U0(e, t, r) { var a = e.l + t, n = at(e); r.biff == 2 && ++e.l; var i = ov(e), s = e.read_shift(1); r.biff != 2 && (e.read_shift(1), r.biff >= 5 && e.read_shift(4)); var f = sv(e, a - e.l, r); return { cell: n, val: i[0], formula: f, shared: s >> 3 & 1, tt: i[1] }; } function uv(e, t, r, a, n) { var i = Ut(t, r, n), s = lv(e.v), f = z(6), c = 33; f.write_shift(2, c), f.write_shift(4, 0); for (var o = z(e.bf.length), l = 0; l < e.bf.length; ++l) o[l] = e.bf[l]; var u = sr([i, s, f, o]); return u; } function F0(e, t, r) { var a = e.read_shift(4), n = $a(e, a, r), i = e.read_shift(4), s = i > 0 ? ja(e, i, n, r) : null; return [n, s]; } var hv = F0, y0 = F0, xv = F0, dv = F0, vv = { 0: "BEEP", 1: "OPEN", 2: "OPEN.LINKS", 3: "CLOSE.ALL", 4: "SAVE", 5: "SAVE.AS", 6: "FILE.DELETE", 7: "PAGE.SETUP", 8: "PRINT", 9: "PRINTER.SETUP", 10: "QUIT", 11: "NEW.WINDOW", 12: "ARRANGE.ALL", 13: "WINDOW.SIZE", 14: "WINDOW.MOVE", 15: "FULL", 16: "CLOSE", 17: "RUN", 22: "SET.PRINT.AREA", 23: "SET.PRINT.TITLES", 24: "SET.PAGE.BREAK", 25: "REMOVE.PAGE.BREAK", 26: "FONT", 27: "DISPLAY", 28: "PROTECT.DOCUMENT", 29: "PRECISION", 30: "A1.R1C1", 31: "CALCULATE.NOW", 32: "CALCULATION", 34: "DATA.FIND", 35: "EXTRACT", 36: "DATA.DELETE", 37: "SET.DATABASE", 38: "SET.CRITERIA", 39: "SORT", 40: "DATA.SERIES", 41: "TABLE", 42: "FORMAT.NUMBER", 43: "ALIGNMENT", 44: "STYLE", 45: "BORDER", 46: "CELL.PROTECTION", 47: "COLUMN.WIDTH", 48: "UNDO", 49: "CUT", 50: "COPY", 51: "PASTE", 52: "CLEAR", 53: "PASTE.SPECIAL", 54: "EDIT.DELETE", 55: "INSERT", 56: "FILL.RIGHT", 57: "FILL.DOWN", 61: "DEFINE.NAME", 62: "CREATE.NAMES", 63: "FORMULA.GOTO", 64: "FORMULA.FIND", 65: "SELECT.LAST.CELL", 66: "SHOW.ACTIVE.CELL", 67: "GALLERY.AREA", 68: "GALLERY.BAR", 69: "GALLERY.COLUMN", 70: "GALLERY.LINE", 71: "GALLERY.PIE", 72: "GALLERY.SCATTER", 73: "COMBINATION", 74: "PREFERRED", 75: "ADD.OVERLAY", 76: "GRIDLINES", 77: "SET.PREFERRED", 78: "AXES", 79: "LEGEND", 80: "ATTACH.TEXT", 81: "ADD.ARROW", 82: "SELECT.CHART", 83: "SELECT.PLOT.AREA", 84: "PATTERNS", 85: "MAIN.CHART", 86: "OVERLAY", 87: "SCALE", 88: "FORMAT.LEGEND", 89: "FORMAT.TEXT", 90: "EDIT.REPEAT", 91: "PARSE", 92: "JUSTIFY", 93: "HIDE", 94: "UNHIDE", 95: "WORKSPACE", 96: "FORMULA", 97: "FORMULA.FILL", 98: "FORMULA.ARRAY", 99: "DATA.FIND.NEXT", 100: "DATA.FIND.PREV", 101: "FORMULA.FIND.NEXT", 102: "FORMULA.FIND.PREV", 103: "ACTIVATE", 104: "ACTIVATE.NEXT", 105: "ACTIVATE.PREV", 106: "UNLOCKED.NEXT", 107: "UNLOCKED.PREV", 108: "COPY.PICTURE", 109: "SELECT", 110: "DELETE.NAME", 111: "DELETE.FORMAT", 112: "VLINE", 113: "HLINE", 114: "VPAGE", 115: "HPAGE", 116: "VSCROLL", 117: "HSCROLL", 118: "ALERT", 119: "NEW", 120: "CANCEL.COPY", 121: "SHOW.CLIPBOARD", 122: "MESSAGE", 124: "PASTE.LINK", 125: "APP.ACTIVATE", 126: "DELETE.ARROW", 127: "ROW.HEIGHT", 128: "FORMAT.MOVE", 129: "FORMAT.SIZE", 130: "FORMULA.REPLACE", 131: "SEND.KEYS", 132: "SELECT.SPECIAL", 133: "APPLY.NAMES", 134: "REPLACE.FONT", 135: "FREEZE.PANES", 136: "SHOW.INFO", 137: "SPLIT", 138: "ON.WINDOW", 139: "ON.DATA", 140: "DISABLE.INPUT", 142: "OUTLINE", 143: "LIST.NAMES", 144: "FILE.CLOSE", 145: "SAVE.WORKBOOK", 146: "DATA.FORM", 147: "COPY.CHART", 148: "ON.TIME", 149: "WAIT", 150: "FORMAT.FONT", 151: "FILL.UP", 152: "FILL.LEFT", 153: "DELETE.OVERLAY", 155: "SHORT.MENUS", 159: "SET.UPDATE.STATUS", 161: "COLOR.PALETTE", 162: "DELETE.STYLE", 163: "WINDOW.RESTORE", 164: "WINDOW.MAXIMIZE", 166: "CHANGE.LINK", 167: "CALCULATE.DOCUMENT", 168: "ON.KEY", 169: "APP.RESTORE", 170: "APP.MOVE", 171: "APP.SIZE", 172: "APP.MINIMIZE", 173: "APP.MAXIMIZE", 174: "BRING.TO.FRONT", 175: "SEND.TO.BACK", 185: "MAIN.CHART.TYPE", 186: "OVERLAY.CHART.TYPE", 187: "SELECT.END", 188: "OPEN.MAIL", 189: "SEND.MAIL", 190: "STANDARD.FONT", 191: "CONSOLIDATE", 192: "SORT.SPECIAL", 193: "GALLERY.3D.AREA", 194: "GALLERY.3D.COLUMN", 195: "GALLERY.3D.LINE", 196: "GALLERY.3D.PIE", 197: "VIEW.3D", 198: "GOAL.SEEK", 199: "WORKGROUP", 200: "FILL.GROUP", 201: "UPDATE.LINK", 202: "PROMOTE", 203: "DEMOTE", 204: "SHOW.DETAIL", 206: "UNGROUP", 207: "OBJECT.PROPERTIES", 208: "SAVE.NEW.OBJECT", 209: "SHARE", 210: "SHARE.NAME", 211: "DUPLICATE", 212: "APPLY.STYLE", 213: "ASSIGN.TO.OBJECT", 214: "OBJECT.PROTECTION", 215: "HIDE.OBJECT", 216: "SET.EXTRACT", 217: "CREATE.PUBLISHER", 218: "SUBSCRIBE.TO", 219: "ATTRIBUTES", 220: "SHOW.TOOLBAR", 222: "PRINT.PREVIEW", 223: "EDIT.COLOR", 224: "SHOW.LEVELS", 225: "FORMAT.MAIN", 226: "FORMAT.OVERLAY", 227: "ON.RECALC", 228: "EDIT.SERIES", 229: "DEFINE.STYLE", 240: "LINE.PRINT", 243: "ENTER.DATA", 249: "GALLERY.RADAR", 250: "MERGE.STYLES", 251: "EDITION.OPTIONS", 252: "PASTE.PICTURE", 253: "PASTE.PICTURE.LINK", 254: "SPELLING", 256: "ZOOM", 259: "INSERT.OBJECT", 260: "WINDOW.MINIMIZE", 265: "SOUND.NOTE", 266: "SOUND.PLAY", 267: "FORMAT.SHAPE", 268: "EXTEND.POLYGON", 269: "FORMAT.AUTO", 272: "GALLERY.3D.BAR", 273: "GALLERY.3D.SURFACE", 274: "FILL.AUTO", 276: "CUSTOMIZE.TOOLBAR", 277: "ADD.TOOL", 278: "EDIT.OBJECT", 279: "ON.DOUBLECLICK", 280: "ON.ENTRY", 281: "WORKBOOK.ADD", 282: "WORKBOOK.MOVE", 283: "WORKBOOK.COPY", 284: "WORKBOOK.OPTIONS", 285: "SAVE.WORKSPACE", 288: "CHART.WIZARD", 289: "DELETE.TOOL", 290: "MOVE.TOOL", 291: "WORKBOOK.SELECT", 292: "WORKBOOK.ACTIVATE", 293: "ASSIGN.TO.TOOL", 295: "COPY.TOOL", 296: "RESET.TOOL", 297: "CONSTRAIN.NUMERIC", 298: "PASTE.TOOL", 302: "WORKBOOK.NEW", 305: "SCENARIO.CELLS", 306: "SCENARIO.DELETE", 307: "SCENARIO.ADD", 308: "SCENARIO.EDIT", 309: "SCENARIO.SHOW", 310: "SCENARIO.SHOW.NEXT", 311: "SCENARIO.SUMMARY", 312: "PIVOT.TABLE.WIZARD", 313: "PIVOT.FIELD.PROPERTIES", 314: "PIVOT.FIELD", 315: "PIVOT.ITEM", 316: "PIVOT.ADD.FIELDS", 318: "OPTIONS.CALCULATION", 319: "OPTIONS.EDIT", 320: "OPTIONS.VIEW", 321: "ADDIN.MANAGER", 322: "MENU.EDITOR", 323: "ATTACH.TOOLBARS", 324: "VBAActivate", 325: "OPTIONS.CHART", 328: "VBA.INSERT.FILE", 330: "VBA.PROCEDURE.DEFINITION", 336: "ROUTING.SLIP", 338: "ROUTE.DOCUMENT", 339: "MAIL.LOGON", 342: "INSERT.PICTURE", 343: "EDIT.TOOL", 344: "GALLERY.DOUGHNUT", 350: "CHART.TREND", 352: "PIVOT.ITEM.PROPERTIES", 354: "WORKBOOK.INSERT", 355: "OPTIONS.TRANSITION", 356: "OPTIONS.GENERAL", 370: "FILTER.ADVANCED", 373: "MAIL.ADD.MAILER", 374: "MAIL.DELETE.MAILER", 375: "MAIL.REPLY", 376: "MAIL.REPLY.ALL", 377: "MAIL.FORWARD", 378: "MAIL.NEXT.LETTER", 379: "DATA.LABEL", 380: "INSERT.TITLE", 381: "FONT.PROPERTIES", 382: "MACRO.OPTIONS", 383: "WORKBOOK.HIDE", 384: "WORKBOOK.UNHIDE", 385: "WORKBOOK.DELETE", 386: "WORKBOOK.NAME", 388: "GALLERY.CUSTOM", 390: "ADD.CHART.AUTOFORMAT", 391: "DELETE.CHART.AUTOFORMAT", 392: "CHART.ADD.DATA", 393: "AUTO.OUTLINE", 394: "TAB.ORDER", 395: "SHOW.DIALOG", 396: "SELECT.ALL", 397: "UNGROUP.SHEETS", 398: "SUBTOTAL.CREATE", 399: "SUBTOTAL.REMOVE", 400: "RENAME.OBJECT", 412: "WORKBOOK.SCROLL", 413: "WORKBOOK.NEXT", 414: "WORKBOOK.PREV", 415: "WORKBOOK.TAB.SPLIT", 416: "FULL.SCREEN", 417: "WORKBOOK.PROTECT", 420: "SCROLLBAR.PROPERTIES", 421: "PIVOT.SHOW.PAGES", 422: "TEXT.TO.COLUMNS", 423: "FORMAT.CHARTTYPE", 424: "LINK.FORMAT", 425: "TRACER.DISPLAY", 430: "TRACER.NAVIGATE", 431: "TRACER.CLEAR", 432: "TRACER.ERROR", 433: "PIVOT.FIELD.GROUP", 434: "PIVOT.FIELD.UNGROUP", 435: "CHECKBOX.PROPERTIES", 436: "LABEL.PROPERTIES", 437: "LISTBOX.PROPERTIES", 438: "EDITBOX.PROPERTIES", 439: "PIVOT.REFRESH", 440: "LINK.COMBO", 441: "OPEN.TEXT", 442: "HIDE.DIALOG", 443: "SET.DIALOG.FOCUS", 444: "ENABLE.OBJECT", 445: "PUSHBUTTON.PROPERTIES", 446: "SET.DIALOG.DEFAULT", 447: "FILTER", 448: "FILTER.SHOW.ALL", 449: "CLEAR.OUTLINE", 450: "FUNCTION.WIZARD", 451: "ADD.LIST.ITEM", 452: "SET.LIST.ITEM", 453: "REMOVE.LIST.ITEM", 454: "SELECT.LIST.ITEM", 455: "SET.CONTROL.VALUE", 456: "SAVE.COPY.AS", 458: "OPTIONS.LISTS.ADD", 459: "OPTIONS.LISTS.DELETE", 460: "SERIES.AXES", 461: "SERIES.X", 462: "SERIES.Y", 463: "ERRORBAR.X", 464: "ERRORBAR.Y", 465: "FORMAT.CHART", 466: "SERIES.ORDER", 467: "MAIL.LOGOFF", 468: "CLEAR.ROUTING.SLIP", 469: "APP.ACTIVATE.MICROSOFT", 470: "MAIL.EDIT.MAILER", 471: "ON.SHEET", 472: "STANDARD.WIDTH", 473: "SCENARIO.MERGE", 474: "SUMMARY.INFO", 475: "FIND.FILE", 476: "ACTIVE.CELL.FONT", 477: "ENABLE.TIPWIZARD", 478: "VBA.MAKE.ADDIN", 480: "INSERTDATATABLE", 481: "WORKGROUP.OPTIONS", 482: "MAIL.SEND.MAILER", 485: "AUTOCORRECT", 489: "POST.DOCUMENT", 491: "PICKLIST", 493: "VIEW.SHOW", 494: "VIEW.DEFINE", 495: "VIEW.DELETE", 509: "SHEET.BACKGROUND", 510: "INSERT.MAP.OBJECT", 511: "OPTIONS.MENONO", 517: "MSOCHECKS", 518: "NORMAL", 519: "LAYOUT", 520: "RM.PRINT.AREA", 521: "CLEAR.PRINT.AREA", 522: "ADD.PRINT.AREA", 523: "MOVE.BRK", 545: "HIDECURR.NOTE", 546: "HIDEALL.NOTES", 547: "DELETE.NOTE", 548: "TRAVERSE.NOTES", 549: "ACTIVATE.NOTES", 620: "PROTECT.REVISIONS", 621: "UNPROTECT.REVISIONS", 647: "OPTIONS.ME", 653: "WEB.PUBLISH", 667: "NEWWEBQUERY", 673: "PIVOT.TABLE.CHART", 753: "OPTIONS.SAVE", 755: "OPTIONS.SPELL", 808: "HIDEALL.INKANNOTS" }, Yf = { 0: "COUNT", 1: "IF", 2: "ISNA", 3: "ISERROR", 4: "SUM", 5: "AVERAGE", 6: "MIN", 7: "MAX", 8: "ROW", 9: "COLUMN", 10: "NA", 11: "NPV", 12: "STDEV", 13: "DOLLAR", 14: "FIXED", 15: "SIN", 16: "COS", 17: "TAN", 18: "ATAN", 19: "PI", 20: "SQRT", 21: "EXP", 22: "LN", 23: "LOG10", 24: "ABS", 25: "INT", 26: "SIGN", 27: "ROUND", 28: "LOOKUP", 29: "INDEX", 30: "REPT", 31: "MID", 32: "LEN", 33: "VALUE", 34: "TRUE", 35: "FALSE", 36: "AND", 37: "OR", 38: "NOT", 39: "MOD", 40: "DCOUNT", 41: "DSUM", 42: "DAVERAGE", 43: "DMIN", 44: "DMAX", 45: "DSTDEV", 46: "VAR", 47: "DVAR", 48: "TEXT", 49: "LINEST", 50: "TREND", 51: "LOGEST", 52: "GROWTH", 53: "GOTO", 54: "HALT", 55: "RETURN", 56: "PV", 57: "FV", 58: "NPER", 59: "PMT", 60: "RATE", 61: "MIRR", 62: "IRR", 63: "RAND", 64: "MATCH", 65: "DATE", 66: "TIME", 67: "DAY", 68: "MONTH", 69: "YEAR", 70: "WEEKDAY", 71: "HOUR", 72: "MINUTE", 73: "SECOND", 74: "NOW", 75: "AREAS", 76: "ROWS", 77: "COLUMNS", 78: "OFFSET", 79: "ABSREF", 80: "RELREF", 81: "ARGUMENT", 82: "SEARCH", 83: "TRANSPOSE", 84: "ERROR", 85: "STEP", 86: "TYPE", 87: "ECHO", 88: "SET.NAME", 89: "CALLER", 90: "DEREF", 91: "WINDOWS", 92: "SERIES", 93: "DOCUMENTS", 94: "ACTIVE.CELL", 95: "SELECTION", 96: "RESULT", 97: "ATAN2", 98: "ASIN", 99: "ACOS", 100: "CHOOSE", 101: "HLOOKUP", 102: "VLOOKUP", 103: "LINKS", 104: "INPUT", 105: "ISREF", 106: "GET.FORMULA", 107: "GET.NAME", 108: "SET.VALUE", 109: "LOG", 110: "EXEC", 111: "CHAR", 112: "LOWER", 113: "UPPER", 114: "PROPER", 115: "LEFT", 116: "RIGHT", 117: "EXACT", 118: "TRIM", 119: "REPLACE", 120: "SUBSTITUTE", 121: "CODE", 122: "NAMES", 123: "DIRECTORY", 124: "FIND", 125: "CELL", 126: "ISERR", 127: "ISTEXT", 128: "ISNUMBER", 129: "ISBLANK", 130: "T", 131: "N", 132: "FOPEN", 133: "FCLOSE", 134: "FSIZE", 135: "FREADLN", 136: "FREAD", 137: "FWRITELN", 138: "FWRITE", 139: "FPOS", 140: "DATEVALUE", 141: "TIMEVALUE", 142: "SLN", 143: "SYD", 144: "DDB", 145: "GET.DEF", 146: "REFTEXT", 147: "TEXTREF", 148: "INDIRECT", 149: "REGISTER", 150: "CALL", 151: "ADD.BAR", 152: "ADD.MENU", 153: "ADD.COMMAND", 154: "ENABLE.COMMAND", 155: "CHECK.COMMAND", 156: "RENAME.COMMAND", 157: "SHOW.BAR", 158: "DELETE.MENU", 159: "DELETE.COMMAND", 160: "GET.CHART.ITEM", 161: "DIALOG.BOX", 162: "CLEAN", 163: "MDETERM", 164: "MINVERSE", 165: "MMULT", 166: "FILES", 167: "IPMT", 168: "PPMT", 169: "COUNTA", 170: "CANCEL.KEY", 171: "FOR", 172: "WHILE", 173: "BREAK", 174: "NEXT", 175: "INITIATE", 176: "REQUEST", 177: "POKE", 178: "EXECUTE", 179: "TERMINATE", 180: "RESTART", 181: "HELP", 182: "GET.BAR", 183: "PRODUCT", 184: "FACT", 185: "GET.CELL", 186: "GET.WORKSPACE", 187: "GET.WINDOW", 188: "GET.DOCUMENT", 189: "DPRODUCT", 190: "ISNONTEXT", 191: "GET.NOTE", 192: "NOTE", 193: "STDEVP", 194: "VARP", 195: "DSTDEVP", 196: "DVARP", 197: "TRUNC", 198: "ISLOGICAL", 199: "DCOUNTA", 200: "DELETE.BAR", 201: "UNREGISTER", 204: "USDOLLAR", 205: "FINDB", 206: "SEARCHB", 207: "REPLACEB", 208: "LEFTB", 209: "RIGHTB", 210: "MIDB", 211: "LENB", 212: "ROUNDUP", 213: "ROUNDDOWN", 214: "ASC", 215: "DBCS", 216: "RANK", 219: "ADDRESS", 220: "DAYS360", 221: "TODAY", 222: "VDB", 223: "ELSE", 224: "ELSE.IF", 225: "END.IF", 226: "FOR.CELL", 227: "MEDIAN", 228: "SUMPRODUCT", 229: "SINH", 230: "COSH", 231: "TANH", 232: "ASINH", 233: "ACOSH", 234: "ATANH", 235: "DGET", 236: "CREATE.OBJECT", 237: "VOLATILE", 238: "LAST.ERROR", 239: "CUSTOM.UNDO", 240: "CUSTOM.REPEAT", 241: "FORMULA.CONVERT", 242: "GET.LINK.INFO", 243: "TEXT.BOX", 244: "INFO", 245: "GROUP", 246: "GET.OBJECT", 247: "DB", 248: "PAUSE", 251: "RESUME", 252: "FREQUENCY", 253: "ADD.TOOLBAR", 254: "DELETE.TOOLBAR", 255: "User", 256: "RESET.TOOLBAR", 257: "EVALUATE", 258: "GET.TOOLBAR", 259: "GET.TOOL", 260: "SPELLING.CHECK", 261: "ERROR.TYPE", 262: "APP.TITLE", 263: "WINDOW.TITLE", 264: "SAVE.TOOLBAR", 265: "ENABLE.TOOL", 266: "PRESS.TOOL", 267: "REGISTER.ID", 268: "GET.WORKBOOK", 269: "AVEDEV", 270: "BETADIST", 271: "GAMMALN", 272: "BETAINV", 273: "BINOMDIST", 274: "CHIDIST", 275: "CHIINV", 276: "COMBIN", 277: "CONFIDENCE", 278: "CRITBINOM", 279: "EVEN", 280: "EXPONDIST", 281: "FDIST", 282: "FINV", 283: "FISHER", 284: "FISHERINV", 285: "FLOOR", 286: "GAMMADIST", 287: "GAMMAINV", 288: "CEILING", 289: "HYPGEOMDIST", 290: "LOGNORMDIST", 291: "LOGINV", 292: "NEGBINOMDIST", 293: "NORMDIST", 294: "NORMSDIST", 295: "NORMINV", 296: "NORMSINV", 297: "STANDARDIZE", 298: "ODD", 299: "PERMUT", 300: "POISSON", 301: "TDIST", 302: "WEIBULL", 303: "SUMXMY2", 304: "SUMX2MY2", 305: "SUMX2PY2", 306: "CHITEST", 307: "CORREL", 308: "COVAR", 309: "FORECAST", 310: "FTEST", 311: "INTERCEPT", 312: "PEARSON", 313: "RSQ", 314: "STEYX", 315: "SLOPE", 316: "TTEST", 317: "PROB", 318: "DEVSQ", 319: "GEOMEAN", 320: "HARMEAN", 321: "SUMSQ", 322: "KURT", 323: "SKEW", 324: "ZTEST", 325: "LARGE", 326: "SMALL", 327: "QUARTILE", 328: "PERCENTILE", 329: "PERCENTRANK", 330: "MODE", 331: "TRIMMEAN", 332: "TINV", 334: "MOVIE.COMMAND", 335: "GET.MOVIE", 336: "CONCATENATE", 337: "POWER", 338: "PIVOT.ADD.DATA", 339: "GET.PIVOT.TABLE", 340: "GET.PIVOT.FIELD", 341: "GET.PIVOT.ITEM", 342: "RADIANS", 343: "DEGREES", 344: "SUBTOTAL", 345: "SUMIF", 346: "COUNTIF", 347: "COUNTBLANK", 348: "SCENARIO.GET", 349: "OPTIONS.LISTS.GET", 350: "ISPMT", 351: "DATEDIF", 352: "DATESTRING", 353: "NUMBERSTRING", 354: "ROMAN", 355: "OPEN.DIALOG", 356: "SAVE.DIALOG", 357: "VIEW.GET", 358: "GETPIVOTDATA", 359: "HYPERLINK", 360: "PHONETIC", 361: "AVERAGEA", 362: "MAXA", 363: "MINA", 364: "STDEVPA", 365: "VARPA", 366: "STDEVA", 367: "VARA", 368: "BAHTTEXT", 369: "THAIDAYOFWEEK", 370: "THAIDIGIT", 371: "THAIMONTHOFYEAR", 372: "THAINUMSOUND", 373: "THAINUMSTRING", 374: "THAISTRINGLENGTH", 375: "ISTHAIDIGIT", 376: "ROUNDBAHTDOWN", 377: "ROUNDBAHTUP", 378: "THAIYEAR", 379: "RTD", 380: "CUBEVALUE", 381: "CUBEMEMBER", 382: "CUBEMEMBERPROPERTY", 383: "CUBERANKEDMEMBER", 384: "HEX2BIN", 385: "HEX2DEC", 386: "HEX2OCT", 387: "DEC2BIN", 388: "DEC2HEX", 389: "DEC2OCT", 390: "OCT2BIN", 391: "OCT2HEX", 392: "OCT2DEC", 393: "BIN2DEC", 394: "BIN2OCT", 395: "BIN2HEX", 396: "IMSUB", 397: "IMDIV", 398: "IMPOWER", 399: "IMABS", 400: "IMSQRT", 401: "IMLN", 402: "IMLOG2", 403: "IMLOG10", 404: "IMSIN", 405: "IMCOS", 406: "IMEXP", 407: "IMARGUMENT", 408: "IMCONJUGATE", 409: "IMAGINARY", 410: "IMREAL", 411: "COMPLEX", 412: "IMSUM", 413: "IMPRODUCT", 414: "SERIESSUM", 415: "FACTDOUBLE", 416: "SQRTPI", 417: "QUOTIENT", 418: "DELTA", 419: "GESTEP", 420: "ISEVEN", 421: "ISODD", 422: "MROUND", 423: "ERF", 424: "ERFC", 425: "BESSELJ", 426: "BESSELK", 427: "BESSELY", 428: "BESSELI", 429: "XIRR", 430: "XNPV", 431: "PRICEMAT", 432: "YIELDMAT", 433: "INTRATE", 434: "RECEIVED", 435: "DISC", 436: "PRICEDISC", 437: "YIELDDISC", 438: "TBILLEQ", 439: "TBILLPRICE", 440: "TBILLYIELD", 441: "PRICE", 442: "YIELD", 443: "DOLLARDE", 444: "DOLLARFR", 445: "NOMINAL", 446: "EFFECT", 447: "CUMPRINC", 448: "CUMIPMT", 449: "EDATE", 450: "EOMONTH", 451: "YEARFRAC", 452: "COUPDAYBS", 453: "COUPDAYS", 454: "COUPDAYSNC", 455: "COUPNCD", 456: "COUPNUM", 457: "COUPPCD", 458: "DURATION", 459: "MDURATION", 460: "ODDLPRICE", 461: "ODDLYIELD", 462: "ODDFPRICE", 463: "ODDFYIELD", 464: "RANDBETWEEN", 465: "WEEKNUM", 466: "AMORDEGRC", 467: "AMORLINC", 468: "CONVERT", 724: "SHEETJS", 469: "ACCRINT", 470: "ACCRINTM", 471: "WORKDAY", 472: "NETWORKDAYS", 473: "GCD", 474: "MULTINOMIAL", 475: "LCM", 476: "FVSCHEDULE", 477: "CUBEKPIMEMBER", 478: "CUBESET", 479: "CUBESETCOUNT", 480: "IFERROR", 481: "COUNTIFS", 482: "SUMIFS", 483: "AVERAGEIF", 484: "AVERAGEIFS" }, pv = { 2: 1, 3: 1, 10: 0, 15: 1, 16: 1, 17: 1, 18: 1, 19: 0, 20: 1, 21: 1, 22: 1, 23: 1, 24: 1, 25: 1, 26: 1, 27: 2, 30: 2, 31: 3, 32: 1, 33: 1, 34: 0, 35: 0, 38: 1, 39: 2, 40: 3, 41: 3, 42: 3, 43: 3, 44: 3, 45: 3, 47: 3, 48: 2, 53: 1, 61: 3, 63: 0, 65: 3, 66: 3, 67: 1, 68: 1, 69: 1, 70: 1, 71: 1, 72: 1, 73: 1, 74: 0, 75: 1, 76: 1, 77: 1, 79: 2, 80: 2, 83: 1, 85: 0, 86: 1, 89: 0, 90: 1, 94: 0, 95: 0, 97: 2, 98: 1, 99: 1, 101: 3, 102: 3, 105: 1, 106: 1, 108: 2, 111: 1, 112: 1, 113: 1, 114: 1, 117: 2, 118: 1, 119: 4, 121: 1, 126: 1, 127: 1, 128: 1, 129: 1, 130: 1, 131: 1, 133: 1, 134: 1, 135: 1, 136: 2, 137: 2, 138: 2, 140: 1, 141: 1, 142: 3, 143: 4, 144: 4, 161: 1, 162: 1, 163: 1, 164: 1, 165: 2, 172: 1, 175: 2, 176: 2, 177: 3, 178: 2, 179: 1, 184: 1, 186: 1, 189: 3, 190: 1, 195: 3, 196: 3, 197: 1, 198: 1, 199: 3, 201: 1, 207: 4, 210: 3, 211: 1, 212: 2, 213: 2, 214: 1, 215: 1, 225: 0, 229: 1, 230: 1, 231: 1, 232: 1, 233: 1, 234: 1, 235: 3, 244: 1, 247: 4, 252: 2, 257: 1, 261: 1, 271: 1, 273: 4, 274: 2, 275: 2, 276: 2, 277: 3, 278: 3, 279: 1, 280: 3, 281: 3, 282: 3, 283: 1, 284: 1, 285: 2, 286: 4, 287: 3, 288: 2, 289: 4, 290: 3, 291: 3, 292: 3, 293: 4, 294: 1, 295: 3, 296: 1, 297: 3, 298: 1, 299: 2, 300: 3, 301: 3, 302: 4, 303: 2, 304: 2, 305: 2, 306: 2, 307: 2, 308: 2, 309: 3, 310: 2, 311: 2, 312: 2, 313: 2, 314: 2, 315: 2, 316: 4, 325: 2, 326: 2, 327: 2, 328: 2, 331: 2, 332: 2, 337: 2, 342: 1, 343: 1, 346: 2, 347: 1, 350: 4, 351: 3, 352: 1, 353: 2, 360: 1, 368: 1, 369: 1, 370: 1, 371: 1, 372: 1, 373: 1, 374: 1, 375: 1, 376: 1, 377: 1, 378: 1, 382: 3, 385: 1, 392: 1, 393: 1, 396: 2, 397: 2, 398: 2, 399: 1, 400: 1, 401: 1, 402: 1, 403: 1, 404: 1, 405: 1, 406: 1, 407: 1, 408: 1, 409: 1, 410: 1, 414: 4, 415: 1, 416: 1, 417: 2, 420: 1, 421: 1, 422: 2, 424: 1, 425: 2, 426: 2, 427: 2, 428: 2, 430: 3, 438: 3, 439: 3, 440: 3, 443: 2, 444: 2, 445: 2, 446: 2, 447: 6, 448: 6, 449: 2, 450: 2, 464: 2, 468: 3, 476: 2, 479: 1, 480: 2, 65535: 0 }; function Yi(e) { return e.slice(0, 3) == "of:" && (e = e.slice(3)), e.charCodeAt(0) == 61 && (e = e.slice(1), e.charCodeAt(0) == 61 && (e = e.slice(1))), e = e.replace(/COM\.MICROSOFT\./g, ""), e = e.replace(/\[((?:\.[A-Z]+[0-9]+)(?::\.[A-Z]+[0-9]+)?)\]/g, function(t, r) { return r.replace(/\./g, ""); }), e = e.replace(/\[.(#[A-Z]*[?!])\]/g, "$1"), e.replace(/[;~]/g, ",").replace(/\|/g, ";"); } function mv(e) { var t = "of:=" + e.replace(Pn, "$1[.$2$3$4$5]").replace(/\]:\[/g, ":"); return t.replace(/;/g, "|").replace(/,/g, ";"); } function W0(e) { var t = e.split(":"), r = t[0].split(".")[0]; return [r, t[0].split(".")[1] + (t.length > 1 ? ":" + (t[1].split(".")[1] || t[1].split(".")[0]) : "")]; } function gv(e) { return e.replace(/\./, "!"); } var Ta = {}, ta = {}, Sa = typeof Map < "u"; function Mn(e, t, r) { var a = 0, n = e.length; if (r) { if (Sa ? r.has(t) : Object.prototype.hasOwnProperty.call(r, t)) { for (var i = Sa ? r.get(t) : r[t]; a < i.length; ++a) if (e[i[a]].t === t) return e.Count++, i[a]; } } else for (; a < n; ++a) if (e[a].t === t) return e.Count++, a; return e[n] = { t }, e.Count++, e.Unique++, r && (Sa ? (r.has(t) || r.set(t, []), r.get(t).push(n)) : (Object.prototype.hasOwnProperty.call(r, t) || (r[t] = []), r[t].push(n))), n; } function A0(e, t) { var r = { min: e + 1, max: e + 1 }, a = -1; return t.MDW && (vr = t.MDW), t.width != null ? r.customWidth = 1 : t.wpx != null ? a = Pa(t.wpx) : t.wch != null && (a = t.wch), a > -1 ? (r.width = g0(a), r.customWidth = 1) : t.width != null && (r.width = t.width), t.hidden && (r.hidden = !0), t.level != null && (r.outlineLevel = r.level = t.level), r; } function bt(e, t) { if (e) { var r = [0.7, 0.7, 0.75, 0.75, 0.3, 0.3]; t == "xlml" && (r = [1, 1, 1, 1, 0.5, 0.5]), e.left == null && (e.left = r[0]), e.right == null && (e.right = r[1]), e.top == null && (e.top = r[2]), e.bottom == null && (e.bottom = r[3]), e.header == null && (e.header = r[4]), e.footer == null && (e.footer = r[5]); } } function At(e, t, r) { var a = r.revssf[t.z != null ? t.z : "General"], n = 60, i = e.length; if (a == null && r.ssf) { for (; n < 392; ++n) if (r.ssf[n] == null) { rt(t.z, n), r.ssf[n] = t.z, r.revssf[t.z] = a = n; break; } } for (n = 0; n != i; ++n) if (e[n].numFmtId === a) return n; return e[i] = { numFmtId: a, fontId: 0, fillId: 0, borderId: 0, xfId: 0, applyNumberFormat: 1 }, i; } function Jf(e, t, r, a, n, i) { try { a.cellNF && (e.z = de[t]); } catch (f) { if (a.WTF) throw f; } if (!(e.t === "z" && !a.cellStyles)) { if (e.t === "d" && typeof e.v == "string" && (e.v = Ue(e.v)), (!a || a.cellText !== !1) && e.t !== "z") try { if (de[t] == null && rt(po[t] || "General", t), e.t === "e") e.w = e.w || xt[e.v]; else if (t === 0) if (e.t === "n") (e.v | 0) === e.v ? e.w = e.v.toString(10) : e.w = Ca(e.v); else if (e.t === "d") { var s = nr(e.v); (s | 0) === s ? e.w = s.toString(10) : e.w = Ca(s); } else { if (e.v === void 0) return ""; e.w = Pt(e.v, ta); } else e.t === "d" ? e.w = Nr(t, nr(e.v), ta) : e.w = Nr(t, e.v, ta); } catch (f) { if (a.WTF) throw f; } if (a.cellStyles && r != null) try { e.s = i.Fills[r], e.s.fgColor && e.s.fgColor.theme && !e.s.fgColor.rgb && (e.s.fgColor.rgb = m0(n.themeElements.clrScheme[e.s.fgColor.theme].rgb, e.s.fgColor.tint || 0), a.WTF && (e.s.fgColor.raw_rgb = n.themeElements.clrScheme[e.s.fgColor.theme].rgb)), e.s.bgColor && e.s.bgColor.theme && (e.s.bgColor.rgb = m0(n.themeElements.clrScheme[e.s.bgColor.theme].rgb, e.s.bgColor.tint || 0), a.WTF && (e.s.bgColor.raw_rgb = n.themeElements.clrScheme[e.s.bgColor.theme].rgb)); } catch (f) { if (a.WTF && i.Fills) throw f; } } } function _v(e, t, r) { if (e && e["!ref"]) { var a = De(e["!ref"]); if (a.e.c < a.s.c || a.e.r < a.s.r) throw new Error("Bad range (" + r + "): " + e["!ref"]); } } function wv(e, t) { var r = De(t); r.s.r <= r.e.r && r.s.c <= r.e.c && r.s.r >= 0 && r.s.c >= 0 && (e["!ref"] = we(r)); } var Ev = /<(?:\w:)?mergeCell ref="[A-Z0-9:]+"\s*[\/]?>/g, kv = /<(?:\w+:)?sheetData[^>]*>([\s\S]*)<\/(?:\w+:)?sheetData>/, Tv = /<(?:\w:)?hyperlink [^>]*>/mg, Sv = /"(\w*:\w*)"/, Fv = /<(?:\w:)?col\b[^>]*[\/]?>/g, yv = /<(?:\w:)?autoFilter[^>]*([\/]|>([\s\S]*)<\/(?:\w:)?autoFilter)>/g, Av = /<(?:\w:)?pageMargins[^>]*\/>/g, qf = /<(?:\w:)?sheetPr\b(?:[^>a-z][^>]*)?\/>/, Cv = /<(?:\w:)?sheetPr[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetPr)>/, Dv = /<(?:\w:)?sheetViews[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetViews)>/; function Ov(e, t, r, a, n, i, s) { if (!e) return e; a || (a = { "!id": {} }); var f = t.dense ? [] : {}, c = { s: { r: 2e6, c: 2e6 }, e: { r: 0, c: 0 } }, o = "", l = "", u = e.match(kv); u ? (o = e.slice(0, u.index), l = e.slice(u.index + u[0].length)) : o = l = e; var h = o.match(qf); h ? Un(h[0], f, n, r) : (h = o.match(Cv)) && Rv(h[0], h[1] || "", f, n, r); var d = (o.match(/<(?:\w*:)?dimension/) || { index: -1 }).index; if (d > 0) { var v = o.slice(d, d + 50).match(Sv); v && wv(f, v[1]); } var x = o.match(Dv); x && x[1] && zv(x[1], n); var p = []; if (t.cellStyles) { var w = o.match(Fv); w && Wv(p, w); } u && Kv(u[1], f, t, c, i, s); var y = l.match(yv); y && (f["!autofilter"] = Vv(y[0])); var g = [], C = l.match(Ev); if (C) for (d = 0; d != C.length; ++d) g[d] = De(C[d].slice(C[d].indexOf('"') + 1)); var b = l.match(Tv); b && Bv(f, b, a); var O = l.match(Av); if (O && (f["!margins"] = Mv(me(O[0]))), !f["!ref"] && c.e.c >= c.s.c && c.e.r >= c.s.r && (f["!ref"] = we(c)), t.sheetRows > 0 && f["!ref"]) { var S = De(f["!ref"]); t.sheetRows <= +S.e.r && (S.e.r = t.sheetRows - 1, S.e.r > c.e.r && (S.e.r = c.e.r), S.e.r < S.s.r && (S.s.r = S.e.r), S.e.c > c.e.c && (S.e.c = c.e.c), S.e.c < S.s.c && (S.s.c = S.e.c), f["!fullref"] = f["!ref"], f["!ref"] = we(S)); } return p.length > 0 && (f["!cols"] = p), g.length > 0 && (f["!merges"] = g), f; } function Iv(e) { if (e.length === 0) return ""; for (var t = '', r = 0; r != e.length; ++r) t += ''; return t + ""; } function Un(e, t, r, a) { var n = me(e); r.Sheets[a] || (r.Sheets[a] = {}), n.codeName && (r.Sheets[a].CodeName = Ce(Pe(n.codeName))); } function Rv(e, t, r, a, n) { Un(e.slice(0, e.indexOf(">")), r, a, n); } function Nv(e, t, r, a, n) { var i = !1, s = {}, f = null; if (a.bookType !== "xlsx" && t.vbaraw) { var c = t.SheetNames[r]; try { t.Workbook && (c = t.Workbook.Sheets[r].CodeName || c); } catch { } i = !0, s.codeName = et(Ne(c)); } if (e && e["!outline"]) { var o = { summaryBelow: 1, summaryRight: 1 }; e["!outline"].above && (o.summaryBelow = 0), e["!outline"].left && (o.summaryRight = 0), f = (f || "") + ae("outlinePr", null, o); } !i && !f || (n[n.length] = ae("sheetPr", f, s)); } var bv = ["objects", "scenarios", "selectLockedCells", "selectUnlockedCells"], Pv = [ "formatColumns", "formatRows", "formatCells", "insertColumns", "insertRows", "insertHyperlinks", "deleteColumns", "deleteRows", "sort", "autoFilter", "pivotTables" ]; function Lv(e) { var t = { sheet: 1 }; return bv.forEach(function(r) { e[r] != null && e[r] && (t[r] = "1"); }), Pv.forEach(function(r) { e[r] != null && !e[r] && (t[r] = "0"); }), e.password && (t.password = Rn(e.password).toString(16).toUpperCase()), ae("sheetProtection", null, t); } function Bv(e, t, r) { for (var a = Array.isArray(e), n = 0; n != t.length; ++n) { var i = me(Pe(t[n]), !0); if (!i.ref) return; var s = ((r || {})["!id"] || [])[i.id]; s ? (i.Target = s.Target, i.location && (i.Target += "#" + Ce(i.location))) : (i.Target = "#" + Ce(i.location), s = { Target: i.Target, TargetMode: "Internal" }), i.Rel = s, i.tooltip && (i.Tooltip = i.tooltip, delete i.tooltip); for (var f = De(i.ref), c = f.s.r; c <= f.e.r; ++c) for (var o = f.s.c; o <= f.e.c; ++o) { var l = pe({ c: o, r: c }); a ? (e[c] || (e[c] = []), e[c][o] || (e[c][o] = { t: "z", v: void 0 }), e[c][o].l = i) : (e[l] || (e[l] = { t: "z", v: void 0 }), e[l].l = i); } } } function Mv(e) { var t = {}; return ["left", "right", "top", "bottom", "header", "footer"].forEach(function(r) { e[r] && (t[r] = parseFloat(e[r])); }), t; } function Uv(e) { return bt(e), ae("pageMargins", null, e); } function Wv(e, t) { for (var r = !1, a = 0; a != t.length; ++a) { var n = me(t[a], !0); n.hidden && (n.hidden = Me(n.hidden)); var i = parseInt(n.min, 10) - 1, s = parseInt(n.max, 10) - 1; for (n.outlineLevel && (n.level = +n.outlineLevel || 0), delete n.min, delete n.max, n.width = +n.width, !r && n.width && (r = !0, Nn(n.width)), kt(n); i <= s; ) e[i++] = We(n); } } function Hv(e, t) { for (var r = [""], a, n = 0; n != t.length; ++n) (a = t[n]) && (r[r.length] = ae("col", null, A0(n, a))); return r[r.length] = "", r.join(""); } function Vv(e) { var t = { ref: (e.match(/ref="([^"]*)"/) || [])[1] }; return t; } function Gv(e, t, r, a) { var n = typeof e.ref == "string" ? e.ref : we(e.ref); r.Workbook || (r.Workbook = { Sheets: [] }), r.Workbook.Names || (r.Workbook.Names = []); var i = r.Workbook.Names, s = yr(n); s.s.r == s.e.r && (s.e.r = yr(t["!ref"]).e.r, n = we(s)); for (var f = 0; f < i.length; ++f) { var c = i[f]; if (c.Name == "_xlnm._FilterDatabase" && c.Sheet == a) { c.Ref = "'" + r.SheetNames[a] + "'!" + n; break; } } return f == i.length && i.push({ Name: "_xlnm._FilterDatabase", Sheet: a, Ref: "'" + r.SheetNames[a] + "'!" + n }), ae("autoFilter", null, { ref: n }); } var Xv = /<(?:\w:)?sheetView(?:[^>a-z][^>]*)?\/?>/; function zv(e, t) { t.Views || (t.Views = [{}]), (e.match(Xv) || []).forEach(function(r, a) { var n = me(r); t.Views[a] || (t.Views[a] = {}), +n.zoomScale && (t.Views[a].zoom = +n.zoomScale), Me(n.rightToLeft) && (t.Views[a].RTL = !0); }); } function jv(e, t, r, a) { var n = { workbookViewId: "0" }; return (((a || {}).Workbook || {}).Views || [])[0] && (n.rightToLeft = a.Workbook.Views[0].RTL ? "1" : "0"), ae("sheetViews", ae("sheetView", null, n), {}); } function $v(e, t, r, a) { if (e.c && r["!comments"].push([t, e.c]), e.v === void 0 && typeof e.f != "string" || e.t === "z" && !e.f) return ""; var n = "", i = e.t, s = e.v; if (e.t !== "z") switch (e.t) { case "b": n = e.v ? "1" : "0"; break; case "n": n = "" + e.v; break; case "e": n = xt[e.v]; break; case "d": a && a.cellDates ? n = Ue(e.v, -1).toISOString() : (e = We(e), e.t = "n", n = "" + (e.v = nr(Ue(e.v)))), typeof e.z > "u" && (e.z = de[14]); break; default: n = e.v; break; } var f = lr("v", Ne(n)), c = { r: t }, o = At(a.cellXfs, e, a); switch (o !== 0 && (c.s = o), e.t) { case "n": break; case "d": c.t = "d"; break; case "b": c.t = "b"; break; case "e": c.t = "e"; break; case "z": break; default: if (e.v == null) { delete e.t; break; } if (e.v.length > 32767) throw new Error("Text length must not exceed 32767 characters"); if (a && a.bookSST) { f = lr("v", "" + Mn(a.Strings, e.v, a.revStrings)), c.t = "s"; break; } c.t = "str"; break; } if (e.t != i && (e.t = i, e.v = s), typeof e.f == "string" && e.f) { var l = e.F && e.F.slice(0, t.length) == t ? { t: "array", ref: e.F } : null; f = ae("f", Ne(e.f), l) + (e.v != null ? f : ""); } return e.l && r["!links"].push([t, e.l]), e.D && (c.cm = 1), ae("c", f, c); } var Kv = /* @__PURE__ */ function() { var e = /<(?:\w+:)?c[ \/>]/, t = /<\/(?:\w+:)?row>/, r = /r=["']([^"']*)["']/, a = /<(?:\w+:)?is>([\S\s]*?)<\/(?:\w+:)?is>/, n = /ref=["']([^"']*)["']/, i = Da("v"), s = Da("f"); return function(c, o, l, u, h, d) { for (var v = 0, x = "", p = [], w = [], y = 0, g = 0, C = 0, b = "", O, S, B = 0, R = 0, X, G, L = 0, J = 0, le = Array.isArray(d.CellXf), ie, he = [], ce = [], be = Array.isArray(o), V = [], ve = {}, ge = !1, D = !!l.sheetStubs, P = c.split(t), I = 0, N = P.length; I != N; ++I) { x = P[I].trim(); var K = x.length; if (K !== 0) { var re = 0; e: for (v = 0; v < K; ++v) switch ( /*x.charCodeAt(ri)*/ x[v] ) { case ">": if ( /*x.charCodeAt(ri-1) != 47*/ x[v - 1] != "/" ) { ++v; break e; } if (l && l.cellStyles) { if (S = me(x.slice(re, v), !0), B = S.r != null ? parseInt(S.r, 10) : B + 1, R = -1, l.sheetRows && l.sheetRows < B) continue; ve = {}, ge = !1, S.ht && (ge = !0, ve.hpt = parseFloat(S.ht), ve.hpx = ia(ve.hpt)), S.hidden == "1" && (ge = !0, ve.hidden = !0), S.outlineLevel != null && (ge = !0, ve.level = +S.outlineLevel), ge && (V[B - 1] = ve); } break; case "<": re = v; break; } if (re >= v) break; if (S = me(x.slice(re, v), !0), B = S.r != null ? parseInt(S.r, 10) : B + 1, R = -1, !(l.sheetRows && l.sheetRows < B)) { u.s.r > B - 1 && (u.s.r = B - 1), u.e.r < B - 1 && (u.e.r = B - 1), l && l.cellStyles && (ve = {}, ge = !1, S.ht && (ge = !0, ve.hpt = parseFloat(S.ht), ve.hpx = ia(ve.hpt)), S.hidden == "1" && (ge = !0, ve.hidden = !0), S.outlineLevel != null && (ge = !0, ve.level = +S.outlineLevel), ge && (V[B - 1] = ve)), p = x.slice(v).split(e); for (var te = 0; te != p.length && p[te].trim().charAt(0) == "<"; ++te) ; for (p = p.slice(te), v = 0; v != p.length; ++v) if (x = p[v].trim(), x.length !== 0) { if (w = x.match(r), y = v, g = 0, C = 0, x = "" : "") + x, w != null && w.length === 2) { for (y = 0, b = w[1], g = 0; g != b.length && !((C = b.charCodeAt(g) - 64) < 1 || C > 26); ++g) y = 26 * y + C; --y, R = y; } else ++R; for (g = 0; g != x.length && x.charCodeAt(g) !== 62; ++g) ; if (++g, S = me(x.slice(0, g), !0), S.r || (S.r = pe({ r: B - 1, c: R })), b = x.slice(g), O = { t: "" }, (w = b.match(i)) != null && /*::cref != null && */ w[1] !== "" && (O.v = Ce(w[1])), l.cellFormula) { if ((w = b.match(s)) != null && /*::cref != null && */ w[1] !== "") { if (O.f = Ce(Pe(w[1])).replace(/\r\n/g, ` `), l.xlfn || (O.f = zi(O.f)), /*::cref != null && cref[0] != null && */ w[0].indexOf('t="array"') > -1) O.F = (b.match(n) || [])[1], O.F.indexOf(":") > -1 && he.push([De(O.F), O.F]); else if ( /*::cref != null && cref[0] != null && */ w[0].indexOf('t="shared"') > -1 ) { G = me(w[0]); var Q = Ce(Pe(w[1])); l.xlfn || (Q = zi(Q)), ce[parseInt(G.si, 10)] = [G, Q, S.r]; } } else (w = b.match(/]*\/>/)) && (G = me(w[0]), ce[G.si] && (O.f = Xx(ce[G.si][1], ce[G.si][2], S.r))); var q = Xe(S.r); for (g = 0; g < he.length; ++g) q.r >= he[g][0].s.r && q.r <= he[g][0].e.r && q.c >= he[g][0].s.c && q.c <= he[g][0].e.c && (O.F = he[g][1]); } if (S.t == null && O.v === void 0) if (O.f || O.F) O.v = 0, O.t = "n"; else if (D) O.t = "z"; else continue; else O.t = S.t || "n"; switch (u.s.c > R && (u.s.c = R), u.e.c < R && (u.e.c = R), O.t) { case "n": if (O.v == "" || O.v == null) { if (!D) continue; O.t = "z"; } else O.v = parseFloat(O.v); break; case "s": if (typeof O.v > "u") { if (!D) continue; O.t = "z"; } else X = Ta[parseInt(O.v, 10)], O.v = X.t, O.r = X.r, l.cellHTML && (O.h = X.h); break; case "str": O.t = "s", O.v = O.v != null ? Pe(O.v) : "", l.cellHTML && (O.h = mn(O.v)); break; case "inlineStr": w = b.match(a), O.t = "s", w != null && (X = In(w[1])) ? (O.v = X.t, l.cellHTML && (O.h = X.h)) : O.v = ""; break; case "b": O.v = Me(O.v); break; case "d": l.cellDates ? O.v = Ue(O.v, 1) : (O.v = nr(Ue(O.v, 1)), O.t = "n"); break; case "e": (!l || l.cellText !== !1) && (O.w = O.v), O.v = Zs[O.v]; break; } if (L = J = 0, ie = null, le && S.s !== void 0 && (ie = d.CellXf[S.s], ie != null && (ie.numFmtId != null && (L = ie.numFmtId), l.cellStyles && ie.fillId != null && (J = ie.fillId))), Jf(O, L, J, l, h, d), l.cellDates && le && O.t == "n" && Ht(de[L]) && (O.t = "d", O.v = T0(O.v)), S.cm && l.xlmeta) { var ke = (l.xlmeta.Cell || [])[+S.cm - 1]; ke && ke.type == "XLDAPR" && (O.D = !0); } if (be) { var A = Xe(S.r); o[A.r] || (o[A.r] = []), o[A.r][A.c] = O; } else o[S.r] = O; } } } } V.length > 0 && (o["!rows"] = V); }; }(); function Yv(e, t, r, a) { var n = [], i = [], s = De(e["!ref"]), f = "", c, o = "", l = [], u = 0, h = 0, d = e["!rows"], v = Array.isArray(e), x = { r: o }, p, w = -1; for (h = s.s.c; h <= s.e.c; ++h) l[h] = Ge(h); for (u = s.s.r; u <= s.e.r; ++u) { for (i = [], o = qe(u), h = s.s.c; h <= s.e.c; ++h) { c = l[h] + o; var y = v ? (e[u] || [])[h] : e[c]; y !== void 0 && (f = $v(y, c, e, t)) != null && i.push(f); } (i.length > 0 || d && d[u]) && (x = { r: o }, d && d[u] && (p = d[u], p.hidden && (x.hidden = 1), w = -1, p.hpx ? w = La(p.hpx) : p.hpt && (w = p.hpt), w > -1 && (x.ht = w, x.customHeight = 1), p.level && (x.outlineLevel = p.level)), n[n.length] = ae("row", i.join(""), x)); } if (d) for (; u < d.length; ++u) d && d[u] && (x = { r: u + 1 }, p = d[u], p.hidden && (x.hidden = 1), w = -1, p.hpx ? w = La(p.hpx) : p.hpt && (w = p.hpt), w > -1 && (x.ht = w, x.customHeight = 1), p.level && (x.outlineLevel = p.level), n[n.length] = ae("row", "", x)); return n.join(""); } function Zf(e, t, r, a) { var n = [Ze, ae("worksheet", null, { xmlns: Vt[0], "xmlns:r": ar.r })], i = r.SheetNames[e], s = 0, f = "", c = r.Sheets[i]; c == null && (c = {}); var o = c["!ref"] || "A1", l = De(o); if (l.e.c > 16383 || l.e.r > 1048575) { if (t.WTF) throw new Error("Range " + o + " exceeds format limit A1:XFD1048576"); l.e.c = Math.min(l.e.c, 16383), l.e.r = Math.min(l.e.c, 1048575), o = we(l); } a || (a = {}), c["!comments"] = []; var u = []; Nv(c, r, e, t, n), n[n.length] = ae("dimension", null, { ref: o }), n[n.length] = jv(c, t, e, r), t.sheetFormat && (n[n.length] = ae("sheetFormatPr", null, { defaultRowHeight: t.sheetFormat.defaultRowHeight || "16", baseColWidth: t.sheetFormat.baseColWidth || "10", outlineLevelRow: t.sheetFormat.outlineLevelRow || "7" })), c["!cols"] != null && c["!cols"].length > 0 && (n[n.length] = Hv(c, c["!cols"])), n[s = n.length] = "", c["!links"] = [], c["!ref"] != null && (f = Yv(c, t), f.length > 0 && (n[n.length] = f)), n.length > s + 1 && (n[n.length] = "", n[s] = n[s].replace("/>", ">")), c["!protect"] && (n[n.length] = Lv(c["!protect"])), c["!autofilter"] != null && (n[n.length] = Gv(c["!autofilter"], c, r, e)), c["!merges"] != null && c["!merges"].length > 0 && (n[n.length] = Iv(c["!merges"])); var h = -1, d, v = -1; return ( /*::(*/ c["!links"].length > 0 && (n[n.length] = "", c["!links"].forEach(function(x) { x[1].Target && (d = { ref: x[0] }, x[1].Target.charAt(0) != "#" && (v = Re(a, -1, Ne(x[1].Target).replace(/#.*$/, ""), Fe.HLINK), d["r:id"] = "rId" + v), (h = x[1].Target.indexOf("#")) > -1 && (d.location = Ne(x[1].Target.slice(h + 1))), x[1].Tooltip && (d.tooltip = Ne(x[1].Tooltip)), n[n.length] = ae("hyperlink", null, d)); }), n[n.length] = ""), delete c["!links"], c["!margins"] != null && (n[n.length] = Uv(c["!margins"])), (!t || t.ignoreEC || t.ignoreEC == null) && (n[n.length] = lr("ignoredErrors", ae("ignoredError", null, { numberStoredAsText: 1, sqref: o }))), u.length > 0 && (v = Re(a, -1, "../drawings/drawing" + (e + 1) + ".xml", Fe.DRAW), n[n.length] = ae("drawing", null, { "r:id": "rId" + v }), c["!drawing"] = u), c["!comments"].length > 0 && (v = Re(a, -1, "../drawings/vmlDrawing" + (e + 1) + ".vml", Fe.VML), n[n.length] = ae("legacyDrawing", null, { "r:id": "rId" + v }), c["!legacy"] = v), n.length > 1 && (n[n.length] = "", n[1] = n[1].replace("/>", ">")), n.join("") ); } function Jv(e, t) { var r = {}, a = e.l + t; r.r = e.read_shift(4), e.l += 4; var n = e.read_shift(2); e.l += 1; var i = e.read_shift(1); return e.l = a, i & 7 && (r.level = i & 7), i & 16 && (r.hidden = !0), i & 32 && (r.hpt = n / 20), r; } function qv(e, t, r) { var a = z(145), n = (r["!rows"] || [])[e] || {}; a.write_shift(4, e), a.write_shift(4, 0); var i = 320; n.hpx ? i = La(n.hpx) * 20 : n.hpt && (i = n.hpt * 20), a.write_shift(2, i), a.write_shift(1, 0); var s = 0; n.level && (s |= n.level), n.hidden && (s |= 16), (n.hpx || n.hpt) && (s |= 32), a.write_shift(1, s), a.write_shift(1, 0); var f = 0, c = a.l; a.l += 4; for (var o = { r: e, c: 0 }, l = 0; l < 16; ++l) if (!(t.s.c > l + 1 << 10 || t.e.c < l << 10)) { for (var u = -1, h = -1, d = l << 10; d < l + 1 << 10; ++d) { o.c = d; var v = Array.isArray(r) ? (r[o.r] || [])[o.c] : r[pe(o)]; v && (u < 0 && (u = d), h = d); } u < 0 || (++f, a.write_shift(4, u), a.write_shift(4, h)); } var x = a.l; return a.l = c, a.write_shift(4, f), a.l = x, a.length > a.l ? a.slice(0, a.l) : a; } function Zv(e, t, r, a) { var n = qv(a, r, t); (n.length > 17 || (t["!rows"] || [])[a]) && Y(e, 0, n); } var Qv = jt, ep = ca; function rp() { } function tp(e, t) { var r = {}, a = e[e.l]; return ++e.l, r.above = !(a & 64), r.left = !(a & 128), e.l += 18, r.name = il(e), r; } function ap(e, t, r) { r == null && (r = z(84 + 4 * e.length)); var a = 192; t && (t.above && (a &= -65), t.left && (a &= -129)), r.write_shift(1, a); for (var n = 1; n < 3; ++n) r.write_shift(1, 0); return d0({ auto: 1 }, r), r.write_shift(-4, -1), r.write_shift(-4, -1), $s(e, r), r.slice(0, r.l); } function np(e) { var t = Gr(e); return [t]; } function ip(e, t, r) { return r == null && (r = z(8)), Gt(t, r); } function sp(e) { var t = Xt(e); return [t]; } function fp(e, t, r) { return r == null && (r = z(4)), zt(t, r); } function cp(e) { var t = Gr(e), r = e.read_shift(1); return [t, r, "b"]; } function op(e, t, r) { return r == null && (r = z(9)), Gt(t, r), r.write_shift(1, e.v ? 1 : 0), r; } function lp(e) { var t = Xt(e), r = e.read_shift(1); return [t, r, "b"]; } function up(e, t, r) { return r == null && (r = z(5)), zt(t, r), r.write_shift(1, e.v ? 1 : 0), r; } function hp(e) { var t = Gr(e), r = e.read_shift(1); return [t, r, "e"]; } function xp(e, t, r) { return r == null && (r = z(9)), Gt(t, r), r.write_shift(1, e.v), r; } function dp(e) { var t = Xt(e), r = e.read_shift(1); return [t, r, "e"]; } function vp(e, t, r) { return r == null && (r = z(8)), zt(t, r), r.write_shift(1, e.v), r.write_shift(2, 0), r.write_shift(1, 0), r; } function pp(e) { var t = Gr(e), r = e.read_shift(4); return [t, r, "s"]; } function mp(e, t, r) { return r == null && (r = z(12)), Gt(t, r), r.write_shift(4, t.v), r; } function gp(e) { var t = Xt(e), r = e.read_shift(4); return [t, r, "s"]; } function _p(e, t, r) { return r == null && (r = z(8)), zt(t, r), r.write_shift(4, t.v), r; } function wp(e) { var t = Gr(e), r = pr(e); return [t, r, "n"]; } function Ep(e, t, r) { return r == null && (r = z(16)), Gt(t, r), Bt(e.v, r), r; } function Qf(e) { var t = Xt(e), r = pr(e); return [t, r, "n"]; } function kp(e, t, r) { return r == null && (r = z(12)), zt(t, r), Bt(e.v, r), r; } function Tp(e) { var t = Gr(e), r = yn(e); return [t, r, "n"]; } function Sp(e, t, r) { return r == null && (r = z(12)), Gt(t, r), Ks(e.v, r), r; } function Fp(e) { var t = Xt(e), r = yn(e); return [t, r, "n"]; } function yp(e, t, r) { return r == null && (r = z(8)), zt(t, r), Ks(e.v, r), r; } function Ap(e) { var t = Gr(e), r = Tn(e); return [t, r, "is"]; } function Cp(e) { var t = Gr(e), r = mr(e); return [t, r, "str"]; } function Dp(e, t, r) { return r == null && (r = z(12 + 4 * e.v.length)), Gt(t, r), fr(e.v, r), r.length > r.l ? r.slice(0, r.l) : r; } function Op(e) { var t = Xt(e), r = mr(e); return [t, r, "str"]; } function Ip(e, t, r) { return r == null && (r = z(8 + 4 * e.v.length)), zt(t, r), fr(e.v, r), r.length > r.l ? r.slice(0, r.l) : r; } function Rp(e, t, r) { var a = e.l + t, n = Gr(e); n.r = r["!row"]; var i = e.read_shift(1), s = [n, i, "b"]; if (r.cellFormula) { e.l += 2; var f = y0(e, a - e.l, r); s[3] = dr(f, null, n, r.supbooks, r); } else e.l = a; return s; } function Np(e, t, r) { var a = e.l + t, n = Gr(e); n.r = r["!row"]; var i = e.read_shift(1), s = [n, i, "e"]; if (r.cellFormula) { e.l += 2; var f = y0(e, a - e.l, r); s[3] = dr(f, null, n, r.supbooks, r); } else e.l = a; return s; } function bp(e, t, r) { var a = e.l + t, n = Gr(e); n.r = r["!row"]; var i = pr(e), s = [n, i, "n"]; if (r.cellFormula) { e.l += 2; var f = y0(e, a - e.l, r); s[3] = dr(f, null, n, r.supbooks, r); } else e.l = a; return s; } function Pp(e, t, r) { var a = e.l + t, n = Gr(e); n.r = r["!row"]; var i = mr(e), s = [n, i, "str"]; if (r.cellFormula) { e.l += 2; var f = y0(e, a - e.l, r); s[3] = dr(f, null, n, r.supbooks, r); } else e.l = a; return s; } var Lp = jt, Bp = ca; function Mp(e, t) { return t == null && (t = z(4)), t.write_shift(4, e), t; } function Up(e, t) { var r = e.l + t, a = jt(e), n = Sn(e), i = mr(e), s = mr(e), f = mr(e); e.l = r; var c = { rfx: a, relId: n, loc: i, display: f }; return s && (c.Tooltip = s), c; } function Wp(e, t) { var r = z(50 + 4 * (e[1].Target.length + (e[1].Tooltip || "").length)); ca({ s: Xe(e[0]), e: Xe(e[0]) }, r), Fn("rId" + t, r); var a = e[1].Target.indexOf("#"), n = a == -1 ? "" : e[1].Target.slice(a + 1); return fr(n || "", r), fr(e[1].Tooltip || "", r), fr("", r), r.slice(0, r.l); } function Hp() { } function Vp(e, t, r) { var a = e.l + t, n = Ys(e), i = e.read_shift(1), s = [n]; if (s[2] = i, r.cellFormula) { var f = hv(e, a - e.l, r); s[1] = f; } else e.l = a; return s; } function Gp(e, t, r) { var a = e.l + t, n = jt(e), i = [n]; if (r.cellFormula) { var s = dv(e, a - e.l, r); i[1] = s, e.l = a; } else e.l = a; return i; } function Xp(e, t, r) { r == null && (r = z(18)); var a = A0(e, t); r.write_shift(-4, e), r.write_shift(-4, e), r.write_shift(4, (a.width || 10) * 256), r.write_shift( 4, 0 /*ixfe*/ ); var n = 0; return t.hidden && (n |= 1), typeof a.width == "number" && (n |= 2), t.level && (n |= t.level << 8), r.write_shift(2, n), r; } var ec = ["left", "right", "top", "bottom", "header", "footer"]; function zp(e) { var t = {}; return ec.forEach(function(r) { t[r] = pr(e); }), t; } function jp(e, t) { return t == null && (t = z(6 * 8)), bt(e), ec.forEach(function(r) { Bt(e[r], t); }), t; } function $p(e) { var t = e.read_shift(2); return e.l += 28, { RTL: t & 32 }; } function Kp(e, t, r) { r == null && (r = z(30)); var a = 924; return (((t || {}).Views || [])[0] || {}).RTL && (a |= 32), r.write_shift(2, a), r.write_shift(4, 0), r.write_shift(4, 0), r.write_shift(4, 0), r.write_shift(1, 0), r.write_shift(1, 0), r.write_shift(2, 0), r.write_shift(2, 100), r.write_shift(2, 0), r.write_shift(2, 0), r.write_shift(2, 0), r.write_shift(4, 0), r; } function Yp(e) { var t = z(24); return t.write_shift(4, 4), t.write_shift(4, 1), ca(e, t), t; } function Jp(e, t) { return t == null && (t = z(16 * 4 + 2)), t.write_shift(2, e.password ? Rn(e.password) : 0), t.write_shift(4, 1), [ ["objects", !1], // fObjects ["scenarios", !1], // fScenarios ["formatCells", !0], // fFormatCells ["formatColumns", !0], // fFormatColumns ["formatRows", !0], // fFormatRows ["insertColumns", !0], // fInsertColumns ["insertRows", !0], // fInsertRows ["insertHyperlinks", !0], // fInsertHyperlinks ["deleteColumns", !0], // fDeleteColumns ["deleteRows", !0], // fDeleteRows ["selectLockedCells", !1], // fSelLockedCells ["sort", !0], // fSort ["autoFilter", !0], // fAutoFilter ["pivotTables", !0], // fPivotTables ["selectUnlockedCells", !1] // fSelUnlockedCells ].forEach(function(r) { r[1] ? t.write_shift(4, e[r[0]] != null && !e[r[0]] ? 1 : 0) : t.write_shift(4, e[r[0]] != null && e[r[0]] ? 0 : 1); }), t; } function qp() { } function Zp() { } function Qp(e, t, r, a, n, i, s) { if (!e) return e; var f = t || {}; a || (a = { "!id": {} }); var c = f.dense ? [] : {}, o, l = { s: { r: 2e6, c: 2e6 }, e: { r: 0, c: 0 } }, u = !1, h = !1, d, v, x, p, w, y, g, C, b, O = []; f.biff = 12, f["!row"] = 0; var S = 0, B = !1, R = [], X = {}, G = f.supbooks || /*::(*/ n.supbooks || [[]]; if (G.sharedf = X, G.arrayf = R, G.SheetNames = n.SheetNames || n.Sheets.map(function(be) { return be.name; }), !f.supbooks && (f.supbooks = G, n.Names)) for (var L = 0; L < n.Names.length; ++L) G[0][L + 1] = n.Names[L]; var J = [], le = [], ie = !1; Ba[16] = { n: "BrtShortReal", f: Qf }; var he; if (ht(e, function(V, ve, ge) { if (!h) switch (ge) { case 148: o = V; break; case 0: d = V, f.sheetRows && f.sheetRows <= d.r && (h = !0), C = qe(p = d.r), f["!row"] = d.r, (V.hidden || V.hpt || V.level != null) && (V.hpt && (V.hpx = ia(V.hpt)), le[V.r] = V); break; case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 13: case 14: case 15: case 16: case 17: case 18: case 62: switch (v = { t: V[2] }, V[2]) { case "n": v.v = V[1]; break; case "s": g = Ta[V[1]], v.v = g.t, v.r = g.r; break; case "b": v.v = !!V[1]; break; case "e": v.v = V[1], f.cellText !== !1 && (v.w = xt[v.v]); break; case "str": v.t = "s", v.v = V[1]; break; case "is": v.t = "s", v.v = V[1].t; break; } if ((x = s.CellXf[V[0].iStyleRef]) && Jf(v, x.numFmtId, null, f, i, s), w = V[0].c == -1 ? w + 1 : V[0].c, f.dense ? (c[p] || (c[p] = []), c[p][w] = v) : c[Ge(w) + C] = v, f.cellFormula) { for (B = !1, S = 0; S < R.length; ++S) { var D = R[S]; d.r >= D[0].s.r && d.r <= D[0].e.r && w >= D[0].s.c && w <= D[0].e.c && (v.F = we(D[0]), B = !0); } !B && V.length > 3 && (v.f = V[3]); } if (l.s.r > d.r && (l.s.r = d.r), l.s.c > w && (l.s.c = w), l.e.r < d.r && (l.e.r = d.r), l.e.c < w && (l.e.c = w), f.cellDates && x && v.t == "n" && Ht(de[x.numFmtId])) { var P = _t(v.v); P && (v.t = "d", v.v = new Date(P.y, P.m - 1, P.d, P.H, P.M, P.S, P.u)); } he && (he.type == "XLDAPR" && (v.D = !0), he = void 0); break; case 1: case 12: if (!f.sheetStubs || u) break; v = { t: "z", v: void 0 }, w = V[0].c == -1 ? w + 1 : V[0].c, f.dense ? (c[p] || (c[p] = []), c[p][w] = v) : c[Ge(w) + C] = v, l.s.r > d.r && (l.s.r = d.r), l.s.c > w && (l.s.c = w), l.e.r < d.r && (l.e.r = d.r), l.e.c < w && (l.e.c = w), he && (he.type == "XLDAPR" && (v.D = !0), he = void 0); break; case 176: O.push(V); break; case 49: he = ((f.xlmeta || {}).Cell || [])[V - 1]; break; case 494: var I = a["!id"][V.relId]; for (I ? (V.Target = I.Target, V.loc && (V.Target += "#" + V.loc), V.Rel = I) : V.relId == "" && (V.Target = "#" + V.loc), p = V.rfx.s.r; p <= V.rfx.e.r; ++p) for (w = V.rfx.s.c; w <= V.rfx.e.c; ++w) f.dense ? (c[p] || (c[p] = []), c[p][w] || (c[p][w] = { t: "z", v: void 0 }), c[p][w].l = V) : (y = pe({ c: w, r: p }), c[y] || (c[y] = { t: "z", v: void 0 }), c[y].l = V); break; case 426: if (!f.cellFormula) break; R.push(V), b = f.dense ? c[p][w] : c[Ge(w) + C], b.f = dr(V[1], l, { r: d.r, c: w }, G, f), b.F = we(V[0]); break; case 427: if (!f.cellFormula) break; X[pe(V[0].s)] = V[1], b = f.dense ? c[p][w] : c[Ge(w) + C], b.f = dr(V[1], l, { r: d.r, c: w }, G, f); break; case 60: if (!f.cellStyles) break; for (; V.e >= V.s; ) J[V.e--] = { width: V.w / 256, hidden: !!(V.flags & 1), level: V.level }, ie || (ie = !0, Nn(V.w / 256)), kt(J[V.e + 1]); break; case 161: c["!autofilter"] = { ref: we(V) }; break; case 476: c["!margins"] = V; break; case 147: n.Sheets[r] || (n.Sheets[r] = {}), V.name && (n.Sheets[r].CodeName = V.name), (V.above || V.left) && (c["!outline"] = { above: V.above, left: V.left }); break; case 137: n.Views || (n.Views = [{}]), n.Views[0] || (n.Views[0] = {}), V.RTL && (n.Views[0].RTL = !0); break; case 485: break; case 64: case 1053: break; case 151: break; case 152: case 175: case 644: case 625: case 562: case 396: case 1112: case 1146: case 471: case 1050: case 649: case 1105: case 589: case 607: case 564: case 1055: case 168: case 174: case 1180: case 499: case 507: case 550: case 171: case 167: case 1177: case 169: case 1181: case 551: case 552: case 661: case 639: case 478: case 537: case 477: case 536: case 1103: case 680: case 1104: case 1024: case 663: case 535: case 678: case 504: case 1043: case 428: case 170: case 3072: case 50: case 2070: case 1045: break; case 35: u = !0; break; case 36: u = !1; break; case 37: u = !0; break; case 38: u = !1; break; default: if (!ve.T) { if (!u || f.WTF) throw new Error("Unexpected record 0x" + ge.toString(16)); } } }, f), delete f.supbooks, delete f["!row"], !c["!ref"] && (l.s.r < 2e6 || o && (o.e.r > 0 || o.e.c > 0 || o.s.r > 0 || o.s.c > 0)) && (c["!ref"] = we(o || l)), f.sheetRows && c["!ref"]) { var ce = De(c["!ref"]); f.sheetRows <= +ce.e.r && (ce.e.r = f.sheetRows - 1, ce.e.r > l.e.r && (ce.e.r = l.e.r), ce.e.r < ce.s.r && (ce.s.r = ce.e.r), ce.e.c > l.e.c && (ce.e.c = l.e.c), ce.e.c < ce.s.c && (ce.s.c = ce.e.c), c["!fullref"] = c["!ref"], c["!ref"] = we(ce)); } return O.length > 0 && (c["!merges"] = O), J.length > 0 && (c["!cols"] = J), le.length > 0 && (c["!rows"] = le), c; } function e2(e, t, r, a, n, i, s) { if (t.v === void 0) return !1; var f = ""; switch (t.t) { case "b": f = t.v ? "1" : "0"; break; case "d": t = We(t), t.z = t.z || de[14], t.v = nr(Ue(t.v)), t.t = "n"; break; case "n": case "e": f = "" + t.v; break; default: f = t.v; break; } var c = { r, c: a }; switch (c.s = At(n.cellXfs, t, n), t.l && i["!links"].push([pe(c), t.l]), t.c && i["!comments"].push([pe(c), t.c]), t.t) { case "s": case "str": return n.bookSST ? (f = Mn(n.Strings, t.v, n.revStrings), c.t = "s", c.v = f, s ? Y(e, 18, _p(t, c)) : Y(e, 7, mp(t, c))) : (c.t = "str", s ? Y(e, 17, Ip(t, c)) : Y(e, 6, Dp(t, c))), !0; case "n": return t.v == (t.v | 0) && t.v > -1e3 && t.v < 1e3 ? s ? Y(e, 13, yp(t, c)) : Y(e, 2, Sp(t, c)) : s ? Y(e, 16, kp(t, c)) : Y(e, 5, Ep(t, c)), !0; case "b": return c.t = "b", s ? Y(e, 15, up(t, c)) : Y(e, 4, op(t, c)), !0; case "e": return c.t = "e", s ? Y(e, 14, vp(t, c)) : Y(e, 3, xp(t, c)), !0; } return s ? Y(e, 12, fp(t, c)) : Y(e, 1, ip(t, c)), !0; } function r2(e, t, r, a) { var n = De(t["!ref"] || "A1"), i, s = "", f = []; Y( e, 145 /* BrtBeginSheetData */ ); var c = Array.isArray(t), o = n.e.r; t["!rows"] && (o = Math.max(n.e.r, t["!rows"].length - 1)); for (var l = n.s.r; l <= o; ++l) { s = qe(l), Zv(e, t, n, l); var u = !1; if (l <= n.e.r) for (var h = n.s.c; h <= n.e.c; ++h) { l === n.s.r && (f[h] = Ge(h)), i = f[h] + s; var d = c ? (t[l] || [])[h] : t[i]; if (!d) { u = !1; continue; } u = e2(e, d, l, h, a, t, u); } } Y( e, 146 /* BrtEndSheetData */ ); } function t2(e, t) { !t || !t["!merges"] || (Y(e, 177, Mp(t["!merges"].length)), t["!merges"].forEach(function(r) { Y(e, 176, Bp(r)); }), Y( e, 178 /* BrtEndMergeCells */ )); } function a2(e, t) { !t || !t["!cols"] || (Y( e, 390 /* BrtBeginColInfos */ ), t["!cols"].forEach(function(r, a) { r && Y(e, 60, Xp(a, r)); }), Y( e, 391 /* BrtEndColInfos */ )); } function n2(e, t) { !t || !t["!ref"] || (Y( e, 648 /* BrtBeginCellIgnoreECs */ ), Y(e, 649, Yp(De(t["!ref"]))), Y( e, 650 /* BrtEndCellIgnoreECs */ )); } function i2(e, t, r) { t["!links"].forEach(function(a) { if (a[1].Target) { var n = Re(r, -1, a[1].Target.replace(/#.*$/, ""), Fe.HLINK); Y(e, 494, Wp(a, n)); } }), delete t["!links"]; } function s2(e, t, r, a) { if (t["!comments"].length > 0) { var n = Re(a, -1, "../drawings/vmlDrawing" + (r + 1) + ".vml", Fe.VML); Y(e, 551, Fn("rId" + n)), t["!legacy"] = n; } } function f2(e, t, r, a) { if (t["!autofilter"]) { var n = t["!autofilter"], i = typeof n.ref == "string" ? n.ref : we(n.ref); r.Workbook || (r.Workbook = { Sheets: [] }), r.Workbook.Names || (r.Workbook.Names = []); var s = r.Workbook.Names, f = yr(i); f.s.r == f.e.r && (f.e.r = yr(t["!ref"]).e.r, i = we(f)); for (var c = 0; c < s.length; ++c) { var o = s[c]; if (o.Name == "_xlnm._FilterDatabase" && o.Sheet == a) { o.Ref = "'" + r.SheetNames[a] + "'!" + i; break; } } c == s.length && s.push({ Name: "_xlnm._FilterDatabase", Sheet: a, Ref: "'" + r.SheetNames[a] + "'!" + i }), Y(e, 161, ca(De(i))), Y( e, 162 /* BrtEndAFilter */ ); } } function c2(e, t, r) { Y( e, 133 /* BrtBeginWsViews */ ), Y(e, 137, Kp(t, r)), Y( e, 138 /* BrtEndWsView */ ), Y( e, 134 /* BrtEndWsViews */ ); } function o2(e, t) { t["!protect"] && Y(e, 535, Jp(t["!protect"])); } function l2(e, t, r, a) { var n = Fr(), i = r.SheetNames[e], s = r.Sheets[i] || {}, f = i; try { r && r.Workbook && (f = r.Workbook.Sheets[e].CodeName || f); } catch { } var c = De(s["!ref"] || "A1"); if (c.e.c > 16383 || c.e.r > 1048575) { if (t.WTF) throw new Error("Range " + (s["!ref"] || "A1") + " exceeds format limit A1:XFD1048576"); c.e.c = Math.min(c.e.c, 16383), c.e.r = Math.min(c.e.c, 1048575); } return s["!links"] = [], s["!comments"] = [], Y( n, 129 /* BrtBeginSheet */ ), (r.vbaraw || s["!outline"]) && Y(n, 147, ap(f, s["!outline"])), Y(n, 148, ep(c)), c2(n, s, r.Workbook), a2(n, s), r2(n, s, e, t), o2(n, s), f2(n, s, r, e), t2(n, s), i2(n, s, a), s["!margins"] && Y(n, 476, jp(s["!margins"])), (!t || t.ignoreEC || t.ignoreEC == null) && n2(n, s), s2(n, s, e, a), Y( n, 130 /* BrtEndSheet */ ), n.end(); } function u2(e) { var t = [], r = e.match(/^/), a; (e.match(/(.*?)<\/c:pt>/mg) || []).forEach(function(i) { var s = i.match(/(.*)<\/c:v><\/c:pt>/); s && (t[+s[1]] = r ? +s[2] : s[2]); }); var n = Ce((e.match(/([\s\S]*?)<\/c:formatCode>/) || ["", "General"])[1]); return (e.match(/(.*?)<\/c:f>/mg) || []).forEach(function(i) { a = i.replace(/<.*?>/g, ""); }), [t, n, a]; } function h2(e, t, r, a, n, i) { var s = i || { "!type": "chart" }; if (!e) return i; var f = 0, c = 0, o = "A", l = { s: { r: 2e6, c: 2e6 }, e: { r: 0, c: 0 } }; return (e.match(/[\s\S]*?<\/c:numCache>/gm) || []).forEach(function(u) { var h = u2(u); l.s.r = l.s.c = 0, l.e.c = f, o = Ge(f), h[0].forEach(function(d, v) { s[o + qe(v)] = { t: "n", v: d, z: h[1] }, c = v; }), l.e.r < c && (l.e.r = c), ++f; }), f > 0 && (s["!ref"] = we(l)), s; } function x2(e, t, r, a, n) { if (!e) return e; a || (a = { "!id": {} }); var i = { "!type": "chart", "!drawel": null, "!rel": "" }, s, f = e.match(qf); return f && Un(f[0], i, n, r), (s = e.match(/drawing r:id="(.*?)"/)) && (i["!rel"] = s[1]), a["!id"][i["!rel"]] && (i["!drawel"] = a["!id"][i["!rel"]]), i; } function d2(e, t) { e.l += 10; var r = mr(e); return { name: r }; } function v2(e, t, r, a, n) { if (!e) return e; a || (a = { "!id": {} }); var i = { "!type": "chart", "!drawel": null, "!rel": "" }, s = !1; return ht(e, function(c, o, l) { switch (l) { case 550: i["!rel"] = c; break; case 651: n.Sheets[r] || (n.Sheets[r] = {}), c.name && (n.Sheets[r].CodeName = c.name); break; case 562: case 652: case 669: case 679: case 551: case 552: case 476: case 3072: break; case 35: s = !0; break; case 36: s = !1; break; case 37: break; case 38: break; default: if (!(o.T > 0)) { if (!(o.T < 0)) { if (!s || t.WTF) throw new Error("Unexpected record 0x" + l.toString(16)); } } } }, t), a["!id"][i["!rel"]] && (i["!drawel"] = a["!id"][i["!rel"]]), i; } var Wn = [ ["allowRefreshQuery", !1, "bool"], ["autoCompressPictures", !0, "bool"], ["backupFile", !1, "bool"], ["checkCompatibility", !1, "bool"], ["CodeName", ""], ["date1904", !1, "bool"], ["defaultThemeVersion", 0, "int"], ["filterPrivacy", !1, "bool"], ["hidePivotFieldList", !1, "bool"], ["promptedSolutions", !1, "bool"], ["publishItems", !1, "bool"], ["refreshAllConnections", !1, "bool"], ["saveExternalLinkValues", !0, "bool"], ["showBorderUnselectedTables", !0, "bool"], ["showInkAnnotation", !0, "bool"], ["showObjects", "all"], ["showPivotChartFilter", !1, "bool"], ["updateLinks", "userSet"] ], p2 = [ ["activeTab", 0, "int"], ["autoFilterDateGrouping", !0, "bool"], ["firstSheet", 0, "int"], ["minimized", !1, "bool"], ["showHorizontalScroll", !0, "bool"], ["showSheetTabs", !0, "bool"], ["showVerticalScroll", !0, "bool"], ["tabRatio", 600, "int"], ["visibility", "visible"] //window{Height,Width}, {x,y}Window ], m2 = [ //['state', 'visible'] ], g2 = [ ["calcCompleted", "true"], ["calcMode", "auto"], ["calcOnSave", "true"], ["concurrentCalc", "true"], ["fullCalcOnLoad", "false"], ["fullPrecision", "true"], ["iterate", "false"], ["iterateCount", "100"], ["iterateDelta", "0.001"], ["refMode", "A1"] ]; function Ji(e, t) { for (var r = 0; r != e.length; ++r) for (var a = e[r], n = 0; n != t.length; ++n) { var i = t[n]; if (a[i[0]] == null) a[i[0]] = i[1]; else switch (i[2]) { case "bool": typeof a[i[0]] == "string" && (a[i[0]] = Me(a[i[0]])); break; case "int": typeof a[i[0]] == "string" && (a[i[0]] = parseInt(a[i[0]], 10)); break; } } } function qi(e, t) { for (var r = 0; r != t.length; ++r) { var a = t[r]; if (e[a[0]] == null) e[a[0]] = a[1]; else switch (a[2]) { case "bool": typeof e[a[0]] == "string" && (e[a[0]] = Me(e[a[0]])); break; case "int": typeof e[a[0]] == "string" && (e[a[0]] = parseInt(e[a[0]], 10)); break; } } } function rc(e) { qi(e.WBProps, Wn), qi(e.CalcPr, g2), Ji(e.WBView, p2), Ji(e.Sheets, m2), ta.date1904 = Me(e.WBProps.date1904); } function _2(e) { return !e.Workbook || !e.Workbook.WBProps ? "false" : Me(e.Workbook.WBProps.date1904) ? "true" : "false"; } var w2 = /* @__PURE__ */ "][*?/\\".split(""); function tc(e, t) { if (e.length > 31) { if (t) return !1; throw new Error("Sheet names cannot exceed 31 chars"); } var r = !0; return w2.forEach(function(a) { if (e.indexOf(a) != -1) { if (!t) throw new Error("Sheet name cannot contain : \\ / ? * [ ]"); r = !1; } }), r; } function E2(e, t, r) { e.forEach(function(a, n) { tc(a); for (var i = 0; i < n; ++i) if (a == e[i]) throw new Error("Duplicate Sheet Name: " + a); if (r) { var s = t && t[n] && t[n].CodeName || a; if (s.charCodeAt(0) == 95 && s.length > 22) throw new Error("Bad Code Name: Worksheet" + s); } }); } function k2(e) { if (!e || !e.SheetNames || !e.Sheets) throw new Error("Invalid Workbook"); if (!e.SheetNames.length) throw new Error("Workbook is empty"); var t = e.Workbook && e.Workbook.Sheets || []; E2(e.SheetNames, t, !!e.vbaraw); for (var r = 0; r < e.SheetNames.length; ++r) _v(e.Sheets[e.SheetNames[r]], e.SheetNames[r], r); } var T2 = /<\w+:workbook/; function S2(e, t) { if (!e) throw new Error("Could not find file"); var r = ( /*::(*/ { AppVersion: {}, WBProps: {}, WBView: [], Sheets: [], CalcPr: {}, Names: [], xmlns: "" } ), a = !1, n = "xmlns", i = {}, s = 0; if (e.replace(_r, function(c, o) { var l = me(c); switch (tt(l[0])) { case "": break; case "": case "": break; case "": break; case "": Wn.forEach(function(u) { if (l[u[0]] != null) switch (u[2]) { case "bool": r.WBProps[u[0]] = Me(l[u[0]]); break; case "int": r.WBProps[u[0]] = parseInt(l[u[0]], 10); break; default: r.WBProps[u[0]] = l[u[0]]; } }), l.codeName && (r.WBProps.CodeName = Pe(l.codeName)); break; case "": break; case "": break; case "": case "": break; case "": delete l[0], r.WBView.push(l); break; case "": break; case "": case "": break; case "": break; case "": break; case "": case "": break; case "": break; case "": case "": a = !1; break; case "": i.Ref = Ce(Pe(e.slice(s, o))), r.Names.push(i); break; case "": break; case "": delete l[0], r.CalcPr = l; break; case "": break; case "": case "": case "": break; case "": case "": case "": break; case "": case "": break; case "": break; case "": break; case "": case "": break; case "": case "": case "": break; case "": a = !1; break; case "": a = !0; break; case "": a = !1; break; case " 0, a = { codeName: "ThisWorkbook" }; e.Workbook && e.Workbook.WBProps && (Wn.forEach(function(f) { e.Workbook.WBProps[f[0]] != null && e.Workbook.WBProps[f[0]] != f[1] && (a[f[0]] = e.Workbook.WBProps[f[0]]); }), e.Workbook.WBProps.CodeName && (a.codeName = e.Workbook.WBProps.CodeName, delete a.CodeName)), t[t.length] = ae("workbookPr", null, a); var n = e.Workbook && e.Workbook.Sheets || [], i = 0; if (n && n[0] && n[0].Hidden) { for (t[t.length] = "", i = 0; i != e.SheetNames.length && !(!n[i] || !n[i].Hidden); ++i) ; i == e.SheetNames.length && (i = 0), t[t.length] = '', t[t.length] = ""; } for (t[t.length] = "", i = 0; i != e.SheetNames.length; ++i) { var s = { name: Ne(e.SheetNames[i].slice(0, 31)) }; if (s.sheetId = "" + (i + 1), s["r:id"] = "rId" + (i + 1), n[i]) switch (n[i].Hidden) { case 1: s.state = "hidden"; break; case 2: s.state = "veryHidden"; break; } t[t.length] = ae("sheet", null, s); } return t[t.length] = "", r && (t[t.length] = "", e.Workbook && e.Workbook.Names && e.Workbook.Names.forEach(function(f) { var c = { name: f.Name }; f.Comment && (c.comment = f.Comment), f.Sheet != null && (c.localSheetId = "" + f.Sheet), f.Hidden && (c.hidden = "1"), f.Ref && (t[t.length] = ae("definedName", Ne(f.Ref), c)); }), t[t.length] = ""), t.length > 2 && (t[t.length] = "", t[1] = t[1].replace("/>", ">")), t.join(""); } function F2(e, t) { var r = {}; return r.Hidden = e.read_shift(4), r.iTabID = e.read_shift(4), r.strRelID = $0(e), r.name = mr(e), r; } function y2(e, t) { return t || (t = z(127)), t.write_shift(4, e.Hidden), t.write_shift(4, e.iTabID), Fn(e.strRelID, t), fr(e.name.slice(0, 31), t), t.length > t.l ? t.slice(0, t.l) : t; } function A2(e, t) { var r = {}, a = e.read_shift(4); r.defaultThemeVersion = e.read_shift(4); var n = t > 8 ? mr(e) : ""; return n.length > 0 && (r.CodeName = n), r.autoCompressPictures = !!(a & 65536), r.backupFile = !!(a & 64), r.checkCompatibility = !!(a & 4096), r.date1904 = !!(a & 1), r.filterPrivacy = !!(a & 8), r.hidePivotFieldList = !!(a & 1024), r.promptedSolutions = !!(a & 16), r.publishItems = !!(a & 2048), r.refreshAllConnections = !!(a & 262144), r.saveExternalLinkValues = !!(a & 128), r.showBorderUnselectedTables = !!(a & 4), r.showInkAnnotation = !!(a & 32), r.showObjects = ["all", "placeholders", "none"][a >> 13 & 3], r.showPivotChartFilter = !!(a & 32768), r.updateLinks = ["userSet", "never", "always"][a >> 8 & 3], r; } function C2(e, t) { t || (t = z(72)); var r = 0; return e && e.filterPrivacy && (r |= 8), t.write_shift(4, r), t.write_shift(4, 0), $s(e && e.CodeName || "ThisWorkbook", t), t.slice(0, t.l); } function D2(e, t) { var r = {}; return e.read_shift(4), r.ArchID = e.read_shift(4), e.l += t - 8, r; } function O2(e, t, r) { var a = e.l + t; e.l += 4, e.l += 1; var n = e.read_shift(4), i = sl(e), s = xv(e, 0, r), f = Sn(e); e.l = a; var c = { Name: i, Ptg: s }; return n < 268435455 && (c.Sheet = n), f && (c.Comment = f), c; } function I2(e, t) { var r = { AppVersion: {}, WBProps: {}, WBView: [], Sheets: [], CalcPr: {}, xmlns: "" }, a = [], n = !1; t || (t = {}), t.biff = 12; var i = [], s = [[]]; return s.SheetNames = [], s.XTI = [], Ba[16] = { n: "BrtFRTArchID$", f: D2 }, ht(e, function(c, o, l) { switch (l) { case 156: s.SheetNames.push(c.name), r.Sheets.push(c); break; case 153: r.WBProps = c; break; case 39: c.Sheet != null && (t.SID = c.Sheet), c.Ref = dr(c.Ptg, null, null, s, t), delete t.SID, delete c.Ptg, i.push(c); break; case 1036: break; case 357: case 358: case 355: case 667: s[0].length ? s.push([l, c]) : s[0] = [l, c], s[s.length - 1].XTI = []; break; case 362: s.length === 0 && (s[0] = [], s[0].XTI = []), s[s.length - 1].XTI = s[s.length - 1].XTI.concat(c), s.XTI = s.XTI.concat(c); break; case 361: break; case 2071: case 158: case 143: case 664: case 353: break; case 3072: case 3073: case 534: case 677: case 157: case 610: case 2050: case 155: case 548: case 676: case 128: case 665: case 2128: case 2125: case 549: case 2053: case 596: case 2076: case 2075: case 2082: case 397: case 154: case 1117: case 553: case 2091: break; case 35: a.push(l), n = !0; break; case 36: a.pop(), n = !1; break; case 37: a.push(l), n = !0; break; case 38: a.pop(), n = !1; break; case 16: break; default: if (!o.T) { if (!n || t.WTF && a[a.length - 1] != 37 && a[a.length - 1] != 35) throw new Error("Unexpected record 0x" + l.toString(16)); } } }, t), rc(r), r.Names = i, r.supbooks = s, r; } function R2(e, t) { Y( e, 143 /* BrtBeginBundleShs */ ); for (var r = 0; r != t.SheetNames.length; ++r) { var a = t.Workbook && t.Workbook.Sheets && t.Workbook.Sheets[r] && t.Workbook.Sheets[r].Hidden || 0, n = { Hidden: a, iTabID: r + 1, strRelID: "rId" + (r + 1), name: t.SheetNames[r] }; Y(e, 156, y2(n)); } Y( e, 144 /* BrtEndBundleShs */ ); } function N2(e, t) { t || (t = z(127)); for (var r = 0; r != 4; ++r) t.write_shift(4, 0); return fr("SheetJS", t), fr(f0.version, t), fr(f0.version, t), fr("7262", t), t.length > t.l ? t.slice(0, t.l) : t; } function b2(e, t) { t || (t = z(29)), t.write_shift(-4, 0), t.write_shift(-4, 460), t.write_shift(4, 28800), t.write_shift(4, 17600), t.write_shift(4, 500), t.write_shift(4, e), t.write_shift(4, e); var r = 120; return t.write_shift(1, r), t.length > t.l ? t.slice(0, t.l) : t; } function P2(e, t) { if (!(!t.Workbook || !t.Workbook.Sheets)) { for (var r = t.Workbook.Sheets, a = 0, n = -1, i = -1; a < r.length; ++a) !r[a] || !r[a].Hidden && n == -1 ? n = a : r[a].Hidden == 1 && i == -1 && (i = a); i > n || (Y( e, 135 /* BrtBeginBookViews */ ), Y(e, 158, b2(n)), Y( e, 136 /* BrtEndBookViews */ )); } } function L2(e, t) { var r = Fr(); return Y( r, 131 /* BrtBeginBook */ ), Y(r, 128, N2()), Y(r, 153, C2(e.Workbook && e.Workbook.WBProps || null)), P2(r, e), R2(r, e), Y( r, 132 /* BrtEndBook */ ), r.end(); } function B2(e, t, r) { return t.slice(-4) === ".bin" ? I2(e, r) : S2(e, r); } function M2(e, t, r, a, n, i, s, f) { return t.slice(-4) === ".bin" ? Qp(e, a, r, n, i, s, f) : Ov(e, a, r, n, i, s, f); } function U2(e, t, r, a, n, i, s, f) { return t.slice(-4) === ".bin" ? v2(e, a, r, n, i) : x2(e, a, r, n, i); } function W2(e, t, r, a, n, i, s, f) { return t.slice(-4) === ".bin" ? Vx() : Gx(); } function H2(e, t, r, a, n, i, s, f) { return t.slice(-4) === ".bin" ? Wx() : Hx(); } function V2(e, t, r, a) { return t.slice(-4) === ".bin" ? B1(e, r, a) : F1(e, r, a); } function G2(e, t, r) { return Bf(e, r); } function X2(e, t, r) { return t.slice(-4) === ".bin" ? Xh(e, r) : Hh(e, r); } function z2(e, t, r) { return t.slice(-4) === ".bin" ? Px(e, r) : yx(e, r); } function j2(e, t, r) { return t.slice(-4) === ".bin" ? Tx(e) : Ex(e); } function $2(e, t, r, a) { return r.slice(-4) === ".bin" ? Sx(e, t, r, a) : void 0; } function K2(e, t, r) { return t.slice(-4) === ".bin" ? gx(e, t, r) : wx(e, t, r); } function Y2(e, t, r) { return (t.slice(-4) === ".bin" ? L2 : ac)(e); } function J2(e, t, r, a, n) { return (t.slice(-4) === ".bin" ? l2 : Zf)(e, r, a, n); } function q2(e, t, r) { return (t.slice(-4) === ".bin" ? $1 : Pf)(e, r); } function Z2(e, t, r) { return (t.slice(-4) === ".bin" ? $h : Af)(e, r); } function Q2(e, t, r) { return (t.slice(-4) === ".bin" ? Lx : Wf)(e); } function em(e) { return (e.slice(-4) === ".bin" ? _x : Mf)(); } var nc = /([\w:]+)=((?:")([^"]*)(?:")|(?:')([^']*)(?:'))/g, ic = /([\w:]+)=((?:")(?:[^"]*)(?:")|(?:')(?:[^']*)(?:'))/; function Xr(e, t) { var r = e.split(/\s+/), a = []; if (t || (a[0] = r[0]), r.length === 1) return a; var n = e.match(nc), i, s, f, c; if (n) for (c = 0; c != n.length; ++c) i = n[c].match(ic), (s = i[1].indexOf(":")) === -1 ? a[i[1]] = i[2].slice(1, i[2].length - 1) : (i[1].slice(0, 6) === "xmlns:" ? f = "xmlns" + i[1].slice(6) : f = i[1].slice(s + 1), a[f] = i[2].slice(1, i[2].length - 1)); return a; } function rm(e) { var t = e.split(/\s+/), r = {}; if (t.length === 1) return r; var a = e.match(nc), n, i, s, f; if (a) for (f = 0; f != a.length; ++f) n = a[f].match(ic), (i = n[1].indexOf(":")) === -1 ? r[n[1]] = n[2].slice(1, n[2].length - 1) : (n[1].slice(0, 6) === "xmlns:" ? s = "xmlns" + n[1].slice(6) : s = n[1].slice(i + 1), r[s] = n[2].slice(1, n[2].length - 1)); return r; } var Fa; function tm(e, t) { var r = Fa[e] || Ce(e); return r === "General" ? Pt(t) : Nr(r, t); } function am(e, t, r, a) { var n = a; switch ((r[0].match(/dt:dt="([\w.]+)"/) || ["", ""])[1]) { case "boolean": n = Me(a); break; case "i2": case "int": n = parseInt(a, 10); break; case "r4": case "float": n = parseFloat(a); break; case "date": case "dateTime.tz": n = Ue(a); break; case "i8": case "string": case "fixed": case "uuid": case "bin.base64": break; default: throw new Error("bad custprop:" + r[0]); } e[Ce(t)] = n; } function nm(e, t, r) { if (e.t !== "z") { if (!r || r.cellText !== !1) try { e.t === "e" ? e.w = e.w || xt[e.v] : t === "General" ? e.t === "n" ? (e.v | 0) === e.v ? e.w = e.v.toString(10) : e.w = Ca(e.v) : e.w = Pt(e.v) : e.w = tm(t || "General", e.v); } catch (i) { if (r.WTF) throw i; } try { var a = Fa[t] || t || "General"; if (r.cellNF && (e.z = a), r.cellDates && e.t == "n" && Ht(a)) { var n = _t(e.v); n && (e.t = "d", e.v = new Date(n.y, n.m - 1, n.d, n.H, n.M, n.S, n.u)); } } catch (i) { if (r.WTF) throw i; } } } function im(e, t, r) { if (r.cellStyles && t.Interior) { var a = t.Interior; a.Pattern && (a.patternType = m1[a.Pattern] || a.Pattern); } e[t.ID] = t; } function sm(e, t, r, a, n, i, s, f, c, o) { var l = "General", u = a.StyleID, h = {}; o = o || {}; var d = [], v = 0; for (u === void 0 && f && (u = f.StyleID), u === void 0 && s && (u = s.StyleID); i[u] !== void 0 && (i[u].nf && (l = i[u].nf), i[u].Interior && d.push(i[u].Interior), !!i[u].Parent); ) u = i[u].Parent; switch (r.Type) { case "Boolean": a.t = "b", a.v = Me(e); break; case "String": a.t = "s", a.r = di(Ce(e)), a.v = e.indexOf("<") > -1 ? Ce(t || e).replace(/<.*?>/g, "") : a.r; break; case "DateTime": e.slice(-1) != "Z" && (e += "Z"), a.v = (Ue(e) - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1e3), a.v !== a.v ? a.v = Ce(e) : a.v < 60 && (a.v = a.v - 1), (!l || l == "General") && (l = "yyyy-mm-dd"); case "Number": a.v === void 0 && (a.v = +e), a.t || (a.t = "n"); break; case "Error": a.t = "e", a.v = Zs[e], o.cellText !== !1 && (a.w = e); break; default: e == "" && t == "" ? a.t = "z" : (a.t = "s", a.v = di(t || e)); break; } if (nm(a, l, o), o.cellFormula !== !1) if (a.Formula) { var x = Ce(a.Formula); x.charCodeAt(0) == 61 && (x = x.slice(1)), a.f = ra(x, n), delete a.Formula, a.ArrayRange == "RC" ? a.F = ra("RC:RC", n) : a.ArrayRange && (a.F = ra(a.ArrayRange, n), c.push([De(a.F), a.F])); } else for (v = 0; v < c.length; ++v) n.r >= c[v][0].s.r && n.r <= c[v][0].e.r && n.c >= c[v][0].s.c && n.c <= c[v][0].e.c && (a.F = c[v][1]); o.cellStyles && (d.forEach(function(p) { !h.patternType && p.patternType && (h.patternType = p.patternType); }), a.s = h), a.StyleID !== void 0 && (a.ixfe = a.StyleID); } function fm(e) { e.t = e.v || "", e.t = e.t.replace(/\r\n/g, ` `).replace(/\r/g, ` `), e.v = e.w = e.ixfe = void 0; } function H0(e, t) { var r = t || {}; sa(); var a = pa(gn(e)); (r.type == "binary" || r.type == "array" || r.type == "base64") && (a = Pe(a)); var n = a.slice(0, 1024).toLowerCase(), i = !1; if (n = n.replace(/".*?"/g, ""), (n.indexOf(">") & 1023) > Math.min(n.indexOf(",") & 1023, n.indexOf(";") & 1023)) { var s = We(r); return s.type = "string", na.to_workbook(a, s); } if (n.indexOf("= 0 && (i = !0); }), i) return jm(a, r); Fa = { "General Number": "General", "General Date": de[22], "Long Date": "dddd, mmmm dd, yyyy", "Medium Date": de[15], "Short Date": de[14], "Long Time": de[19], "Medium Time": de[18], "Short Time": de[20], Currency: '"$"#,##0.00_);[Red]\\("$"#,##0.00\\)', Fixed: de[2], Standard: de[4], Percent: de[10], Scientific: de[11], "Yes/No": '"Yes";"Yes";"No";@', "True/False": '"True";"True";"False";@', "On/Off": '"Yes";"Yes";"No";@' }; var f, c = [], o, l = {}, u = [], h = r.dense ? [] : {}, d = "", v = {}, x = {}, p = Xr(''), w = 0, y = 0, g = 0, C = { s: { r: 2e6, c: 2e6 }, e: { r: 0, c: 0 } }, b = {}, O = {}, S = "", B = 0, R = [], X = {}, G = {}, L = 0, J = [], le = [], ie = {}, he = [], ce, be = !1, V = [], ve = [], ge = {}, D = 0, P = 0, I = { Sheets: [], WBProps: { date1904: !1 } }, N = {}; Ia.lastIndex = 0, a = a.replace(//mg, ""); for (var K = ""; f = Ia.exec(a); ) switch (f[3] = (K = f[3]).toLowerCase()) { case "data": if (K == "data") { if (f[1] === "/") { if ((o = c.pop())[0] !== f[3]) throw new Error("Bad state: " + o.join("|")); } else f[0].charAt(f[0].length - 2) !== "/" && c.push([f[3], !0]); break; } if (c[c.length - 1][1]) break; f[1] === "/" ? sm(a.slice(w, f.index), S, p, c[c.length - 1][0] == /*"Comment"*/ "comment" ? ie : v, { c: y, r: g }, b, he[y], x, V, r) : (S = "", p = Xr(f[0]), w = f.index + f[0].length); break; case "cell": if (f[1] === "/") if (le.length > 0 && (v.c = le), (!r.sheetRows || r.sheetRows > g) && v.v !== void 0 && (r.dense ? (h[g] || (h[g] = []), h[g][y] = v) : h[Ge(y) + qe(g)] = v), v.HRef && (v.l = { Target: Ce(v.HRef) }, v.HRefScreenTip && (v.l.Tooltip = v.HRefScreenTip), delete v.HRef, delete v.HRefScreenTip), (v.MergeAcross || v.MergeDown) && (D = y + (parseInt(v.MergeAcross, 10) | 0), P = g + (parseInt(v.MergeDown, 10) | 0), R.push({ s: { c: y, r: g }, e: { c: D, r: P } })), !r.sheetStubs) v.MergeAcross ? y = D + 1 : ++y; else if (v.MergeAcross || v.MergeDown) { for (var re = y; re <= D; ++re) for (var te = g; te <= P; ++te) (re > y || te > g) && (r.dense ? (h[te] || (h[te] = []), h[te][re] = { t: "z" }) : h[Ge(re) + qe(te)] = { t: "z" }); y = D + 1; } else ++y; else v = rm(f[0]), v.Index && (y = +v.Index - 1), y < C.s.c && (C.s.c = y), y > C.e.c && (C.e.c = y), f[0].slice(-2) === "/>" && ++y, le = []; break; case "row": f[1] === "/" || f[0].slice(-2) === "/>" ? (g < C.s.r && (C.s.r = g), g > C.e.r && (C.e.r = g), f[0].slice(-2) === "/>" && (x = Xr(f[0]), x.Index && (g = +x.Index - 1)), y = 0, ++g) : (x = Xr(f[0]), x.Index && (g = +x.Index - 1), ge = {}, (x.AutoFitHeight == "0" || x.Height) && (ge.hpx = parseInt(x.Height, 10), ge.hpt = La(ge.hpx), ve[g] = ge), x.Hidden == "1" && (ge.hidden = !0, ve[g] = ge)); break; case "worksheet": if (f[1] === "/") { if ((o = c.pop())[0] !== f[3]) throw new Error("Bad state: " + o.join("|")); u.push(d), C.s.r <= C.e.r && C.s.c <= C.e.c && (h["!ref"] = we(C), r.sheetRows && r.sheetRows <= C.e.r && (h["!fullref"] = h["!ref"], C.e.r = r.sheetRows - 1, h["!ref"] = we(C))), R.length && (h["!merges"] = R), he.length > 0 && (h["!cols"] = he), ve.length > 0 && (h["!rows"] = ve), l[d] = h; } else C = { s: { r: 2e6, c: 2e6 }, e: { r: 0, c: 0 } }, g = y = 0, c.push([f[3], !1]), o = Xr(f[0]), d = Ce(o.Name), h = r.dense ? [] : {}, R = [], V = [], ve = [], N = { name: d, Hidden: 0 }, I.Sheets.push(N); break; case "table": if (f[1] === "/") { if ((o = c.pop())[0] !== f[3]) throw new Error("Bad state: " + o.join("|")); } else { if (f[0].slice(-2) == "/>") break; c.push([f[3], !1]), he = [], be = !1; } break; case "style": f[1] === "/" ? im(b, O, r) : O = Xr(f[0]); break; case "numberformat": O.nf = Ce(Xr(f[0]).Format || "General"), Fa[O.nf] && (O.nf = Fa[O.nf]); for (var Q = 0; Q != 392 && de[Q] != O.nf; ++Q) ; if (Q == 392) { for (Q = 57; Q != 392; ++Q) if (de[Q] == null) { rt(O.nf, Q); break; } } break; case "column": if (c[c.length - 1][0] !== /*'Table'*/ "table") break; if (ce = Xr(f[0]), ce.Hidden && (ce.hidden = !0, delete ce.Hidden), ce.Width && (ce.wpx = parseInt(ce.Width, 10)), !be && ce.wpx > 10) { be = !0, vr = Nf; for (var q = 0; q < he.length; ++q) he[q] && kt(he[q]); } be && kt(ce), he[ce.Index - 1 || he.length] = ce; for (var ke = 0; ke < +ce.Span; ++ke) he[he.length] = We(ce); break; case "namedrange": if (f[1] === "/") break; I.Names || (I.Names = []); var A = me(f[0]), Be = { Name: A.Name, Ref: ra(A.RefersTo.slice(1), { r: 0, c: 0 }) }; I.Sheets.length > 0 && (Be.Sheet = I.Sheets.length - 1), I.Names.push(Be); break; case "namedcell": break; case "b": break; case "i": break; case "u": break; case "s": break; case "em": break; case "h2": break; case "h3": break; case "sub": break; case "sup": break; case "span": break; case "alignment": break; case "borders": break; case "border": break; case "font": if (f[0].slice(-2) === "/>") break; f[1] === "/" ? S += a.slice(B, f.index) : B = f.index + f[0].length; break; case "interior": if (!r.cellStyles) break; O.Interior = Xr(f[0]); break; case "protection": break; case "author": case "title": case "description": case "created": case "keywords": case "subject": case "category": case "company": case "lastauthor": case "lastsaved": case "lastprinted": case "version": case "revision": case "totaltime": case "hyperlinkbase": case "manager": case "contentstatus": case "identifier": case "language": case "appname": if (f[0].slice(-2) === "/>") break; f[1] === "/" ? Il(X, K, a.slice(L, f.index)) : L = f.index + f[0].length; break; case "paragraphs": break; case "styles": case "workbook": if (f[1] === "/") { if ((o = c.pop())[0] !== f[3]) throw new Error("Bad state: " + o.join("|")); } else c.push([f[3], !1]); break; case "comment": if (f[1] === "/") { if ((o = c.pop())[0] !== f[3]) throw new Error("Bad state: " + o.join("|")); fm(ie), le.push(ie); } else c.push([f[3], !1]), o = Xr(f[0]), ie = { a: o.Author }; break; case "autofilter": if (f[1] === "/") { if ((o = c.pop())[0] !== f[3]) throw new Error("Bad state: " + o.join("|")); } else if (f[0].charAt(f[0].length - 2) !== "/") { var Ae = Xr(f[0]); h["!autofilter"] = { ref: ra(Ae.Range).replace(/\$/g, "") }, c.push([f[3], !0]); } break; case "name": break; case "datavalidation": if (f[1] === "/") { if ((o = c.pop())[0] !== f[3]) throw new Error("Bad state: " + o.join("|")); } else f[0].charAt(f[0].length - 2) !== "/" && c.push([f[3], !0]); break; case "pixelsperinch": break; case "componentoptions": case "documentproperties": case "customdocumentproperties": case "officedocumentsettings": case "pivottable": case "pivotcache": case "names": case "mapinfo": case "pagebreaks": case "querytable": case "sorting": case "schema": case "conditionalformatting": case "smarttagtype": case "smarttags": case "excelworkbook": case "workbookoptions": case "worksheetoptions": if (f[1] === "/") { if ((o = c.pop())[0] !== f[3]) throw new Error("Bad state: " + o.join("|")); } else f[0].charAt(f[0].length - 2) !== "/" && c.push([f[3], !0]); break; case "null": break; default: if (c.length == 0 && f[3] == "document" || c.length == 0 && f[3] == "uof") return ts(a, r); var Le = !0; switch (c[c.length - 1][0]) { case "officedocumentsettings": switch (f[3]) { case "allowpng": break; case "removepersonalinformation": break; case "downloadcomponents": break; case "locationofcomponents": break; case "colors": break; case "color": break; case "index": break; case "rgb": break; case "targetscreensize": break; case "readonlyrecommended": break; default: Le = !1; } break; case "componentoptions": switch (f[3]) { case "toolbar": break; case "hideofficelogo": break; case "spreadsheetautofit": break; case "label": break; case "caption": break; case "maxheight": break; case "maxwidth": break; case "nextsheetnumber": break; default: Le = !1; } break; case "excelworkbook": switch (f[3]) { case "date1904": I.WBProps.date1904 = !0; break; case "windowheight": break; case "windowwidth": break; case "windowtopx": break; case "windowtopy": break; case "tabratio": break; case "protectstructure": break; case "protectwindow": break; case "protectwindows": break; case "activesheet": break; case "displayinknotes": break; case "firstvisiblesheet": break; case "supbook": break; case "sheetname": break; case "sheetindex": break; case "sheetindexfirst": break; case "sheetindexlast": break; case "dll": break; case "acceptlabelsinformulas": break; case "donotsavelinkvalues": break; case "iteration": break; case "maxiterations": break; case "maxchange": break; case "path": break; case "xct": break; case "count": break; case "selectedsheets": break; case "calculation": break; case "uncalced": break; case "startupprompt": break; case "crn": break; case "externname": break; case "formula": break; case "colfirst": break; case "collast": break; case "wantadvise": break; case "boolean": break; case "error": break; case "text": break; case "ole": break; case "noautorecover": break; case "publishobjects": break; case "donotcalculatebeforesave": break; case "number": break; case "refmoder1c1": break; case "embedsavesmarttags": break; default: Le = !1; } break; case "workbookoptions": switch (f[3]) { case "owcversion": break; case "height": break; case "width": break; default: Le = !1; } break; case "worksheetoptions": switch (f[3]) { case "visible": if (f[0].slice(-2) !== "/>") if (f[1] === "/") switch (a.slice(L, f.index)) { case "SheetHidden": N.Hidden = 1; break; case "SheetVeryHidden": N.Hidden = 2; break; } else L = f.index + f[0].length; break; case "header": h["!margins"] || bt(h["!margins"] = {}, "xlml"), isNaN(+me(f[0]).Margin) || (h["!margins"].header = +me(f[0]).Margin); break; case "footer": h["!margins"] || bt(h["!margins"] = {}, "xlml"), isNaN(+me(f[0]).Margin) || (h["!margins"].footer = +me(f[0]).Margin); break; case "pagemargins": var ye = me(f[0]); h["!margins"] || bt(h["!margins"] = {}, "xlml"), isNaN(+ye.Top) || (h["!margins"].top = +ye.Top), isNaN(+ye.Left) || (h["!margins"].left = +ye.Left), isNaN(+ye.Right) || (h["!margins"].right = +ye.Right), isNaN(+ye.Bottom) || (h["!margins"].bottom = +ye.Bottom); break; case "displayrighttoleft": I.Views || (I.Views = []), I.Views[0] || (I.Views[0] = {}), I.Views[0].RTL = !0; break; case "freezepanes": break; case "frozennosplit": break; case "splithorizontal": case "splitvertical": break; case "donotdisplaygridlines": break; case "activerow": break; case "activecol": break; case "toprowbottompane": break; case "leftcolumnrightpane": break; case "unsynced": break; case "print": break; case "printerrors": break; case "panes": break; case "scale": break; case "pane": break; case "number": break; case "layout": break; case "pagesetup": break; case "selected": break; case "protectobjects": break; case "enableselection": break; case "protectscenarios": break; case "validprinterinfo": break; case "horizontalresolution": break; case "verticalresolution": break; case "numberofcopies": break; case "activepane": break; case "toprowvisible": break; case "leftcolumnvisible": break; case "fittopage": break; case "rangeselection": break; case "papersizeindex": break; case "pagelayoutzoom": break; case "pagebreakzoom": break; case "filteron": break; case "fitwidth": break; case "fitheight": break; case "commentslayout": break; case "zoom": break; case "lefttoright": break; case "gridlines": break; case "allowsort": break; case "allowfilter": break; case "allowinsertrows": break; case "allowdeleterows": break; case "allowinsertcols": break; case "allowdeletecols": break; case "allowinserthyperlinks": break; case "allowformatcells": break; case "allowsizecols": break; case "allowsizerows": break; case "nosummaryrowsbelowdetail": h["!outline"] || (h["!outline"] = {}), h["!outline"].above = !0; break; case "tabcolorindex": break; case "donotdisplayheadings": break; case "showpagelayoutzoom": break; case "nosummarycolumnsrightdetail": h["!outline"] || (h["!outline"] = {}), h["!outline"].left = !0; break; case "blackandwhite": break; case "donotdisplayzeros": break; case "displaypagebreak": break; case "rowcolheadings": break; case "donotdisplayoutline": break; case "noorientation": break; case "allowusepivottables": break; case "zeroheight": break; case "viewablerange": break; case "selection": break; case "protectcontents": break; default: Le = !1; } break; case "pivottable": case "pivotcache": switch (f[3]) { case "immediateitemsondrop": break; case "showpagemultipleitemlabel": break; case "compactrowindent": break; case "location": break; case "pivotfield": break; case "orientation": break; case "layoutform": break; case "layoutsubtotallocation": break; case "layoutcompactrow": break; case "position": break; case "pivotitem": break; case "datatype": break; case "datafield": break; case "sourcename": break; case "parentfield": break; case "ptlineitems": break; case "ptlineitem": break; case "countofsameitems": break; case "item": break; case "itemtype": break; case "ptsource": break; case "cacheindex": break; case "consolidationreference": break; case "filename": break; case "reference": break; case "nocolumngrand": break; case "norowgrand": break; case "blanklineafteritems": break; case "hidden": break; case "subtotal": break; case "basefield": break; case "mapchilditems": break; case "function": break; case "refreshonfileopen": break; case "printsettitles": break; case "mergelabels": break; case "defaultversion": break; case "refreshname": break; case "refreshdate": break; case "refreshdatecopy": break; case "versionlastrefresh": break; case "versionlastupdate": break; case "versionupdateablemin": break; case "versionrefreshablemin": break; case "calculation": break; default: Le = !1; } break; case "pagebreaks": switch (f[3]) { case "colbreaks": break; case "colbreak": break; case "rowbreaks": break; case "rowbreak": break; case "colstart": break; case "colend": break; case "rowend": break; default: Le = !1; } break; case "autofilter": switch (f[3]) { case "autofiltercolumn": break; case "autofiltercondition": break; case "autofilterand": break; case "autofilteror": break; default: Le = !1; } break; case "querytable": switch (f[3]) { case "id": break; case "autoformatfont": break; case "autoformatpattern": break; case "querysource": break; case "querytype": break; case "enableredirections": break; case "refreshedinxl9": break; case "urlstring": break; case "htmltables": break; case "connection": break; case "commandtext": break; case "refreshinfo": break; case "notitles": break; case "nextid": break; case "columninfo": break; case "overwritecells": break; case "donotpromptforfile": break; case "textwizardsettings": break; case "source": break; case "number": break; case "decimal": break; case "thousandseparator": break; case "trailingminusnumbers": break; case "formatsettings": break; case "fieldtype": break; case "delimiters": break; case "tab": break; case "comma": break; case "autoformatname": break; case "versionlastedit": break; case "versionlastrefresh": break; default: Le = !1; } break; case "datavalidation": switch (f[3]) { case "range": break; case "type": break; case "min": break; case "max": break; case "sort": break; case "descending": break; case "order": break; case "casesensitive": break; case "value": break; case "errorstyle": break; case "errormessage": break; case "errortitle": break; case "inputmessage": break; case "inputtitle": break; case "combohide": break; case "inputhide": break; case "condition": break; case "qualifier": break; case "useblank": break; case "value1": break; case "value2": break; case "format": break; case "cellrangelist": break; default: Le = !1; } break; case "sorting": case "conditionalformatting": switch (f[3]) { case "range": break; case "type": break; case "min": break; case "max": break; case "sort": break; case "descending": break; case "order": break; case "casesensitive": break; case "value": break; case "errorstyle": break; case "errormessage": break; case "errortitle": break; case "cellrangelist": break; case "inputmessage": break; case "inputtitle": break; case "combohide": break; case "inputhide": break; case "condition": break; case "qualifier": break; case "useblank": break; case "value1": break; case "value2": break; case "format": break; default: Le = !1; } break; case "mapinfo": case "schema": case "data": switch (f[3]) { case "map": break; case "entry": break; case "range": break; case "xpath": break; case "field": break; case "xsdtype": break; case "filteron": break; case "aggregate": break; case "elementtype": break; case "attributetype": break; case "schema": case "element": case "complextype": case "datatype": case "all": case "attribute": case "extends": break; case "row": break; default: Le = !1; } break; case "smarttags": break; default: Le = !1; break; } if (Le || f[3].match(/!\[CDATA/)) break; if (!c[c.length - 1][1]) throw "Unrecognized tag: " + f[3] + "|" + c.join("|"); if (c[c.length - 1][0] === /*'CustomDocumentProperties'*/ "customdocumentproperties") { if (f[0].slice(-2) === "/>") break; f[1] === "/" ? am(G, K, J, a.slice(L, f.index)) : (J = f, L = f.index + f[0].length); break; } if (r.WTF) throw "Unrecognized tag: " + f[3] + "|" + c.join("|"); } var fe = {}; return !r.bookSheets && !r.bookProps && (fe.Sheets = l), fe.SheetNames = u, fe.Workbook = I, fe.SSF = We(de), fe.Props = X, fe.Custprops = G, fe; } function en(e, t) { switch (Vn(t = t || {}), t.type || "base64") { case "base64": return H0(Rr(e), t); case "binary": case "buffer": case "file": return H0(e, t); case "array": return H0(Ft(e), t); } } function cm(e, t) { var r = []; return e.Props && r.push(Rl(e.Props, t)), e.Custprops && r.push(Nl(e.Props, e.Custprops)), r.join(""); } function om() { return ""; } function lm(e, t) { var r = ['']; return t.cellXfs.forEach(function(a, n) { var i = []; i.push(ae("NumberFormat", null, { "ss:Format": Ne(de[a.numFmtId]) })); var s = ( /*::(*/ { "ss:ID": "s" + (21 + n) } ); r.push(ae("Style", i.join(""), s)); }), ae("Styles", r.join("")); } function sc(e) { return ae("NamedRange", null, { "ss:Name": e.Name, "ss:RefersTo": "=" + Ln(e.Ref, { r: 0, c: 0 }) }); } function um(e) { if (!((e || {}).Workbook || {}).Names) return ""; for (var t = e.Workbook.Names, r = [], a = 0; a < t.length; ++a) { var n = t[a]; n.Sheet == null && (n.Name.match(/^_xlfn\./) || r.push(sc(n))); } return ae("Names", r.join("")); } function hm(e, t, r, a) { if (!e || !((a || {}).Workbook || {}).Names) return ""; for (var n = a.Workbook.Names, i = [], s = 0; s < n.length; ++s) { var f = n[s]; f.Sheet == r && (f.Name.match(/^_xlfn\./) || i.push(sc(f))); } return i.join(""); } function xm(e, t, r, a) { if (!e) return ""; var n = []; if (e["!margins"] && (n.push(""), e["!margins"].header && n.push(ae("Header", null, { "x:Margin": e["!margins"].header })), e["!margins"].footer && n.push(ae("Footer", null, { "x:Margin": e["!margins"].footer })), n.push(ae("PageMargins", null, { "x:Bottom": e["!margins"].bottom || "0.75", "x:Left": e["!margins"].left || "0.7", "x:Right": e["!margins"].right || "0.7", "x:Top": e["!margins"].top || "0.75" })), n.push("")), a && a.Workbook && a.Workbook.Sheets && a.Workbook.Sheets[r]) if (a.Workbook.Sheets[r].Hidden) n.push(ae("Visible", a.Workbook.Sheets[r].Hidden == 1 ? "SheetHidden" : "SheetVeryHidden", {})); else { for (var i = 0; i < r && !(a.Workbook.Sheets[i] && !a.Workbook.Sheets[i].Hidden); ++i) ; i == r && n.push(""); } return ((((a || {}).Workbook || {}).Views || [])[0] || {}).RTL && n.push(""), e["!protect"] && (n.push(lr("ProtectContents", "True")), e["!protect"].objects && n.push(lr("ProtectObjects", "True")), e["!protect"].scenarios && n.push(lr("ProtectScenarios", "True")), e["!protect"].selectLockedCells != null && !e["!protect"].selectLockedCells ? n.push(lr("EnableSelection", "NoSelection")) : e["!protect"].selectUnlockedCells != null && !e["!protect"].selectUnlockedCells && n.push(lr("EnableSelection", "UnlockedCells")), [ ["formatCells", "AllowFormatCells"], ["formatColumns", "AllowSizeCols"], ["formatRows", "AllowSizeRows"], ["insertColumns", "AllowInsertCols"], ["insertRows", "AllowInsertRows"], ["insertHyperlinks", "AllowInsertHyperlinks"], ["deleteColumns", "AllowDeleteCols"], ["deleteRows", "AllowDeleteRows"], ["sort", "AllowSort"], ["autoFilter", "AllowFilter"], ["pivotTables", "AllowUsePivotTables"] ].forEach(function(s) { e["!protect"][s[0]] && n.push("<" + s[1] + "/>"); })), n.length == 0 ? "" : ae("WorksheetOptions", n.join(""), { xmlns: Cr.x }); } function dm(e) { return e.map(function(t) { var r = Po(t.t || ""), a = ae("ss:Data", r, { xmlns: "http://www.w3.org/TR/REC-html40" }); return ae("Comment", a, { "ss:Author": t.a }); }).join(""); } function vm(e, t, r, a, n, i, s) { if (!e || e.v == null && e.f == null) return ""; var f = {}; if (e.f && (f["ss:Formula"] = "=" + Ne(Ln(e.f, s))), e.F && e.F.slice(0, t.length) == t) { var c = Xe(e.F.slice(t.length + 1)); f["ss:ArrayRange"] = "RC:R" + (c.r == s.r ? "" : "[" + (c.r - s.r) + "]") + "C" + (c.c == s.c ? "" : "[" + (c.c - s.c) + "]"); } if (e.l && e.l.Target && (f["ss:HRef"] = Ne(e.l.Target), e.l.Tooltip && (f["x:HRefScreenTip"] = Ne(e.l.Tooltip))), r["!merges"]) for (var o = r["!merges"], l = 0; l != o.length; ++l) o[l].s.c != s.c || o[l].s.r != s.r || (o[l].e.c > o[l].s.c && (f["ss:MergeAcross"] = o[l].e.c - o[l].s.c), o[l].e.r > o[l].s.r && (f["ss:MergeDown"] = o[l].e.r - o[l].s.r)); var u = "", h = ""; switch (e.t) { case "z": if (!a.sheetStubs) return ""; break; case "n": u = "Number", h = String(e.v); break; case "b": u = "Boolean", h = e.v ? "1" : "0"; break; case "e": u = "Error", h = xt[e.v]; break; case "d": u = "DateTime", h = new Date(e.v).toISOString(), e.z == null && (e.z = e.z || de[14]); break; case "s": u = "String", h = bo(e.v || ""); break; } var d = At(a.cellXfs, e, a); f["ss:StyleID"] = "s" + (21 + d), f["ss:Index"] = s.c + 1; var v = e.v != null ? h : "", x = e.t == "z" ? "" : '' + v + ""; return (e.c || []).length > 0 && (x += dm(e.c)), ae("Cell", x, f); } function pm(e, t) { var r = '"; } function mm(e, t, r, a) { if (!e["!ref"]) return ""; var n = De(e["!ref"]), i = e["!merges"] || [], s = 0, f = []; e["!cols"] && e["!cols"].forEach(function(p, w) { kt(p); var y = !!p.width, g = A0(w, p), C = { "ss:Index": w + 1 }; y && (C["ss:Width"] = ba(g.width)), p.hidden && (C["ss:Hidden"] = "1"), f.push(ae("Column", null, C)); }); for (var c = Array.isArray(e), o = n.s.r; o <= n.e.r; ++o) { for (var l = [pm(o, (e["!rows"] || [])[o])], u = n.s.c; u <= n.e.c; ++u) { var h = !1; for (s = 0; s != i.length; ++s) if (!(i[s].s.c > u) && !(i[s].s.r > o) && !(i[s].e.c < u) && !(i[s].e.r < o)) { (i[s].s.c != u || i[s].s.r != o) && (h = !0); break; } if (!h) { var d = { r: o, c: u }, v = pe(d), x = c ? (e[o] || [])[u] : e[v]; l.push(vm(x, v, e, t, r, a, d)); } } l.push(""), l.length > 2 && f.push(l.join("")); } return f.join(""); } function gm(e, t, r) { var a = [], n = r.SheetNames[e], i = r.Sheets[n], s = i ? hm(i, t, e, r) : ""; return s.length > 0 && a.push("" + s + ""), s = i ? mm(i, t, e, r) : "", s.length > 0 && a.push("" + s + "
"), a.push(xm(i, t, e, r)), a.join(""); } function _m(e, t) { t || (t = {}), e.SSF || (e.SSF = We(de)), e.SSF && (sa(), Wa(e.SSF), t.revssf = k0(e.SSF), t.revssf[e.SSF[65535]] = 0, t.ssf = e.SSF, t.cellXfs = [], At(t.cellXfs, {}, { revssf: { General: 0 } })); var r = []; r.push(cm(e, t)), r.push(om()), r.push(""), r.push(""); for (var a = 0; a < e.SheetNames.length; ++a) r.push(ae("Worksheet", gm(a, t, e), { "ss:Name": Ne(e.SheetNames[a]) })); return r[2] = lm(e, t), r[3] = um(e), Ze + ae("Workbook", r.join(""), { xmlns: Cr.ss, "xmlns:o": Cr.o, "xmlns:x": Cr.x, "xmlns:ss": Cr.ss, "xmlns:dt": Cr.dt, "xmlns:html": Cr.html }); } function wm(e) { var t = {}, r = e.content; if (r.l = 28, t.AnsiUserType = r.read_shift(0, "lpstr-ansi"), t.AnsiClipboardFormat = ul(r), r.length - r.l <= 4) return t; var a = r.read_shift(4); if (a == 0 || a > 40 || (r.l -= 4, t.Reserved1 = r.read_shift(0, "lpstr-ansi"), r.length - r.l <= 4) || (a = r.read_shift(4), a !== 1907505652) || (t.UnicodeClipboardFormat = hl(r), a = r.read_shift(4), a == 0 || a > 40)) return t; r.l -= 4, t.Reserved2 = r.read_shift(0, "lpwstr"); } var Em = [60, 1084, 2066, 2165, 2175]; function km(e, t, r, a, n) { var i = a, s = [], f = r.slice(r.l, r.l + i); if (n && n.enc && n.enc.insitu && f.length > 0) switch (e) { case 9: case 521: case 1033: case 2057: case 47: case 405: case 225: case 406: case 312: case 404: case 10: break; case 133: break; default: n.enc.insitu(f); } s.push(f), r.l += i; for (var c = ft(r, r.l), o = rn[c], l = 0; o != null && Em.indexOf(c) > -1; ) i = ft(r, r.l + 2), l = r.l + 4, c == 2066 ? l += 4 : (c == 2165 || c == 2175) && (l += 12), f = r.slice(l, r.l + 4 + i), s.push(f), r.l += 4 + i, o = rn[c = ft(r, r.l)]; var u = sr(s); or(u, 0); var h = 0; u.lens = []; for (var d = 0; d < s.length; ++d) u.lens.push(h), h += s[d].length; if (u.length < a) throw "XLS Record 0x" + e.toString(16) + " Truncated: " + u.length + " < " + a; return t.f(u, u.length, n); } function qr(e, t, r) { if (e.t !== "z" && e.XF) { var a = 0; try { a = e.z || e.XF.numFmtId || 0, t.cellNF && (e.z = de[a]); } catch (i) { if (t.WTF) throw i; } if (!t || t.cellText !== !1) try { e.t === "e" ? e.w = e.w || xt[e.v] : a === 0 || a == "General" ? e.t === "n" ? (e.v | 0) === e.v ? e.w = e.v.toString(10) : e.w = Ca(e.v) : e.w = Pt(e.v) : e.w = Nr(a, e.v, { date1904: !!r, dateNF: t && t.dateNF }); } catch (i) { if (t.WTF) throw i; } if (t.cellDates && a && e.t == "n" && Ht(de[a] || String(a))) { var n = _t(e.v); n && (e.t = "d", e.v = new Date(n.y, n.m - 1, n.d, n.H, n.M, n.S, n.u)); } } } function i0(e, t, r) { return { v: e, ixfe: t, t: r }; } function Tm(e, t) { var r = { opts: {} }, a = {}, n = t.dense ? [] : {}, i = {}, s = {}, f = null, c = [], o = "", l = {}, u, h = "", d, v, x, p, w = {}, y = [], g, C, b = [], O = [], S = { Sheets: [], WBProps: { date1904: !1 }, Views: [{}] }, B = {}, R = function(Se) { return Se < 8 ? It[Se] : Se < 64 && O[Se - 8] || It[Se]; }, X = function(Se, Ye, Pr) { var tr = Ye.XF.data; if (!(!tr || !tr.patternType || !Pr || !Pr.cellStyles)) { Ye.s = {}, Ye.s.patternType = tr.patternType; var Ct; (Ct = Na(R(tr.icvFore))) && (Ye.s.fgColor = { rgb: Ct }), (Ct = Na(R(tr.icvBack))) && (Ye.s.bgColor = { rgb: Ct }); } }, G = function(Se, Ye, Pr) { if (!(ge > 1) && !(Pr.sheetRows && Se.r >= Pr.sheetRows)) { if (Pr.cellStyles && Ye.XF && Ye.XF.data && X(Se, Ye, Pr), delete Ye.ixfe, delete Ye.XF, u = Se, h = pe(Se), (!s || !s.s || !s.e) && (s = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } }), Se.r < s.s.r && (s.s.r = Se.r), Se.c < s.s.c && (s.s.c = Se.c), Se.r + 1 > s.e.r && (s.e.r = Se.r + 1), Se.c + 1 > s.e.c && (s.e.c = Se.c + 1), Pr.cellFormula && Ye.f) { for (var tr = 0; tr < y.length; ++tr) if (!(y[tr][0].s.c > Se.c || y[tr][0].s.r > Se.r) && !(y[tr][0].e.c < Se.c || y[tr][0].e.r < Se.r)) { Ye.F = we(y[tr][0]), (y[tr][0].s.c != Se.c || y[tr][0].s.r != Se.r) && delete Ye.f, Ye.f && (Ye.f = "" + dr(y[tr][1], s, Se, V, L)); break; } } Pr.dense ? (n[Se.r] || (n[Se.r] = []), n[Se.r][Se.c] = Ye) : n[h] = Ye; } }, L = { enc: !1, // encrypted sbcch: 0, // cch in the preceding SupBook snames: [], // sheetnames sharedf: w, // shared formulae by address arrayf: y, // array formulae array rrtabid: [], // RRTabId lastuser: "", // Last User from WriteAccess biff: 8, // BIFF version codepage: 0, // CP from CodePage record winlocked: 0, // fLockWn from WinProtect cellStyles: !!t && !!t.cellStyles, WTF: !!t && !!t.wtf }; t.password && (L.password = t.password); var J, le = [], ie = [], he = [], ce = [], be = !1, V = []; V.SheetNames = L.snames, V.sharedf = L.sharedf, V.arrayf = L.arrayf, V.names = [], V.XTI = []; var ve = 0, ge = 0, D = 0, P = [], I = [], N; L.codepage = 1200, zr(1200); for (var K = !1; e.l < e.length - 1; ) { var re = e.l, te = e.read_shift(2); if (te === 0 && ve === 10) break; var Q = e.l === e.length ? 0 : e.read_shift(2), q = rn[te]; if (q && q.f) { if (t.bookSheets && ve === 133 && te !== 133) break; if (ve = te, q.r === 2 || q.r == 12) { var ke = e.read_shift(2); if (Q -= 2, !L.enc && ke !== te && ((ke & 255) << 8 | ke >> 8) !== te) throw new Error("rt mismatch: " + ke + "!=" + te); q.r == 12 && (e.l += 10, Q -= 10); } var A = {}; if (te === 10 ? A = /*::(*/ q.f(e, Q, L) : A = /*::(*/ km(te, q, e, Q, L), ge == 0 && [9, 521, 1033, 2057].indexOf(ve) === -1) continue; switch (te) { case 34: r.opts.Date1904 = S.WBProps.date1904 = A; break; case 134: r.opts.WriteProtect = !0; break; case 47: if (L.enc || (e.l = 0), L.enc = A, !t.password) throw new Error("File is password-protected"); if (A.valid == null) throw new Error("Encryption scheme unsupported"); if (!A.valid) throw new Error("Password is incorrect"); break; case 92: L.lastuser = A; break; case 66: var Be = Number(A); switch (Be) { case 21010: Be = 1200; break; case 32768: Be = 1e4; break; case 32769: Be = 1252; break; } zr(L.codepage = Be), K = !0; break; case 317: L.rrtabid = A; break; case 25: L.winlocked = A; break; case 439: r.opts.RefreshAll = A; break; case 12: r.opts.CalcCount = A; break; case 16: r.opts.CalcDelta = A; break; case 17: r.opts.CalcIter = A; break; case 13: r.opts.CalcMode = A; break; case 14: r.opts.CalcPrecision = A; break; case 95: r.opts.CalcSaveRecalc = A; break; case 15: L.CalcRefMode = A; break; case 2211: r.opts.FullCalc = A; break; case 129: A.fDialog && (n["!type"] = "dialog"), A.fBelow || ((n["!outline"] || (n["!outline"] = {})).above = !0), A.fRight || ((n["!outline"] || (n["!outline"] = {})).left = !0); break; case 224: b.push(A); break; case 430: V.push([A]), V[V.length - 1].XTI = []; break; case 35: case 547: V[V.length - 1].push(A); break; case 24: case 536: N = { Name: A.Name, Ref: dr(A.rgce, s, null, V, L) }, A.itab > 0 && (N.Sheet = A.itab - 1), V.names.push(N), V[0] || (V[0] = [], V[0].XTI = []), V[V.length - 1].push(A), A.Name == "_xlnm._FilterDatabase" && A.itab > 0 && A.rgce && A.rgce[0] && A.rgce[0][0] && A.rgce[0][0][0] == "PtgArea3d" && (I[A.itab - 1] = { ref: we(A.rgce[0][0][1][2]) }); break; case 22: L.ExternCount = A; break; case 23: V.length == 0 && (V[0] = [], V[0].XTI = []), V[V.length - 1].XTI = V[V.length - 1].XTI.concat(A), V.XTI = V.XTI.concat(A); break; case 2196: if (L.biff < 8) break; N != null && (N.Comment = A[1]); break; case 18: n["!protect"] = A; break; case 19: A !== 0 && L.WTF && console.error("Password verifier: " + A); break; case 133: i[A.pos] = A, L.snames.push(A.name); break; case 10: { if (--ge) break; if (s.e) { if (s.e.r > 0 && s.e.c > 0) { if (s.e.r--, s.e.c--, n["!ref"] = we(s), t.sheetRows && t.sheetRows <= s.e.r) { var Ae = s.e.r; s.e.r = t.sheetRows - 1, n["!fullref"] = n["!ref"], n["!ref"] = we(s), s.e.r = Ae; } s.e.r++, s.e.c++; } le.length > 0 && (n["!merges"] = le), ie.length > 0 && (n["!objects"] = ie), he.length > 0 && (n["!cols"] = he), ce.length > 0 && (n["!rows"] = ce), S.Sheets.push(B); } o === "" ? l = n : a[o] = n, n = t.dense ? [] : {}; } break; case 9: case 521: case 1033: case 2057: { if (L.biff === 8 && (L.biff = { /*::[*/ 9: 2, /*::[*/ 521: 3, /*::[*/ 1033: 4 }[te] || { /*::[*/ 512: 2, /*::[*/ 768: 3, /*::[*/ 1024: 4, /*::[*/ 1280: 5, /*::[*/ 1536: 8, /*::[*/ 2: 2, /*::[*/ 7: 2 }[A.BIFFVer] || 8), L.biffguess = A.BIFFVer == 0, A.BIFFVer == 0 && A.dt == 4096 && (L.biff = 5, K = !0, zr(L.codepage = 28591)), L.biff == 8 && A.BIFFVer == 0 && A.dt == 16 && (L.biff = 2), ge++) break; if (n = t.dense ? [] : {}, L.biff < 8 && !K && (K = !0, zr(L.codepage = t.codepage || 1252)), L.biff < 5 || A.BIFFVer == 0 && A.dt == 4096) { o === "" && (o = "Sheet1"), s = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } }; var Le = { pos: e.l - Q, name: o }; i[Le.pos] = Le, L.snames.push(o); } else o = (i[re] || { name: "" }).name; A.dt == 32 && (n["!type"] = "chart"), A.dt == 64 && (n["!type"] = "macro"), le = [], ie = [], L.arrayf = y = [], he = [], ce = [], be = !1, B = { Hidden: (i[re] || { hs: 0 }).hs, name: o }; } break; case 515: case 3: case 2: n["!type"] == "chart" && (t.dense ? (n[A.r] || [])[A.c] : n[pe({ c: A.c, r: A.r })]) && ++A.c, g = { ixfe: A.ixfe, XF: b[A.ixfe] || {}, v: A.val, t: "n" }, D > 0 && (g.z = P[g.ixfe >> 8 & 63]), qr(g, t, r.opts.Date1904), G({ c: A.c, r: A.r }, g, t); break; case 5: case 517: g = { ixfe: A.ixfe, XF: b[A.ixfe], v: A.val, t: A.t }, D > 0 && (g.z = P[g.ixfe >> 8 & 63]), qr(g, t, r.opts.Date1904), G({ c: A.c, r: A.r }, g, t); break; case 638: g = { ixfe: A.ixfe, XF: b[A.ixfe], v: A.rknum, t: "n" }, D > 0 && (g.z = P[g.ixfe >> 8 & 63]), qr(g, t, r.opts.Date1904), G({ c: A.c, r: A.r }, g, t); break; case 189: for (var ye = A.c; ye <= A.C; ++ye) { var fe = A.rkrec[ye - A.c][0]; g = { ixfe: fe, XF: b[fe], v: A.rkrec[ye - A.c][1], t: "n" }, D > 0 && (g.z = P[g.ixfe >> 8 & 63]), qr(g, t, r.opts.Date1904), G({ c: ye, r: A.r }, g, t); } break; case 6: case 518: case 1030: { if (A.val == "String") { f = A; break; } if (g = i0(A.val, A.cell.ixfe, A.tt), g.XF = b[g.ixfe], t.cellFormula) { var Ke = A.formula; if (Ke && Ke[0] && Ke[0][0] && Ke[0][0][0] == "PtgExp") { var br = Ke[0][0][1][0], Yr = Ke[0][0][1][1], nt = pe({ r: br, c: Yr }); w[nt] ? g.f = "" + dr(A.formula, s, A.cell, V, L) : g.F = ((t.dense ? (n[br] || [])[Yr] : n[nt]) || {}).F; } else g.f = "" + dr(A.formula, s, A.cell, V, L); } D > 0 && (g.z = P[g.ixfe >> 8 & 63]), qr(g, t, r.opts.Date1904), G(A.cell, g, t), f = A; } break; case 7: case 519: if (f) f.val = A, g = i0(A, f.cell.ixfe, "s"), g.XF = b[g.ixfe], t.cellFormula && (g.f = "" + dr(f.formula, s, f.cell, V, L)), D > 0 && (g.z = P[g.ixfe >> 8 & 63]), qr(g, t, r.opts.Date1904), G(f.cell, g, t), f = null; else throw new Error("String record expects Formula"); break; case 33: case 545: { y.push(A); var oa = pe(A[0].s); if (d = t.dense ? (n[A[0].s.r] || [])[A[0].s.c] : n[oa], t.cellFormula && d) { if (!f || !oa || !d) break; d.f = "" + dr(A[1], s, A[0], V, L), d.F = we(A[0]); } } break; case 1212: { if (!t.cellFormula) break; if (h) { if (!f) break; w[pe(f.cell)] = A[0], d = t.dense ? (n[f.cell.r] || [])[f.cell.c] : n[pe(f.cell)], (d || {}).f = "" + dr(A[0], s, u, V, L); } } break; case 253: g = i0(c[A.isst].t, A.ixfe, "s"), c[A.isst].h && (g.h = c[A.isst].h), g.XF = b[g.ixfe], D > 0 && (g.z = P[g.ixfe >> 8 & 63]), qr(g, t, r.opts.Date1904), G({ c: A.c, r: A.r }, g, t); break; case 513: t.sheetStubs && (g = { ixfe: A.ixfe, XF: b[A.ixfe], t: "z" }, D > 0 && (g.z = P[g.ixfe >> 8 & 63]), qr(g, t, r.opts.Date1904), G({ c: A.c, r: A.r }, g, t)); break; case 190: if (t.sheetStubs) for (var dt = A.c; dt <= A.C; ++dt) { var Ar = A.ixfe[dt - A.c]; g = { ixfe: Ar, XF: b[Ar], t: "z" }, D > 0 && (g.z = P[g.ixfe >> 8 & 63]), qr(g, t, r.opts.Date1904), G({ c: dt, r: A.r }, g, t); } break; case 214: case 516: case 4: g = i0(A.val, A.ixfe, "s"), g.XF = b[g.ixfe], D > 0 && (g.z = P[g.ixfe >> 8 & 63]), qr(g, t, r.opts.Date1904), G({ c: A.c, r: A.r }, g, t); break; case 0: case 512: ge === 1 && (s = A); break; case 252: c = A; break; case 1054: if (L.biff == 4) { P[D++] = A[1]; for (var it = 0; it < D + 163 && de[it] != A[1]; ++it) ; it >= 163 && rt(A[1], D + 163); } else rt(A[1], A[0]); break; case 30: { P[D++] = A; for (var vt = 0; vt < D + 163 && de[vt] != A; ++vt) ; vt >= 163 && rt(A, D + 163); } break; case 229: le = le.concat(A); break; case 93: ie[A.cmo[0]] = L.lastobj = A; break; case 438: L.lastobj.TxO = A; break; case 127: L.lastobj.ImData = A; break; case 440: for (p = A[0].s.r; p <= A[0].e.r; ++p) for (x = A[0].s.c; x <= A[0].e.c; ++x) d = t.dense ? (n[p] || [])[x] : n[pe({ c: x, r: p })], d && (d.l = A[1]); break; case 2048: for (p = A[0].s.r; p <= A[0].e.r; ++p) for (x = A[0].s.c; x <= A[0].e.c; ++x) d = t.dense ? (n[p] || [])[x] : n[pe({ c: x, r: p })], d && d.l && (d.l.Tooltip = A[1]); break; case 28: { if (L.biff <= 5 && L.biff >= 2) break; d = t.dense ? (n[A[0].r] || [])[A[0].c] : n[pe(A[0])]; var la = ie[A[2]]; d || (t.dense ? (n[A[0].r] || (n[A[0].r] = []), d = n[A[0].r][A[0].c] = { t: "z" }) : d = n[pe(A[0])] = { t: "z" }, s.e.r = Math.max(s.e.r, A[0].r), s.s.r = Math.min(s.s.r, A[0].r), s.e.c = Math.max(s.e.c, A[0].c), s.s.c = Math.min(s.s.c, A[0].c)), d.c || (d.c = []), v = { a: A[1], t: la.TxO.t }, d.c.push(v); } break; case 2173: lx(b[A.ixfe], A.ext); break; case 125: { if (!L.cellStyles) break; for (; A.e >= A.s; ) he[A.e--] = { width: A.w / 256, level: A.level || 0, hidden: !!(A.flags & 1) }, be || (be = !0, Nn(A.w / 256)), kt(he[A.e + 1]); } break; case 520: { var wr = {}; A.level != null && (ce[A.r] = wr, wr.level = A.level), A.hidden && (ce[A.r] = wr, wr.hidden = !0), A.hpt && (ce[A.r] = wr, wr.hpt = A.hpt, wr.hpx = ia(A.hpt)); } break; case 38: case 39: case 40: case 41: n["!margins"] || bt(n["!margins"] = {}), n["!margins"][{ 38: "left", 39: "right", 40: "top", 41: "bottom" }[te]] = A; break; case 161: n["!margins"] || bt(n["!margins"] = {}), n["!margins"].header = A.header, n["!margins"].footer = A.footer; break; case 574: A.RTL && (S.Views[0].RTL = !0); break; case 146: O = A; break; case 2198: J = A; break; case 140: C = A; break; case 442: o ? B.CodeName = A || B.name : S.WBProps.CodeName = A || "ThisWorkbook"; break; } } else q || console.error("Missing Info for XLS Record 0x" + te.toString(16)), e.l += Q; } return r.SheetNames = $e(i).sort(function(Jr, Se) { return Number(Jr) - Number(Se); }).map(function(Jr) { return i[Jr].name; }), t.bookSheets || (r.Sheets = a), !r.SheetNames.length && l["!ref"] ? (r.SheetNames.push("Sheet1"), r.Sheets && (r.Sheets.Sheet1 = l)) : r.Preamble = l, r.Sheets && I.forEach(function(Jr, Se) { r.Sheets[r.SheetNames[Se]]["!autofilter"] = Jr; }), r.Strings = c, r.SSF = We(de), L.enc && (r.Encryption = L.enc), J && (r.Themes = J), r.Metadata = {}, C !== void 0 && (r.Metadata.Country = C), V.names.length > 0 && (S.Names = V.names), r.Workbook = S, r; } var ya = { SI: "e0859ff2f94f6810ab9108002b27b3d9", DSI: "02d5cdd59c2e1b10939708002b2cf9ae", UDI: "05d5cdd59c2e1b10939708002b2cf9ae" }; function Sm(e, t, r) { var a = xe.find(e, "/!DocumentSummaryInformation"); if (a && a.size > 0) try { var n = Ri(a, K0, ya.DSI); for (var i in n) t[i] = n[i]; } catch (o) { if (r.WTF) throw o; } var s = xe.find(e, "/!SummaryInformation"); if (s && s.size > 0) try { var f = Ri(s, Y0, ya.SI); for (var c in f) t[c] == null && (t[c] = f[c]); } catch (o) { if (r.WTF) throw o; } t.HeadingPairs && t.TitlesOfParts && (nf(t.HeadingPairs, t.TitlesOfParts, t, r), delete t.HeadingPairs, delete t.TitlesOfParts); } function Fm(e, t) { var r = [], a = [], n = [], i = 0, s, f = ci(K0, "n"), c = ci(Y0, "n"); if (e.Props) for (s = $e(e.Props), i = 0; i < s.length; ++i) (Object.prototype.hasOwnProperty.call(f, s[i]) ? r : Object.prototype.hasOwnProperty.call(c, s[i]) ? a : n).push([s[i], e.Props[s[i]]]); if (e.Custprops) for (s = $e(e.Custprops), i = 0; i < s.length; ++i) Object.prototype.hasOwnProperty.call(e.Props || {}, s[i]) || (Object.prototype.hasOwnProperty.call(f, s[i]) ? r : Object.prototype.hasOwnProperty.call(c, s[i]) ? a : n).push([s[i], e.Custprops[s[i]]]); var o = []; for (i = 0; i < n.length; ++i) hf.indexOf(n[i][0]) > -1 || af.indexOf(n[i][0]) > -1 || n[i][1] != null && o.push(n[i]); a.length && xe.utils.cfb_add(t, "/SummaryInformation", Ni(a, ya.SI, c, Y0)), (r.length || o.length) && xe.utils.cfb_add(t, "/DocumentSummaryInformation", Ni(r, ya.DSI, f, K0, o.length ? o : null, ya.UDI)); } function fc(e, t) { t || (t = {}), Vn(t), on(), t.codepage && cn(t.codepage); var r, a; if (e.FullPaths) { if (xe.find(e, "/encryption")) throw new Error("File is password-protected"); r = xe.find(e, "!CompObj"), a = xe.find(e, "/Workbook") || xe.find(e, "/Book"); } else { switch (t.type) { case "base64": e = Or(Rr(e)); break; case "binary": e = Or(e); break; case "buffer": break; case "array": Array.isArray(e) || (e = Array.prototype.slice.call(e)); break; } or(e, 0), a = { content: e }; } var n, i; if (r && wm(r), t.bookProps && !t.bookSheets) n = {}; else { var s = Te ? "buffer" : "array"; if (a && a.content) n = Tm(a.content, t); else if ((i = xe.find(e, "PerfectOffice_MAIN")) && i.content) n = Nt.to_workbook(i.content, (t.type = s, t)); else if ((i = xe.find(e, "NativeContent_MAIN")) && i.content) n = Nt.to_workbook(i.content, (t.type = s, t)); else throw (i = xe.find(e, "MN0")) && i.content ? new Error("Unsupported Works 4 for Mac file") : new Error("Cannot find Workbook stream"); t.bookVBA && e.FullPaths && xe.find(e, "/_VBA_PROJECT_CUR/VBA/dir") && (n.vbaraw = Mx(e)); } var f = {}; return e.FullPaths && Sm( /*::((*/ e, f, t ), n.Props = n.Custprops = f, t.bookFiles && (n.cfb = e), n; } function ym(e, t) { var r = t || {}, a = xe.utils.cfb_new({ root: "R" }), n = "/Workbook"; switch (r.bookType || "xls") { case "xls": r.bookType = "biff8"; case "xla": r.bookType || (r.bookType = "xla"); case "biff8": n = "/Workbook", r.biff = 8; break; case "biff5": n = "/Book", r.biff = 5; break; default: throw new Error("invalid type " + r.bookType + " for XLS CFB"); } return xe.utils.cfb_add(a, n, cc(e, r)), r.biff == 8 && (e.Props || e.Custprops) && Fm(e, a), r.biff == 8 && e.vbaraw && Ux(a, xe.read(e.vbaraw, { type: typeof e.vbaraw == "string" ? "binary" : "buffer" })), a; } var Ba = { /*::[*/ 0: { /* n:"BrtRowHdr", */ f: Jv }, /*::[*/ 1: { /* n:"BrtCellBlank", */ f: np }, /*::[*/ 2: { /* n:"BrtCellRk", */ f: Tp }, /*::[*/ 3: { /* n:"BrtCellError", */ f: hp }, /*::[*/ 4: { /* n:"BrtCellBool", */ f: cp }, /*::[*/ 5: { /* n:"BrtCellReal", */ f: wp }, /*::[*/ 6: { /* n:"BrtCellSt", */ f: Cp }, /*::[*/ 7: { /* n:"BrtCellIsst", */ f: pp }, /*::[*/ 8: { /* n:"BrtFmlaString", */ f: Pp }, /*::[*/ 9: { /* n:"BrtFmlaNum", */ f: bp }, /*::[*/ 10: { /* n:"BrtFmlaBool", */ f: Rp }, /*::[*/ 11: { /* n:"BrtFmlaError", */ f: Np }, /*::[*/ 12: { /* n:"BrtShortBlank", */ f: sp }, /*::[*/ 13: { /* n:"BrtShortRk", */ f: Fp }, /*::[*/ 14: { /* n:"BrtShortError", */ f: dp }, /*::[*/ 15: { /* n:"BrtShortBool", */ f: lp }, /*::[*/ 16: { /* n:"BrtShortReal", */ f: Qf }, /*::[*/ 17: { /* n:"BrtShortSt", */ f: Op }, /*::[*/ 18: { /* n:"BrtShortIsst", */ f: gp }, /*::[*/ 19: { /* n:"BrtSSTItem", */ f: Tn }, /*::[*/ 20: { /* n:"BrtPCDIMissing" */ }, /*::[*/ 21: { /* n:"BrtPCDINumber" */ }, /*::[*/ 22: { /* n:"BrtPCDIBoolean" */ }, /*::[*/ 23: { /* n:"BrtPCDIError" */ }, /*::[*/ 24: { /* n:"BrtPCDIString" */ }, /*::[*/ 25: { /* n:"BrtPCDIDatetime" */ }, /*::[*/ 26: { /* n:"BrtPCDIIndex" */ }, /*::[*/ 27: { /* n:"BrtPCDIAMissing" */ }, /*::[*/ 28: { /* n:"BrtPCDIANumber" */ }, /*::[*/ 29: { /* n:"BrtPCDIABoolean" */ }, /*::[*/ 30: { /* n:"BrtPCDIAError" */ }, /*::[*/ 31: { /* n:"BrtPCDIAString" */ }, /*::[*/ 32: { /* n:"BrtPCDIADatetime" */ }, /*::[*/ 33: { /* n:"BrtPCRRecord" */ }, /*::[*/ 34: { /* n:"BrtPCRRecordDt" */ }, /*::[*/ 35: { /* n:"BrtFRTBegin", */ T: 1 }, /*::[*/ 36: { /* n:"BrtFRTEnd", */ T: -1 }, /*::[*/ 37: { /* n:"BrtACBegin", */ T: 1 }, /*::[*/ 38: { /* n:"BrtACEnd", */ T: -1 }, /*::[*/ 39: { /* n:"BrtName", */ f: O2 }, /*::[*/ 40: { /* n:"BrtIndexRowBlock" */ }, /*::[*/ 42: { /* n:"BrtIndexBlock" */ }, /*::[*/ 43: { /* n:"BrtFont", */ f: C1 }, /*::[*/ 44: { /* n:"BrtFmt", */ f: y1 }, /*::[*/ 45: { /* n:"BrtFill", */ f: I1 }, /*::[*/ 46: { /* n:"BrtBorder", */ f: N1 }, /*::[*/ 47: { /* n:"BrtXF", */ f: R1 }, /*::[*/ 48: { /* n:"BrtStyle" */ }, /*::[*/ 49: { /* n:"BrtCellMeta", */ f: Qo }, /*::[*/ 50: { /* n:"BrtValueMeta" */ }, /*::[*/ 51: { /* n:"BrtMdb" */ f: xx }, /*::[*/ 52: { /* n:"BrtBeginFmd", */ T: 1 }, /*::[*/ 53: { /* n:"BrtEndFmd", */ T: -1 }, /*::[*/ 54: { /* n:"BrtBeginMdx", */ T: 1 }, /*::[*/ 55: { /* n:"BrtEndMdx", */ T: -1 }, /*::[*/ 56: { /* n:"BrtBeginMdxTuple", */ T: 1 }, /*::[*/ 57: { /* n:"BrtEndMdxTuple", */ T: -1 }, /*::[*/ 58: { /* n:"BrtMdxMbrIstr" */ }, /*::[*/ 59: { /* n:"BrtStr" */ }, /*::[*/ 60: { /* n:"BrtColInfo", */ f: Tf }, /*::[*/ 62: { /* n:"BrtCellRString", */ f: Ap }, /*::[*/ 63: { /* n:"BrtCalcChainItem$", */ f: kx }, /*::[*/ 64: { /* n:"BrtDVal", */ f: qp }, /*::[*/ 65: { /* n:"BrtSxvcellNum" */ }, /*::[*/ 66: { /* n:"BrtSxvcellStr" */ }, /*::[*/ 67: { /* n:"BrtSxvcellBool" */ }, /*::[*/ 68: { /* n:"BrtSxvcellErr" */ }, /*::[*/ 69: { /* n:"BrtSxvcellDate" */ }, /*::[*/ 70: { /* n:"BrtSxvcellNil" */ }, /*::[*/ 128: { /* n:"BrtFileVersion" */ }, /*::[*/ 129: { /* n:"BrtBeginSheet", */ T: 1 }, /*::[*/ 130: { /* n:"BrtEndSheet", */ T: -1 }, /*::[*/ 131: { /* n:"BrtBeginBook", */ T: 1, f: gr, p: 0 }, /*::[*/ 132: { /* n:"BrtEndBook", */ T: -1 }, /*::[*/ 133: { /* n:"BrtBeginWsViews", */ T: 1 }, /*::[*/ 134: { /* n:"BrtEndWsViews", */ T: -1 }, /*::[*/ 135: { /* n:"BrtBeginBookViews", */ T: 1 }, /*::[*/ 136: { /* n:"BrtEndBookViews", */ T: -1 }, /*::[*/ 137: { /* n:"BrtBeginWsView", */ T: 1, f: $p }, /*::[*/ 138: { /* n:"BrtEndWsView", */ T: -1 }, /*::[*/ 139: { /* n:"BrtBeginCsViews", */ T: 1 }, /*::[*/ 140: { /* n:"BrtEndCsViews", */ T: -1 }, /*::[*/ 141: { /* n:"BrtBeginCsView", */ T: 1 }, /*::[*/ 142: { /* n:"BrtEndCsView", */ T: -1 }, /*::[*/ 143: { /* n:"BrtBeginBundleShs", */ T: 1 }, /*::[*/ 144: { /* n:"BrtEndBundleShs", */ T: -1 }, /*::[*/ 145: { /* n:"BrtBeginSheetData", */ T: 1 }, /*::[*/ 146: { /* n:"BrtEndSheetData", */ T: -1 }, /*::[*/ 147: { /* n:"BrtWsProp", */ f: tp }, /*::[*/ 148: { /* n:"BrtWsDim", */ f: Qv, p: 16 }, /*::[*/ 151: { /* n:"BrtPane", */ f: Hp }, /*::[*/ 152: { /* n:"BrtSel" */ }, /*::[*/ 153: { /* n:"BrtWbProp", */ f: A2 }, /*::[*/ 154: { /* n:"BrtWbFactoid" */ }, /*::[*/ 155: { /* n:"BrtFileRecover" */ }, /*::[*/ 156: { /* n:"BrtBundleSh", */ f: F2 }, /*::[*/ 157: { /* n:"BrtCalcProp" */ }, /*::[*/ 158: { /* n:"BrtBookView" */ }, /*::[*/ 159: { /* n:"BrtBeginSst", */ T: 1, f: Gh }, /*::[*/ 160: { /* n:"BrtEndSst", */ T: -1 }, /*::[*/ 161: { /* n:"BrtBeginAFilter", */ T: 1, f: jt }, /*::[*/ 162: { /* n:"BrtEndAFilter", */ T: -1 }, /*::[*/ 163: { /* n:"BrtBeginFilterColumn", */ T: 1 }, /*::[*/ 164: { /* n:"BrtEndFilterColumn", */ T: -1 }, /*::[*/ 165: { /* n:"BrtBeginFilters", */ T: 1 }, /*::[*/ 166: { /* n:"BrtEndFilters", */ T: -1 }, /*::[*/ 167: { /* n:"BrtFilter" */ }, /*::[*/ 168: { /* n:"BrtColorFilter" */ }, /*::[*/ 169: { /* n:"BrtIconFilter" */ }, /*::[*/ 170: { /* n:"BrtTop10Filter" */ }, /*::[*/ 171: { /* n:"BrtDynamicFilter" */ }, /*::[*/ 172: { /* n:"BrtBeginCustomFilters", */ T: 1 }, /*::[*/ 173: { /* n:"BrtEndCustomFilters", */ T: -1 }, /*::[*/ 174: { /* n:"BrtCustomFilter" */ }, /*::[*/ 175: { /* n:"BrtAFilterDateGroupItem" */ }, /*::[*/ 176: { /* n:"BrtMergeCell", */ f: Lp }, /*::[*/ 177: { /* n:"BrtBeginMergeCells", */ T: 1 }, /*::[*/ 178: { /* n:"BrtEndMergeCells", */ T: -1 }, /*::[*/ 179: { /* n:"BrtBeginPivotCacheDef", */ T: 1 }, /*::[*/ 180: { /* n:"BrtEndPivotCacheDef", */ T: -1 }, /*::[*/ 181: { /* n:"BrtBeginPCDFields", */ T: 1 }, /*::[*/ 182: { /* n:"BrtEndPCDFields", */ T: -1 }, /*::[*/ 183: { /* n:"BrtBeginPCDField", */ T: 1 }, /*::[*/ 184: { /* n:"BrtEndPCDField", */ T: -1 }, /*::[*/ 185: { /* n:"BrtBeginPCDSource", */ T: 1 }, /*::[*/ 186: { /* n:"BrtEndPCDSource", */ T: -1 }, /*::[*/ 187: { /* n:"BrtBeginPCDSRange", */ T: 1 }, /*::[*/ 188: { /* n:"BrtEndPCDSRange", */ T: -1 }, /*::[*/ 189: { /* n:"BrtBeginPCDFAtbl", */ T: 1 }, /*::[*/ 190: { /* n:"BrtEndPCDFAtbl", */ T: -1 }, /*::[*/ 191: { /* n:"BrtBeginPCDIRun", */ T: 1 }, /*::[*/ 192: { /* n:"BrtEndPCDIRun", */ T: -1 }, /*::[*/ 193: { /* n:"BrtBeginPivotCacheRecords", */ T: 1 }, /*::[*/ 194: { /* n:"BrtEndPivotCacheRecords", */ T: -1 }, /*::[*/ 195: { /* n:"BrtBeginPCDHierarchies", */ T: 1 }, /*::[*/ 196: { /* n:"BrtEndPCDHierarchies", */ T: -1 }, /*::[*/ 197: { /* n:"BrtBeginPCDHierarchy", */ T: 1 }, /*::[*/ 198: { /* n:"BrtEndPCDHierarchy", */ T: -1 }, /*::[*/ 199: { /* n:"BrtBeginPCDHFieldsUsage", */ T: 1 }, /*::[*/ 200: { /* n:"BrtEndPCDHFieldsUsage", */ T: -1 }, /*::[*/ 201: { /* n:"BrtBeginExtConnection", */ T: 1 }, /*::[*/ 202: { /* n:"BrtEndExtConnection", */ T: -1 }, /*::[*/ 203: { /* n:"BrtBeginECDbProps", */ T: 1 }, /*::[*/ 204: { /* n:"BrtEndECDbProps", */ T: -1 }, /*::[*/ 205: { /* n:"BrtBeginECOlapProps", */ T: 1 }, /*::[*/ 206: { /* n:"BrtEndECOlapProps", */ T: -1 }, /*::[*/ 207: { /* n:"BrtBeginPCDSConsol", */ T: 1 }, /*::[*/ 208: { /* n:"BrtEndPCDSConsol", */ T: -1 }, /*::[*/ 209: { /* n:"BrtBeginPCDSCPages", */ T: 1 }, /*::[*/ 210: { /* n:"BrtEndPCDSCPages", */ T: -1 }, /*::[*/ 211: { /* n:"BrtBeginPCDSCPage", */ T: 1 }, /*::[*/ 212: { /* n:"BrtEndPCDSCPage", */ T: -1 }, /*::[*/ 213: { /* n:"BrtBeginPCDSCPItem", */ T: 1 }, /*::[*/ 214: { /* n:"BrtEndPCDSCPItem", */ T: -1 }, /*::[*/ 215: { /* n:"BrtBeginPCDSCSets", */ T: 1 }, /*::[*/ 216: { /* n:"BrtEndPCDSCSets", */ T: -1 }, /*::[*/ 217: { /* n:"BrtBeginPCDSCSet", */ T: 1 }, /*::[*/ 218: { /* n:"BrtEndPCDSCSet", */ T: -1 }, /*::[*/ 219: { /* n:"BrtBeginPCDFGroup", */ T: 1 }, /*::[*/ 220: { /* n:"BrtEndPCDFGroup", */ T: -1 }, /*::[*/ 221: { /* n:"BrtBeginPCDFGItems", */ T: 1 }, /*::[*/ 222: { /* n:"BrtEndPCDFGItems", */ T: -1 }, /*::[*/ 223: { /* n:"BrtBeginPCDFGRange", */ T: 1 }, /*::[*/ 224: { /* n:"BrtEndPCDFGRange", */ T: -1 }, /*::[*/ 225: { /* n:"BrtBeginPCDFGDiscrete", */ T: 1 }, /*::[*/ 226: { /* n:"BrtEndPCDFGDiscrete", */ T: -1 }, /*::[*/ 227: { /* n:"BrtBeginPCDSDTupleCache", */ T: 1 }, /*::[*/ 228: { /* n:"BrtEndPCDSDTupleCache", */ T: -1 }, /*::[*/ 229: { /* n:"BrtBeginPCDSDTCEntries", */ T: 1 }, /*::[*/ 230: { /* n:"BrtEndPCDSDTCEntries", */ T: -1 }, /*::[*/ 231: { /* n:"BrtBeginPCDSDTCEMembers", */ T: 1 }, /*::[*/ 232: { /* n:"BrtEndPCDSDTCEMembers", */ T: -1 }, /*::[*/ 233: { /* n:"BrtBeginPCDSDTCEMember", */ T: 1 }, /*::[*/ 234: { /* n:"BrtEndPCDSDTCEMember", */ T: -1 }, /*::[*/ 235: { /* n:"BrtBeginPCDSDTCQueries", */ T: 1 }, /*::[*/ 236: { /* n:"BrtEndPCDSDTCQueries", */ T: -1 }, /*::[*/ 237: { /* n:"BrtBeginPCDSDTCQuery", */ T: 1 }, /*::[*/ 238: { /* n:"BrtEndPCDSDTCQuery", */ T: -1 }, /*::[*/ 239: { /* n:"BrtBeginPCDSDTCSets", */ T: 1 }, /*::[*/ 240: { /* n:"BrtEndPCDSDTCSets", */ T: -1 }, /*::[*/ 241: { /* n:"BrtBeginPCDSDTCSet", */ T: 1 }, /*::[*/ 242: { /* n:"BrtEndPCDSDTCSet", */ T: -1 }, /*::[*/ 243: { /* n:"BrtBeginPCDCalcItems", */ T: 1 }, /*::[*/ 244: { /* n:"BrtEndPCDCalcItems", */ T: -1 }, /*::[*/ 245: { /* n:"BrtBeginPCDCalcItem", */ T: 1 }, /*::[*/ 246: { /* n:"BrtEndPCDCalcItem", */ T: -1 }, /*::[*/ 247: { /* n:"BrtBeginPRule", */ T: 1 }, /*::[*/ 248: { /* n:"BrtEndPRule", */ T: -1 }, /*::[*/ 249: { /* n:"BrtBeginPRFilters", */ T: 1 }, /*::[*/ 250: { /* n:"BrtEndPRFilters", */ T: -1 }, /*::[*/ 251: { /* n:"BrtBeginPRFilter", */ T: 1 }, /*::[*/ 252: { /* n:"BrtEndPRFilter", */ T: -1 }, /*::[*/ 253: { /* n:"BrtBeginPNames", */ T: 1 }, /*::[*/ 254: { /* n:"BrtEndPNames", */ T: -1 }, /*::[*/ 255: { /* n:"BrtBeginPName", */ T: 1 }, /*::[*/ 256: { /* n:"BrtEndPName", */ T: -1 }, /*::[*/ 257: { /* n:"BrtBeginPNPairs", */ T: 1 }, /*::[*/ 258: { /* n:"BrtEndPNPairs", */ T: -1 }, /*::[*/ 259: { /* n:"BrtBeginPNPair", */ T: 1 }, /*::[*/ 260: { /* n:"BrtEndPNPair", */ T: -1 }, /*::[*/ 261: { /* n:"BrtBeginECWebProps", */ T: 1 }, /*::[*/ 262: { /* n:"BrtEndECWebProps", */ T: -1 }, /*::[*/ 263: { /* n:"BrtBeginEcWpTables", */ T: 1 }, /*::[*/ 264: { /* n:"BrtEndECWPTables", */ T: -1 }, /*::[*/ 265: { /* n:"BrtBeginECParams", */ T: 1 }, /*::[*/ 266: { /* n:"BrtEndECParams", */ T: -1 }, /*::[*/ 267: { /* n:"BrtBeginECParam", */ T: 1 }, /*::[*/ 268: { /* n:"BrtEndECParam", */ T: -1 }, /*::[*/ 269: { /* n:"BrtBeginPCDKPIs", */ T: 1 }, /*::[*/ 270: { /* n:"BrtEndPCDKPIs", */ T: -1 }, /*::[*/ 271: { /* n:"BrtBeginPCDKPI", */ T: 1 }, /*::[*/ 272: { /* n:"BrtEndPCDKPI", */ T: -1 }, /*::[*/ 273: { /* n:"BrtBeginDims", */ T: 1 }, /*::[*/ 274: { /* n:"BrtEndDims", */ T: -1 }, /*::[*/ 275: { /* n:"BrtBeginDim", */ T: 1 }, /*::[*/ 276: { /* n:"BrtEndDim", */ T: -1 }, /*::[*/ 277: { /* n:"BrtIndexPartEnd" */ }, /*::[*/ 278: { /* n:"BrtBeginStyleSheet", */ T: 1 }, /*::[*/ 279: { /* n:"BrtEndStyleSheet", */ T: -1 }, /*::[*/ 280: { /* n:"BrtBeginSXView", */ T: 1 }, /*::[*/ 281: { /* n:"BrtEndSXVI", */ T: -1 }, /*::[*/ 282: { /* n:"BrtBeginSXVI", */ T: 1 }, /*::[*/ 283: { /* n:"BrtBeginSXVIs", */ T: 1 }, /*::[*/ 284: { /* n:"BrtEndSXVIs", */ T: -1 }, /*::[*/ 285: { /* n:"BrtBeginSXVD", */ T: 1 }, /*::[*/ 286: { /* n:"BrtEndSXVD", */ T: -1 }, /*::[*/ 287: { /* n:"BrtBeginSXVDs", */ T: 1 }, /*::[*/ 288: { /* n:"BrtEndSXVDs", */ T: -1 }, /*::[*/ 289: { /* n:"BrtBeginSXPI", */ T: 1 }, /*::[*/ 290: { /* n:"BrtEndSXPI", */ T: -1 }, /*::[*/ 291: { /* n:"BrtBeginSXPIs", */ T: 1 }, /*::[*/ 292: { /* n:"BrtEndSXPIs", */ T: -1 }, /*::[*/ 293: { /* n:"BrtBeginSXDI", */ T: 1 }, /*::[*/ 294: { /* n:"BrtEndSXDI", */ T: -1 }, /*::[*/ 295: { /* n:"BrtBeginSXDIs", */ T: 1 }, /*::[*/ 296: { /* n:"BrtEndSXDIs", */ T: -1 }, /*::[*/ 297: { /* n:"BrtBeginSXLI", */ T: 1 }, /*::[*/ 298: { /* n:"BrtEndSXLI", */ T: -1 }, /*::[*/ 299: { /* n:"BrtBeginSXLIRws", */ T: 1 }, /*::[*/ 300: { /* n:"BrtEndSXLIRws", */ T: -1 }, /*::[*/ 301: { /* n:"BrtBeginSXLICols", */ T: 1 }, /*::[*/ 302: { /* n:"BrtEndSXLICols", */ T: -1 }, /*::[*/ 303: { /* n:"BrtBeginSXFormat", */ T: 1 }, /*::[*/ 304: { /* n:"BrtEndSXFormat", */ T: -1 }, /*::[*/ 305: { /* n:"BrtBeginSXFormats", */ T: 1 }, /*::[*/ 306: { /* n:"BrtEndSxFormats", */ T: -1 }, /*::[*/ 307: { /* n:"BrtBeginSxSelect", */ T: 1 }, /*::[*/ 308: { /* n:"BrtEndSxSelect", */ T: -1 }, /*::[*/ 309: { /* n:"BrtBeginISXVDRws", */ T: 1 }, /*::[*/ 310: { /* n:"BrtEndISXVDRws", */ T: -1 }, /*::[*/ 311: { /* n:"BrtBeginISXVDCols", */ T: 1 }, /*::[*/ 312: { /* n:"BrtEndISXVDCols", */ T: -1 }, /*::[*/ 313: { /* n:"BrtEndSXLocation", */ T: -1 }, /*::[*/ 314: { /* n:"BrtBeginSXLocation", */ T: 1 }, /*::[*/ 315: { /* n:"BrtEndSXView", */ T: -1 }, /*::[*/ 316: { /* n:"BrtBeginSXTHs", */ T: 1 }, /*::[*/ 317: { /* n:"BrtEndSXTHs", */ T: -1 }, /*::[*/ 318: { /* n:"BrtBeginSXTH", */ T: 1 }, /*::[*/ 319: { /* n:"BrtEndSXTH", */ T: -1 }, /*::[*/ 320: { /* n:"BrtBeginISXTHRws", */ T: 1 }, /*::[*/ 321: { /* n:"BrtEndISXTHRws", */ T: -1 }, /*::[*/ 322: { /* n:"BrtBeginISXTHCols", */ T: 1 }, /*::[*/ 323: { /* n:"BrtEndISXTHCols", */ T: -1 }, /*::[*/ 324: { /* n:"BrtBeginSXTDMPS", */ T: 1 }, /*::[*/ 325: { /* n:"BrtEndSXTDMPs", */ T: -1 }, /*::[*/ 326: { /* n:"BrtBeginSXTDMP", */ T: 1 }, /*::[*/ 327: { /* n:"BrtEndSXTDMP", */ T: -1 }, /*::[*/ 328: { /* n:"BrtBeginSXTHItems", */ T: 1 }, /*::[*/ 329: { /* n:"BrtEndSXTHItems", */ T: -1 }, /*::[*/ 330: { /* n:"BrtBeginSXTHItem", */ T: 1 }, /*::[*/ 331: { /* n:"BrtEndSXTHItem", */ T: -1 }, /*::[*/ 332: { /* n:"BrtBeginMetadata", */ T: 1 }, /*::[*/ 333: { /* n:"BrtEndMetadata", */ T: -1 }, /*::[*/ 334: { /* n:"BrtBeginEsmdtinfo", */ T: 1 }, /*::[*/ 335: { /* n:"BrtMdtinfo", */ f: ux }, /*::[*/ 336: { /* n:"BrtEndEsmdtinfo", */ T: -1 }, /*::[*/ 337: { /* n:"BrtBeginEsmdb", */ f: px, T: 1 }, /*::[*/ 338: { /* n:"BrtEndEsmdb", */ T: -1 }, /*::[*/ 339: { /* n:"BrtBeginEsfmd", */ T: 1 }, /*::[*/ 340: { /* n:"BrtEndEsfmd", */ T: -1 }, /*::[*/ 341: { /* n:"BrtBeginSingleCells", */ T: 1 }, /*::[*/ 342: { /* n:"BrtEndSingleCells", */ T: -1 }, /*::[*/ 343: { /* n:"BrtBeginList", */ T: 1 }, /*::[*/ 344: { /* n:"BrtEndList", */ T: -1 }, /*::[*/ 345: { /* n:"BrtBeginListCols", */ T: 1 }, /*::[*/ 346: { /* n:"BrtEndListCols", */ T: -1 }, /*::[*/ 347: { /* n:"BrtBeginListCol", */ T: 1 }, /*::[*/ 348: { /* n:"BrtEndListCol", */ T: -1 }, /*::[*/ 349: { /* n:"BrtBeginListXmlCPr", */ T: 1 }, /*::[*/ 350: { /* n:"BrtEndListXmlCPr", */ T: -1 }, /*::[*/ 351: { /* n:"BrtListCCFmla" */ }, /*::[*/ 352: { /* n:"BrtListTrFmla" */ }, /*::[*/ 353: { /* n:"BrtBeginExternals", */ T: 1 }, /*::[*/ 354: { /* n:"BrtEndExternals", */ T: -1 }, /*::[*/ 355: { /* n:"BrtSupBookSrc", */ f: $0 }, /*::[*/ 357: { /* n:"BrtSupSelf" */ }, /*::[*/ 358: { /* n:"BrtSupSame" */ }, /*::[*/ 359: { /* n:"BrtSupTabs" */ }, /*::[*/ 360: { /* n:"BrtBeginSupBook", */ T: 1 }, /*::[*/ 361: { /* n:"BrtPlaceholderName" */ }, /*::[*/ 362: { /* n:"BrtExternSheet", */ f: kf }, /*::[*/ 363: { /* n:"BrtExternTableStart" */ }, /*::[*/ 364: { /* n:"BrtExternTableEnd" */ }, /*::[*/ 366: { /* n:"BrtExternRowHdr" */ }, /*::[*/ 367: { /* n:"BrtExternCellBlank" */ }, /*::[*/ 368: { /* n:"BrtExternCellReal" */ }, /*::[*/ 369: { /* n:"BrtExternCellBool" */ }, /*::[*/ 370: { /* n:"BrtExternCellError" */ }, /*::[*/ 371: { /* n:"BrtExternCellString" */ }, /*::[*/ 372: { /* n:"BrtBeginEsmdx", */ T: 1 }, /*::[*/ 373: { /* n:"BrtEndEsmdx", */ T: -1 }, /*::[*/ 374: { /* n:"BrtBeginMdxSet", */ T: 1 }, /*::[*/ 375: { /* n:"BrtEndMdxSet", */ T: -1 }, /*::[*/ 376: { /* n:"BrtBeginMdxMbrProp", */ T: 1 }, /*::[*/ 377: { /* n:"BrtEndMdxMbrProp", */ T: -1 }, /*::[*/ 378: { /* n:"BrtBeginMdxKPI", */ T: 1 }, /*::[*/ 379: { /* n:"BrtEndMdxKPI", */ T: -1 }, /*::[*/ 380: { /* n:"BrtBeginEsstr", */ T: 1 }, /*::[*/ 381: { /* n:"BrtEndEsstr", */ T: -1 }, /*::[*/ 382: { /* n:"BrtBeginPRFItem", */ T: 1 }, /*::[*/ 383: { /* n:"BrtEndPRFItem", */ T: -1 }, /*::[*/ 384: { /* n:"BrtBeginPivotCacheIDs", */ T: 1 }, /*::[*/ 385: { /* n:"BrtEndPivotCacheIDs", */ T: -1 }, /*::[*/ 386: { /* n:"BrtBeginPivotCacheID", */ T: 1 }, /*::[*/ 387: { /* n:"BrtEndPivotCacheID", */ T: -1 }, /*::[*/ 388: { /* n:"BrtBeginISXVIs", */ T: 1 }, /*::[*/ 389: { /* n:"BrtEndISXVIs", */ T: -1 }, /*::[*/ 390: { /* n:"BrtBeginColInfos", */ T: 1 }, /*::[*/ 391: { /* n:"BrtEndColInfos", */ T: -1 }, /*::[*/ 392: { /* n:"BrtBeginRwBrk", */ T: 1 }, /*::[*/ 393: { /* n:"BrtEndRwBrk", */ T: -1 }, /*::[*/ 394: { /* n:"BrtBeginColBrk", */ T: 1 }, /*::[*/ 395: { /* n:"BrtEndColBrk", */ T: -1 }, /*::[*/ 396: { /* n:"BrtBrk" */ }, /*::[*/ 397: { /* n:"BrtUserBookView" */ }, /*::[*/ 398: { /* n:"BrtInfo" */ }, /*::[*/ 399: { /* n:"BrtCUsr" */ }, /*::[*/ 400: { /* n:"BrtUsr" */ }, /*::[*/ 401: { /* n:"BrtBeginUsers", */ T: 1 }, /*::[*/ 403: { /* n:"BrtEOF" */ }, /*::[*/ 404: { /* n:"BrtUCR" */ }, /*::[*/ 405: { /* n:"BrtRRInsDel" */ }, /*::[*/ 406: { /* n:"BrtRREndInsDel" */ }, /*::[*/ 407: { /* n:"BrtRRMove" */ }, /*::[*/ 408: { /* n:"BrtRREndMove" */ }, /*::[*/ 409: { /* n:"BrtRRChgCell" */ }, /*::[*/ 410: { /* n:"BrtRREndChgCell" */ }, /*::[*/ 411: { /* n:"BrtRRHeader" */ }, /*::[*/ 412: { /* n:"BrtRRUserView" */ }, /*::[*/ 413: { /* n:"BrtRRRenSheet" */ }, /*::[*/ 414: { /* n:"BrtRRInsertSh" */ }, /*::[*/ 415: { /* n:"BrtRRDefName" */ }, /*::[*/ 416: { /* n:"BrtRRNote" */ }, /*::[*/ 417: { /* n:"BrtRRConflict" */ }, /*::[*/ 418: { /* n:"BrtRRTQSIF" */ }, /*::[*/ 419: { /* n:"BrtRRFormat" */ }, /*::[*/ 420: { /* n:"BrtRREndFormat" */ }, /*::[*/ 421: { /* n:"BrtRRAutoFmt" */ }, /*::[*/ 422: { /* n:"BrtBeginUserShViews", */ T: 1 }, /*::[*/ 423: { /* n:"BrtBeginUserShView", */ T: 1 }, /*::[*/ 424: { /* n:"BrtEndUserShView", */ T: -1 }, /*::[*/ 425: { /* n:"BrtEndUserShViews", */ T: -1 }, /*::[*/ 426: { /* n:"BrtArrFmla", */ f: Vp }, /*::[*/ 427: { /* n:"BrtShrFmla", */ f: Gp }, /*::[*/ 428: { /* n:"BrtTable" */ }, /*::[*/ 429: { /* n:"BrtBeginExtConnections", */ T: 1 }, /*::[*/ 430: { /* n:"BrtEndExtConnections", */ T: -1 }, /*::[*/ 431: { /* n:"BrtBeginPCDCalcMems", */ T: 1 }, /*::[*/ 432: { /* n:"BrtEndPCDCalcMems", */ T: -1 }, /*::[*/ 433: { /* n:"BrtBeginPCDCalcMem", */ T: 1 }, /*::[*/ 434: { /* n:"BrtEndPCDCalcMem", */ T: -1 }, /*::[*/ 435: { /* n:"BrtBeginPCDHGLevels", */ T: 1 }, /*::[*/ 436: { /* n:"BrtEndPCDHGLevels", */ T: -1 }, /*::[*/ 437: { /* n:"BrtBeginPCDHGLevel", */ T: 1 }, /*::[*/ 438: { /* n:"BrtEndPCDHGLevel", */ T: -1 }, /*::[*/ 439: { /* n:"BrtBeginPCDHGLGroups", */ T: 1 }, /*::[*/ 440: { /* n:"BrtEndPCDHGLGroups", */ T: -1 }, /*::[*/ 441: { /* n:"BrtBeginPCDHGLGroup", */ T: 1 }, /*::[*/ 442: { /* n:"BrtEndPCDHGLGroup", */ T: -1 }, /*::[*/ 443: { /* n:"BrtBeginPCDHGLGMembers", */ T: 1 }, /*::[*/ 444: { /* n:"BrtEndPCDHGLGMembers", */ T: -1 }, /*::[*/ 445: { /* n:"BrtBeginPCDHGLGMember", */ T: 1 }, /*::[*/ 446: { /* n:"BrtEndPCDHGLGMember", */ T: -1 }, /*::[*/ 447: { /* n:"BrtBeginQSI", */ T: 1 }, /*::[*/ 448: { /* n:"BrtEndQSI", */ T: -1 }, /*::[*/ 449: { /* n:"BrtBeginQSIR", */ T: 1 }, /*::[*/ 450: { /* n:"BrtEndQSIR", */ T: -1 }, /*::[*/ 451: { /* n:"BrtBeginDeletedNames", */ T: 1 }, /*::[*/ 452: { /* n:"BrtEndDeletedNames", */ T: -1 }, /*::[*/ 453: { /* n:"BrtBeginDeletedName", */ T: 1 }, /*::[*/ 454: { /* n:"BrtEndDeletedName", */ T: -1 }, /*::[*/ 455: { /* n:"BrtBeginQSIFs", */ T: 1 }, /*::[*/ 456: { /* n:"BrtEndQSIFs", */ T: -1 }, /*::[*/ 457: { /* n:"BrtBeginQSIF", */ T: 1 }, /*::[*/ 458: { /* n:"BrtEndQSIF", */ T: -1 }, /*::[*/ 459: { /* n:"BrtBeginAutoSortScope", */ T: 1 }, /*::[*/ 460: { /* n:"BrtEndAutoSortScope", */ T: -1 }, /*::[*/ 461: { /* n:"BrtBeginConditionalFormatting", */ T: 1 }, /*::[*/ 462: { /* n:"BrtEndConditionalFormatting", */ T: -1 }, /*::[*/ 463: { /* n:"BrtBeginCFRule", */ T: 1 }, /*::[*/ 464: { /* n:"BrtEndCFRule", */ T: -1 }, /*::[*/ 465: { /* n:"BrtBeginIconSet", */ T: 1 }, /*::[*/ 466: { /* n:"BrtEndIconSet", */ T: -1 }, /*::[*/ 467: { /* n:"BrtBeginDatabar", */ T: 1 }, /*::[*/ 468: { /* n:"BrtEndDatabar", */ T: -1 }, /*::[*/ 469: { /* n:"BrtBeginColorScale", */ T: 1 }, /*::[*/ 470: { /* n:"BrtEndColorScale", */ T: -1 }, /*::[*/ 471: { /* n:"BrtCFVO" */ }, /*::[*/ 472: { /* n:"BrtExternValueMeta" */ }, /*::[*/ 473: { /* n:"BrtBeginColorPalette", */ T: 1 }, /*::[*/ 474: { /* n:"BrtEndColorPalette", */ T: -1 }, /*::[*/ 475: { /* n:"BrtIndexedColor" */ }, /*::[*/ 476: { /* n:"BrtMargins", */ f: zp }, /*::[*/ 477: { /* n:"BrtPrintOptions" */ }, /*::[*/ 478: { /* n:"BrtPageSetup" */ }, /*::[*/ 479: { /* n:"BrtBeginHeaderFooter", */ T: 1 }, /*::[*/ 480: { /* n:"BrtEndHeaderFooter", */ T: -1 }, /*::[*/ 481: { /* n:"BrtBeginSXCrtFormat", */ T: 1 }, /*::[*/ 482: { /* n:"BrtEndSXCrtFormat", */ T: -1 }, /*::[*/ 483: { /* n:"BrtBeginSXCrtFormats", */ T: 1 }, /*::[*/ 484: { /* n:"BrtEndSXCrtFormats", */ T: -1 }, /*::[*/ 485: { /* n:"BrtWsFmtInfo", */ f: rp }, /*::[*/ 486: { /* n:"BrtBeginMgs", */ T: 1 }, /*::[*/ 487: { /* n:"BrtEndMGs", */ T: -1 }, /*::[*/ 488: { /* n:"BrtBeginMGMaps", */ T: 1 }, /*::[*/ 489: { /* n:"BrtEndMGMaps", */ T: -1 }, /*::[*/ 490: { /* n:"BrtBeginMG", */ T: 1 }, /*::[*/ 491: { /* n:"BrtEndMG", */ T: -1 }, /*::[*/ 492: { /* n:"BrtBeginMap", */ T: 1 }, /*::[*/ 493: { /* n:"BrtEndMap", */ T: -1 }, /*::[*/ 494: { /* n:"BrtHLink", */ f: Up }, /*::[*/ 495: { /* n:"BrtBeginDCon", */ T: 1 }, /*::[*/ 496: { /* n:"BrtEndDCon", */ T: -1 }, /*::[*/ 497: { /* n:"BrtBeginDRefs", */ T: 1 }, /*::[*/ 498: { /* n:"BrtEndDRefs", */ T: -1 }, /*::[*/ 499: { /* n:"BrtDRef" */ }, /*::[*/ 500: { /* n:"BrtBeginScenMan", */ T: 1 }, /*::[*/ 501: { /* n:"BrtEndScenMan", */ T: -1 }, /*::[*/ 502: { /* n:"BrtBeginSct", */ T: 1 }, /*::[*/ 503: { /* n:"BrtEndSct", */ T: -1 }, /*::[*/ 504: { /* n:"BrtSlc" */ }, /*::[*/ 505: { /* n:"BrtBeginDXFs", */ T: 1 }, /*::[*/ 506: { /* n:"BrtEndDXFs", */ T: -1 }, /*::[*/ 507: { /* n:"BrtDXF" */ }, /*::[*/ 508: { /* n:"BrtBeginTableStyles", */ T: 1 }, /*::[*/ 509: { /* n:"BrtEndTableStyles", */ T: -1 }, /*::[*/ 510: { /* n:"BrtBeginTableStyle", */ T: 1 }, /*::[*/ 511: { /* n:"BrtEndTableStyle", */ T: -1 }, /*::[*/ 512: { /* n:"BrtTableStyleElement" */ }, /*::[*/ 513: { /* n:"BrtTableStyleClient" */ }, /*::[*/ 514: { /* n:"BrtBeginVolDeps", */ T: 1 }, /*::[*/ 515: { /* n:"BrtEndVolDeps", */ T: -1 }, /*::[*/ 516: { /* n:"BrtBeginVolType", */ T: 1 }, /*::[*/ 517: { /* n:"BrtEndVolType", */ T: -1 }, /*::[*/ 518: { /* n:"BrtBeginVolMain", */ T: 1 }, /*::[*/ 519: { /* n:"BrtEndVolMain", */ T: -1 }, /*::[*/ 520: { /* n:"BrtBeginVolTopic", */ T: 1 }, /*::[*/ 521: { /* n:"BrtEndVolTopic", */ T: -1 }, /*::[*/ 522: { /* n:"BrtVolSubtopic" */ }, /*::[*/ 523: { /* n:"BrtVolRef" */ }, /*::[*/ 524: { /* n:"BrtVolNum" */ }, /*::[*/ 525: { /* n:"BrtVolErr" */ }, /*::[*/ 526: { /* n:"BrtVolStr" */ }, /*::[*/ 527: { /* n:"BrtVolBool" */ }, /*::[*/ 528: { /* n:"BrtBeginCalcChain$", */ T: 1 }, /*::[*/ 529: { /* n:"BrtEndCalcChain$", */ T: -1 }, /*::[*/ 530: { /* n:"BrtBeginSortState", */ T: 1 }, /*::[*/ 531: { /* n:"BrtEndSortState", */ T: -1 }, /*::[*/ 532: { /* n:"BrtBeginSortCond", */ T: 1 }, /*::[*/ 533: { /* n:"BrtEndSortCond", */ T: -1 }, /*::[*/ 534: { /* n:"BrtBookProtection" */ }, /*::[*/ 535: { /* n:"BrtSheetProtection" */ }, /*::[*/ 536: { /* n:"BrtRangeProtection" */ }, /*::[*/ 537: { /* n:"BrtPhoneticInfo" */ }, /*::[*/ 538: { /* n:"BrtBeginECTxtWiz", */ T: 1 }, /*::[*/ 539: { /* n:"BrtEndECTxtWiz", */ T: -1 }, /*::[*/ 540: { /* n:"BrtBeginECTWFldInfoLst", */ T: 1 }, /*::[*/ 541: { /* n:"BrtEndECTWFldInfoLst", */ T: -1 }, /*::[*/ 542: { /* n:"BrtBeginECTwFldInfo", */ T: 1 }, /*::[*/ 548: { /* n:"BrtFileSharing" */ }, /*::[*/ 549: { /* n:"BrtOleSize" */ }, /*::[*/ 550: { /* n:"BrtDrawing", */ f: $0 }, /*::[*/ 551: { /* n:"BrtLegacyDrawing" */ }, /*::[*/ 552: { /* n:"BrtLegacyDrawingHF" */ }, /*::[*/ 553: { /* n:"BrtWebOpt" */ }, /*::[*/ 554: { /* n:"BrtBeginWebPubItems", */ T: 1 }, /*::[*/ 555: { /* n:"BrtEndWebPubItems", */ T: -1 }, /*::[*/ 556: { /* n:"BrtBeginWebPubItem", */ T: 1 }, /*::[*/ 557: { /* n:"BrtEndWebPubItem", */ T: -1 }, /*::[*/ 558: { /* n:"BrtBeginSXCondFmt", */ T: 1 }, /*::[*/ 559: { /* n:"BrtEndSXCondFmt", */ T: -1 }, /*::[*/ 560: { /* n:"BrtBeginSXCondFmts", */ T: 1 }, /*::[*/ 561: { /* n:"BrtEndSXCondFmts", */ T: -1 }, /*::[*/ 562: { /* n:"BrtBkHim" */ }, /*::[*/ 564: { /* n:"BrtColor" */ }, /*::[*/ 565: { /* n:"BrtBeginIndexedColors", */ T: 1 }, /*::[*/ 566: { /* n:"BrtEndIndexedColors", */ T: -1 }, /*::[*/ 569: { /* n:"BrtBeginMRUColors", */ T: 1 }, /*::[*/ 570: { /* n:"BrtEndMRUColors", */ T: -1 }, /*::[*/ 572: { /* n:"BrtMRUColor" */ }, /*::[*/ 573: { /* n:"BrtBeginDVals", */ T: 1 }, /*::[*/ 574: { /* n:"BrtEndDVals", */ T: -1 }, /*::[*/ 577: { /* n:"BrtSupNameStart" */ }, /*::[*/ 578: { /* n:"BrtSupNameValueStart" */ }, /*::[*/ 579: { /* n:"BrtSupNameValueEnd" */ }, /*::[*/ 580: { /* n:"BrtSupNameNum" */ }, /*::[*/ 581: { /* n:"BrtSupNameErr" */ }, /*::[*/ 582: { /* n:"BrtSupNameSt" */ }, /*::[*/ 583: { /* n:"BrtSupNameNil" */ }, /*::[*/ 584: { /* n:"BrtSupNameBool" */ }, /*::[*/ 585: { /* n:"BrtSupNameFmla" */ }, /*::[*/ 586: { /* n:"BrtSupNameBits" */ }, /*::[*/ 587: { /* n:"BrtSupNameEnd" */ }, /*::[*/ 588: { /* n:"BrtEndSupBook", */ T: -1 }, /*::[*/ 589: { /* n:"BrtCellSmartTagProperty" */ }, /*::[*/ 590: { /* n:"BrtBeginCellSmartTag", */ T: 1 }, /*::[*/ 591: { /* n:"BrtEndCellSmartTag", */ T: -1 }, /*::[*/ 592: { /* n:"BrtBeginCellSmartTags", */ T: 1 }, /*::[*/ 593: { /* n:"BrtEndCellSmartTags", */ T: -1 }, /*::[*/ 594: { /* n:"BrtBeginSmartTags", */ T: 1 }, /*::[*/ 595: { /* n:"BrtEndSmartTags", */ T: -1 }, /*::[*/ 596: { /* n:"BrtSmartTagType" */ }, /*::[*/ 597: { /* n:"BrtBeginSmartTagTypes", */ T: 1 }, /*::[*/ 598: { /* n:"BrtEndSmartTagTypes", */ T: -1 }, /*::[*/ 599: { /* n:"BrtBeginSXFilters", */ T: 1 }, /*::[*/ 600: { /* n:"BrtEndSXFilters", */ T: -1 }, /*::[*/ 601: { /* n:"BrtBeginSXFILTER", */ T: 1 }, /*::[*/ 602: { /* n:"BrtEndSXFilter", */ T: -1 }, /*::[*/ 603: { /* n:"BrtBeginFills", */ T: 1 }, /*::[*/ 604: { /* n:"BrtEndFills", */ T: -1 }, /*::[*/ 605: { /* n:"BrtBeginCellWatches", */ T: 1 }, /*::[*/ 606: { /* n:"BrtEndCellWatches", */ T: -1 }, /*::[*/ 607: { /* n:"BrtCellWatch" */ }, /*::[*/ 608: { /* n:"BrtBeginCRErrs", */ T: 1 }, /*::[*/ 609: { /* n:"BrtEndCRErrs", */ T: -1 }, /*::[*/ 610: { /* n:"BrtCrashRecErr" */ }, /*::[*/ 611: { /* n:"BrtBeginFonts", */ T: 1 }, /*::[*/ 612: { /* n:"BrtEndFonts", */ T: -1 }, /*::[*/ 613: { /* n:"BrtBeginBorders", */ T: 1 }, /*::[*/ 614: { /* n:"BrtEndBorders", */ T: -1 }, /*::[*/ 615: { /* n:"BrtBeginFmts", */ T: 1 }, /*::[*/ 616: { /* n:"BrtEndFmts", */ T: -1 }, /*::[*/ 617: { /* n:"BrtBeginCellXFs", */ T: 1 }, /*::[*/ 618: { /* n:"BrtEndCellXFs", */ T: -1 }, /*::[*/ 619: { /* n:"BrtBeginStyles", */ T: 1 }, /*::[*/ 620: { /* n:"BrtEndStyles", */ T: -1 }, /*::[*/ 625: { /* n:"BrtBigName" */ }, /*::[*/ 626: { /* n:"BrtBeginCellStyleXFs", */ T: 1 }, /*::[*/ 627: { /* n:"BrtEndCellStyleXFs", */ T: -1 }, /*::[*/ 628: { /* n:"BrtBeginComments", */ T: 1 }, /*::[*/ 629: { /* n:"BrtEndComments", */ T: -1 }, /*::[*/ 630: { /* n:"BrtBeginCommentAuthors", */ T: 1 }, /*::[*/ 631: { /* n:"BrtEndCommentAuthors", */ T: -1 }, /*::[*/ 632: { /* n:"BrtCommentAuthor", */ f: Nx }, /*::[*/ 633: { /* n:"BrtBeginCommentList", */ T: 1 }, /*::[*/ 634: { /* n:"BrtEndCommentList", */ T: -1 }, /*::[*/ 635: { /* n:"BrtBeginComment", */ T: 1, f: Ix }, /*::[*/ 636: { /* n:"BrtEndComment", */ T: -1 }, /*::[*/ 637: { /* n:"BrtCommentText", */ f: al }, /*::[*/ 638: { /* n:"BrtBeginOleObjects", */ T: 1 }, /*::[*/ 639: { /* n:"BrtOleObject" */ }, /*::[*/ 640: { /* n:"BrtEndOleObjects", */ T: -1 }, /*::[*/ 641: { /* n:"BrtBeginSxrules", */ T: 1 }, /*::[*/ 642: { /* n:"BrtEndSxRules", */ T: -1 }, /*::[*/ 643: { /* n:"BrtBeginActiveXControls", */ T: 1 }, /*::[*/ 644: { /* n:"BrtActiveX" */ }, /*::[*/ 645: { /* n:"BrtEndActiveXControls", */ T: -1 }, /*::[*/ 646: { /* n:"BrtBeginPCDSDTCEMembersSortBy", */ T: 1 }, /*::[*/ 648: { /* n:"BrtBeginCellIgnoreECs", */ T: 1 }, /*::[*/ 649: { /* n:"BrtCellIgnoreEC" */ }, /*::[*/ 650: { /* n:"BrtEndCellIgnoreECs", */ T: -1 }, /*::[*/ 651: { /* n:"BrtCsProp", */ f: d2 }, /*::[*/ 652: { /* n:"BrtCsPageSetup" */ }, /*::[*/ 653: { /* n:"BrtBeginUserCsViews", */ T: 1 }, /*::[*/ 654: { /* n:"BrtEndUserCsViews", */ T: -1 }, /*::[*/ 655: { /* n:"BrtBeginUserCsView", */ T: 1 }, /*::[*/ 656: { /* n:"BrtEndUserCsView", */ T: -1 }, /*::[*/ 657: { /* n:"BrtBeginPcdSFCIEntries", */ T: 1 }, /*::[*/ 658: { /* n:"BrtEndPCDSFCIEntries", */ T: -1 }, /*::[*/ 659: { /* n:"BrtPCDSFCIEntry" */ }, /*::[*/ 660: { /* n:"BrtBeginListParts", */ T: 1 }, /*::[*/ 661: { /* n:"BrtListPart" */ }, /*::[*/ 662: { /* n:"BrtEndListParts", */ T: -1 }, /*::[*/ 663: { /* n:"BrtSheetCalcProp" */ }, /*::[*/ 664: { /* n:"BrtBeginFnGroup", */ T: 1 }, /*::[*/ 665: { /* n:"BrtFnGroup" */ }, /*::[*/ 666: { /* n:"BrtEndFnGroup", */ T: -1 }, /*::[*/ 667: { /* n:"BrtSupAddin" */ }, /*::[*/ 668: { /* n:"BrtSXTDMPOrder" */ }, /*::[*/ 669: { /* n:"BrtCsProtection" */ }, /*::[*/ 671: { /* n:"BrtBeginWsSortMap", */ T: 1 }, /*::[*/ 672: { /* n:"BrtEndWsSortMap", */ T: -1 }, /*::[*/ 673: { /* n:"BrtBeginRRSort", */ T: 1 }, /*::[*/ 674: { /* n:"BrtEndRRSort", */ T: -1 }, /*::[*/ 675: { /* n:"BrtRRSortItem" */ }, /*::[*/ 676: { /* n:"BrtFileSharingIso" */ }, /*::[*/ 677: { /* n:"BrtBookProtectionIso" */ }, /*::[*/ 678: { /* n:"BrtSheetProtectionIso" */ }, /*::[*/ 679: { /* n:"BrtCsProtectionIso" */ }, /*::[*/ 680: { /* n:"BrtRangeProtectionIso" */ }, /*::[*/ 681: { /* n:"BrtDValList" */ }, /*::[*/ 1024: { /* n:"BrtRwDescent" */ }, /*::[*/ 1025: { /* n:"BrtKnownFonts" */ }, /*::[*/ 1026: { /* n:"BrtBeginSXTupleSet", */ T: 1 }, /*::[*/ 1027: { /* n:"BrtEndSXTupleSet", */ T: -1 }, /*::[*/ 1028: { /* n:"BrtBeginSXTupleSetHeader", */ T: 1 }, /*::[*/ 1029: { /* n:"BrtEndSXTupleSetHeader", */ T: -1 }, /*::[*/ 1030: { /* n:"BrtSXTupleSetHeaderItem" */ }, /*::[*/ 1031: { /* n:"BrtBeginSXTupleSetData", */ T: 1 }, /*::[*/ 1032: { /* n:"BrtEndSXTupleSetData", */ T: -1 }, /*::[*/ 1033: { /* n:"BrtBeginSXTupleSetRow", */ T: 1 }, /*::[*/ 1034: { /* n:"BrtEndSXTupleSetRow", */ T: -1 }, /*::[*/ 1035: { /* n:"BrtSXTupleSetRowItem" */ }, /*::[*/ 1036: { /* n:"BrtNameExt" */ }, /*::[*/ 1037: { /* n:"BrtPCDH14" */ }, /*::[*/ 1038: { /* n:"BrtBeginPCDCalcMem14", */ T: 1 }, /*::[*/ 1039: { /* n:"BrtEndPCDCalcMem14", */ T: -1 }, /*::[*/ 1040: { /* n:"BrtSXTH14" */ }, /*::[*/ 1041: { /* n:"BrtBeginSparklineGroup", */ T: 1 }, /*::[*/ 1042: { /* n:"BrtEndSparklineGroup", */ T: -1 }, /*::[*/ 1043: { /* n:"BrtSparkline" */ }, /*::[*/ 1044: { /* n:"BrtSXDI14" */ }, /*::[*/ 1045: { /* n:"BrtWsFmtInfoEx14" */ }, /*::[*/ 1046: { /* n:"BrtBeginConditionalFormatting14", */ T: 1 }, /*::[*/ 1047: { /* n:"BrtEndConditionalFormatting14", */ T: -1 }, /*::[*/ 1048: { /* n:"BrtBeginCFRule14", */ T: 1 }, /*::[*/ 1049: { /* n:"BrtEndCFRule14", */ T: -1 }, /*::[*/ 1050: { /* n:"BrtCFVO14" */ }, /*::[*/ 1051: { /* n:"BrtBeginDatabar14", */ T: 1 }, /*::[*/ 1052: { /* n:"BrtBeginIconSet14", */ T: 1 }, /*::[*/ 1053: { /* n:"BrtDVal14", */ f: Zp }, /*::[*/ 1054: { /* n:"BrtBeginDVals14", */ T: 1 }, /*::[*/ 1055: { /* n:"BrtColor14" */ }, /*::[*/ 1056: { /* n:"BrtBeginSparklines", */ T: 1 }, /*::[*/ 1057: { /* n:"BrtEndSparklines", */ T: -1 }, /*::[*/ 1058: { /* n:"BrtBeginSparklineGroups", */ T: 1 }, /*::[*/ 1059: { /* n:"BrtEndSparklineGroups", */ T: -1 }, /*::[*/ 1061: { /* n:"BrtSXVD14" */ }, /*::[*/ 1062: { /* n:"BrtBeginSXView14", */ T: 1 }, /*::[*/ 1063: { /* n:"BrtEndSXView14", */ T: -1 }, /*::[*/ 1064: { /* n:"BrtBeginSXView16", */ T: 1 }, /*::[*/ 1065: { /* n:"BrtEndSXView16", */ T: -1 }, /*::[*/ 1066: { /* n:"BrtBeginPCD14", */ T: 1 }, /*::[*/ 1067: { /* n:"BrtEndPCD14", */ T: -1 }, /*::[*/ 1068: { /* n:"BrtBeginExtConn14", */ T: 1 }, /*::[*/ 1069: { /* n:"BrtEndExtConn14", */ T: -1 }, /*::[*/ 1070: { /* n:"BrtBeginSlicerCacheIDs", */ T: 1 }, /*::[*/ 1071: { /* n:"BrtEndSlicerCacheIDs", */ T: -1 }, /*::[*/ 1072: { /* n:"BrtBeginSlicerCacheID", */ T: 1 }, /*::[*/ 1073: { /* n:"BrtEndSlicerCacheID", */ T: -1 }, /*::[*/ 1075: { /* n:"BrtBeginSlicerCache", */ T: 1 }, /*::[*/ 1076: { /* n:"BrtEndSlicerCache", */ T: -1 }, /*::[*/ 1077: { /* n:"BrtBeginSlicerCacheDef", */ T: 1 }, /*::[*/ 1078: { /* n:"BrtEndSlicerCacheDef", */ T: -1 }, /*::[*/ 1079: { /* n:"BrtBeginSlicersEx", */ T: 1 }, /*::[*/ 1080: { /* n:"BrtEndSlicersEx", */ T: -1 }, /*::[*/ 1081: { /* n:"BrtBeginSlicerEx", */ T: 1 }, /*::[*/ 1082: { /* n:"BrtEndSlicerEx", */ T: -1 }, /*::[*/ 1083: { /* n:"BrtBeginSlicer", */ T: 1 }, /*::[*/ 1084: { /* n:"BrtEndSlicer", */ T: -1 }, /*::[*/ 1085: { /* n:"BrtSlicerCachePivotTables" */ }, /*::[*/ 1086: { /* n:"BrtBeginSlicerCacheOlapImpl", */ T: 1 }, /*::[*/ 1087: { /* n:"BrtEndSlicerCacheOlapImpl", */ T: -1 }, /*::[*/ 1088: { /* n:"BrtBeginSlicerCacheLevelsData", */ T: 1 }, /*::[*/ 1089: { /* n:"BrtEndSlicerCacheLevelsData", */ T: -1 }, /*::[*/ 1090: { /* n:"BrtBeginSlicerCacheLevelData", */ T: 1 }, /*::[*/ 1091: { /* n:"BrtEndSlicerCacheLevelData", */ T: -1 }, /*::[*/ 1092: { /* n:"BrtBeginSlicerCacheSiRanges", */ T: 1 }, /*::[*/ 1093: { /* n:"BrtEndSlicerCacheSiRanges", */ T: -1 }, /*::[*/ 1094: { /* n:"BrtBeginSlicerCacheSiRange", */ T: 1 }, /*::[*/ 1095: { /* n:"BrtEndSlicerCacheSiRange", */ T: -1 }, /*::[*/ 1096: { /* n:"BrtSlicerCacheOlapItem" */ }, /*::[*/ 1097: { /* n:"BrtBeginSlicerCacheSelections", */ T: 1 }, /*::[*/ 1098: { /* n:"BrtSlicerCacheSelection" */ }, /*::[*/ 1099: { /* n:"BrtEndSlicerCacheSelections", */ T: -1 }, /*::[*/ 1100: { /* n:"BrtBeginSlicerCacheNative", */ T: 1 }, /*::[*/ 1101: { /* n:"BrtEndSlicerCacheNative", */ T: -1 }, /*::[*/ 1102: { /* n:"BrtSlicerCacheNativeItem" */ }, /*::[*/ 1103: { /* n:"BrtRangeProtection14" */ }, /*::[*/ 1104: { /* n:"BrtRangeProtectionIso14" */ }, /*::[*/ 1105: { /* n:"BrtCellIgnoreEC14" */ }, /*::[*/ 1111: { /* n:"BrtList14" */ }, /*::[*/ 1112: { /* n:"BrtCFIcon" */ }, /*::[*/ 1113: { /* n:"BrtBeginSlicerCachesPivotCacheIDs", */ T: 1 }, /*::[*/ 1114: { /* n:"BrtEndSlicerCachesPivotCacheIDs", */ T: -1 }, /*::[*/ 1115: { /* n:"BrtBeginSlicers", */ T: 1 }, /*::[*/ 1116: { /* n:"BrtEndSlicers", */ T: -1 }, /*::[*/ 1117: { /* n:"BrtWbProp14" */ }, /*::[*/ 1118: { /* n:"BrtBeginSXEdit", */ T: 1 }, /*::[*/ 1119: { /* n:"BrtEndSXEdit", */ T: -1 }, /*::[*/ 1120: { /* n:"BrtBeginSXEdits", */ T: 1 }, /*::[*/ 1121: { /* n:"BrtEndSXEdits", */ T: -1 }, /*::[*/ 1122: { /* n:"BrtBeginSXChange", */ T: 1 }, /*::[*/ 1123: { /* n:"BrtEndSXChange", */ T: -1 }, /*::[*/ 1124: { /* n:"BrtBeginSXChanges", */ T: 1 }, /*::[*/ 1125: { /* n:"BrtEndSXChanges", */ T: -1 }, /*::[*/ 1126: { /* n:"BrtSXTupleItems" */ }, /*::[*/ 1128: { /* n:"BrtBeginSlicerStyle", */ T: 1 }, /*::[*/ 1129: { /* n:"BrtEndSlicerStyle", */ T: -1 }, /*::[*/ 1130: { /* n:"BrtSlicerStyleElement" */ }, /*::[*/ 1131: { /* n:"BrtBeginStyleSheetExt14", */ T: 1 }, /*::[*/ 1132: { /* n:"BrtEndStyleSheetExt14", */ T: -1 }, /*::[*/ 1133: { /* n:"BrtBeginSlicerCachesPivotCacheID", */ T: 1 }, /*::[*/ 1134: { /* n:"BrtEndSlicerCachesPivotCacheID", */ T: -1 }, /*::[*/ 1135: { /* n:"BrtBeginConditionalFormattings", */ T: 1 }, /*::[*/ 1136: { /* n:"BrtEndConditionalFormattings", */ T: -1 }, /*::[*/ 1137: { /* n:"BrtBeginPCDCalcMemExt", */ T: 1 }, /*::[*/ 1138: { /* n:"BrtEndPCDCalcMemExt", */ T: -1 }, /*::[*/ 1139: { /* n:"BrtBeginPCDCalcMemsExt", */ T: 1 }, /*::[*/ 1140: { /* n:"BrtEndPCDCalcMemsExt", */ T: -1 }, /*::[*/ 1141: { /* n:"BrtPCDField14" */ }, /*::[*/ 1142: { /* n:"BrtBeginSlicerStyles", */ T: 1 }, /*::[*/ 1143: { /* n:"BrtEndSlicerStyles", */ T: -1 }, /*::[*/ 1144: { /* n:"BrtBeginSlicerStyleElements", */ T: 1 }, /*::[*/ 1145: { /* n:"BrtEndSlicerStyleElements", */ T: -1 }, /*::[*/ 1146: { /* n:"BrtCFRuleExt" */ }, /*::[*/ 1147: { /* n:"BrtBeginSXCondFmt14", */ T: 1 }, /*::[*/ 1148: { /* n:"BrtEndSXCondFmt14", */ T: -1 }, /*::[*/ 1149: { /* n:"BrtBeginSXCondFmts14", */ T: 1 }, /*::[*/ 1150: { /* n:"BrtEndSXCondFmts14", */ T: -1 }, /*::[*/ 1152: { /* n:"BrtBeginSortCond14", */ T: 1 }, /*::[*/ 1153: { /* n:"BrtEndSortCond14", */ T: -1 }, /*::[*/ 1154: { /* n:"BrtEndDVals14", */ T: -1 }, /*::[*/ 1155: { /* n:"BrtEndIconSet14", */ T: -1 }, /*::[*/ 1156: { /* n:"BrtEndDatabar14", */ T: -1 }, /*::[*/ 1157: { /* n:"BrtBeginColorScale14", */ T: 1 }, /*::[*/ 1158: { /* n:"BrtEndColorScale14", */ T: -1 }, /*::[*/ 1159: { /* n:"BrtBeginSxrules14", */ T: 1 }, /*::[*/ 1160: { /* n:"BrtEndSxrules14", */ T: -1 }, /*::[*/ 1161: { /* n:"BrtBeginPRule14", */ T: 1 }, /*::[*/ 1162: { /* n:"BrtEndPRule14", */ T: -1 }, /*::[*/ 1163: { /* n:"BrtBeginPRFilters14", */ T: 1 }, /*::[*/ 1164: { /* n:"BrtEndPRFilters14", */ T: -1 }, /*::[*/ 1165: { /* n:"BrtBeginPRFilter14", */ T: 1 }, /*::[*/ 1166: { /* n:"BrtEndPRFilter14", */ T: -1 }, /*::[*/ 1167: { /* n:"BrtBeginPRFItem14", */ T: 1 }, /*::[*/ 1168: { /* n:"BrtEndPRFItem14", */ T: -1 }, /*::[*/ 1169: { /* n:"BrtBeginCellIgnoreECs14", */ T: 1 }, /*::[*/ 1170: { /* n:"BrtEndCellIgnoreECs14", */ T: -1 }, /*::[*/ 1171: { /* n:"BrtDxf14" */ }, /*::[*/ 1172: { /* n:"BrtBeginDxF14s", */ T: 1 }, /*::[*/ 1173: { /* n:"BrtEndDxf14s", */ T: -1 }, /*::[*/ 1177: { /* n:"BrtFilter14" */ }, /*::[*/ 1178: { /* n:"BrtBeginCustomFilters14", */ T: 1 }, /*::[*/ 1180: { /* n:"BrtCustomFilter14" */ }, /*::[*/ 1181: { /* n:"BrtIconFilter14" */ }, /*::[*/ 1182: { /* n:"BrtPivotCacheConnectionName" */ }, /*::[*/ 2048: { /* n:"BrtBeginDecoupledPivotCacheIDs", */ T: 1 }, /*::[*/ 2049: { /* n:"BrtEndDecoupledPivotCacheIDs", */ T: -1 }, /*::[*/ 2050: { /* n:"BrtDecoupledPivotCacheID" */ }, /*::[*/ 2051: { /* n:"BrtBeginPivotTableRefs", */ T: 1 }, /*::[*/ 2052: { /* n:"BrtEndPivotTableRefs", */ T: -1 }, /*::[*/ 2053: { /* n:"BrtPivotTableRef" */ }, /*::[*/ 2054: { /* n:"BrtSlicerCacheBookPivotTables" */ }, /*::[*/ 2055: { /* n:"BrtBeginSxvcells", */ T: 1 }, /*::[*/ 2056: { /* n:"BrtEndSxvcells", */ T: -1 }, /*::[*/ 2057: { /* n:"BrtBeginSxRow", */ T: 1 }, /*::[*/ 2058: { /* n:"BrtEndSxRow", */ T: -1 }, /*::[*/ 2060: { /* n:"BrtPcdCalcMem15" */ }, /*::[*/ 2067: { /* n:"BrtQsi15" */ }, /*::[*/ 2068: { /* n:"BrtBeginWebExtensions", */ T: 1 }, /*::[*/ 2069: { /* n:"BrtEndWebExtensions", */ T: -1 }, /*::[*/ 2070: { /* n:"BrtWebExtension" */ }, /*::[*/ 2071: { /* n:"BrtAbsPath15" */ }, /*::[*/ 2072: { /* n:"BrtBeginPivotTableUISettings", */ T: 1 }, /*::[*/ 2073: { /* n:"BrtEndPivotTableUISettings", */ T: -1 }, /*::[*/ 2075: { /* n:"BrtTableSlicerCacheIDs" */ }, /*::[*/ 2076: { /* n:"BrtTableSlicerCacheID" */ }, /*::[*/ 2077: { /* n:"BrtBeginTableSlicerCache", */ T: 1 }, /*::[*/ 2078: { /* n:"BrtEndTableSlicerCache", */ T: -1 }, /*::[*/ 2079: { /* n:"BrtSxFilter15" */ }, /*::[*/ 2080: { /* n:"BrtBeginTimelineCachePivotCacheIDs", */ T: 1 }, /*::[*/ 2081: { /* n:"BrtEndTimelineCachePivotCacheIDs", */ T: -1 }, /*::[*/ 2082: { /* n:"BrtTimelineCachePivotCacheID" */ }, /*::[*/ 2083: { /* n:"BrtBeginTimelineCacheIDs", */ T: 1 }, /*::[*/ 2084: { /* n:"BrtEndTimelineCacheIDs", */ T: -1 }, /*::[*/ 2085: { /* n:"BrtBeginTimelineCacheID", */ T: 1 }, /*::[*/ 2086: { /* n:"BrtEndTimelineCacheID", */ T: -1 }, /*::[*/ 2087: { /* n:"BrtBeginTimelinesEx", */ T: 1 }, /*::[*/ 2088: { /* n:"BrtEndTimelinesEx", */ T: -1 }, /*::[*/ 2089: { /* n:"BrtBeginTimelineEx", */ T: 1 }, /*::[*/ 2090: { /* n:"BrtEndTimelineEx", */ T: -1 }, /*::[*/ 2091: { /* n:"BrtWorkBookPr15" */ }, /*::[*/ 2092: { /* n:"BrtPCDH15" */ }, /*::[*/ 2093: { /* n:"BrtBeginTimelineStyle", */ T: 1 }, /*::[*/ 2094: { /* n:"BrtEndTimelineStyle", */ T: -1 }, /*::[*/ 2095: { /* n:"BrtTimelineStyleElement" */ }, /*::[*/ 2096: { /* n:"BrtBeginTimelineStylesheetExt15", */ T: 1 }, /*::[*/ 2097: { /* n:"BrtEndTimelineStylesheetExt15", */ T: -1 }, /*::[*/ 2098: { /* n:"BrtBeginTimelineStyles", */ T: 1 }, /*::[*/ 2099: { /* n:"BrtEndTimelineStyles", */ T: -1 }, /*::[*/ 2100: { /* n:"BrtBeginTimelineStyleElements", */ T: 1 }, /*::[*/ 2101: { /* n:"BrtEndTimelineStyleElements", */ T: -1 }, /*::[*/ 2102: { /* n:"BrtDxf15" */ }, /*::[*/ 2103: { /* n:"BrtBeginDxfs15", */ T: 1 }, /*::[*/ 2104: { /* n:"BrtEndDxfs15", */ T: -1 }, /*::[*/ 2105: { /* n:"BrtSlicerCacheHideItemsWithNoData" */ }, /*::[*/ 2106: { /* n:"BrtBeginItemUniqueNames", */ T: 1 }, /*::[*/ 2107: { /* n:"BrtEndItemUniqueNames", */ T: -1 }, /*::[*/ 2108: { /* n:"BrtItemUniqueName" */ }, /*::[*/ 2109: { /* n:"BrtBeginExtConn15", */ T: 1 }, /*::[*/ 2110: { /* n:"BrtEndExtConn15", */ T: -1 }, /*::[*/ 2111: { /* n:"BrtBeginOledbPr15", */ T: 1 }, /*::[*/ 2112: { /* n:"BrtEndOledbPr15", */ T: -1 }, /*::[*/ 2113: { /* n:"BrtBeginDataFeedPr15", */ T: 1 }, /*::[*/ 2114: { /* n:"BrtEndDataFeedPr15", */ T: -1 }, /*::[*/ 2115: { /* n:"BrtTextPr15" */ }, /*::[*/ 2116: { /* n:"BrtRangePr15" */ }, /*::[*/ 2117: { /* n:"BrtDbCommand15" */ }, /*::[*/ 2118: { /* n:"BrtBeginDbTables15", */ T: 1 }, /*::[*/ 2119: { /* n:"BrtEndDbTables15", */ T: -1 }, /*::[*/ 2120: { /* n:"BrtDbTable15" */ }, /*::[*/ 2121: { /* n:"BrtBeginDataModel", */ T: 1 }, /*::[*/ 2122: { /* n:"BrtEndDataModel", */ T: -1 }, /*::[*/ 2123: { /* n:"BrtBeginModelTables", */ T: 1 }, /*::[*/ 2124: { /* n:"BrtEndModelTables", */ T: -1 }, /*::[*/ 2125: { /* n:"BrtModelTable" */ }, /*::[*/ 2126: { /* n:"BrtBeginModelRelationships", */ T: 1 }, /*::[*/ 2127: { /* n:"BrtEndModelRelationships", */ T: -1 }, /*::[*/ 2128: { /* n:"BrtModelRelationship" */ }, /*::[*/ 2129: { /* n:"BrtBeginECTxtWiz15", */ T: 1 }, /*::[*/ 2130: { /* n:"BrtEndECTxtWiz15", */ T: -1 }, /*::[*/ 2131: { /* n:"BrtBeginECTWFldInfoLst15", */ T: 1 }, /*::[*/ 2132: { /* n:"BrtEndECTWFldInfoLst15", */ T: -1 }, /*::[*/ 2133: { /* n:"BrtBeginECTWFldInfo15", */ T: 1 }, /*::[*/ 2134: { /* n:"BrtFieldListActiveItem" */ }, /*::[*/ 2135: { /* n:"BrtPivotCacheIdVersion" */ }, /*::[*/ 2136: { /* n:"BrtSXDI15" */ }, /*::[*/ 2137: { /* n:"BrtBeginModelTimeGroupings", */ T: 1 }, /*::[*/ 2138: { /* n:"BrtEndModelTimeGroupings", */ T: -1 }, /*::[*/ 2139: { /* n:"BrtBeginModelTimeGrouping", */ T: 1 }, /*::[*/ 2140: { /* n:"BrtEndModelTimeGrouping", */ T: -1 }, /*::[*/ 2141: { /* n:"BrtModelTimeGroupingCalcCol" */ }, /*::[*/ 3072: { /* n:"BrtUid" */ }, /*::[*/ 3073: { /* n:"BrtRevisionPtr" */ }, /*::[*/ 4096: { /* n:"BrtBeginDynamicArrayPr", */ T: 1 }, /*::[*/ 4097: { /* n:"BrtEndDynamicArrayPr", */ T: -1 }, /*::[*/ 5002: { /* n:"BrtBeginRichValueBlock", */ T: 1 }, /*::[*/ 5003: { /* n:"BrtEndRichValueBlock", */ T: -1 }, /*::[*/ 5081: { /* n:"BrtBeginRichFilters", */ T: 1 }, /*::[*/ 5082: { /* n:"BrtEndRichFilters", */ T: -1 }, /*::[*/ 5083: { /* n:"BrtRichFilter" */ }, /*::[*/ 5084: { /* n:"BrtBeginRichFilterColumn", */ T: 1 }, /*::[*/ 5085: { /* n:"BrtEndRichFilterColumn", */ T: -1 }, /*::[*/ 5086: { /* n:"BrtBeginCustomRichFilters", */ T: 1 }, /*::[*/ 5087: { /* n:"BrtEndCustomRichFilters", */ T: -1 }, /*::[*/ 5088: { /* n:"BrtCustomRichFilter" */ }, /*::[*/ 5089: { /* n:"BrtTop10RichFilter" */ }, /*::[*/ 5090: { /* n:"BrtDynamicRichFilter" */ }, /*::[*/ 5092: { /* n:"BrtBeginRichSortCondition", */ T: 1 }, /*::[*/ 5093: { /* n:"BrtEndRichSortCondition", */ T: -1 }, /*::[*/ 5094: { /* n:"BrtRichFilterDateGroupItem" */ }, /*::[*/ 5095: { /* n:"BrtBeginCalcFeatures", */ T: 1 }, /*::[*/ 5096: { /* n:"BrtEndCalcFeatures", */ T: -1 }, /*::[*/ 5097: { /* n:"BrtCalcFeature" */ }, /*::[*/ 5099: { /* n:"BrtExternalLinksPr" */ }, /*::[*/ 65535: { n: "" } }, rn = { /* [MS-XLS] 2.3 Record Enumeration 2021-08-17 */ /*::[*/ 6: { /* n:"Formula", */ f: U0 }, /*::[*/ 10: { /* n:"EOF", */ f: pt }, /*::[*/ 12: { /* n:"CalcCount", */ f: rr }, // /*::[*/ 13: { /* n:"CalcMode", */ f: rr }, // /*::[*/ 14: { /* n:"CalcPrecision", */ f: Je }, // /*::[*/ 15: { /* n:"CalcRefMode", */ f: Je }, // /*::[*/ 16: { /* n:"CalcDelta", */ f: pr }, // /*::[*/ 17: { /* n:"CalcIter", */ f: Je }, // /*::[*/ 18: { /* n:"Protect", */ f: Je }, /*::[*/ 19: { /* n:"Password", */ f: rr }, /*::[*/ 20: { /* n:"Header", */ f: Ui }, /*::[*/ 21: { /* n:"Footer", */ f: Ui }, /*::[*/ 23: { /* n:"ExternSheet", */ f: kf }, /*::[*/ 24: { /* n:"Lbl", */ f: Hi }, /*::[*/ 25: { /* n:"WinProtect", */ f: Je }, /*::[*/ 26: { /* n:"VerticalPageBreaks", */ }, /*::[*/ 27: { /* n:"HorizontalPageBreaks", */ }, /*::[*/ 28: { /* n:"Note", */ f: Zu }, /*::[*/ 29: { /* n:"Selection", */ }, /*::[*/ 34: { /* n:"Date1904", */ f: Je }, /*::[*/ 35: { /* n:"ExternName", */ f: Wi }, /*::[*/ 38: { /* n:"LeftMargin", */ f: pr }, // * /*::[*/ 39: { /* n:"RightMargin", */ f: pr }, // * /*::[*/ 40: { /* n:"TopMargin", */ f: pr }, // * /*::[*/ 41: { /* n:"BottomMargin", */ f: pr }, // * /*::[*/ 42: { /* n:"PrintRowCol", */ f: Je }, /*::[*/ 43: { /* n:"PrintGrid", */ f: Je }, /*::[*/ 47: { /* n:"FilePass", */ f: l1 }, /*::[*/ 49: { /* n:"Font", */ f: Fu }, /*::[*/ 51: { /* n:"PrintSize", */ f: rr }, /*::[*/ 60: { /* n:"Continue", */ }, /*::[*/ 61: { /* n:"Window1", */ f: wu }, /*::[*/ 64: { /* n:"Backup", */ f: Je }, /*::[*/ 65: { /* n:"Pane", */ f: Su }, /*::[*/ 66: { /* n:"CodePage", */ f: rr }, /*::[*/ 77: { /* n:"Pls", */ }, /*::[*/ 80: { /* n:"DCon", */ }, /*::[*/ 81: { /* n:"DConRef", */ }, /*::[*/ 82: { /* n:"DConName", */ }, /*::[*/ 85: { /* n:"DefColWidth", */ f: rr }, /*::[*/ 89: { /* n:"XCT", */ }, /*::[*/ 90: { /* n:"CRN", */ }, /*::[*/ 91: { /* n:"FileSharing", */ }, /*::[*/ 92: { /* n:"WriteAccess", */ f: ou }, /*::[*/ 93: { /* n:"Obj", */ f: rh }, /*::[*/ 94: { /* n:"Uncalced", */ }, /*::[*/ 95: { /* n:"CalcSaveRecalc", */ f: Je }, // /*::[*/ 96: { /* n:"Template", */ }, /*::[*/ 97: { /* n:"Intl", */ }, /*::[*/ 99: { /* n:"ObjProtect", */ f: Je }, /*::[*/ 125: { /* n:"ColInfo", */ f: Tf }, /*::[*/ 128: { /* n:"Guts", */ f: Wu }, /*::[*/ 129: { /* n:"WsBool", */ f: uu }, /*::[*/ 130: { /* n:"GridSet", */ f: rr }, /*::[*/ 131: { /* n:"HCenter", */ f: Je }, /*::[*/ 132: { /* n:"VCenter", */ f: Je }, /*::[*/ 133: { /* n:"BoundSheet8", */ f: hu }, /*::[*/ 134: { /* n:"WriteProtect", */ }, /*::[*/ 140: { /* n:"Country", */ f: oh }, /*::[*/ 141: { /* n:"HideObj", */ f: rr }, /*::[*/ 144: { /* n:"Sort", */ }, /*::[*/ 146: { /* n:"Palette", */ f: hh }, /*::[*/ 151: { /* n:"Sync", */ }, /*::[*/ 152: { /* n:"LPr", */ }, /*::[*/ 153: { /* n:"DxGCol", */ }, /*::[*/ 154: { /* n:"FnGroupName", */ }, /*::[*/ 155: { /* n:"FilterMode", */ }, /*::[*/ 156: { /* n:"BuiltInFnGroupCount", */ f: rr }, /*::[*/ 157: { /* n:"AutoFilterInfo", */ }, /*::[*/ 158: { /* n:"AutoFilter", */ }, /*::[*/ 160: { /* n:"Scl", */ f: _h }, /*::[*/ 161: { /* n:"Setup", */ f: vh }, /*::[*/ 174: { /* n:"ScenMan", */ }, /*::[*/ 175: { /* n:"SCENARIO", */ }, /*::[*/ 176: { /* n:"SxView", */ }, /*::[*/ 177: { /* n:"Sxvd", */ }, /*::[*/ 178: { /* n:"SXVI", */ }, /*::[*/ 180: { /* n:"SxIvd", */ }, /*::[*/ 181: { /* n:"SXLI", */ }, /*::[*/ 182: { /* n:"SXPI", */ }, /*::[*/ 184: { /* n:"DocRoute", */ }, /*::[*/ 185: { /* n:"RecipName", */ }, /*::[*/ 189: { /* n:"MulRk", */ f: Lu }, /*::[*/ 190: { /* n:"MulBlank", */ f: Bu }, /*::[*/ 193: { /* n:"Mms", */ f: pt }, /*::[*/ 197: { /* n:"SXDI", */ }, /*::[*/ 198: { /* n:"SXDB", */ }, /*::[*/ 199: { /* n:"SXFDB", */ }, /*::[*/ 200: { /* n:"SXDBB", */ }, /*::[*/ 201: { /* n:"SXNum", */ }, /*::[*/ 202: { /* n:"SxBool", */ f: Je }, /*::[*/ 203: { /* n:"SxErr", */ }, /*::[*/ 204: { /* n:"SXInt", */ }, /*::[*/ 205: { /* n:"SXString", */ }, /*::[*/ 206: { /* n:"SXDtr", */ }, /*::[*/ 207: { /* n:"SxNil", */ }, /*::[*/ 208: { /* n:"SXTbl", */ }, /*::[*/ 209: { /* n:"SXTBRGIITM", */ }, /*::[*/ 210: { /* n:"SxTbpg", */ }, /*::[*/ 211: { /* n:"ObProj", */ }, /*::[*/ 213: { /* n:"SXStreamID", */ }, /*::[*/ 215: { /* n:"DBCell", */ }, /*::[*/ 216: { /* n:"SXRng", */ }, /*::[*/ 217: { /* n:"SxIsxoper", */ }, /*::[*/ 218: { /* n:"BookBool", */ f: rr }, /*::[*/ 220: { /* n:"DbOrParamQry", */ }, /*::[*/ 221: { /* n:"ScenarioProtect", */ f: Je }, /*::[*/ 222: { /* n:"OleObjectSize", */ }, /*::[*/ 224: { /* n:"XF", */ f: Uu }, /*::[*/ 225: { /* n:"InterfaceHdr", */ f: cu }, /*::[*/ 226: { /* n:"InterfaceEnd", */ f: pt }, /*::[*/ 227: { /* n:"SXVS", */ }, /*::[*/ 229: { /* n:"MergeCells", */ f: Qu }, /*::[*/ 233: { /* n:"BkHim", */ }, /*::[*/ 235: { /* n:"MsoDrawingGroup", */ }, /*::[*/ 236: { /* n:"MsoDrawing", */ }, /*::[*/ 237: { /* n:"MsoDrawingSelection", */ }, /*::[*/ 239: { /* n:"PhoneticInfo", */ }, /*::[*/ 240: { /* n:"SxRule", */ }, /*::[*/ 241: { /* n:"SXEx", */ }, /*::[*/ 242: { /* n:"SxFilt", */ }, /*::[*/ 244: { /* n:"SxDXF", */ }, /*::[*/ 245: { /* n:"SxItm", */ }, /*::[*/ 246: { /* n:"SxName", */ }, /*::[*/ 247: { /* n:"SxSelect", */ }, /*::[*/ 248: { /* n:"SXPair", */ }, /*::[*/ 249: { /* n:"SxFmla", */ }, /*::[*/ 251: { /* n:"SxFormat", */ }, /*::[*/ 252: { /* n:"SST", */ f: du }, /*::[*/ 253: { /* n:"LabelSst", */ f: Au }, /*::[*/ 255: { /* n:"ExtSST", */ f: pu }, /*::[*/ 256: { /* n:"SXVDEx", */ }, /*::[*/ 259: { /* n:"SXFormula", */ }, /*::[*/ 290: { /* n:"SXDBEx", */ }, /*::[*/ 311: { /* n:"RRDInsDel", */ }, /*::[*/ 312: { /* n:"RRDHead", */ }, /*::[*/ 315: { /* n:"RRDChgCell", */ }, /*::[*/ 317: { /* n:"RRTabId", */ f: xf }, /*::[*/ 318: { /* n:"RRDRenSheet", */ }, /*::[*/ 319: { /* n:"RRSort", */ }, /*::[*/ 320: { /* n:"RRDMove", */ }, /*::[*/ 330: { /* n:"RRFormat", */ }, /*::[*/ 331: { /* n:"RRAutoFmt", */ }, /*::[*/ 333: { /* n:"RRInsertSh", */ }, /*::[*/ 334: { /* n:"RRDMoveBegin", */ }, /*::[*/ 335: { /* n:"RRDMoveEnd", */ }, /*::[*/ 336: { /* n:"RRDInsDelBegin", */ }, /*::[*/ 337: { /* n:"RRDInsDelEnd", */ }, /*::[*/ 338: { /* n:"RRDConflict", */ }, /*::[*/ 339: { /* n:"RRDDefName", */ }, /*::[*/ 340: { /* n:"RRDRstEtxp", */ }, /*::[*/ 351: { /* n:"LRng", */ }, /*::[*/ 352: { /* n:"UsesELFs", */ f: Je }, /*::[*/ 353: { /* n:"DSF", */ f: pt }, /*::[*/ 401: { /* n:"CUsr", */ }, /*::[*/ 402: { /* n:"CbUsr", */ }, /*::[*/ 403: { /* n:"UsrInfo", */ }, /*::[*/ 404: { /* n:"UsrExcl", */ }, /*::[*/ 405: { /* n:"FileLock", */ }, /*::[*/ 406: { /* n:"RRDInfo", */ }, /*::[*/ 407: { /* n:"BCUsrs", */ }, /*::[*/ 408: { /* n:"UsrChk", */ }, /*::[*/ 425: { /* n:"UserBView", */ }, /*::[*/ 426: { /* n:"UserSViewBegin", */ }, /*::[*/ 427: { /* n:"UserSViewEnd", */ }, /*::[*/ 428: { /* n:"RRDUserView", */ }, /*::[*/ 429: { /* n:"Qsi", */ }, /*::[*/ 430: { /* n:"SupBook", */ f: zu }, /*::[*/ 431: { /* n:"Prot4Rev", */ f: Je }, /*::[*/ 432: { /* n:"CondFmt", */ }, /*::[*/ 433: { /* n:"CF", */ }, /*::[*/ 434: { /* n:"DVal", */ }, /*::[*/ 437: { /* n:"DConBin", */ }, /*::[*/ 438: { /* n:"TxO", */ f: nh }, /*::[*/ 439: { /* n:"RefreshAll", */ f: Je }, // /*::[*/ 440: { /* n:"HLink", */ f: ih }, /*::[*/ 441: { /* n:"Lel", */ }, /*::[*/ 442: { /* n:"CodeName", */ f: Xa }, /*::[*/ 443: { /* n:"SXFDBType", */ }, /*::[*/ 444: { /* n:"Prot4RevPass", */ f: rr }, /*::[*/ 445: { /* n:"ObNoMacros", */ }, /*::[*/ 446: { /* n:"Dv", */ }, /*::[*/ 448: { /* n:"Excel9File", */ f: pt }, /*::[*/ 449: { /* n:"RecalcId", */ f: _u, r: 2 }, /*::[*/ 450: { /* n:"EntExU2", */ f: pt }, /*::[*/ 512: { /* n:"Dimensions", */ f: Li }, /*::[*/ 513: { /* n:"Blank", */ f: gh }, /*::[*/ 515: { /* n:"Number", */ f: Gu }, /*::[*/ 516: { /* n:"Label", */ f: Du }, /*::[*/ 517: { /* n:"BoolErr", */ f: Mi }, /*::[*/ 519: { /* n:"String", */ f: wh }, /*::[*/ 520: { /* n:"Row", */ f: mu }, /*::[*/ 523: { /* n:"Index", */ }, /*::[*/ 545: { /* n:"Array", */ f: Vi }, /*::[*/ 549: { /* n:"DefaultRowHeight", */ f: Pi }, /*::[*/ 566: { /* n:"Table", */ }, /*::[*/ 574: { /* n:"Window2", */ f: ku }, /*::[*/ 638: { /* n:"RK", */ f: Pu }, /*::[*/ 659: { /* n:"Style", */ }, /*::[*/ 1048: { /* n:"BigName", */ }, /*::[*/ 1054: { /* n:"Format", */ f: Iu }, /*::[*/ 1084: { /* n:"ContinueBigName", */ }, /*::[*/ 1212: { /* n:"ShrFmla", */ f: Yu }, /*::[*/ 2048: { /* n:"HLinkTooltip", */ f: fh }, /*::[*/ 2049: { /* n:"WebPub", */ }, /*::[*/ 2050: { /* n:"QsiSXTag", */ }, /*::[*/ 2051: { /* n:"DBQueryExt", */ }, /*::[*/ 2052: { /* n:"ExtString", */ }, /*::[*/ 2053: { /* n:"TxtQry", */ }, /*::[*/ 2054: { /* n:"Qsir", */ }, /*::[*/ 2055: { /* n:"Qsif", */ }, /*::[*/ 2056: { /* n:"RRDTQSIF", */ }, /*::[*/ 2057: { /* n:"BOF", */ f: t0 }, /*::[*/ 2058: { /* n:"OleDbConn", */ }, /*::[*/ 2059: { /* n:"WOpt", */ }, /*::[*/ 2060: { /* n:"SXViewEx", */ }, /*::[*/ 2061: { /* n:"SXTH", */ }, /*::[*/ 2062: { /* n:"SXPIEx", */ }, /*::[*/ 2063: { /* n:"SXVDTEx", */ }, /*::[*/ 2064: { /* n:"SXViewEx9", */ }, /*::[*/ 2066: { /* n:"ContinueFrt", */ }, /*::[*/ 2067: { /* n:"RealTimeData", */ }, /*::[*/ 2128: { /* n:"ChartFrtInfo", */ }, /*::[*/ 2129: { /* n:"FrtWrapper", */ }, /*::[*/ 2130: { /* n:"StartBlock", */ }, /*::[*/ 2131: { /* n:"EndBlock", */ }, /*::[*/ 2132: { /* n:"StartObject", */ }, /*::[*/ 2133: { /* n:"EndObject", */ }, /*::[*/ 2134: { /* n:"CatLab", */ }, /*::[*/ 2135: { /* n:"YMult", */ }, /*::[*/ 2136: { /* n:"SXViewLink", */ }, /*::[*/ 2137: { /* n:"PivotChartBits", */ }, /*::[*/ 2138: { /* n:"FrtFontList", */ }, /*::[*/ 2146: { /* n:"SheetExt", */ }, /*::[*/ 2147: { /* n:"BookExt", */ r: 12 }, /*::[*/ 2148: { /* n:"SXAddl", */ }, /*::[*/ 2149: { /* n:"CrErr", */ }, /*::[*/ 2150: { /* n:"HFPicture", */ }, /*::[*/ 2151: { /* n:"FeatHdr", */ f: pt }, /*::[*/ 2152: { /* n:"Feat", */ }, /*::[*/ 2154: { /* n:"DataLabExt", */ }, /*::[*/ 2155: { /* n:"DataLabExtContents", */ }, /*::[*/ 2156: { /* n:"CellWatch", */ }, /*::[*/ 2161: { /* n:"FeatHdr11", */ }, /*::[*/ 2162: { /* n:"Feature11", */ }, /*::[*/ 2164: { /* n:"DropDownObjIds", */ }, /*::[*/ 2165: { /* n:"ContinueFrt11", */ }, /*::[*/ 2166: { /* n:"DConn", */ }, /*::[*/ 2167: { /* n:"List12", */ }, /*::[*/ 2168: { /* n:"Feature12", */ }, /*::[*/ 2169: { /* n:"CondFmt12", */ }, /*::[*/ 2170: { /* n:"CF12", */ }, /*::[*/ 2171: { /* n:"CFEx", */ }, /*::[*/ 2172: { /* n:"XFCRC", */ f: xh, r: 12 }, /*::[*/ 2173: { /* n:"XFExt", */ f: ox, r: 12 }, /*::[*/ 2174: { /* n:"AutoFilter12", */ }, /*::[*/ 2175: { /* n:"ContinueFrt12", */ }, /*::[*/ 2180: { /* n:"MDTInfo", */ }, /*::[*/ 2181: { /* n:"MDXStr", */ }, /*::[*/ 2182: { /* n:"MDXTuple", */ }, /*::[*/ 2183: { /* n:"MDXSet", */ }, /*::[*/ 2184: { /* n:"MDXProp", */ }, /*::[*/ 2185: { /* n:"MDXKPI", */ }, /*::[*/ 2186: { /* n:"MDB", */ }, /*::[*/ 2187: { /* n:"PLV", */ }, /*::[*/ 2188: { /* n:"Compat12", */ f: Je, r: 12 }, /*::[*/ 2189: { /* n:"DXF", */ }, /*::[*/ 2190: { /* n:"TableStyles", */ r: 12 }, /*::[*/ 2191: { /* n:"TableStyle", */ }, /*::[*/ 2192: { /* n:"TableStyleElement", */ }, /*::[*/ 2194: { /* n:"StyleExt", */ }, /*::[*/ 2195: { /* n:"NamePublish", */ }, /*::[*/ 2196: { /* n:"NameCmt", */ f: Ku, r: 12 }, /*::[*/ 2197: { /* n:"SortData", */ }, /*::[*/ 2198: { /* n:"Theme", */ f: ax, r: 12 }, /*::[*/ 2199: { /* n:"GUIDTypeLib", */ }, /*::[*/ 2200: { /* n:"FnGrp12", */ }, /*::[*/ 2201: { /* n:"NameFnGrp12", */ }, /*::[*/ 2202: { /* n:"MTRSettings", */ f: Ju, r: 12 }, /*::[*/ 2203: { /* n:"CompressPictures", */ f: pt }, /*::[*/ 2204: { /* n:"HeaderFooter", */ }, /*::[*/ 2205: { /* n:"CrtLayout12", */ }, /*::[*/ 2206: { /* n:"CrtMlFrt", */ }, /*::[*/ 2207: { /* n:"CrtMlFrtContinue", */ }, /*::[*/ 2211: { /* n:"ForceFullCalculation", */ f: gu }, /*::[*/ 2212: { /* n:"ShapePropsStream", */ }, /*::[*/ 2213: { /* n:"TextPropsStream", */ }, /*::[*/ 2214: { /* n:"RichTextStream", */ }, /*::[*/ 2215: { /* n:"CrtLayout12A", */ }, /*::[*/ 4097: { /* n:"Units", */ }, /*::[*/ 4098: { /* n:"Chart", */ }, /*::[*/ 4099: { /* n:"Series", */ }, /*::[*/ 4102: { /* n:"DataFormat", */ }, /*::[*/ 4103: { /* n:"LineFormat", */ }, /*::[*/ 4105: { /* n:"MarkerFormat", */ }, /*::[*/ 4106: { /* n:"AreaFormat", */ }, /*::[*/ 4107: { /* n:"PieFormat", */ }, /*::[*/ 4108: { /* n:"AttachedLabel", */ }, /*::[*/ 4109: { /* n:"SeriesText", */ }, /*::[*/ 4116: { /* n:"ChartFormat", */ }, /*::[*/ 4117: { /* n:"Legend", */ }, /*::[*/ 4118: { /* n:"SeriesList", */ }, /*::[*/ 4119: { /* n:"Bar", */ }, /*::[*/ 4120: { /* n:"Line", */ }, /*::[*/ 4121: { /* n:"Pie", */ }, /*::[*/ 4122: { /* n:"Area", */ }, /*::[*/ 4123: { /* n:"Scatter", */ }, /*::[*/ 4124: { /* n:"CrtLine", */ }, /*::[*/ 4125: { /* n:"Axis", */ }, /*::[*/ 4126: { /* n:"Tick", */ }, /*::[*/ 4127: { /* n:"ValueRange", */ }, /*::[*/ 4128: { /* n:"CatSerRange", */ }, /*::[*/ 4129: { /* n:"AxisLine", */ }, /*::[*/ 4130: { /* n:"CrtLink", */ }, /*::[*/ 4132: { /* n:"DefaultText", */ }, /*::[*/ 4133: { /* n:"Text", */ }, /*::[*/ 4134: { /* n:"FontX", */ f: rr }, /*::[*/ 4135: { /* n:"ObjectLink", */ }, /*::[*/ 4146: { /* n:"Frame", */ }, /*::[*/ 4147: { /* n:"Begin", */ }, /*::[*/ 4148: { /* n:"End", */ }, /*::[*/ 4149: { /* n:"PlotArea", */ }, /*::[*/ 4154: { /* n:"Chart3d", */ }, /*::[*/ 4156: { /* n:"PicF", */ }, /*::[*/ 4157: { /* n:"DropBar", */ }, /*::[*/ 4158: { /* n:"Radar", */ }, /*::[*/ 4159: { /* n:"Surf", */ }, /*::[*/ 4160: { /* n:"RadarArea", */ }, /*::[*/ 4161: { /* n:"AxisParent", */ }, /*::[*/ 4163: { /* n:"LegendException", */ }, /*::[*/ 4164: { /* n:"ShtProps", */ f: ph }, /*::[*/ 4165: { /* n:"SerToCrt", */ }, /*::[*/ 4166: { /* n:"AxesUsed", */ }, /*::[*/ 4168: { /* n:"SBaseRef", */ }, /*::[*/ 4170: { /* n:"SerParent", */ }, /*::[*/ 4171: { /* n:"SerAuxTrend", */ }, /*::[*/ 4174: { /* n:"IFmtRecord", */ }, /*::[*/ 4175: { /* n:"Pos", */ }, /*::[*/ 4176: { /* n:"AlRuns", */ }, /*::[*/ 4177: { /* n:"BRAI", */ }, /*::[*/ 4187: { /* n:"SerAuxErrBar", */ }, /*::[*/ 4188: { /* n:"ClrtClient", */ f: uh }, /*::[*/ 4189: { /* n:"SerFmt", */ }, /*::[*/ 4191: { /* n:"Chart3DBarShape", */ }, /*::[*/ 4192: { /* n:"Fbi", */ }, /*::[*/ 4193: { /* n:"BopPop", */ }, /*::[*/ 4194: { /* n:"AxcExt", */ }, /*::[*/ 4195: { /* n:"Dat", */ }, /*::[*/ 4196: { /* n:"PlotGrowth", */ }, /*::[*/ 4197: { /* n:"SIIndex", */ }, /*::[*/ 4198: { /* n:"GelFrame", */ }, /*::[*/ 4199: { /* n:"BopPopCustom", */ }, /*::[*/ 4200: { /* n:"Fbi2", */ }, /*::[*/ 0: { /* n:"Dimensions", */ f: Li }, /*::[*/ 1: { /* n:"BIFF2BLANK", */ }, /*::[*/ 2: { /* n:"BIFF2INT", */ f: Fh }, /*::[*/ 3: { /* n:"BIFF2NUM", */ f: Th }, /*::[*/ 4: { /* n:"BIFF2STR", */ f: kh }, /*::[*/ 5: { /* n:"BoolErr", */ f: Mi }, /*::[*/ 7: { /* n:"String", */ f: Ah }, /*::[*/ 8: { /* n:"BIFF2ROW", */ }, /*::[*/ 9: { /* n:"BOF", */ f: t0 }, /*::[*/ 11: { /* n:"Index", */ }, /*::[*/ 22: { /* n:"ExternCount", */ f: rr }, /*::[*/ 30: { /* n:"BIFF2FORMAT", */ f: Nu }, /*::[*/ 31: { /* n:"BIFF2FMTCNT", */ }, /* 16-bit cnt of BIFF2FORMAT records */ /*::[*/ 32: { /* n:"BIFF2COLINFO", */ }, /*::[*/ 33: { /* n:"Array", */ f: Vi }, /*::[*/ 36: { /* n:"COLWIDTH", */ }, /*::[*/ 37: { /* n:"DefaultRowHeight", */ f: Pi }, // 0x2c ?? // 0x2d ?? // 0x2e ?? // 0x30 FONTCOUNT: number of fonts /*::[*/ 50: { /* n:"BIFF2FONTXTRA", */ f: Ch }, // 0x35: INFOOPTS // 0x36: TABLE (BIFF2 only) // 0x37: TABLE2 (BIFF2 only) // 0x38: WNDESK // 0x39 ?? // 0x3a: BEGINPREF // 0x3b: ENDPREF /*::[*/ 62: { /* n:"BIFF2WINDOW2", */ }, // 0x3f ?? // 0x46: SHOWSCROLL // 0x47: SHOWFORMULA // 0x48: STATUSBAR // 0x49: SHORTMENUS // 0x4A: // 0x4B: // 0x4C: // 0x4E: // 0x4F: // 0x58: TOOLBAR (BIFF3) /* - - - */ /*::[*/ 52: { /* n:"DDEObjName", */ }, /*::[*/ 67: { /* n:"BIFF2XF", */ }, /*::[*/ 68: { /* n:"BIFF2XFINDEX", */ f: rr }, /*::[*/ 69: { /* n:"BIFF2FONTCLR", */ }, /*::[*/ 86: { /* n:"BIFF4FMTCNT", */ }, /* 16-bit cnt, similar to BIFF2 */ /*::[*/ 126: { /* n:"RK", */ }, /* Not necessarily same as 0x027e */ /*::[*/ 127: { /* n:"ImData", */ f: Eh }, /*::[*/ 135: { /* n:"Addin", */ }, /*::[*/ 136: { /* n:"Edg", */ }, /*::[*/ 137: { /* n:"Pub", */ }, // 0x8A // 0x8B LH: alternate menu key flag (BIFF3/4) // 0x8E // 0x8F /*::[*/ 145: { /* n:"Sub", */ }, // 0x93 STYLE /*::[*/ 148: { /* n:"LHRecord", */ }, /*::[*/ 149: { /* n:"LHNGraph", */ }, /*::[*/ 150: { /* n:"Sound", */ }, // 0xA2 FNPROTO: function prototypes (BIFF4) // 0xA3 // 0xA8 /*::[*/ 169: { /* n:"CoordList", */ }, /*::[*/ 171: { /* n:"GCW", */ }, /*::[*/ 188: { /* n:"ShrFmla", */ }, /* Not necessarily same as 0x04bc */ /*::[*/ 191: { /* n:"ToolbarHdr", */ }, /*::[*/ 192: { /* n:"ToolbarEnd", */ }, /*::[*/ 194: { /* n:"AddMenu", */ }, /*::[*/ 195: { /* n:"DelMenu", */ }, /*::[*/ 214: { /* n:"RString", */ f: Dh }, /*::[*/ 223: { /* n:"UDDesc", */ }, /*::[*/ 234: { /* n:"TabIdConf", */ }, /*::[*/ 354: { /* n:"XL5Modify", */ }, /*::[*/ 421: { /* n:"FileSharing2", */ }, /*::[*/ 518: { /* n:"Formula", */ f: U0 }, /*::[*/ 521: { /* n:"BOF", */ f: t0 }, /*::[*/ 536: { /* n:"Lbl", */ f: Hi }, /*::[*/ 547: { /* n:"ExternName", */ f: Wi }, /*::[*/ 561: { /* n:"Font", */ }, /*::[*/ 579: { /* n:"BIFF3XF", */ }, /*::[*/ 1030: { /* n:"Formula", */ f: U0 }, /*::[*/ 1033: { /* n:"BOF", */ f: t0 }, /*::[*/ 1091: { /* n:"BIFF4XF", */ }, /*::[*/ 2157: { /* n:"FeatInfo", */ }, /*::[*/ 2163: { /* n:"FeatInfo11", */ }, /*::[*/ 2177: { /* n:"SXAddl12", */ }, /*::[*/ 2240: { /* n:"AutoWebPub", */ }, /*::[*/ 2241: { /* n:"ListObj", */ }, /*::[*/ 2242: { /* n:"ListField", */ }, /*::[*/ 2243: { /* n:"ListDV", */ }, /*::[*/ 2244: { /* n:"ListCondFmt", */ }, /*::[*/ 2245: { /* n:"ListCF", */ }, /*::[*/ 2246: { /* n:"FMQry", */ }, /*::[*/ 2247: { /* n:"FMSQry", */ }, /*::[*/ 2248: { /* n:"PLV", */ }, /*::[*/ 2249: { /* n:"LnExt", */ }, /*::[*/ 2250: { /* n:"MkrExt", */ }, /*::[*/ 2251: { /* n:"CrtCoopt", */ }, /*::[*/ 2262: { /* n:"FRTArchId$", */ r: 12 }, /*::[*/ 29282: {} }; function ne(e, t, r, a) { var n = t; if (!isNaN(n)) { var i = a || (r || []).length || 0, s = e.next(4); s.write_shift(2, n), s.write_shift(2, i), /*:: len != null &&*/ i > 0 && wn(r) && e.push(r); } } function Am(e, t, r, a) { var n = a || (r || []).length || 0; if (n <= 8224) return ne(e, t, r, n); var i = t; if (!isNaN(i)) { for (var s = r.parts || [], f = 0, c = 0, o = 0; o + (s[f] || 8224) <= 8224; ) o += s[f] || 8224, f++; var l = e.next(4); for (l.write_shift(2, i), l.write_shift(2, o), e.push(r.slice(c, c + o)), c += o; c < n; ) { for (l = e.next(4), l.write_shift(2, 60), o = 0; o + (s[f] || 8224) <= 8224; ) o += s[f] || 8224, f++; l.write_shift(2, o), e.push(r.slice(c, c + o)), c += o; } } } function Ka(e, t, r) { return e || (e = z(7)), e.write_shift(2, t), e.write_shift(2, r), e.write_shift(2, 0), e.write_shift(1, 0), e; } function Cm(e, t, r, a) { var n = z(9); return Ka(n, e, t), df(r, a || "b", n), n; } function Dm(e, t, r) { var a = z(8 + 2 * r.length); return Ka(a, e, t), a.write_shift(1, r.length), a.write_shift(r.length, r, "sbcs"), a.l < a.length ? a.slice(0, a.l) : a; } function Om(e, t, r, a) { if (t.v != null) switch (t.t) { case "d": case "n": var n = t.t == "d" ? nr(Ue(t.v)) : t.v; n == (n | 0) && n >= 0 && n < 65536 ? ne(e, 2, yh(r, a, n)) : ne(e, 3, Sh(r, a, n)); return; case "b": case "e": ne(e, 5, Cm(r, a, t.v, t.t)); return; case "s": case "str": ne(e, 4, Dm(r, a, (t.v || "").slice(0, 255))); return; } ne(e, 1, Ka(null, r, a)); } function Im(e, t, r, a) { var n = Array.isArray(t), i = De(t["!ref"] || "A1"), s, f = "", c = []; if (i.e.c > 255 || i.e.r > 16383) { if (a.WTF) throw new Error("Range " + (t["!ref"] || "A1") + " exceeds format limit A1:IV16384"); i.e.c = Math.min(i.e.c, 255), i.e.r = Math.min(i.e.c, 16383), s = we(i); } for (var o = i.s.r; o <= i.e.r; ++o) { f = qe(o); for (var l = i.s.c; l <= i.e.c; ++l) { o === i.s.r && (c[l] = Ge(l)), s = c[l] + f; var u = n ? (t[o] || [])[l] : t[s]; u && Om(e, u, o, l); } } } function Rm(e, t) { for (var r = t || {}, a = Fr(), n = 0, i = 0; i < e.SheetNames.length; ++i) e.SheetNames[i] == r.sheet && (n = i); if (n == 0 && r.sheet && e.SheetNames[0] != r.sheet) throw new Error("Sheet not found: " + r.sheet); return ne(a, r.biff == 4 ? 1033 : r.biff == 3 ? 521 : 9, On(e, 16, r)), Im(a, e.Sheets[e.SheetNames[n]], n, r), ne(a, 10), a.end(); } function Nm(e, t, r) { ne(e, 49, yu({ sz: 12, color: { theme: 1 }, name: "Arial", family: 2, scheme: "minor" }, r)); } function bm(e, t, r) { t && [[5, 8], [23, 26], [41, 44], [ /*63*/ 50, /*66],[164,*/ 392 ]].forEach(function(a) { for (var n = a[0]; n <= a[1]; ++n) t[n] != null && ne(e, 1054, Ru(n, t[n], r)); }); } function Pm(e, t) { var r = z(19); r.write_shift(4, 2151), r.write_shift(4, 0), r.write_shift(4, 0), r.write_shift(2, 3), r.write_shift(1, 1), r.write_shift(4, 0), ne(e, 2151, r), r = z(39), r.write_shift(4, 2152), r.write_shift(4, 0), r.write_shift(4, 0), r.write_shift(2, 3), r.write_shift(1, 0), r.write_shift(4, 0), r.write_shift(2, 1), r.write_shift(4, 4), r.write_shift(2, 0), _f(De(t["!ref"] || "A1"), r), r.write_shift(4, 4), ne(e, 2152, r); } function Lm(e, t) { for (var r = 0; r < 16; ++r) ne(e, 224, Bi({ numFmtId: 0, style: !0 }, 0, t)); t.cellXfs.forEach(function(a) { ne(e, 224, Bi(a, 0, t)); }); } function Bm(e, t) { for (var r = 0; r < t["!links"].length; ++r) { var a = t["!links"][r]; ne(e, 440, sh(a)), a[1].Tooltip && ne(e, 2048, ch(a)); } delete t["!links"]; } function Mm(e, t) { if (t) { var r = 0; t.forEach(function(a, n) { ++r <= 256 && a && ne(e, 125, dh(A0(n, a), n)); }); } } function Um(e, t, r, a, n) { var i = 16 + At(n.cellXfs, t, n); if (t.v == null && !t.bf) { ne(e, 513, Ut(r, a, i)); return; } if (t.bf) ne(e, 6, uv(t, r, a, n, i)); else switch (t.t) { case "d": case "n": var s = t.t == "d" ? nr(Ue(t.v)) : t.v; ne(e, 515, Xu(r, a, s, i)); break; case "b": case "e": ne(e, 517, Vu(r, a, t.v, i, n, t.t)); break; case "s": case "str": if (n.bookSST) { var f = Mn(n.Strings, t.v, n.revStrings); ne(e, 253, Cu(r, a, f, i)); } else ne(e, 516, Ou(r, a, (t.v || "").slice(0, 255), i, n)); break; default: ne(e, 513, Ut(r, a, i)); } } function Wm(e, t, r) { var a = Fr(), n = r.SheetNames[e], i = r.Sheets[n] || {}, s = (r || {}).Workbook || {}, f = (s.Sheets || [])[e] || {}, c = Array.isArray(i), o = t.biff == 8, l, u = "", h = [], d = De(i["!ref"] || "A1"), v = o ? 65536 : 16384; if (d.e.c > 255 || d.e.r >= v) { if (t.WTF) throw new Error("Range " + (i["!ref"] || "A1") + " exceeds format limit A1:IV16384"); d.e.c = Math.min(d.e.c, 255), d.e.r = Math.min(d.e.c, v - 1); } ne(a, 2057, On(r, 16, t)), ne(a, 13, Hr(1)), ne(a, 12, Hr(100)), ne(a, 15, kr(!0)), ne(a, 17, kr(!1)), ne(a, 16, Bt(1e-3)), ne(a, 95, kr(!0)), ne(a, 42, kr(!1)), ne(a, 43, kr(!1)), ne(a, 130, Hr(1)), ne(a, 128, Hu([0, 0])), ne(a, 131, kr(!1)), ne(a, 132, kr(!1)), o && Mm(a, i["!cols"]), ne(a, 512, bu(d, t)), o && (i["!links"] = []); for (var x = d.s.r; x <= d.e.r; ++x) { u = qe(x); for (var p = d.s.c; p <= d.e.c; ++p) { x === d.s.r && (h[p] = Ge(p)), l = h[p] + u; var w = c ? (i[x] || [])[p] : i[l]; w && (Um(a, w, x, p, t), o && w.l && i["!links"].push([l, w.l])); } } var y = f.CodeName || f.name || n; return o && ne(a, 574, Tu((s.Views || [])[0])), o && (i["!merges"] || []).length && ne(a, 229, eh(i["!merges"])), o && Bm(a, i), ne(a, 442, vf(y)), o && Pm(a, i), ne( a, 10 /* EOF */ ), a.end(); } function Hm(e, t, r) { var a = Fr(), n = (e || {}).Workbook || {}, i = n.Sheets || [], s = ( /*::((*/ n.WBProps || { /*::CodeName:"ThisWorkbook"*/ } ), f = r.biff == 8, c = r.biff == 5; if (ne(a, 2057, On(e, 5, r)), r.bookType == "xla" && ne( a, 135 /* Addin */ ), ne(a, 225, f ? Hr(1200) : null), ne(a, 193, Vl(2)), c && ne( a, 191 /* ToolbarHdr */ ), c && ne( a, 192 /* ToolbarEnd */ ), ne( a, 226 /* InterfaceEnd */ ), ne(a, 92, lu("SheetJS", r)), ne(a, 66, Hr(f ? 1200 : 1252)), f && ne(a, 353, Hr(0)), f && ne( a, 448 /* Excel9File */ ), ne(a, 317, mh(e.SheetNames.length)), f && e.vbaraw && ne( a, 211 /* ObProj */ ), f && e.vbaraw) { var o = s.CodeName || "ThisWorkbook"; ne(a, 442, vf(o)); } ne(a, 156, Hr(17)), ne(a, 25, kr(!1)), ne(a, 18, kr(!1)), ne(a, 19, Hr(0)), f && ne(a, 431, kr(!1)), f && ne(a, 444, Hr(0)), ne(a, 61, Eu()), ne(a, 64, kr(!1)), ne(a, 141, Hr(0)), ne(a, 34, kr(_2(e) == "true")), ne(a, 14, kr(!0)), f && ne(a, 439, kr(!1)), ne(a, 218, Hr(0)), Nm(a, e, r), bm(a, e.SSF, r), Lm(a, r), f && ne(a, 352, kr(!1)); var l = a.end(), u = Fr(); f && ne(u, 140, lh()), f && r.Strings && Am(u, 252, vu(r.Strings)), ne( u, 10 /* EOF */ ); var h = u.end(), d = Fr(), v = 0, x = 0; for (x = 0; x < e.SheetNames.length; ++x) v += (f ? 12 : 11) + (f ? 2 : 1) * e.SheetNames[x].length; var p = l.length + v + h.length; for (x = 0; x < e.SheetNames.length; ++x) { var w = i[x] || {}; ne(d, 133, xu({ pos: p, hs: w.Hidden || 0, dt: 0, name: e.SheetNames[x] }, r)), p += t[x].length; } var y = d.end(); if (v != y.length) throw new Error("BS8 " + v + " != " + y.length); var g = []; return l.length && g.push(l), y.length && g.push(y), h.length && g.push(h), sr(g); } function Vm(e, t) { var r = t || {}, a = []; e && !e.SSF && (e.SSF = We(de)), e && e.SSF && (sa(), Wa(e.SSF), r.revssf = k0(e.SSF), r.revssf[e.SSF[65535]] = 0, r.ssf = e.SSF), r.Strings = /*::((*/ [], r.Strings.Count = 0, r.Strings.Unique = 0, Gn(r), r.cellXfs = [], At(r.cellXfs, {}, { revssf: { General: 0 } }), e.Props || (e.Props = {}); for (var n = 0; n < e.SheetNames.length; ++n) a[a.length] = Wm(n, r, e); return a.unshift(Hm(e, a, r)), sr(a); } function cc(e, t) { for (var r = 0; r <= e.SheetNames.length; ++r) { var a = e.Sheets[e.SheetNames[r]]; if (!(!a || !a["!ref"])) { var n = yr(a["!ref"]); n.e.c > 255 && typeof console < "u" && console.error && console.error("Worksheet '" + e.SheetNames[r] + "' extends beyond column IV (255). Data may be lost."); } } var i = t || {}; switch (i.biff || 2) { case 8: case 5: return Vm(e, t); case 4: case 3: case 2: return Rm(e, t); } throw new Error("invalid type " + i.bookType + " for BIFF"); } function Zi(e, t) { var r = t || {}, a = r.dense ? [] : {}; e = e.replace(//g, ""); var n = e.match(/"); var i = e.match(/<\/table/i), s = n.index, f = i && i.index || e.length, c = Ao(e.slice(s, f), /(:?]*>)/i, ""), o = -1, l = 0, u = 0, h = 0, d = { s: { r: 1e7, c: 1e7 }, e: { r: 0, c: 0 } }, v = []; for (s = 0; s < c.length; ++s) { var x = c[s].trim(), p = x.slice(0, 3).toLowerCase(); if (p == "/i); for (f = 0; f < w.length; ++f) { var y = w[f].trim(); if (y.match(/")) > -1; ) g = g.slice(C + 1); for (var b = 0; b < v.length; ++b) { var O = v[b]; O.s.c == l && O.s.r < o && o <= O.e.r && (l = O.e.c + 1, b = -1); } var S = me(y.slice(0, y.indexOf(">"))); h = S.colspan ? +S.colspan : 1, ((u = +S.rowspan) > 1 || h > 1) && v.push({ s: { r: o, c: l }, e: { r: o + (u || 1) - 1, c: l + h - 1 } }); var B = S.t || S["data-t"] || ""; if (!g.length) { l += h; continue; } if (g = Is(g), d.s.r > o && (d.s.r = o), d.e.r < o && (d.e.r = o), d.s.c > l && (d.s.c = l), d.e.c < l && (d.e.c = l), !g.length) { l += h; continue; } var R = { t: "s", v: g }; r.raw || !g.trim().length || B == "s" || (g === "TRUE" ? R = { t: "b", v: !0 } : g === "FALSE" ? R = { t: "b", v: !1 } : isNaN($r(g)) ? isNaN(aa(g).getDate()) || (R = { t: "d", v: Ue(g) }, r.cellDates || (R = { t: "n", v: nr(R.v) }), R.z = r.dateNF || de[14]) : R = { t: "n", v: $r(g) }), r.dense ? (a[o] || (a[o] = []), a[o][l] = R) : a[pe({ r: o, c: l })] = R, l += h; } } } } return a["!ref"] = we(d), v.length && (a["!merges"] = v), a; } function Gm(e, t, r, a) { for (var n = e["!merges"] || [], i = [], s = t.s.c; s <= t.e.c; ++s) { for (var f = 0, c = 0, o = 0; o < n.length; ++o) if (!(n[o].s.r > r || n[o].s.c > s) && !(n[o].e.r < r || n[o].e.c < s)) { if (n[o].s.r < r || n[o].s.c < s) { f = -1; break; } f = n[o].e.r - n[o].s.r + 1, c = n[o].e.c - n[o].s.c + 1; break; } if (!(f < 0)) { var l = pe({ r, c: s }), u = a.dense ? (e[r] || [])[s] : e[l], h = u && u.v != null && (u.h || mn(u.w || (lt(u), u.w) || "")) || "", d = {}; f > 1 && (d.rowspan = f), c > 1 && (d.colspan = c), a.editable ? h = '' + h + "" : u && (d["data-t"] = u && u.t || "z", u.v != null && (d["data-v"] = u.v), u.z != null && (d["data-z"] = u.z), u.l && (u.l.Target || "#").charAt(0) != "#" && (h = '' + h + "")), d.id = (a.id || "sjs") + "-" + l, i.push(ae("td", h, d)); } } var v = ""; return v + i.join("") + ""; } var Xm = 'SheetJS Table Export', zm = ""; function jm(e, t) { var r = e.match(/[\s\S]*?<\/table>/gi); if (!r || r.length == 0) throw new Error("Invalid HTML: could not find
"); if (r.length == 1) return yt(Zi(r[0], t), t); var a = jn(); return r.forEach(function(n, i) { $n(a, Zi(n, t), "Sheet" + (i + 1)); }), a; } function $m(e, t, r) { var a = []; return a.join("") + ""; } function oc(e, t) { var r = t || {}, a = r.header != null ? r.header : Xm, n = r.footer != null ? r.footer : zm, i = [a], s = yr(e["!ref"]); r.dense = Array.isArray(e), i.push($m(e, s, r)); for (var f = s.s.r; f <= s.e.r; ++f) i.push(Gm(e, s, f, r)); return i.push("
" + n), i.join(""); } function lc(e, t, r) { var a = r || {}, n = 0, i = 0; if (a.origin != null) if (typeof a.origin == "number") n = a.origin; else { var s = typeof a.origin == "string" ? Xe(a.origin) : a.origin; n = s.r, i = s.c; } var f = t.getElementsByTagName("tr"), c = Math.min(a.sheetRows || 1e7, f.length), o = { s: { r: 0, c: 0 }, e: { r: n, c: i } }; if (e["!ref"]) { var l = yr(e["!ref"]); o.s.r = Math.min(o.s.r, l.s.r), o.s.c = Math.min(o.s.c, l.s.c), o.e.r = Math.max(o.e.r, l.e.r), o.e.c = Math.max(o.e.c, l.e.c), n == -1 && (o.e.r = n = l.e.r + 1); } var u = [], h = 0, d = e["!rows"] || (e["!rows"] = []), v = 0, x = 0, p = 0, w = 0, y = 0, g = 0; for (e["!cols"] || (e["!cols"] = []); v < f.length && x < c; ++v) { var C = f[v]; if (Qi(C)) { if (a.display) continue; d[x] = { hidden: !0 }; } var b = C.children; for (p = w = 0; p < b.length; ++p) { var O = b[p]; if (!(a.display && Qi(O))) { var S = O.hasAttribute("data-v") ? O.getAttribute("data-v") : O.hasAttribute("v") ? O.getAttribute("v") : Is(O.innerHTML), B = O.getAttribute("data-z") || O.getAttribute("z"); for (h = 0; h < u.length; ++h) { var R = u[h]; R.s.c == w + i && R.s.r < x + n && x + n <= R.e.r && (w = R.e.c + 1 - i, h = -1); } g = +O.getAttribute("colspan") || 1, ((y = +O.getAttribute("rowspan") || 1) > 1 || g > 1) && u.push({ s: { r: x + n, c: w + i }, e: { r: x + n + (y || 1) - 1, c: w + i + (g || 1) - 1 } }); var X = { t: "s", v: S }, G = O.getAttribute("data-t") || O.getAttribute("t") || ""; S != null && (S.length == 0 ? X.t = G || "z" : a.raw || S.trim().length == 0 || G == "s" || (S === "TRUE" ? X = { t: "b", v: !0 } : S === "FALSE" ? X = { t: "b", v: !1 } : isNaN($r(S)) ? isNaN(aa(S).getDate()) || (X = { t: "d", v: Ue(S) }, a.cellDates || (X = { t: "n", v: nr(X.v) }), X.z = a.dateNF || de[14]) : X = { t: "n", v: $r(S) })), X.z === void 0 && B != null && (X.z = B); var L = "", J = O.getElementsByTagName("A"); if (J && J.length) for (var le = 0; le < J.length && !(J[le].hasAttribute("href") && (L = J[le].getAttribute("href"), L.charAt(0) != "#")); ++le) ; L && L.charAt(0) != "#" && (X.l = { Target: L }), a.dense ? (e[x + n] || (e[x + n] = []), e[x + n][w + i] = X) : e[pe({ c: w + i, r: x + n })] = X, o.e.c < w + i && (o.e.c = w + i), w += g; } } ++x; } return u.length && (e["!merges"] = (e["!merges"] || []).concat(u)), o.e.r = Math.max(o.e.r, x - 1 + n), e["!ref"] = we(o), x >= c && (e["!fullref"] = we((o.e.r = f.length - v + x - 1 + n, o))), e; } function uc(e, t) { var r = t || {}, a = r.dense ? [] : {}; return lc(a, e, t); } function Km(e, t) { return yt(uc(e, t), t); } function Qi(e) { var t = "", r = Ym(e); return r && (t = r(e).getPropertyValue("display")), t || (t = e.style && e.style.display), t === "none"; } function Ym(e) { return e.ownerDocument.defaultView && typeof e.ownerDocument.defaultView.getComputedStyle == "function" ? e.ownerDocument.defaultView.getComputedStyle : typeof getComputedStyle == "function" ? getComputedStyle : null; } function Jm(e) { var t = e.replace(/[\t\r\n]/g, " ").trim().replace(/ +/g, " ").replace(//g, " ").replace(//g, function(a, n) { return Array(parseInt(n, 10) + 1).join(" "); }).replace(/]*\/>/g, " ").replace(//g, ` `), r = Ce(t.replace(/<[^>]*>/g, "")); return [r]; } var es = { /* ods name: [short ssf fmt, long ssf fmt] */ day: ["d", "dd"], month: ["m", "mm"], year: ["y", "yy"], hours: ["h", "hh"], minutes: ["m", "mm"], seconds: ["s", "ss"], "am-pm": ["A/P", "AM/PM"], "day-of-week": ["ddd", "dddd"], era: ["e", "ee"], /* there is no native representation of LO "Q" format */ quarter: ["\\Qm", 'm\\"th quarter"'] }; function hc(e, t) { var r = t || {}, a = gn(e), n = [], i, s, f = { name: "" }, c = "", o = 0, l, u, h = {}, d = [], v = r.dense ? [] : {}, x, p, w = { value: "" }, y = "", g = 0, C = [], b = -1, O = -1, S = { s: { r: 1e6, c: 1e7 }, e: { r: 0, c: 0 } }, B = 0, R = {}, X = [], G = {}, L = 0, J = 0, le = [], ie = 1, he = 1, ce = [], be = { Names: [] }, V = {}, ve = ["", ""], ge = [], D = {}, P = "", I = 0, N = !1, K = !1, re = 0; for (Ia.lastIndex = 0, a = a.replace(//mg, "").replace(//gm, ""); x = Ia.exec(a); ) switch (x[3] = x[3].replace(/_.*$/, "")) { case "table": case "工作表": x[1] === "/" ? (S.e.c >= S.s.c && S.e.r >= S.s.r ? v["!ref"] = we(S) : v["!ref"] = "A1:A1", r.sheetRows > 0 && r.sheetRows <= S.e.r && (v["!fullref"] = v["!ref"], S.e.r = r.sheetRows - 1, v["!ref"] = we(S)), X.length && (v["!merges"] = X), le.length && (v["!rows"] = le), l.name = l.名称 || l.name, typeof JSON < "u" && JSON.stringify(l), d.push(l.name), h[l.name] = v, K = !1) : x[0].charAt(x[0].length - 2) !== "/" && (l = me(x[0], !1), b = O = -1, S.s.r = S.s.c = 1e7, S.e.r = S.e.c = 0, v = r.dense ? [] : {}, X = [], le = [], K = !0); break; case "table-row-group": x[1] === "/" ? --B : ++B; break; case "table-row": case "行": if (x[1] === "/") { b += ie, ie = 1; break; } if (u = me(x[0], !1), u.行号 ? b = u.行号 - 1 : b == -1 && (b = 0), ie = +u["number-rows-repeated"] || 1, ie < 10) for (re = 0; re < ie; ++re) B > 0 && (le[b + re] = { level: B }); O = -1; break; case "covered-table-cell": x[1] !== "/" && ++O, r.sheetStubs && (r.dense ? (v[b] || (v[b] = []), v[b][O] = { t: "z" }) : v[pe({ r: b, c: O })] = { t: "z" }), y = "", C = []; break; case "table-cell": case "数据": if (x[0].charAt(x[0].length - 2) === "/") ++O, w = me(x[0], !1), he = parseInt(w["number-columns-repeated"] || "1", 10), p = { t: "z", v: null /*:: , z:null, w:"",c:[]*/ }, w.formula && r.cellFormula != !1 && (p.f = Yi(Ce(w.formula))), (w.数据类型 || w["value-type"]) == "string" && (p.t = "s", p.v = Ce(w["string-value"] || ""), r.dense ? (v[b] || (v[b] = []), v[b][O] = p) : v[pe({ r: b, c: O })] = p), O += he - 1; else if (x[1] !== "/") { ++O, y = "", g = 0, C = [], he = 1; var te = ie ? b + ie - 1 : b; if (O > S.e.c && (S.e.c = O), O < S.s.c && (S.s.c = O), b < S.s.r && (S.s.r = b), te > S.e.r && (S.e.r = te), w = me(x[0], !1), ge = [], D = {}, p = { t: w.数据类型 || w["value-type"], v: null /*:: , z:null, w:"",c:[]*/ }, r.cellFormula) if (w.formula && (w.formula = Ce(w.formula)), w["number-matrix-columns-spanned"] && w["number-matrix-rows-spanned"] && (L = parseInt(w["number-matrix-rows-spanned"], 10) || 0, J = parseInt(w["number-matrix-columns-spanned"], 10) || 0, G = { s: { r: b, c: O }, e: { r: b + L - 1, c: O + J - 1 } }, p.F = we(G), ce.push([G, p.F])), w.formula) p.f = Yi(w.formula); else for (re = 0; re < ce.length; ++re) b >= ce[re][0].s.r && b <= ce[re][0].e.r && O >= ce[re][0].s.c && O <= ce[re][0].e.c && (p.F = ce[re][1]); switch ((w["number-columns-spanned"] || w["number-rows-spanned"]) && (L = parseInt(w["number-rows-spanned"], 10) || 0, J = parseInt(w["number-columns-spanned"], 10) || 0, G = { s: { r: b, c: O }, e: { r: b + L - 1, c: O + J - 1 } }, X.push(G)), w["number-columns-repeated"] && (he = parseInt(w["number-columns-repeated"], 10)), p.t) { case "boolean": p.t = "b", p.v = Me(w["boolean-value"]); break; case "float": p.t = "n", p.v = parseFloat(w.value); break; case "percentage": p.t = "n", p.v = parseFloat(w.value); break; case "currency": p.t = "n", p.v = parseFloat(w.value); break; case "date": p.t = "d", p.v = Ue(w["date-value"]), r.cellDates || (p.t = "n", p.v = nr(p.v)), p.z = "m/d/yy"; break; case "time": p.t = "n", p.v = So(w["time-value"]) / 86400, r.cellDates && (p.t = "d", p.v = T0(p.v)), p.z = "HH:MM:SS"; break; case "number": p.t = "n", p.v = parseFloat(w.数据数值); break; default: if (p.t === "string" || p.t === "text" || !p.t) p.t = "s", w["string-value"] != null && (y = Ce(w["string-value"]), C = []); else throw new Error("Unsupported value type " + p.t); } } else { if (N = !1, p.t === "s" && (p.v = y || "", C.length && (p.R = C), N = g == 0), V.Target && (p.l = V), ge.length > 0 && (p.c = ge, ge = []), y && r.cellText !== !1 && (p.w = y), N && (p.t = "z", delete p.v), (!N || r.sheetStubs) && !(r.sheetRows && r.sheetRows <= b)) for (var Q = 0; Q < ie; ++Q) { if (he = parseInt(w["number-columns-repeated"] || "1", 10), r.dense) for (v[b + Q] || (v[b + Q] = []), v[b + Q][O] = Q == 0 ? p : We(p); --he > 0; ) v[b + Q][O + he] = We(p); else for (v[pe({ r: b + Q, c: O })] = p; --he > 0; ) v[pe({ r: b + Q, c: O + he })] = We(p); S.e.c <= O && (S.e.c = O); } he = parseInt(w["number-columns-repeated"] || "1", 10), O += he - 1, he = 0, p = { /*:: t:"", v:null, z:null, w:"",c:[]*/ }, y = "", C = []; } V = {}; break; case "document": case "document-content": case "电子表格文档": case "spreadsheet": case "主体": case "scripts": case "styles": case "font-face-decls": case "master-styles": if (x[1] === "/") { if ((i = n.pop())[0] !== x[3]) throw "Bad state: " + i; } else x[0].charAt(x[0].length - 2) !== "/" && n.push([x[3], !0]); break; case "annotation": if (x[1] === "/") { if ((i = n.pop())[0] !== x[3]) throw "Bad state: " + i; D.t = y, C.length && (D.R = C), D.a = P, ge.push(D); } else x[0].charAt(x[0].length - 2) !== "/" && n.push([x[3], !1]); P = "", I = 0, y = "", g = 0, C = []; break; case "creator": x[1] === "/" ? P = a.slice(I, x.index) : I = x.index + x[0].length; break; case "meta": case "元数据": case "settings": case "config-item-set": case "config-item-map-indexed": case "config-item-map-entry": case "config-item-map-named": case "shapes": case "frame": case "text-box": case "image": case "data-pilot-tables": case "list-style": case "form": case "dde-links": case "event-listeners": case "chart": if (x[1] === "/") { if ((i = n.pop())[0] !== x[3]) throw "Bad state: " + i; } else x[0].charAt(x[0].length - 2) !== "/" && n.push([x[3], !1]); y = "", g = 0, C = []; break; case "scientific-number": break; case "currency-symbol": break; case "currency-style": break; case "number-style": case "percentage-style": case "date-style": case "time-style": if (x[1] === "/") { if (R[f.name] = c, (i = n.pop())[0] !== x[3]) throw "Bad state: " + i; } else x[0].charAt(x[0].length - 2) !== "/" && (c = "", f = me(x[0], !1), n.push([x[3], !0])); break; case "script": break; case "libraries": break; case "automatic-styles": break; case "default-style": case "page-layout": break; case "style": break; case "map": break; case "font-face": break; case "paragraph-properties": break; case "table-properties": break; case "table-column-properties": break; case "table-row-properties": break; case "table-cell-properties": break; case "number": switch (n[n.length - 1][0]) { case "time-style": case "date-style": s = me(x[0], !1), c += es[x[3]][s.style === "long" ? 1 : 0]; break; } break; case "fraction": break; case "day": case "month": case "year": case "era": case "day-of-week": case "week-of-year": case "quarter": case "hours": case "minutes": case "seconds": case "am-pm": switch (n[n.length - 1][0]) { case "time-style": case "date-style": s = me(x[0], !1), c += es[x[3]][s.style === "long" ? 1 : 0]; break; } break; case "boolean-style": break; case "boolean": break; case "text-style": break; case "text": if (x[0].slice(-2) === "/>") break; if (x[1] === "/") switch (n[n.length - 1][0]) { case "number-style": case "date-style": case "time-style": c += a.slice(o, x.index); break; } else o = x.index + x[0].length; break; case "named-range": s = me(x[0], !1), ve = W0(s["cell-range-address"]); var q = { Name: s.name, Ref: ve[0] + "!" + ve[1] }; K && (q.Sheet = d.length), be.Names.push(q); break; case "text-content": break; case "text-properties": break; case "embedded-text": break; case "body": case "电子表格": break; case "forms": break; case "table-column": break; case "table-header-rows": break; case "table-rows": break; case "table-column-group": break; case "table-header-columns": break; case "table-columns": break; case "null-date": break; case "graphic-properties": break; case "calculation-settings": break; case "named-expressions": break; case "label-range": break; case "label-ranges": break; case "named-expression": break; case "sort": break; case "sort-by": break; case "sort-groups": break; case "tab": break; case "line-break": break; case "span": break; case "p": case "文本串": if (["master-styles"].indexOf(n[n.length - 1][0]) > -1) break; if (x[1] === "/" && (!w || !w["string-value"])) { var ke = Jm(a.slice(g, x.index)); y = (y.length > 0 ? y + ` ` : "") + ke[0]; } else me(x[0], !1), g = x.index + x[0].length; break; case "s": break; case "database-range": if (x[1] === "/") break; try { ve = W0(me(x[0])["target-range-address"]), h[ve[0]]["!autofilter"] = { ref: ve[1] }; } catch { } break; case "date": break; case "object": break; case "title": case "标题": break; case "desc": break; case "binary-data": break; case "table-source": break; case "scenario": break; case "iteration": break; case "content-validations": break; case "content-validation": break; case "help-message": break; case "error-message": break; case "database-ranges": break; case "filter": break; case "filter-and": break; case "filter-or": break; case "filter-condition": break; case "list-level-style-bullet": break; case "list-level-style-number": break; case "list-level-properties": break; case "sender-firstname": case "sender-lastname": case "sender-initials": case "sender-title": case "sender-position": case "sender-email": case "sender-phone-private": case "sender-fax": case "sender-company": case "sender-phone-work": case "sender-street": case "sender-city": case "sender-postal-code": case "sender-country": case "sender-state-or-province": case "author-name": case "author-initials": case "chapter": case "file-name": case "template-name": case "sheet-name": break; case "event-listener": break; case "initial-creator": case "creation-date": case "print-date": case "generator": case "document-statistic": case "user-defined": case "editing-duration": case "editing-cycles": break; case "config-item": break; case "page-number": break; case "page-count": break; case "time": break; case "cell-range-source": break; case "detective": break; case "operation": break; case "highlighted-range": break; case "data-pilot-table": case "source-cell-range": case "source-service": case "data-pilot-field": case "data-pilot-level": case "data-pilot-subtotals": case "data-pilot-subtotal": case "data-pilot-members": case "data-pilot-member": case "data-pilot-display-info": case "data-pilot-sort-info": case "data-pilot-layout-info": case "data-pilot-field-reference": case "data-pilot-groups": case "data-pilot-group": case "data-pilot-group-member": break; case "rect": break; case "dde-connection-decls": case "dde-connection-decl": case "dde-link": case "dde-source": break; case "properties": break; case "property": break; case "a": if (x[1] !== "/") { if (V = me(x[0], !1), !V.href) break; V.Target = Ce(V.href), delete V.href, V.Target.charAt(0) == "#" && V.Target.indexOf(".") > -1 ? (ve = W0(V.Target.slice(1)), V.Target = "#" + ve[0] + "!" + ve[1]) : V.Target.match(/^\.\.[\\\/]/) && (V.Target = V.Target.slice(3)); } break; case "table-protection": break; case "data-pilot-grand-total": break; case "office-document-common-attrs": break; default: switch (x[2]) { case "dc:": case "calcext:": case "loext:": case "ooo:": case "chartooo:": case "draw:": case "style:": case "chart:": case "form:": case "uof:": case "表:": case "字:": break; default: if (r.WTF) throw new Error(x); } } var A = { Sheets: h, SheetNames: d, Workbook: be }; return r.bookSheets && delete /*::(*/ A.Sheets, A; } function rs(e, t) { t = t || {}, Wr(e, "META-INF/manifest.xml") && Tl(er(e, "META-INF/manifest.xml"), t); var r = Ir(e, "content.xml"); if (!r) throw new Error("Missing content.xml in ODS / UOF file"); var a = hc(Pe(r), t); return Wr(e, "meta.xml") && (a.Props = rf(er(e, "meta.xml"))), a; } function ts(e, t) { return hc(e, t); } var qm = /* @__PURE__ */ function() { var e = [ "", '', "", '', "", '', "", "" ].join(""), t = "" + e + ""; return function() { return Ze + t; }; }(), as = /* @__PURE__ */ function() { var e = function(i) { return Ne(i).replace(/ +/g, function(s) { return ''; }).replace(/\t/g, "").replace(/\n/g, "").replace(/^ /, "").replace(/ $/, ""); }, t = ` `, r = ` `, a = function(i, s, f) { var c = []; c.push(' `); var o = 0, l = 0, u = yr(i["!ref"] || "A1"), h = i["!merges"] || [], d = 0, v = Array.isArray(i); if (i["!cols"]) for (l = 0; l <= u.e.c; ++l) c.push(" `); var x = "", p = i["!rows"] || []; for (o = 0; o < u.s.r; ++o) x = p[o] ? ' table:style-name="ro' + p[o].ods + '"' : "", c.push(" `); for (; o <= u.e.r; ++o) { for (x = p[o] ? ' table:style-name="ro' + p[o].ods + '"' : "", c.push(" `), l = 0; l < u.s.c; ++l) c.push(t); for (; l <= u.e.c; ++l) { var w = !1, y = {}, g = ""; for (d = 0; d != h.length; ++d) if (!(h[d].s.c > l) && !(h[d].s.r > o) && !(h[d].e.c < l) && !(h[d].e.r < o)) { (h[d].s.c != l || h[d].s.r != o) && (w = !0), y["table:number-columns-spanned"] = h[d].e.c - h[d].s.c + 1, y["table:number-rows-spanned"] = h[d].e.r - h[d].s.r + 1; break; } if (w) { c.push(r); continue; } var C = pe({ r: o, c: l }), b = v ? (i[o] || [])[l] : i[C]; if (b && b.f && (y["table:formula"] = Ne(mv(b.f)), b.F && b.F.slice(0, C.length) == C)) { var O = yr(b.F); y["table:number-matrix-columns-spanned"] = O.e.c - O.s.c + 1, y["table:number-matrix-rows-spanned"] = O.e.r - O.s.r + 1; } if (!b) { c.push(t); continue; } switch (b.t) { case "b": g = b.v ? "TRUE" : "FALSE", y["office:value-type"] = "boolean", y["office:boolean-value"] = b.v ? "true" : "false"; break; case "n": g = b.w || String(b.v || 0), y["office:value-type"] = "float", y["office:value"] = b.v || 0; break; case "s": case "str": g = b.v == null ? "" : b.v, y["office:value-type"] = "string"; break; case "d": g = b.w || Ue(b.v).toISOString(), y["office:value-type"] = "date", y["office:date-value"] = Ue(b.v).toISOString(), y["table:style-name"] = "ce1"; break; default: c.push(t); continue; } var S = e(g); if (b.l && b.l.Target) { var B = b.l.Target; B = B.charAt(0) == "#" ? "#" + gv(B.slice(1)) : B, B.charAt(0) != "#" && !B.match(/^\w+:/) && (B = "../" + B), S = ae("text:a", S, { "xlink:href": B.replace(/&/g, "&") }); } c.push(" " + ae("table:table-cell", ae("text:p", S, {}), y) + ` `); } c.push(` `); } return c.push(` `), c.join(""); }, n = function(i, s) { i.push(` `), i.push(` `), i.push(` `), i.push(` / `), i.push(` `), i.push(` / `), i.push(` `), i.push(` `); var f = 0; s.SheetNames.map(function(o) { return s.Sheets[o]; }).forEach(function(o) { if (o && o["!cols"]) { for (var l = 0; l < o["!cols"].length; ++l) if (o["!cols"][l]) { var u = o["!cols"][l]; if (u.width == null && u.wpx == null && u.wch == null) continue; kt(u), u.ods = f; var h = o["!cols"][l].wpx + "px"; i.push(' `), i.push(' `), i.push(` `), ++f; } } }); var c = 0; s.SheetNames.map(function(o) { return s.Sheets[o]; }).forEach(function(o) { if (o && o["!rows"]) { for (var l = 0; l < o["!rows"].length; ++l) if (o["!rows"][l]) { o["!rows"][l].ods = c; var u = o["!rows"][l].hpx + "px"; i.push(' `), i.push(' `), i.push(` `), ++c; } } }), i.push(` `), i.push(` `), i.push(` `), i.push(` `), i.push(` `); }; return function(s, f) { var c = [Ze], o = Oa({ "xmlns:office": "urn:oasis:names:tc:opendocument:xmlns:office:1.0", "xmlns:table": "urn:oasis:names:tc:opendocument:xmlns:table:1.0", "xmlns:style": "urn:oasis:names:tc:opendocument:xmlns:style:1.0", "xmlns:text": "urn:oasis:names:tc:opendocument:xmlns:text:1.0", "xmlns:draw": "urn:oasis:names:tc:opendocument:xmlns:drawing:1.0", "xmlns:fo": "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0", "xmlns:xlink": "http://www.w3.org/1999/xlink", "xmlns:dc": "http://purl.org/dc/elements/1.1/", "xmlns:meta": "urn:oasis:names:tc:opendocument:xmlns:meta:1.0", "xmlns:number": "urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0", "xmlns:presentation": "urn:oasis:names:tc:opendocument:xmlns:presentation:1.0", "xmlns:svg": "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0", "xmlns:chart": "urn:oasis:names:tc:opendocument:xmlns:chart:1.0", "xmlns:dr3d": "urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0", "xmlns:math": "http://www.w3.org/1998/Math/MathML", "xmlns:form": "urn:oasis:names:tc:opendocument:xmlns:form:1.0", "xmlns:script": "urn:oasis:names:tc:opendocument:xmlns:script:1.0", "xmlns:ooo": "http://openoffice.org/2004/office", "xmlns:ooow": "http://openoffice.org/2004/writer", "xmlns:oooc": "http://openoffice.org/2004/calc", "xmlns:dom": "http://www.w3.org/2001/xml-events", "xmlns:xforms": "http://www.w3.org/2002/xforms", "xmlns:xsd": "http://www.w3.org/2001/XMLSchema", "xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance", "xmlns:sheet": "urn:oasis:names:tc:opendocument:sh33tjs:1.0", "xmlns:rpt": "http://openoffice.org/2005/report", "xmlns:of": "urn:oasis:names:tc:opendocument:xmlns:of:1.2", "xmlns:xhtml": "http://www.w3.org/1999/xhtml", "xmlns:grddl": "http://www.w3.org/2003/g/data-view#", "xmlns:tableooo": "http://openoffice.org/2009/table", "xmlns:drawooo": "http://openoffice.org/2010/draw", "xmlns:calcext": "urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0", "xmlns:loext": "urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0", "xmlns:field": "urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0", "xmlns:formx": "urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0", "xmlns:css3t": "http://www.w3.org/TR/css3-text/", "office:version": "1.2" }), l = Oa({ "xmlns:config": "urn:oasis:names:tc:opendocument:xmlns:config:1.0", "office:mimetype": "application/vnd.oasis.opendocument.spreadsheet" }); f.bookType == "fods" ? (c.push(" `), c.push(ef().replace(/office:document-meta/g, "office:meta"))) : c.push(" `), n(c, s), c.push(` `), c.push(` `); for (var u = 0; u != s.SheetNames.length; ++u) c.push(a(s.Sheets[s.SheetNames[u]], s, u)); return c.push(` `), c.push(` `), f.bookType == "fods" ? c.push("") : c.push(""), c.join(""); }; }(); function xc(e, t) { if (t.bookType == "fods") return as(e, t); var r = dn(), a = "", n = [], i = []; return a = "mimetype", Ee(r, a, "application/vnd.oasis.opendocument.spreadsheet"), a = "content.xml", Ee(r, a, as(e, t)), n.push([a, "text/xml"]), i.push([a, "ContentFile"]), a = "styles.xml", Ee(r, a, qm(e, t)), n.push([a, "text/xml"]), i.push([a, "StylesFile"]), a = "meta.xml", Ee(r, a, Ze + ef( /*::wb, opts*/ )), n.push([a, "text/xml"]), i.push([a, "MetadataFile"]), a = "manifest.rdf", Ee(r, a, yl( i /*, opts*/ )), n.push([a, "application/rdf+xml"]), a = "META-INF/manifest.xml", Ee(r, a, Sl( n /*, opts*/ )), r; } /*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */ function Wt(e) { return new DataView(e.buffer, e.byteOffset, e.byteLength); } function tn(e) { return typeof TextDecoder < "u" ? new TextDecoder().decode(e) : Pe(Ft(e)); } function Zm(e) { return typeof TextEncoder < "u" ? new TextEncoder().encode(e) : Or(et(e)); } function Qm(e, t) { e: for (var r = 0; r <= e.length - t.length; ++r) { for (var a = 0; a < t.length; ++a) if (e[r + a] != t[a]) continue e; return !0; } return !1; } function St(e) { var t = e.reduce(function(n, i) { return n + i.length; }, 0), r = new Uint8Array(t), a = 0; return e.forEach(function(n) { r.set(n, a), a += n.length; }), r; } function ns(e) { return e -= e >> 1 & 1431655765, e = (e & 858993459) + (e >> 2 & 858993459), (e + (e >> 4) & 252645135) * 16843009 >>> 24; } function eg(e, t) { for (var r = (e[t + 15] & 127) << 7 | e[t + 14] >> 1, a = e[t + 14] & 1, n = t + 13; n >= t; --n) a = a * 256 + e[n]; return (e[t + 15] & 128 ? -a : a) * Math.pow(10, r - 6176); } function rg(e, t, r) { var a = Math.floor(r == 0 ? 0 : Math.LOG10E * Math.log(Math.abs(r))) + 6176 - 20, n = r / Math.pow(10, a - 6176); e[t + 15] |= a >> 7, e[t + 14] |= (a & 127) << 1; for (var i = 0; n >= 1; ++i, n /= 256) e[t + i] = n & 255; e[t + 15] |= r >= 0 ? 0 : 128; } function Ma(e, t) { var r = t ? t[0] : 0, a = e[r] & 127; e: if (e[r++] >= 128 && (a |= (e[r] & 127) << 7, e[r++] < 128 || (a |= (e[r] & 127) << 14, e[r++] < 128) || (a |= (e[r] & 127) << 21, e[r++] < 128) || (a += (e[r] & 127) * Math.pow(2, 28), ++r, e[r++] < 128) || (a += (e[r] & 127) * Math.pow(2, 35), ++r, e[r++] < 128) || (a += (e[r] & 127) * Math.pow(2, 42), ++r, e[r++] < 128))) break e; return t && (t[0] = r), a; } function Ie(e) { var t = new Uint8Array(7); t[0] = e & 127; var r = 1; e: if (e > 127) { if (t[r - 1] |= 128, t[r] = e >> 7 & 127, ++r, e <= 16383 || (t[r - 1] |= 128, t[r] = e >> 14 & 127, ++r, e <= 2097151) || (t[r - 1] |= 128, t[r] = e >> 21 & 127, ++r, e <= 268435455) || (t[r - 1] |= 128, t[r] = e / 256 >>> 21 & 127, ++r, e <= 34359738367) || (t[r - 1] |= 128, t[r] = e / 65536 >>> 21 & 127, ++r, e <= 4398046511103)) break e; t[r - 1] |= 128, t[r] = e / 16777216 >>> 21 & 127, ++r; } return t.slice(0, r); } function je(e) { var t = 0, r = e[t] & 127; e: if (e[t++] >= 128) { if (r |= (e[t] & 127) << 7, e[t++] < 128 || (r |= (e[t] & 127) << 14, e[t++] < 128) || (r |= (e[t] & 127) << 21, e[t++] < 128)) break e; r |= (e[t] & 127) << 28; } return r; } function Oe(e) { for (var t = [], r = [0]; r[0] < e.length; ) { var a = r[0], n = Ma(e, r), i = n & 7; n = Math.floor(n / 8); var s = 0, f; if (n == 0) break; switch (i) { case 0: { for (var c = r[0]; e[r[0]++] >= 128; ) ; f = e.slice(c, r[0]); } break; case 5: s = 4, f = e.slice(r[0], r[0] + s), r[0] += s; break; case 1: s = 8, f = e.slice(r[0], r[0] + s), r[0] += s; break; case 2: s = Ma(e, r), f = e.slice(r[0], r[0] + s), r[0] += s; break; case 3: case 4: default: throw new Error("PB Type ".concat(i, " for Field ").concat(n, " at offset ").concat(a)); } var o = { data: f, type: i }; t[n] == null ? t[n] = [o] : t[n].push(o); } return t; } function cr(e) { var t = []; return e.forEach(function(r, a) { r.forEach(function(n) { n.data && (t.push(Ie(a * 8 + n.type)), n.type == 2 && t.push(Ie(n.data.length)), t.push(n.data)); }); }), St(t); } function Hn(e, t) { return (e == null ? void 0 : e.map(function(r) { return t(r.data); })) || []; } function Mr(e) { for (var t, r = [], a = [0]; a[0] < e.length; ) { var n = Ma(e, a), i = Oe(e.slice(a[0], a[0] + n)); a[0] += n; var s = { id: je(i[1][0].data), messages: [] }; i[2].forEach(function(f) { var c = Oe(f.data), o = je(c[3][0].data); s.messages.push({ meta: c, data: e.slice(a[0], a[0] + o) }), a[0] += o; }), (t = i[3]) != null && t[0] && (s.merge = je(i[3][0].data) >>> 0 > 0), r.push(s); } return r; } function Yt(e) { var t = []; return e.forEach(function(r) { var a = []; a[1] = [{ data: Ie(r.id), type: 0 }], a[2] = [], r.merge != null && (a[3] = [{ data: Ie(+!!r.merge), type: 0 }]); var n = []; r.messages.forEach(function(s) { n.push(s.data), s.meta[3] = [{ type: 0, data: Ie(s.data.length) }], a[2].push({ data: cr(s.meta), type: 2 }); }); var i = cr(a); t.push(Ie(i.length)), t.push(i), n.forEach(function(s) { return t.push(s); }); }), St(t); } function tg(e, t) { if (e != 0) throw new Error("Unexpected Snappy chunk type ".concat(e)); for (var r = [0], a = Ma(t, r), n = []; r[0] < t.length; ) { var i = t[r[0]] & 3; if (i == 0) { var s = t[r[0]++] >> 2; if (s < 60) ++s; else { var f = s - 59; s = t[r[0]], f > 1 && (s |= t[r[0] + 1] << 8), f > 2 && (s |= t[r[0] + 2] << 16), f > 3 && (s |= t[r[0] + 3] << 24), s >>>= 0, s++, r[0] += f; } n.push(t.slice(r[0], r[0] + s)), r[0] += s; continue; } else { var c = 0, o = 0; if (i == 1 ? (o = (t[r[0]] >> 2 & 7) + 4, c = (t[r[0]++] & 224) << 3, c |= t[r[0]++]) : (o = (t[r[0]++] >> 2) + 1, i == 2 ? (c = t[r[0]] | t[r[0] + 1] << 8, r[0] += 2) : (c = (t[r[0]] | t[r[0] + 1] << 8 | t[r[0] + 2] << 16 | t[r[0] + 3] << 24) >>> 0, r[0] += 4)), n = [St(n)], c == 0) throw new Error("Invalid offset 0"); if (c > n[0].length) throw new Error("Invalid offset beyond length"); if (o >= c) for (n.push(n[0].slice(-c)), o -= c; o >= n[n.length - 1].length; ) n.push(n[n.length - 1]), o -= n[n.length - 1].length; n.push(n[0].slice(-c, -c + o)); } } var l = St(n); if (l.length != a) throw new Error("Unexpected length: ".concat(l.length, " != ").concat(a)); return l; } function Ur(e) { for (var t = [], r = 0; r < e.length; ) { var a = e[r++], n = e[r] | e[r + 1] << 8 | e[r + 2] << 16; r += 3, t.push(tg(a, e.slice(r, r + n))), r += n; } if (r !== e.length) throw new Error("data is not a valid framed stream!"); return St(t); } function Jt(e) { for (var t = [], r = 0; r < e.length; ) { var a = Math.min(e.length - r, 268435455), n = new Uint8Array(4); t.push(n); var i = Ie(a), s = i.length; t.push(i), a <= 60 ? (s++, t.push(new Uint8Array([a - 1 << 2]))) : a <= 256 ? (s += 2, t.push(new Uint8Array([240, a - 1 & 255]))) : a <= 65536 ? (s += 3, t.push(new Uint8Array([244, a - 1 & 255, a - 1 >> 8 & 255]))) : a <= 16777216 ? (s += 4, t.push(new Uint8Array([248, a - 1 & 255, a - 1 >> 8 & 255, a - 1 >> 16 & 255]))) : a <= 4294967296 && (s += 5, t.push(new Uint8Array([252, a - 1 & 255, a - 1 >> 8 & 255, a - 1 >> 16 & 255, a - 1 >>> 24 & 255]))), t.push(e.slice(r, r + a)), s += a, n[0] = 0, n[1] = s & 255, n[2] = s >> 8 & 255, n[3] = s >> 16 & 255, r += a; } return St(t); } function ag(e, t, r, a) { var n = Wt(e), i = n.getUint32(4, !0), s = (a > 1 ? 12 : 8) + ns(i & (a > 1 ? 3470 : 398)) * 4, f = -1, c = -1, o = NaN, l = new Date(2001, 0, 1); i & 512 && (f = n.getUint32(s, !0), s += 4), s += ns(i & (a > 1 ? 12288 : 4096)) * 4, i & 16 && (c = n.getUint32(s, !0), s += 4), i & 32 && (o = n.getFloat64(s, !0), s += 8), i & 64 && (l.setTime(l.getTime() + n.getFloat64(s, !0) * 1e3), s += 8); var u; switch (e[2]) { case 0: break; case 2: u = { t: "n", v: o }; break; case 3: u = { t: "s", v: t[c] }; break; case 5: u = { t: "d", v: l }; break; case 6: u = { t: "b", v: o > 0 }; break; case 7: u = { t: "n", v: o / 86400 }; break; case 8: u = { t: "e", v: 0 }; break; case 9: if (f > -1) u = { t: "s", v: r[f] }; else if (c > -1) u = { t: "s", v: t[c] }; else if (!isNaN(o)) u = { t: "n", v: o }; else throw new Error("Unsupported cell type ".concat(e.slice(0, 4))); break; default: throw new Error("Unsupported cell type ".concat(e.slice(0, 4))); } return u; } function ng(e, t, r) { var a = Wt(e), n = a.getUint32(8, !0), i = 12, s = -1, f = -1, c = NaN, o = NaN, l = new Date(2001, 0, 1); n & 1 && (c = eg(e, i), i += 16), n & 2 && (o = a.getFloat64(i, !0), i += 8), n & 4 && (l.setTime(l.getTime() + a.getFloat64(i, !0) * 1e3), i += 8), n & 8 && (f = a.getUint32(i, !0), i += 4), n & 16 && (s = a.getUint32(i, !0), i += 4); var u; switch (e[1]) { case 0: break; case 2: u = { t: "n", v: c }; break; case 3: u = { t: "s", v: t[f] }; break; case 5: u = { t: "d", v: l }; break; case 6: u = { t: "b", v: o > 0 }; break; case 7: u = { t: "n", v: o / 86400 }; break; case 8: u = { t: "e", v: 0 }; break; case 9: if (s > -1) u = { t: "s", v: r[s] }; else throw new Error("Unsupported cell type ".concat(e[1], " : ").concat(n & 31, " : ").concat(e.slice(0, 4))); break; case 10: u = { t: "n", v: c }; break; default: throw new Error("Unsupported cell type ".concat(e[1], " : ").concat(n & 31, " : ").concat(e.slice(0, 4))); } return u; } function V0(e, t) { var r = new Uint8Array(32), a = Wt(r), n = 12, i = 0; switch (r[0] = 5, e.t) { case "n": r[1] = 2, rg(r, n, e.v), i |= 1, n += 16; break; case "b": r[1] = 6, a.setFloat64(n, e.v ? 1 : 0, !0), i |= 2, n += 8; break; case "s": if (t.indexOf(e.v) == -1) throw new Error("Value ".concat(e.v, " missing from SST!")); r[1] = 3, a.setUint32(n, t.indexOf(e.v), !0), i |= 8, n += 4; break; default: throw "unsupported cell type " + e.t; } return a.setUint32(8, i, !0), r.slice(0, n); } function G0(e, t) { var r = new Uint8Array(32), a = Wt(r), n = 12, i = 0; switch (r[0] = 3, e.t) { case "n": r[2] = 2, a.setFloat64(n, e.v, !0), i |= 32, n += 8; break; case "b": r[2] = 6, a.setFloat64(n, e.v ? 1 : 0, !0), i |= 32, n += 8; break; case "s": if (t.indexOf(e.v) == -1) throw new Error("Value ".concat(e.v, " missing from SST!")); r[2] = 3, a.setUint32(n, t.indexOf(e.v), !0), i |= 16, n += 4; break; default: throw "unsupported cell type " + e.t; } return a.setUint32(4, i, !0), r.slice(0, n); } function ig(e, t, r) { switch (e[0]) { case 0: case 1: case 2: case 3: return ag(e, t, r, e[0]); case 5: return ng(e, t, r); default: throw new Error("Unsupported payload version ".concat(e[0])); } } function xr(e) { var t = Oe(e); return Ma(t[1][0].data); } function is(e, t) { var r = Oe(t.data), a = je(r[1][0].data), n = r[3], i = []; return (n || []).forEach(function(s) { var f = Oe(s.data), c = je(f[1][0].data) >>> 0; switch (a) { case 1: i[c] = tn(f[3][0].data); break; case 8: { var o = e[xr(f[9][0].data)][0], l = Oe(o.data), u = e[xr(l[1][0].data)][0], h = je(u.meta[1][0].data); if (h != 2001) throw new Error("2000 unexpected reference to ".concat(h)); var d = Oe(u.data); i[c] = d[3].map(function(v) { return tn(v.data); }).join(""); } break; } }), i; } function sg(e, t) { var r, a, n, i, s, f, c, o, l, u, h, d, v, x, p = Oe(e), w = je(p[1][0].data) >>> 0, y = je(p[2][0].data) >>> 0, g = ((a = (r = p[8]) == null ? void 0 : r[0]) == null ? void 0 : a.data) && je(p[8][0].data) > 0 || !1, C, b; if ((i = (n = p[7]) == null ? void 0 : n[0]) != null && i.data && t != 0) C = (f = (s = p[7]) == null ? void 0 : s[0]) == null ? void 0 : f.data, b = (o = (c = p[6]) == null ? void 0 : c[0]) == null ? void 0 : o.data; else if ((u = (l = p[4]) == null ? void 0 : l[0]) != null && u.data && t != 1) C = (d = (h = p[4]) == null ? void 0 : h[0]) == null ? void 0 : d.data, b = (x = (v = p[3]) == null ? void 0 : v[0]) == null ? void 0 : x.data; else throw "NUMBERS Tile missing ".concat(t, " cell storage"); for (var O = g ? 4 : 1, S = Wt(C), B = [], R = 0; R < C.length / 2; ++R) { var X = S.getUint16(R * 2, !0); X < 65535 && B.push([R, X]); } if (B.length != y) throw "Expected ".concat(y, " cells, found ").concat(B.length); var G = []; for (R = 0; R < B.length - 1; ++R) G[B[R][0]] = b.subarray(B[R][1] * O, B[R + 1][1] * O); return B.length >= 1 && (G[B[B.length - 1][0]] = b.subarray(B[B.length - 1][1] * O)), { R: w, cells: G }; } function fg(e, t) { var r, a = Oe(t.data), n = (r = a == null ? void 0 : a[7]) != null && r[0] ? je(a[7][0].data) >>> 0 > 0 ? 1 : 0 : -1, i = Hn(a[5], function(s) { return sg(s, n); }); return { nrows: je(a[4][0].data) >>> 0, data: i.reduce(function(s, f) { return s[f.R] || (s[f.R] = []), f.cells.forEach(function(c, o) { if (s[f.R][o]) throw new Error("Duplicate cell r=".concat(f.R, " c=").concat(o)); s[f.R][o] = c; }), s; }, []) }; } function cg(e, t, r) { var a, n = Oe(t.data), i = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } }; if (i.e.r = (je(n[6][0].data) >>> 0) - 1, i.e.r < 0) throw new Error("Invalid row varint ".concat(n[6][0].data)); if (i.e.c = (je(n[7][0].data) >>> 0) - 1, i.e.c < 0) throw new Error("Invalid col varint ".concat(n[7][0].data)); r["!ref"] = we(i); var s = Oe(n[4][0].data), f = is(e, e[xr(s[4][0].data)][0]), c = (a = s[17]) != null && a[0] ? is(e, e[xr(s[17][0].data)][0]) : [], o = Oe(s[3][0].data), l = 0; o[1].forEach(function(u) { var h = Oe(u.data), d = e[xr(h[2][0].data)][0], v = je(d.meta[1][0].data); if (v != 6002) throw new Error("6001 unexpected reference to ".concat(v)); var x = fg(e, d); x.data.forEach(function(p, w) { p.forEach(function(y, g) { var C = pe({ r: l + w, c: g }), b = ig(y, f, c); b && (r[C] = b); }); }), l += x.nrows; }); } function og(e, t) { var r = Oe(t.data), a = { "!ref": "A1" }, n = e[xr(r[2][0].data)], i = je(n[0].meta[1][0].data); if (i != 6001) throw new Error("6000 unexpected reference to ".concat(i)); return cg(e, n[0], a), a; } function lg(e, t) { var r, a = Oe(t.data), n = { name: (r = a[1]) != null && r[0] ? tn(a[1][0].data) : "", sheets: [] }, i = Hn(a[2], xr); return i.forEach(function(s) { e[s].forEach(function(f) { var c = je(f.meta[1][0].data); c == 6e3 && n.sheets.push(og(e, f)); }); }), n; } function ug(e, t) { var r = jn(), a = Oe(t.data), n = Hn(a[1], xr); if (n.forEach(function(i) { e[i].forEach(function(s) { var f = je(s.meta[1][0].data); if (f == 2) { var c = lg(e, s); c.sheets.forEach(function(o, l) { $n(r, o, l == 0 ? c.name : c.name + "_" + l, !0); }); } }); }), r.SheetNames.length == 0) throw new Error("Empty NUMBERS file"); return r; } function X0(e) { var t, r, a, n, i = {}, s = []; if (e.FullPaths.forEach(function(c) { if (c.match(/\.iwpv2/)) throw new Error("Unsupported password protection"); }), e.FileIndex.forEach(function(c) { if (c.name.match(/\.iwa$/)) { var o; try { o = Ur(c.content); } catch (u) { return /* @__PURE__ */ console.log("?? " + c.content.length + " " + (u.message || u)); } var l; try { l = Mr(o); } catch (u) { return /* @__PURE__ */ console.log("## " + (u.message || u)); } l.forEach(function(u) { i[u.id] = u.messages, s.push(u.id); }); } }), !s.length) throw new Error("File has no messages"); var f = ((n = (a = (r = (t = i == null ? void 0 : i[1]) == null ? void 0 : t[0]) == null ? void 0 : r.meta) == null ? void 0 : a[1]) == null ? void 0 : n[0].data) && je(i[1][0].meta[1][0].data) == 1 && i[1][0]; if (f || s.forEach(function(c) { i[c].forEach(function(o) { var l = je(o.meta[1][0].data) >>> 0; if (l == 1) if (!f) f = o; else throw new Error("Document has multiple roots"); }); }), !f) throw new Error("Cannot find Document root"); return ug(i, f); } function hg(e, t, r) { var a, n, i, s; if (!((a = e[6]) != null && a[0]) || !((n = e[7]) != null && n[0])) throw "Mutation only works on post-BNC storages!"; var f = ((s = (i = e[8]) == null ? void 0 : i[0]) == null ? void 0 : s.data) && je(e[8][0].data) > 0 || !1; if (f) throw "Math only works with normal offsets"; for (var c = 0, o = Wt(e[7][0].data), l = 0, u = [], h = Wt(e[4][0].data), d = 0, v = [], x = 0; x < t.length; ++x) { if (t[x] == null) { o.setUint16(x * 2, 65535, !0), h.setUint16(x * 2, 65535); continue; } o.setUint16(x * 2, l, !0), h.setUint16(x * 2, d, !0); var p, w; switch (typeof t[x]) { case "string": p = V0({ t: "s", v: t[x] }, r), w = G0({ t: "s", v: t[x] }, r); break; case "number": p = V0({ t: "n", v: t[x] }, r), w = G0({ t: "n", v: t[x] }, r); break; case "boolean": p = V0({ t: "b", v: t[x] }, r), w = G0({ t: "b", v: t[x] }, r); break; default: throw new Error("Unsupported value " + t[x]); } u.push(p), l += p.length, v.push(w), d += w.length, ++c; } for (e[2][0].data = Ie(c); x < e[7][0].data.length / 2; ++x) o.setUint16(x * 2, 65535, !0), h.setUint16(x * 2, 65535, !0); return e[6][0].data = St(u), e[3][0].data = St(v), c; } function xg(e, t) { if (!t || !t.numbers) throw new Error("Must pass a `numbers` option -- check the README"); var r = e.Sheets[e.SheetNames[0]]; e.SheetNames.length > 1 && console.error("The Numbers writer currently writes only the first table"); var a = yr(r["!ref"]); a.s.r = a.s.c = 0; var n = !1; a.e.c > 9 && (n = !0, a.e.c = 9), a.e.r > 49 && (n = !0, a.e.r = 49), n && console.error("The Numbers writer is currently limited to ".concat(we(a))); var i = _0(r, { range: a, header: 1 }), s = ["~Sh33tJ5~"]; i.forEach(function(P) { return P.forEach(function(I) { typeof I == "string" && s.push(I); }); }); var f = {}, c = [], o = xe.read(t.numbers, { type: "base64" }); o.FileIndex.map(function(P, I) { return [P, o.FullPaths[I]]; }).forEach(function(P) { var I = P[0], N = P[1]; if (I.type == 2 && I.name.match(/\.iwa/)) { var K = I.content, re = Ur(K), te = Mr(re); te.forEach(function(Q) { c.push(Q.id), f[Q.id] = { deps: [], location: N, type: je(Q.messages[0].meta[1][0].data) }; }); } }), c.sort(function(P, I) { return P - I; }); var l = c.filter(function(P) { return P > 1; }).map(function(P) { return [P, Ie(P)]; }); o.FileIndex.map(function(P, I) { return [P, o.FullPaths[I]]; }).forEach(function(P) { var I = P[0]; if (P[1], !!I.name.match(/\.iwa/)) { var N = Mr(Ur(I.content)); N.forEach(function(K) { K.messages.forEach(function(re) { l.forEach(function(te) { K.messages.some(function(Q) { return je(Q.meta[1][0].data) != 11006 && Qm(Q.data, te[1]); }) && f[te[0]].deps.push(K.id); }); }); }); } }); for (var u = xe.find(o, f[1].location), h = Mr(Ur(u.content)), d, v = 0; v < h.length; ++v) { var x = h[v]; x.id == 1 && (d = x); } var p = xr(Oe(d.messages[0].data)[1][0].data); for (u = xe.find(o, f[p].location), h = Mr(Ur(u.content)), v = 0; v < h.length; ++v) x = h[v], x.id == p && (d = x); for (p = xr(Oe(d.messages[0].data)[2][0].data), u = xe.find(o, f[p].location), h = Mr(Ur(u.content)), v = 0; v < h.length; ++v) x = h[v], x.id == p && (d = x); for (p = xr(Oe(d.messages[0].data)[2][0].data), u = xe.find(o, f[p].location), h = Mr(Ur(u.content)), v = 0; v < h.length; ++v) x = h[v], x.id == p && (d = x); var w = Oe(d.messages[0].data); { w[6][0].data = Ie(a.e.r + 1), w[7][0].data = Ie(a.e.c + 1); var y = xr(w[46][0].data), g = xe.find(o, f[y].location), C = Mr(Ur(g.content)); { for (var b = 0; b < C.length && C[b].id != y; ++b) ; if (C[b].id != y) throw "Bad ColumnRowUIDMapArchive"; var O = Oe(C[b].messages[0].data); O[1] = [], O[2] = [], O[3] = []; for (var S = 0; S <= a.e.c; ++S) { var B = []; B[1] = B[2] = [{ type: 0, data: Ie(S + 420690) }], O[1].push({ type: 2, data: cr(B) }), O[2].push({ type: 0, data: Ie(S) }), O[3].push({ type: 0, data: Ie(S) }); } O[4] = [], O[5] = [], O[6] = []; for (var R = 0; R <= a.e.r; ++R) B = [], B[1] = B[2] = [{ type: 0, data: Ie(R + 726270) }], O[4].push({ type: 2, data: cr(B) }), O[5].push({ type: 0, data: Ie(R) }), O[6].push({ type: 0, data: Ie(R) }); C[b].messages[0].data = cr(O); } g.content = Jt(Yt(C)), g.size = g.content.length, delete w[46]; var X = Oe(w[4][0].data); { X[7][0].data = Ie(a.e.r + 1); var G = Oe(X[1][0].data), L = xr(G[2][0].data); g = xe.find(o, f[L].location), C = Mr(Ur(g.content)); { if (C[0].id != L) throw "Bad HeaderStorageBucket"; var J = Oe(C[0].messages[0].data); for (R = 0; R < i.length; ++R) { var le = Oe(J[2][0].data); le[1][0].data = Ie(R), le[4][0].data = Ie(i[R].length), J[2][R] = { type: J[2][0].type, data: cr(le) }; } C[0].messages[0].data = cr(J); } g.content = Jt(Yt(C)), g.size = g.content.length; var ie = xr(X[2][0].data); g = xe.find(o, f[ie].location), C = Mr(Ur(g.content)); { if (C[0].id != ie) throw "Bad HeaderStorageBucket"; for (J = Oe(C[0].messages[0].data), S = 0; S <= a.e.c; ++S) le = Oe(J[2][0].data), le[1][0].data = Ie(S), le[4][0].data = Ie(a.e.r + 1), J[2][S] = { type: J[2][0].type, data: cr(le) }; C[0].messages[0].data = cr(J); } g.content = Jt(Yt(C)), g.size = g.content.length; var he = xr(X[4][0].data); (function() { for (var P = xe.find(o, f[he].location), I = Mr(Ur(P.content)), N, K = 0; K < I.length; ++K) { var re = I[K]; re.id == he && (N = re); } var te = Oe(N.messages[0].data); { te[3] = []; var Q = []; s.forEach(function(A, Be) { Q[1] = [{ type: 0, data: Ie(Be) }], Q[2] = [{ type: 0, data: Ie(1) }], Q[3] = [{ type: 2, data: Zm(A) }], te[3].push({ type: 2, data: cr(Q) }); }); } N.messages[0].data = cr(te); var q = Yt(I), ke = Jt(q); P.content = ke, P.size = P.content.length; })(); var ce = Oe(X[3][0].data); { var be = ce[1][0]; delete ce[2]; var V = Oe(be.data); { var ve = xr(V[2][0].data); (function() { for (var P = xe.find(o, f[ve].location), I = Mr(Ur(P.content)), N, K = 0; K < I.length; ++K) { var re = I[K]; re.id == ve && (N = re); } var te = Oe(N.messages[0].data); { delete te[6], delete ce[7]; var Q = new Uint8Array(te[5][0].data); te[5] = []; for (var q = 0, ke = 0; ke <= a.e.r; ++ke) { var A = Oe(Q); q += hg(A, i[ke], s), A[1][0].data = Ie(ke), te[5].push({ data: cr(A), type: 2 }); } te[1] = [{ type: 0, data: Ie(a.e.c + 1) }], te[2] = [{ type: 0, data: Ie(a.e.r + 1) }], te[3] = [{ type: 0, data: Ie(q) }], te[4] = [{ type: 0, data: Ie(a.e.r + 1) }]; } N.messages[0].data = cr(te); var Be = Yt(I), Ae = Jt(Be); P.content = Ae, P.size = P.content.length; })(); } be.data = cr(V); } X[3][0].data = cr(ce); } w[4][0].data = cr(X); } d.messages[0].data = cr(w); var ge = Yt(h), D = Jt(ge); return u.content = D, u.size = u.content.length, o; } function dc(e) { return function(r) { for (var a = 0; a != e.length; ++a) { var n = e[a]; r[n[0]] === void 0 && (r[n[0]] = n[1]), n[2] === "n" && (r[n[0]] = Number(r[n[0]])); } }; } function Vn(e) { dc([ ["cellNF", !1], /* emit cell number format string as .z */ ["cellHTML", !0], /* emit html string as .h */ ["cellFormula", !0], /* emit formulae as .f */ ["cellStyles", !1], /* emits style/theme as .s */ ["cellText", !0], /* emit formatted text as .w */ ["cellDates", !1], /* emit date cells with type `d` */ ["sheetStubs", !1], /* emit empty cells */ ["sheetRows", 0, "n"], /* read n rows (0 = read all rows) */ ["bookDeps", !1], /* parse calculation chains */ ["bookSheets", !1], /* only try to get sheet names (no Sheets) */ ["bookProps", !1], /* only try to get properties (no Sheets) */ ["bookFiles", !1], /* include raw file structure (keys, files, cfb) */ ["bookVBA", !1], /* include vba raw data (vbaraw) */ ["password", ""], /* password */ ["WTF", !1] /* WTF mode (throws errors) */ ])(e); } function Gn(e) { dc([ ["cellDates", !1], /* write date cells with type `d` */ ["bookSST", !1], /* Generate Shared String Table */ ["bookType", "xlsx"], /* Type of workbook (xlsx/m/b) */ ["compression", !1], /* Use file compression */ ["WTF", !1] /* WTF mode (throws errors) */ ])(e); } function dg(e) { return Fe.WS.indexOf(e) > -1 ? "sheet" : e == Fe.CS ? "chart" : e == Fe.DS ? "dialog" : e == Fe.MS ? "macro" : e && e.length ? e : "sheet"; } function vg(e, t) { if (!e) return 0; try { e = t.map(function(a) { return a.id || (a.id = a.strRelID), [a.name, e["!id"][a.id].Target, dg(e["!id"][a.id].Type)]; }); } catch { return null; } return !e || e.length === 0 ? null : e; } function pg(e, t, r, a, n, i, s, f, c, o, l, u) { try { i[a] = ka(Ir(e, r, !0), t); var h = er(e, t), d; switch (f) { case "sheet": d = M2(h, t, n, c, i[a], o, l, u); break; case "chart": if (d = U2(h, t, n, c, i[a], o, l, u), !d || !d["!drawel"]) break; var v = ga(d["!drawel"].Target, t), x = Ra(v), p = Fx(Ir(e, v, !0), ka(Ir(e, x, !0), v)), w = ga(p, v), y = Ra(w); d = h2(Ir(e, w, !0), w, c, ka(Ir(e, y, !0), w), o, d); break; case "macro": d = W2(h, t, n, c, i[a], o, l, u); break; case "dialog": d = H2(h, t, n, c, i[a], o, l, u); break; default: throw new Error("Unrecognized sheet type " + f); } s[a] = d; var g = []; i && i[a] && $e(i[a]).forEach(function(C) { var b = ""; if (i[a][C].Type == Fe.CMNT) { b = ga(i[a][C].Target, t); var O = z2(er(e, b, !0), b, c); if (!O || !O.length) return; Xi(d, O, !1); } i[a][C].Type == Fe.TCMNT && (b = ga(i[a][C].Target, t), g = g.concat(Ax(er(e, b, !0), c))); }), g && g.length && Xi(d, g, !0, c.people || []); } catch (C) { if (c.WTF) throw C; } } function Lr(e) { return e.charAt(0) == "/" ? e.slice(1) : e; } function mg(e, t) { if (sa(), t = t || {}, Vn(t), Wr(e, "META-INF/manifest.xml") || Wr(e, "objectdata.xml")) return rs(e, t); if (Wr(e, "Index/Document.iwa")) { if (typeof Uint8Array > "u") throw new Error("NUMBERS file parsing requires Uint8Array support"); if (typeof X0 < "u") { if (e.FileIndex) return X0(e); var r = xe.utils.cfb_new(); return ui(e).forEach(function(le) { Ee(r, le, As(e, le)); }), X0(r); } throw new Error("Unsupported NUMBERS file"); } if (!Wr(e, "[Content_Types].xml")) throw Wr(e, "index.xml.gz") ? new Error("Unsupported NUMBERS 08 file") : Wr(e, "index.xml") ? new Error("Unsupported NUMBERS 09 file") : new Error("Unsupported ZIP file"); var a = ui(e), n = El(Ir(e, "[Content_Types].xml")), i = !1, s, f; if (n.workbooks.length === 0 && (f = "xl/workbook.xml", er(e, f, !0) && n.workbooks.push(f)), n.workbooks.length === 0) { if (f = "xl/workbook.bin", !er(e, f, !0)) throw new Error("Could not find workbook"); n.workbooks.push(f), i = !0; } n.workbooks[0].slice(-3) == "bin" && (i = !0); var c = {}, o = {}; if (!t.bookSheets && !t.bookProps) { if (Ta = [], n.sst) try { Ta = X2(er(e, Lr(n.sst)), n.sst, t); } catch (le) { if (t.WTF) throw le; } t.cellStyles && n.themes.length && (c = G2(Ir(e, n.themes[0].replace(/^\//, ""), !0) || "", n.themes[0], t)), n.style && (o = V2(er(e, Lr(n.style)), n.style, c, t)); } n.links.map(function(le) { try { var ie = ka(Ir(e, Ra(Lr(le))), le); return $2(er(e, Lr(le)), ie, le, t); } catch { } }); var l = B2(er(e, Lr(n.workbooks[0])), n.workbooks[0], t), u = {}, h = ""; n.coreprops.length && (h = er(e, Lr(n.coreprops[0]), !0), h && (u = rf(h)), n.extprops.length !== 0 && (h = er(e, Lr(n.extprops[0]), !0), h && Cl(h, u, t))); var d = {}; (!t.bookSheets || t.bookProps) && n.custprops.length !== 0 && (h = Ir(e, Lr(n.custprops[0]), !0), h && (d = Ol(h, t))); var v = {}; if ((t.bookSheets || t.bookProps) && (l.Sheets ? s = l.Sheets.map(function(ie) { return ie.name; }) : u.Worksheets && u.SheetNames.length > 0 && (s = u.SheetNames), t.bookProps && (v.Props = u, v.Custprops = d), t.bookSheets && typeof s < "u" && (v.SheetNames = s), t.bookSheets ? v.SheetNames : t.bookProps)) return v; s = {}; var x = {}; t.bookDeps && n.calcchain && (x = j2(er(e, Lr(n.calcchain)), n.calcchain)); var p = 0, w = {}, y, g; { var C = l.Sheets; u.Worksheets = C.length, u.SheetNames = []; for (var b = 0; b != C.length; ++b) u.SheetNames[b] = C[b].name; } var O = i ? "bin" : "xml", S = n.workbooks[0].lastIndexOf("/"), B = (n.workbooks[0].slice(0, S + 1) + "_rels/" + n.workbooks[0].slice(S + 1) + ".rels").replace(/^\//, ""); Wr(e, B) || (B = "xl/_rels/workbook." + O + ".rels"); var R = ka(Ir(e, B, !0), B.replace(/_rels.*/, "s5s")); (n.metadata || []).length >= 1 && (t.xlmeta = K2(er(e, Lr(n.metadata[0])), n.metadata[0], t)), (n.people || []).length >= 1 && (t.people = Dx(er(e, Lr(n.people[0])), t)), R && (R = vg(R, l.Sheets)); var X = er(e, "xl/worksheets/sheet.xml", !0) ? 1 : 0; e: for (p = 0; p != u.Worksheets; ++p) { var G = "sheet"; if (R && R[p] ? (y = "xl/" + R[p][1].replace(/[\/]?xl\//, ""), Wr(e, y) || (y = R[p][1]), Wr(e, y) || (y = B.replace(/_rels\/.*$/, "") + R[p][1]), G = R[p][2]) : (y = "xl/worksheets/sheet" + (p + 1 - X) + "." + O, y = y.replace(/sheet0\./, "sheet.")), g = y.replace(/^(.*)(\/)([^\/]*)$/, "$1/_rels/$3.rels"), t && t.sheets != null) switch (typeof t.sheets) { case "number": if (p != t.sheets) continue e; break; case "string": if (u.SheetNames[p].toLowerCase() != t.sheets.toLowerCase()) continue e; break; default: if (Array.isArray && Array.isArray(t.sheets)) { for (var L = !1, J = 0; J != t.sheets.length; ++J) typeof t.sheets[J] == "number" && t.sheets[J] == p && (L = 1), typeof t.sheets[J] == "string" && t.sheets[J].toLowerCase() == u.SheetNames[p].toLowerCase() && (L = 1); if (!L) continue e; } } pg(e, y, g, u.SheetNames[p], p, w, s, G, t, l, c, o); } return v = { Directory: n, Workbook: l, Props: u, Custprops: d, Deps: x, Sheets: s, SheetNames: u.SheetNames, Strings: Ta, Styles: o, Themes: c, SSF: We(de) }, t && t.bookFiles && (e.files ? (v.keys = a, v.files = e.files) : (v.keys = [], v.files = {}, e.FullPaths.forEach(function(le, ie) { le = le.replace(/^Root Entry[\/]/, ""), v.keys.push(le), v.files[le] = e.FileIndex[ie]; }))), t && t.bookVBA && (n.vba.length > 0 ? v.vbaraw = er(e, Lr(n.vba[0]), !0) : n.defaults && n.defaults.bin === Bx && (v.vbaraw = er(e, "xl/vbaProject.bin", !0))), v; } function gg(e, t) { var r = t || {}, a = "Workbook", n = xe.find(e, a); try { if (a = "/!DataSpaces/Version", n = xe.find(e, a), !n || !n.content) throw new Error("ECMA-376 Encrypted file missing " + a); if (Kh(n.content), a = "/!DataSpaces/DataSpaceMap", n = xe.find(e, a), !n || !n.content) throw new Error("ECMA-376 Encrypted file missing " + a); var i = Jh(n.content); if (i.length !== 1 || i[0].comps.length !== 1 || i[0].comps[0].t !== 0 || i[0].name !== "StrongEncryptionDataSpace" || i[0].comps[0].v !== "EncryptedPackage") throw new Error("ECMA-376 Encrypted file bad " + a); if (a = "/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace", n = xe.find(e, a), !n || !n.content) throw new Error("ECMA-376 Encrypted file missing " + a); var s = qh(n.content); if (s.length != 1 || s[0] != "StrongEncryptionTransform") throw new Error("ECMA-376 Encrypted file bad " + a); if (a = "/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary", n = xe.find(e, a), !n || !n.content) throw new Error("ECMA-376 Encrypted file missing " + a); Qh(n.content); } catch { } if (a = "/EncryptionInfo", n = xe.find(e, a), !n || !n.content) throw new Error("ECMA-376 Encrypted file missing " + a); var f = e1(n.content); if (a = "/EncryptedPackage", n = xe.find(e, a), !n || !n.content) throw new Error("ECMA-376 Encrypted file missing " + a); if (f[0] == 4 && typeof decrypt_agile < "u") return decrypt_agile(f[1], n.content, r.password || "", r); if (f[0] == 2 && typeof decrypt_std76 < "u") return decrypt_std76(f[1], n.content, r.password || "", r); throw new Error("File is password-protected"); } function _g(e, t) { return t.bookType == "ods" ? xc(e, t) : t.bookType == "numbers" ? xg(e, t) : t.bookType == "xlsb" ? wg(e, t) : Eg(e, t); } function wg(e, t) { Zt = 1024, e && !e.SSF && (e.SSF = We(de)), e && e.SSF && (sa(), Wa(e.SSF), t.revssf = k0(e.SSF), t.revssf[e.SSF[65535]] = 0, t.ssf = e.SSF), t.rels = {}, t.wbrels = {}, t.Strings = /*::((*/ [], t.Strings.Count = 0, t.Strings.Unique = 0, Sa ? t.revStrings = /* @__PURE__ */ new Map() : (t.revStrings = {}, t.revStrings.foo = [], delete t.revStrings.foo); var r = t.bookType == "xlsb" ? "bin" : "xml", a = Hf.indexOf(t.bookType) > -1, n = Cn(); Gn(t = t || {}); var i = dn(), s = "", f = 0; if (t.cellXfs = [], At(t.cellXfs, {}, { revssf: { General: 0 } }), e.Props || (e.Props = {}), s = "docProps/core.xml", Ee(i, s, tf(e.Props, t)), n.coreprops.push(s), Re(t.rels, 2, s, Fe.CORE_PROPS), s = "docProps/app.xml", !(e.Props && e.Props.SheetNames)) if (!e.Workbook || !e.Workbook.Sheets) e.Props.SheetNames = e.SheetNames; else { for (var c = [], o = 0; o < e.SheetNames.length; ++o) (e.Workbook.Sheets[o] || {}).Hidden != 2 && c.push(e.SheetNames[o]); e.Props.SheetNames = c; } for (e.Props.Worksheets = e.Props.SheetNames.length, Ee(i, s, sf(e.Props)), n.extprops.push(s), Re(t.rels, 3, s, Fe.EXT_PROPS), e.Custprops !== e.Props && $e(e.Custprops || {}).length > 0 && (s = "docProps/custom.xml", Ee(i, s, ff(e.Custprops)), n.custprops.push(s), Re(t.rels, 4, s, Fe.CUST_PROPS)), f = 1; f <= e.SheetNames.length; ++f) { var l = { "!id": {} }, u = e.Sheets[e.SheetNames[f - 1]], h = (u || {})["!type"] || "sheet"; switch (h) { case "chart": default: s = "xl/worksheets/sheet" + f + "." + r, Ee(i, s, J2(f - 1, s, t, e, l)), n.sheets.push(s), Re(t.wbrels, -1, "worksheets/sheet" + f + "." + r, Fe.WS[0]); } if (u) { var d = u["!comments"], v = !1, x = ""; d && d.length > 0 && (x = "xl/comments" + f + "." + r, Ee(i, x, Q2(d, x)), n.comments.push(x), Re(l, -1, "../comments" + f + "." + r, Fe.CMNT), v = !0), u["!legacy"] && v && Ee(i, "xl/drawings/vmlDrawing" + f + ".vml", Uf(f, u["!comments"])), delete u["!comments"], delete u["!legacy"]; } l["!id"].rId1 && Ee(i, Ra(s), ea(l)); } return t.Strings != null && t.Strings.length > 0 && (s = "xl/sharedStrings." + r, Ee(i, s, Z2(t.Strings, s, t)), n.strs.push(s), Re(t.wbrels, -1, "sharedStrings." + r, Fe.SST)), s = "xl/workbook." + r, Ee(i, s, Y2(e, s)), n.workbooks.push(s), Re(t.rels, 1, s, Fe.WB), s = "xl/theme/theme1.xml", Ee(i, s, bn(e.Themes, t)), n.themes.push(s), Re(t.wbrels, -1, "theme/theme1.xml", Fe.THEME), s = "xl/styles." + r, Ee(i, s, q2(e, s, t)), n.styles.push(s), Re(t.wbrels, -1, "styles." + r, Fe.STY), e.vbaraw && a && (s = "xl/vbaProject.bin", Ee(i, s, e.vbaraw), n.vba.push(s), Re(t.wbrels, -1, "vbaProject.bin", Fe.VBA)), s = "xl/metadata." + r, Ee(i, s, em(s)), n.metadata.push(s), Re(t.wbrels, -1, "metadata." + r, Fe.XLMETA), Ee(i, "[Content_Types].xml", Qs(n, t)), Ee(i, "_rels/.rels", ea(t.rels)), Ee(i, "xl/_rels/workbook." + r + ".rels", ea(t.wbrels)), delete t.revssf, delete t.ssf, i; } function Eg(e, t) { Zt = 1024, e && !e.SSF && (e.SSF = We(de)), e && e.SSF && (sa(), Wa(e.SSF), t.revssf = k0(e.SSF), t.revssf[e.SSF[65535]] = 0, t.ssf = e.SSF), t.rels = {}, t.wbrels = {}, t.Strings = /*::((*/ [], t.Strings.Count = 0, t.Strings.Unique = 0, Sa ? t.revStrings = /* @__PURE__ */ new Map() : (t.revStrings = {}, t.revStrings.foo = [], delete t.revStrings.foo); var r = "xml", a = Hf.indexOf(t.bookType) > -1, n = Cn(); Gn(t = t || {}); var i = dn(), s = "", f = 0; if (t.cellXfs = [], At(t.cellXfs, {}, { revssf: { General: 0 } }), e.Props || (e.Props = {}), s = "docProps/core.xml", Ee(i, s, tf(e.Props, t)), n.coreprops.push(s), Re(t.rels, 2, s, Fe.CORE_PROPS), s = "docProps/app.xml", !(e.Props && e.Props.SheetNames)) if (!e.Workbook || !e.Workbook.Sheets) e.Props.SheetNames = e.SheetNames; else { for (var c = [], o = 0; o < e.SheetNames.length; ++o) (e.Workbook.Sheets[o] || {}).Hidden != 2 && c.push(e.SheetNames[o]); e.Props.SheetNames = c; } e.Props.Worksheets = e.Props.SheetNames.length, Ee(i, s, sf(e.Props)), n.extprops.push(s), Re(t.rels, 3, s, Fe.EXT_PROPS), e.Custprops !== e.Props && $e(e.Custprops || {}).length > 0 && (s = "docProps/custom.xml", Ee(i, s, ff(e.Custprops)), n.custprops.push(s), Re(t.rels, 4, s, Fe.CUST_PROPS)); var l = ["SheetJ5"]; for (t.tcid = 0, f = 1; f <= e.SheetNames.length; ++f) { var u = { "!id": {} }, h = e.Sheets[e.SheetNames[f - 1]], d = (h || {})["!type"] || "sheet"; switch (d) { case "chart": default: s = "xl/worksheets/sheet" + f + "." + r, Ee(i, s, Zf(f - 1, t, e, u)), n.sheets.push(s), Re(t.wbrels, -1, "worksheets/sheet" + f + "." + r, Fe.WS[0]); } if (h) { var v = h["!comments"], x = !1, p = ""; if (v && v.length > 0) { var w = !1; v.forEach(function(y) { y[1].forEach(function(g) { g.T == !0 && (w = !0); }); }), w && (p = "xl/threadedComments/threadedComment" + f + "." + r, Ee(i, p, Cx(v, l, t)), n.threadedcomments.push(p), Re(u, -1, "../threadedComments/threadedComment" + f + "." + r, Fe.TCMNT)), p = "xl/comments" + f + "." + r, Ee(i, p, Wf(v)), n.comments.push(p), Re(u, -1, "../comments" + f + "." + r, Fe.CMNT), x = !0; } h["!legacy"] && x && Ee(i, "xl/drawings/vmlDrawing" + f + ".vml", Uf(f, h["!comments"])), delete h["!comments"], delete h["!legacy"]; } u["!id"].rId1 && Ee(i, Ra(s), ea(u)); } return t.Strings != null && t.Strings.length > 0 && (s = "xl/sharedStrings." + r, Ee(i, s, Af(t.Strings, t)), n.strs.push(s), Re(t.wbrels, -1, "sharedStrings." + r, Fe.SST)), s = "xl/workbook." + r, Ee(i, s, ac(e)), n.workbooks.push(s), Re(t.rels, 1, s, Fe.WB), s = "xl/theme/theme1.xml", Ee(i, s, bn(e.Themes, t)), n.themes.push(s), Re(t.wbrels, -1, "theme/theme1.xml", Fe.THEME), s = "xl/styles." + r, Ee(i, s, Pf(e, t)), n.styles.push(s), Re(t.wbrels, -1, "styles." + r, Fe.STY), e.vbaraw && a && (s = "xl/vbaProject.bin", Ee(i, s, e.vbaraw), n.vba.push(s), Re(t.wbrels, -1, "vbaProject.bin", Fe.VBA)), s = "xl/metadata." + r, Ee(i, s, Mf()), n.metadata.push(s), Re(t.wbrels, -1, "metadata." + r, Fe.XLMETA), l.length > 1 && (s = "xl/persons/person.xml", Ee(i, s, Ox(l)), n.people.push(s), Re(t.wbrels, -1, "persons/person.xml", Fe.PEOPLE)), Ee(i, "[Content_Types].xml", Qs(n, t)), Ee(i, "_rels/.rels", ea(t.rels)), Ee(i, "xl/_rels/workbook." + r + ".rels", ea(t.wbrels)), delete t.revssf, delete t.ssf, i; } function Xn(e, t) { var r = ""; switch ((t || {}).type || "base64") { case "buffer": return [e[0], e[1], e[2], e[3], e[4], e[5], e[6], e[7]]; case "base64": r = Rr(e.slice(0, 12)); break; case "binary": r = e; break; case "array": return [e[0], e[1], e[2], e[3], e[4], e[5], e[6], e[7]]; default: throw new Error("Unrecognized type " + (t && t.type || "undefined")); } return [r.charCodeAt(0), r.charCodeAt(1), r.charCodeAt(2), r.charCodeAt(3), r.charCodeAt(4), r.charCodeAt(5), r.charCodeAt(6), r.charCodeAt(7)]; } function kg(e, t) { return xe.find(e, "EncryptedPackage") ? gg(e, t) : fc(e, t); } function Tg(e, t) { var r, a = e, n = t || {}; return n.type || (n.type = Te && Buffer.isBuffer(e) ? "buffer" : "base64"), r = Cs(a, n), mg(r, n); } function vc(e, t) { var r = 0; e: for (; r < e.length; ) switch (e.charCodeAt(r)) { case 10: case 13: case 32: ++r; break; case 60: return en(e.slice(r), t); default: break e; } return na.to_workbook(e, t); } function Sg(e, t) { var r = "", a = Xn(e, t); switch (t.type) { case "base64": r = Rr(e); break; case "binary": r = e; break; case "buffer": r = e.toString("binary"); break; case "array": r = Lt(e); break; default: throw new Error("Unrecognized type " + t.type); } return a[0] == 239 && a[1] == 187 && a[2] == 191 && (r = Pe(r)), t.type = "binary", vc(r, t); } function Fg(e, t) { var r = e; return t.type == "base64" && (r = Rr(r)), r = mt.utils.decode(1200, r.slice(2), "str"), t.type = "binary", vc(r, t); } function yg(e) { return e.match(/[^\x00-\x7F]/) ? et(e) : e; } function z0(e, t, r, a) { return a ? (r.type = "string", na.to_workbook(e, r)) : na.to_workbook(t, r); } function an(e, t) { on(); var r = t || {}; if (typeof ArrayBuffer < "u" && e instanceof ArrayBuffer) return an(new Uint8Array(e), (r = We(r), r.type = "array", r)); typeof Uint8Array < "u" && e instanceof Uint8Array && !r.type && (r.type = typeof Deno < "u" ? "buffer" : "array"); var a = e, n = [0, 0, 0, 0], i = !1; if (r.cellStyles && (r.cellNF = !0, r.sheetStubs = !0), ta = {}, r.dateNF && (ta.dateNF = r.dateNF), r.type || (r.type = Te && Buffer.isBuffer(e) ? "buffer" : "base64"), r.type == "file" && (r.type = Te ? "buffer" : "binary", a = Eo(e), typeof Uint8Array < "u" && !Te && (r.type = "array")), r.type == "string" && (i = !0, r.type = "binary", r.codepage = 65001, a = yg(e)), r.type == "array" && typeof Uint8Array < "u" && e instanceof Uint8Array && typeof ArrayBuffer < "u") { var s = new ArrayBuffer(3), f = new Uint8Array(s); if (f.foo = "bar", !f.foo) return r = We(r), r.type = "array", an(ln(a), r); } switch ((n = Xn(a, r))[0]) { case 208: if (n[1] === 207 && n[2] === 17 && n[3] === 224 && n[4] === 161 && n[5] === 177 && n[6] === 26 && n[7] === 225) return kg(xe.read(a, r), r); break; case 9: if (n[1] <= 8) return fc(a, r); break; case 60: return en(a, r); case 73: if (n[1] === 73 && n[2] === 42 && n[3] === 0) throw new Error("TIFF Image File is not a spreadsheet"); if (n[1] === 68) return Ih(a, r); break; case 84: if (n[1] === 65 && n[2] === 66 && n[3] === 76) return Ff.to_workbook(a, r); break; case 80: return n[1] === 75 && n[2] < 9 && n[3] < 9 ? Tg(a, r) : z0(e, a, r, i); case 239: return n[3] === 60 ? en(a, r) : z0(e, a, r, i); case 255: if (n[1] === 254) return Fg(a, r); if (n[1] === 0 && n[2] === 2 && n[3] === 0) return Nt.to_workbook(a, r); break; case 0: if (n[1] === 0 && (n[2] >= 2 && n[3] === 0 || n[2] === 0 && (n[3] === 8 || n[3] === 9))) return Nt.to_workbook(a, r); break; case 3: case 131: case 139: case 140: return Q0.to_workbook(a, r); case 123: if (n[1] === 92 && n[2] === 114 && n[3] === 116) return Rf.to_workbook(a, r); break; case 10: case 13: case 32: return Sg(a, r); case 137: if (n[1] === 80 && n[2] === 78 && n[3] === 71) throw new Error("PNG Image File is not a spreadsheet"); break; } return Oh.indexOf(n[0]) > -1 && n[2] <= 12 && n[3] <= 31 ? Q0.to_workbook(a, r) : z0(e, a, r, i); } function pc(e, t) { switch (t.type) { case "base64": case "binary": break; case "buffer": case "array": t.type = ""; break; case "file": return Ha(t.file, xe.write(e, { type: Te ? "buffer" : "" })); case "string": throw new Error("'string' output type invalid for '" + t.bookType + "' files"); default: throw new Error("Unrecognized type " + t.type); } return xe.write(e, t); } function Ag(e, t) { var r = We(t || {}), a = _g(e, r); return Cg(a, r); } function Cg(e, t) { var r = {}, a = Te ? "nodebuffer" : typeof Uint8Array < "u" ? "array" : "string"; if (t.compression && (r.compression = "DEFLATE"), t.password) r.type = a; else switch (t.type) { case "base64": r.type = "base64"; break; case "binary": r.type = "string"; break; case "string": throw new Error("'string' output type invalid for '" + t.bookType + "' files"); case "buffer": case "file": r.type = a; break; default: throw new Error("Unrecognized type " + t.type); } var n = e.FullPaths ? xe.write(e, { fileType: "zip", type: ( /*::(*/ { nodebuffer: "buffer", string: "binary" }[r.type] || r.type ), compression: !!t.compression }) : e.generate(r); if (typeof Deno < "u" && typeof n == "string") { if (t.type == "binary" || t.type == "base64") return n; n = new Uint8Array(w0(n)); } return t.password && typeof encrypt_agile < "u" ? pc(encrypt_agile(n, t.password), t) : t.type === "file" ? Ha(t.file, n) : t.type == "string" ? Pe( /*::(*/ n /*:: :any)*/ ) : n; } function Dg(e, t) { var r = t || {}, a = ym(e, r); return pc(a, r); } function Qr(e, t, r) { r || (r = ""); var a = r + e; switch (t.type) { case "base64": return Aa(et(a)); case "binary": return et(a); case "string": return e; case "file": return Ha(t.file, a, "utf8"); case "buffer": return Te ? ut(a, "utf8") : typeof TextEncoder < "u" ? new TextEncoder().encode(a) : Qr(a, { type: "binary" }).split("").map(function(n) { return n.charCodeAt(0); }); } throw new Error("Unrecognized type " + t.type); } function Og(e, t) { switch (t.type) { case "base64": return Aa(e); case "binary": return e; case "string": return e; case "file": return Ha(t.file, e, "binary"); case "buffer": return Te ? ut(e, "binary") : e.split("").map(function(r) { return r.charCodeAt(0); }); } throw new Error("Unrecognized type " + t.type); } function s0(e, t) { switch (t.type) { case "string": case "base64": case "binary": for (var r = "", a = 0; a < e.length; ++a) r += String.fromCharCode(e[a]); return t.type == "base64" ? Aa(r) : t.type == "string" ? Pe(r) : r; case "file": return Ha(t.file, e); case "buffer": return e; default: throw new Error("Unrecognized type " + t.type); } } function mc(e, t) { on(), k2(e); var r = We(t || {}); if (r.cellStyles && (r.cellNF = !0, r.sheetStubs = !0), r.type == "array") { r.type = "binary"; var a = mc(e, r); return r.type = "array", w0(a); } var n = 0; if (r.sheet && (typeof r.sheet == "number" ? n = r.sheet : n = e.SheetNames.indexOf(r.sheet), !e.SheetNames[n])) throw new Error("Sheet not found: " + r.sheet + " : " + typeof r.sheet); switch (r.bookType || "xlsb") { case "xml": case "xlml": return Qr(_m(e, r), r); case "slk": case "sylk": return Qr(Sf.from_sheet(e.Sheets[e.SheetNames[n]], r), r); case "htm": case "html": return Qr(oc(e.Sheets[e.SheetNames[n]], r), r); case "txt": return Og(gc(e.Sheets[e.SheetNames[n]], r), r); case "csv": return Qr(zn(e.Sheets[e.SheetNames[n]], r), r, "\uFEFF"); case "dif": return Qr(Ff.from_sheet(e.Sheets[e.SheetNames[n]], r), r); case "dbf": return s0(Q0.from_sheet(e.Sheets[e.SheetNames[n]], r), r); case "prn": return Qr(na.from_sheet(e.Sheets[e.SheetNames[n]], r), r); case "rtf": return Qr(Rf.from_sheet(e.Sheets[e.SheetNames[n]], r), r); case "eth": return Qr(yf.from_sheet(e.Sheets[e.SheetNames[n]], r), r); case "fods": return Qr(xc(e, r), r); case "wk1": return s0(Nt.sheet_to_wk1(e.Sheets[e.SheetNames[n]], r), r); case "wk3": return s0(Nt.book_to_wk3(e, r), r); case "biff2": r.biff || (r.biff = 2); case "biff3": r.biff || (r.biff = 3); case "biff4": return r.biff || (r.biff = 4), s0(cc(e, r), r); case "biff5": r.biff || (r.biff = 5); case "biff8": case "xla": case "xls": return r.biff || (r.biff = 8), Dg(e, r); case "xlsx": case "xlsm": case "xlam": case "xlsb": case "numbers": case "ods": return Ag(e, r); default: throw new Error("Unrecognized bookType |" + r.bookType + "|"); } } function Ig(e, t, r, a, n, i, s, f) { var c = qe(r), o = f.defval, l = f.raw || !Object.prototype.hasOwnProperty.call(f, "raw"), u = !0, h = n === 1 ? [] : {}; if (n !== 1) if (Object.defineProperty) try { Object.defineProperty(h, "__rowNum__", { value: r, enumerable: !1 }); } catch { h.__rowNum__ = r; } else h.__rowNum__ = r; if (!s || e[r]) for (var d = t.s.c; d <= t.e.c; ++d) { var v = s ? e[r][d] : e[a[d] + c]; if (v === void 0 || v.t === void 0) { if (o === void 0) continue; i[d] != null && (h[i[d]] = o); continue; } var x = v.v; switch (v.t) { case "z": if (x == null) break; continue; case "e": x = x == 0 ? null : void 0; break; case "s": case "d": case "b": case "n": break; default: throw new Error("unrecognized type " + v.t); } if (i[d] != null) { if (x == null) if (v.t == "e" && x === null) h[i[d]] = null; else if (o !== void 0) h[i[d]] = o; else if (l && x === null) h[i[d]] = null; else continue; else h[i[d]] = l && (v.t !== "n" || v.t === "n" && f.rawNumbers !== !1) ? x : lt(v, x, f); x != null && (u = !1); } } return { row: h, isempty: u }; } function _0(e, t) { if (e == null || e["!ref"] == null) return []; var r = { t: "n", v: 0 }, a = 0, n = 1, i = [], s = 0, f = "", c = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } }, o = t || {}, l = o.range != null ? o.range : e["!ref"]; switch (o.header === 1 ? a = 1 : o.header === "A" ? a = 2 : Array.isArray(o.header) ? a = 3 : o.header == null && (a = 0), typeof l) { case "string": c = De(l); break; case "number": c = De(e["!ref"]), c.s.r = l; break; default: c = l; } a > 0 && (n = 0); var u = qe(c.s.r), h = [], d = [], v = 0, x = 0, p = Array.isArray(e), w = c.s.r, y = 0, g = {}; p && !e[w] && (e[w] = []); var C = o.skipHidden && e["!cols"] || [], b = o.skipHidden && e["!rows"] || []; for (y = c.s.c; y <= c.e.c; ++y) if (!(C[y] || {}).hidden) switch (h[y] = Ge(y), r = p ? e[w][y] : e[h[y] + u], a) { case 1: i[y] = y - c.s.c; break; case 2: i[y] = h[y]; break; case 3: i[y] = o.header[y - c.s.c]; break; default: if (r == null && (r = { w: "__EMPTY", t: "s" }), f = s = lt(r, null, o), x = g[s] || 0, !x) g[s] = 1; else { do f = s + "_" + x++; while (g[f]); g[s] = x, g[f] = 1; } i[y] = f; } for (w = c.s.r + n; w <= c.e.r; ++w) if (!(b[w] || {}).hidden) { var O = Ig(e, c, w, h, a, i, p, o); (O.isempty === !1 || (a === 1 ? o.blankrows !== !1 : o.blankrows)) && (d[v++] = O.row); } return d.length = v, d; } var ss = /"/g; function Rg(e, t, r, a, n, i, s, f) { for (var c = !0, o = [], l = "", u = qe(r), h = t.s.c; h <= t.e.c; ++h) if (a[h]) { var d = f.dense ? (e[r] || [])[h] : e[a[h] + u]; if (d == null) l = ""; else if (d.v != null) { c = !1, l = "" + (f.rawNumbers && d.t == "n" ? d.v : lt(d, null, f)); for (var v = 0, x = 0; v !== l.length; ++v) if ((x = l.charCodeAt(v)) === n || x === i || x === 34 || f.forceQuotes) { l = '"' + l.replace(ss, '""') + '"'; break; } l == "ID" && (l = '"ID"'); } else d.f != null && !d.F ? (c = !1, l = "=" + d.f, l.indexOf(",") >= 0 && (l = '"' + l.replace(ss, '""') + '"')) : l = ""; o.push(l); } return f.blankrows === !1 && c ? null : o.join(s); } function zn(e, t) { var r = [], a = t ?? {}; if (e == null || e["!ref"] == null) return ""; var n = De(e["!ref"]), i = a.FS !== void 0 ? a.FS : ",", s = i.charCodeAt(0), f = a.RS !== void 0 ? a.RS : ` `, c = f.charCodeAt(0), o = new RegExp((i == "|" ? "\\|" : i) + "+$"), l = "", u = []; a.dense = Array.isArray(e); for (var h = a.skipHidden && e["!cols"] || [], d = a.skipHidden && e["!rows"] || [], v = n.s.c; v <= n.e.c; ++v) (h[v] || {}).hidden || (u[v] = Ge(v)); for (var x = 0, p = n.s.r; p <= n.e.r; ++p) (d[p] || {}).hidden || (l = Rg(e, n, p, u, s, c, i, a), l != null && (a.strip && (l = l.replace(o, "")), (l || a.blankrows !== !1) && r.push((x++ ? f : "") + l))); return delete a.dense, r.join(""); } function gc(e, t) { t || (t = {}), t.FS = " ", t.RS = ` `; var r = zn(e, t); return r; } function Ng(e) { var t = "", r, a = ""; if (e == null || e["!ref"] == null) return []; var n = De(e["!ref"]), i = "", s = [], f, c = [], o = Array.isArray(e); for (f = n.s.c; f <= n.e.c; ++f) s[f] = Ge(f); for (var l = n.s.r; l <= n.e.r; ++l) for (i = qe(l), f = n.s.c; f <= n.e.c; ++f) if (t = s[f] + i, r = o ? (e[l] || [])[f] : e[t], a = "", r !== void 0) { if (r.F != null) { if (t = r.F, !r.f) continue; a = r.f, t.indexOf(":") == -1 && (t = t + ":" + t); } if (r.f != null) a = r.f; else { if (r.t == "z") continue; if (r.t == "n" && r.v != null) a = "" + r.v; else if (r.t == "b") a = r.v ? "TRUE" : "FALSE"; else if (r.w !== void 0) a = "'" + r.w; else { if (r.v === void 0) continue; r.t == "s" ? a = "'" + r.v : a = "" + r.v; } } c[c.length] = t + "=" + a; } return c; } function _c(e, t, r) { var a = r || {}, n = +!a.skipHeader, i = e || {}, s = 0, f = 0; if (i && a.origin != null) if (typeof a.origin == "number") s = a.origin; else { var c = typeof a.origin == "string" ? Xe(a.origin) : a.origin; s = c.r, f = c.c; } var o, l = { s: { c: 0, r: 0 }, e: { c: f, r: s + t.length - 1 + n } }; if (i["!ref"]) { var u = De(i["!ref"]); l.e.c = Math.max(l.e.c, u.e.c), l.e.r = Math.max(l.e.r, u.e.r), s == -1 && (s = u.e.r + 1, l.e.r = s + t.length - 1 + n); } else s == -1 && (s = 0, l.e.r = t.length - 1 + n); var h = a.header || [], d = 0; t.forEach(function(x, p) { $e(x).forEach(function(w) { (d = h.indexOf(w)) == -1 && (h[d = h.length] = w); var y = x[w], g = "z", C = "", b = pe({ c: f + d, r: s + p + n }); o = Ua(i, b), y && typeof y == "object" && !(y instanceof Date) ? i[b] = y : (typeof y == "number" ? g = "n" : typeof y == "boolean" ? g = "b" : typeof y == "string" ? g = "s" : y instanceof Date ? (g = "d", a.cellDates || (g = "n", y = nr(y)), C = a.dateNF || de[14]) : y === null && a.nullError && (g = "e", y = 0), o ? (o.t = g, o.v = y, delete o.w, delete o.R, C && (o.z = C)) : i[b] = o = { t: g, v: y }, C && (o.z = C)); }); }), l.e.c = Math.max(l.e.c, f + h.length - 1); var v = qe(s); if (n) for (d = 0; d < h.length; ++d) i[Ge(d + f) + v] = { t: "s", v: h[d] }; return i["!ref"] = we(l), i; } function bg(e, t) { return _c(null, e, t); } function Ua(e, t, r) { if (typeof t == "string") { if (Array.isArray(e)) { var a = Xe(t); return e[a.r] || (e[a.r] = []), e[a.r][a.c] || (e[a.r][a.c] = { t: "z" }); } return e[t] || (e[t] = { t: "z" }); } return typeof t != "number" ? Ua(e, pe(t)) : Ua(e, pe({ r: t, c: r || 0 })); } function Pg(e, t) { if (typeof t == "number") { if (t >= 0 && e.SheetNames.length > t) return t; throw new Error("Cannot find sheet # " + t); } else if (typeof t == "string") { var r = e.SheetNames.indexOf(t); if (r > -1) return r; throw new Error("Cannot find sheet name |" + t + "|"); } else throw new Error("Cannot find sheet |" + t + "|"); } function jn() { return { SheetNames: [], Sheets: {} }; } function $n(e, t, r, a) { var n = 1; if (!r) for (; n <= 65535 && e.SheetNames.indexOf(r = "Sheet" + n) != -1; ++n, r = void 0) ; if (!r || e.SheetNames.length >= 65535) throw new Error("Too many worksheets"); if (a && e.SheetNames.indexOf(r) >= 0) { var i = r.match(/(^.*?)(\d+)$/); n = i && +i[2] || 0; var s = i && i[1] || r; for (++n; n <= 65535 && e.SheetNames.indexOf(r = s + n) != -1; ++n) ; } if (tc(r), e.SheetNames.indexOf(r) >= 0) throw new Error("Worksheet with name |" + r + "| already exists!"); return e.SheetNames.push(r), e.Sheets[r] = t, r; } function Lg(e, t, r) { e.Workbook || (e.Workbook = {}), e.Workbook.Sheets || (e.Workbook.Sheets = []); var a = Pg(e, t); switch (e.Workbook.Sheets[a] || (e.Workbook.Sheets[a] = {}), r) { case 0: case 1: case 2: break; default: throw new Error("Bad sheet visibility setting " + r); } e.Workbook.Sheets[a].Hidden = r; } function Bg(e, t) { return e.z = t, e; } function wc(e, t, r) { return t ? (e.l = { Target: t }, r && (e.l.Tooltip = r)) : delete e.l, e; } function Mg(e, t, r) { return wc(e, "#" + t, r); } function Ug(e, t, r) { e.c || (e.c = []), e.c.push({ t, a: r || "SheetJS" }); } function Wg(e, t, r, a) { for (var n = typeof t != "string" ? t : De(t), i = typeof t == "string" ? t : we(t), s = n.s.r; s <= n.e.r; ++s) for (var f = n.s.c; f <= n.e.c; ++f) { var c = Ua(e, s, f); c.t = "n", c.F = i, delete c.v, s == n.s.r && f == n.s.c && (c.f = r, a && (c.D = !0)); } return e; } var nn = { encode_col: Ge, encode_row: qe, encode_cell: pe, encode_range: we, decode_col: kn, decode_row: En, split_cell: Zo, decode_cell: Xe, decode_range: yr, format_cell: lt, sheet_add_aoa: js, sheet_add_json: _c, sheet_add_dom: lc, aoa_to_sheet: fa, json_to_sheet: bg, table_to_sheet: uc, table_to_book: Km, sheet_to_csv: zn, sheet_to_txt: gc, sheet_to_json: _0, sheet_to_html: oc, sheet_to_formulae: Ng, sheet_to_row_object_array: _0, sheet_get_cell: Ua, book_new: jn, book_append_sheet: $n, book_set_sheet_visibility: Lg, cell_set_number_format: Bg, cell_set_hyperlink: wc, cell_set_internal_link: Mg, cell_add_comment: Ug, sheet_set_array_formula: Wg, consts: { SHEET_VISIBLE: 0, SHEET_HIDDEN: 1, SHEET_VERY_HIDDEN: 2 } }; function Hg(e, t) { t && (e += 1462); var r = Date.parse(e); return (r - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1e3); } function Vg(e, t = {}) { for (var r = {}, a = { s: { c: 1e7, r: 1e7 }, e: { c: 0, r: 0 } }, n = 0; n != e.length; ++n) for (var i = 0; i != e[n].length; ++i) { a.s.r > n && (a.s.r = n), a.s.c > i && (a.s.c = i), a.e.r < n && (a.e.r = n), a.e.c < i && (a.e.c = i); var s = { v: e[n][i] }; if (s.v != null) { var f = nn.encode_cell({ c: i, r: n }); typeof s.v == "number" ? s.t = "n" : typeof s.v == "boolean" ? s.t = "b" : s.v instanceof Date ? (s.t = "n", s.z = Es._table[14], s.v = Hg(s.v)) : s.t = "s", r[f] = s; } } return a.s.c < 1e7 && (r["!ref"] = nn.encode_range(a)), r; } function sn() { if (!(this instanceof sn)) return new sn(); this.SheetNames = [], this.Sheets = {}; } function Gg(e) { for (var t = new ArrayBuffer(e.length), r = new Uint8Array(t), a = 0; a != e.length; ++a) r[a] = e.charCodeAt(a) & 255; return t; } function Xg(e, t, r, a = { merges: [], header: null, cols: null }) { var n = t; n.unshift(e), a.header && n.unshift([a.header]); var i = "SheetJS"; const s = {}; var f = new sn(), c = Vg(n, s); let { merges: o } = a; typeof o[0] == "string" && o.length == 2 && (o = [o]), o = o.map((h) => h instanceof Array ? { s: h[0], e: h[1] } : h), c["!merges"] = o, a.cols && (c["!cols"] = a.cols), f.SheetNames.push(i), f.Sheets[i] = c; var l = mc(f, { bookType: "xlsx", bookSST: !1, type: "binary" }), u = r || "列表"; cs.saveAs(new Blob([Gg(l)], { type: "application/octet-stream" }), u + ".xlsx"); } const zg = (e) => { const t = e.split(/\r\n|\n/), r = t[0].split(/,(?![^"]*"(?:(?:[^"]*"){2})*[^"]*$)/), a = []; for (let i = 1; i < t.length; i++) { const s = t[i].split(/,(?![^"]*"(?:(?:[^"]*"){2})*[^"]*$)/); if (r && s.length == r.length) { const f = {}; for (let c = 0; c < r.length; c++) { let o = s[c]; o.length > 0 && (o[0] == '"' && (o = o.substring(1, o.length - 1)), o[o.length - 1] == '"' && (o = o.substring(o.length - 2, 1))), r[c] && (f[r[c]] = o); } Object.values(f).filter((c) => c).length > 0 && a.push(f); } } const n = r.map((i) => ({ title: i, key: i })); return { data: a, columns: n }; }; async function jg(e) { const t = new FileReader(); return new Promise((r, a) => { t.onload = (n) => { const i = n.target.result, s = an(i, { type: "binary" }), f = s.SheetNames[0], c = s.Sheets[f], o = nn.sheet_to_csv(c), l = zg(o); r(l); }, t.onerror = (n) => { a(n); }, t.readAsBinaryString(e); }); } function $g(e) { return e.map((t) => ({ prop: t.key, label: t.title })); } const r_ = { // 导出 csv csv(e) { return new Promise((t, r) => { const n = Object.assign({}, { columns: [], data: [], filename: "table", noHeader: !1 }, e), i = Wc($g(n.columns), n.data, e, n.noHeader); Bc.download(n.filename, i), t(); }); }, // 导出 excel excel(e) { return new Promise((t, r) => { const n = Object.assign({}, { columns: [], data: [], filename: "table", header: null, merges: [] }, e), i = n.columns.map((c) => c.title), s = n.data.map((c) => n.columns.map((o) => c[o.key])), f = n.columns.map((c) => { const o = { ...c }; return delete o.title, delete o.key, o; }); Xg(i, s, n.filename, { merges: n.merges, header: n.header, //@ts-ignore cols: f }), t(); }); }, // 导出 文本文档 txt(e) { return new Promise((t, r) => { const n = Object.assign({}, { text: "", filename: "文本" }, e), i = new Blob([n.text], { type: "text/plain;charset=utf-8" }); cs.saveAs(i, n.filename + ".txt"), t(); }); } }, t_ = { async csv(e) { return await jg(e); } }; export { r_ as exportUtil, t_ as importUtil }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtODg2ODRhMDYubWpzIiwic291cmNlcyI6WyIuLi9zcmMvbGliL2ZzLWV4cG9ydC9saWIvX2V4cG9ydC1jc3YuanMiLCIuLi9zcmMvbGliL2ZzLWV4cG9ydC9saWIvX2Nzdi5qcyIsIi4uL3NyYy9saWIvZnMtZXhwb3J0L2xpYi9fYmxvYi5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9maWxlLXNhdmVyQDIuMC41L25vZGVfbW9kdWxlcy9maWxlLXNhdmVyL2Rpc3QvRmlsZVNhdmVyLm1pbi5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS94bHN4QDAuMTguNS9ub2RlX21vZHVsZXMveGxzeC94bHN4Lm1qcyIsIi4uL3NyYy9saWIvZnMtZXhwb3J0L2xpYi9fZXhwb3J0MkV4Y2VsLmpzIiwiLi4vLi4vc3JjL2xpYi9mcy1leHBvcnQvbGliL19pbXBvcnQuY3N2LnRzIiwiLi4vLi4vc3JjL2xpYi9mcy1leHBvcnQvbGliL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICovXG5cbi8qXG4gIOatpOS7o+eggeadpea6kOS6jml2aWV36KGo5qC857uE5Lu255qEQ1NW5a+85Ye66YOo5YiGXG4gIGh0dHBzOi8vZ2l0aHViLmNvbS9pdmlldy9pdmlld1xuKi9cblxuZnVuY3Rpb24gaGFzIChicm93c2VyKSB7XG4gICAgY29uc3QgdWEgPSBuYXZpZ2F0b3IudXNlckFnZW50O1xuICAgIGlmIChicm93c2VyID09PSAnaWUnKSB7XG4gICAgICAgIGNvbnN0IGlzSUUgPSB1YS5pbmRleE9mKCdjb21wYXRpYmxlJykgPiAtMSAmJiB1YS5pbmRleE9mKCdNU0lFJykgPiAtMTtcbiAgICAgICAgaWYgKGlzSUUpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlSUUgPSBuZXcgUmVnRXhwKCdNU0lFIChcXFxcZCtcXFxcLlxcXFxkKyk7Jyk7XG4gICAgICAgICAgICByZUlFLnRlc3QodWEpO1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoUmVnRXhwWyckMSddKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB1YS5pbmRleE9mKGJyb3dzZXIpID4gLTE7XG4gICAgfVxufVxuXG5jb25zdCBjc3YgPSB7XG4gICAgX2lzSUUxMSAoKSB7XG4gICAgICAgIGxldCBpZXYgPSAwO1xuICAgICAgICBjb25zdCBpZW9sZCA9ICgvTVNJRSAoXFxkK1xcLlxcZCspOy8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSk7XG4gICAgICAgIGNvbnN0IHRyaWRlbnQgPSAhIW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL1RyaWRlbnRcXC83LjAvKTtcbiAgICAgICAgY29uc3QgcnYgPSBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ3J2OjExLjAnKTtcblxuICAgICAgICBpZiAoaWVvbGQpIHtcbiAgICAgICAgICAgIGlldiA9IE51bWJlcihSZWdFeHAuJDEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmRleE9mKCdNU0lFIDEwJykgIT09IC0xKSB7XG4gICAgICAgICAgICBpZXYgPSAxMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHJpZGVudCAmJiBydiAhPT0gLTEpIHtcbiAgICAgICAgICAgIGlldiA9IDExO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlldiA9PT0gMTE7XG4gICAgfSxcblxuICAgIF9pc0VkZ2UgKCkge1xuICAgICAgICByZXR1cm4gL0VkZ2UvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gICAgfSxcblxuICAgIF9nZXREb3dubG9hZFVybCAodGV4dCkge1xuICAgICAgICBjb25zdCBCT00gPSAnXFx1RkVGRic7XG4gICAgICAgIC8vIEFkZCBCT00gdG8gdGV4dCBmb3Igb3BlbiBpbiBleGNlbCBjb3JyZWN0bHlcbiAgICAgICAgaWYgKHdpbmRvdy5CbG9iICYmIHdpbmRvdy5VUkwgJiYgd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwpIHtcbiAgICAgICAgICAgIGNvbnN0IGNzdkRhdGEgPSBuZXcgQmxvYihbQk9NICsgdGV4dF0sIHsgdHlwZTogJ3RleHQvY3N2JyB9KTtcbiAgICAgICAgICAgIHJldHVybiBVUkwuY3JlYXRlT2JqZWN0VVJMKGNzdkRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuICdkYXRhOmF0dGFjaG1lbnQvY3N2O2NoYXJzZXQ9dXRmLTgsJyArIEJPTSArIGVuY29kZVVSSUNvbXBvbmVudCh0ZXh0KTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBkb3dubG9hZCAoZmlsZW5hbWUsIHRleHQpIHtcbiAgICAgICAgaWYgKGhhcygnaWUnKSAmJiBoYXMoJ2llJykgPCAxMCkge1xuICAgICAgICAgICAgLy8gaGFzIG1vZHVsZSB1bmFibGUgaWRlbnRpZnkgaWUxMSBhbmQgRWRnZVxuICAgICAgICAgICAgY29uc3Qgb1dpbiA9IHdpbmRvdy50b3Aub3BlbignYWJvdXQ6YmxhbmsnLCAnX2JsYW5rJyk7XG4gICAgICAgICAgICBvV2luLmRvY3VtZW50LmNoYXJzZXQgPSAndXRmLTgnO1xuICAgICAgICAgICAgb1dpbi5kb2N1bWVudC53cml0ZSh0ZXh0KTtcbiAgICAgICAgICAgIG9XaW4uZG9jdW1lbnQuY2xvc2UoKTtcbiAgICAgICAgICAgIG9XaW4uZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ1NhdmVBcycsIGZpbGVuYW1lICsgJy5jc3YnKTtcbiAgICAgICAgICAgIG9XaW4uY2xvc2UoKTtcbiAgICAgICAgfSBlbHNlIGlmIChoYXMoJ2llJykgPT09IDEwIHx8IHRoaXMuX2lzSUUxMSgpIHx8IHRoaXMuX2lzRWRnZSgpKSB7XG4gICAgICAgICAgICBjb25zdCBCT00gPSAnXFx1RkVGRic7XG4gICAgICAgICAgICBjb25zdCBjc3ZEYXRhID0gbmV3IEJsb2IoW0JPTSArIHRleHRdLCB7IHR5cGU6ICd0ZXh0L2NzdicgfSk7XG4gICAgICAgICAgICBuYXZpZ2F0b3IubXNTYXZlQmxvYihjc3ZEYXRhLCBmaWxlbmFtZSArICcuY3N2Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVuYW1lICsgJy5jc3YnO1xuICAgICAgICAgICAgbGluay5ocmVmID0gdGhpcy5fZ2V0RG93bmxvYWRVcmwodGV4dCk7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNzdjsiLCIvKlxuICBpbnNwaXJlZCBieSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9yZWFjdC1jc3YtZG93bmxvYWRlclxuICBub3cgcmVtb3ZlZCBmcm9tIEdpdGh1YlxuICBpbnNwaXJlZCBieSBodHRwczovL2dpdGh1Yi5jb20vaXZpZXcvaXZpZXdcbiovXG5cbi8qIGVzbGludC1kaXNhYmxlICovXG5cbmNvbnN0IG5ld0xpbmUgPSAnXFxyXFxuJztcbmNvbnN0IGFwcGVuZExpbmUgPSAoY29udGVudCwgcm93LCB7IHNlcGFyYXRvciwgcXVvdGVkIH0pID0+IHtcbiAgICBjb25zdCBsaW5lID0gcm93Lm1hcChkYXRhID0+IHtcbiAgICAgICAgaWYgKCFxdW90ZWQpIHJldHVybiBkYXRhO1xuICAgICAgICAvLyBxdW90ZSBkYXRhXG4gICAgICAgIGRhdGEgPSB0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycgPyBkYXRhLnJlcGxhY2UoL1wiL2csICdcIicpIDogZGF0YTtcbiAgICAgICAgcmV0dXJuIGBcIiR7ZGF0YX1cImA7XG4gICAgfSk7XG4gICAgY29udGVudC5wdXNoKGxpbmUuam9pbihzZXBhcmF0b3IpKTtcbn07XG5cbmNvbnN0IGRlZmF1bHRzID0ge1xuICAgIHNlcGFyYXRvcjogJywnLFxuICAgIHF1b3RlZDogZmFsc2Vcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNzdihjb2x1bW5zLCBkYXRhcywgb3B0aW9ucywgbm9IZWFkZXIgPSBmYWxzZSkge1xuICAgIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0cywgb3B0aW9ucyk7XG4gICAgbGV0IGNvbHVtbk9yZGVyO1xuICAgIGNvbnN0IGNvbnRlbnQgPSBbXTtcbiAgICBjb25zdCBjb2x1bW4gPSBbXTtcblxuICAgIGlmIChjb2x1bW5zKSB7XG4gICAgICAgIGNvbHVtbk9yZGVyID0gY29sdW1ucy5tYXAodiA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnKSByZXR1cm4gdjtcbiAgICAgICAgICAgIGlmICghbm9IZWFkZXIpIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4ucHVzaCh0eXBlb2Ygdi5sYWJlbCAhPT0gJ3VuZGVmaW5lZCcgPyB2LmxhYmVsIDogdi5wcm9wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2LnByb3A7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoY29sdW1uLmxlbmd0aCA+IDApIGFwcGVuZExpbmUoY29udGVudCwgY29sdW1uLCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb2x1bW5PcmRlciA9IFtdO1xuICAgICAgICBkYXRhcy5mb3JFYWNoKHYgPT4ge1xuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHYpKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uT3JkZXIgPSBjb2x1bW5PcmRlci5jb25jYXQoT2JqZWN0LmtleXModikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGNvbHVtbk9yZGVyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbHVtbk9yZGVyID0gY29sdW1uT3JkZXIuZmlsdGVyKCh2YWx1ZSwgaW5kZXgsIHNlbGYpID0+IHNlbGYuaW5kZXhPZih2YWx1ZSkgPT09IGluZGV4KTtcbiAgICAgICAgICAgIGlmICghbm9IZWFkZXIpIGFwcGVuZExpbmUoY29udGVudCwgY29sdW1uT3JkZXIsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YXMpKSB7XG4gICAgICAgIGRhdGFzLmZvckVhY2gocm93ID0+IHtcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShyb3cpKSB7XG4gICAgICAgICAgICAgICAgcm93ID0gY29sdW1uT3JkZXIubWFwKGsgPT4gKHR5cGVvZiByb3dba10gIT09ICd1bmRlZmluZWQnID8gcm93W2tdIDogJycpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFwcGVuZExpbmUoY29udGVudCwgcm93LCBvcHRpb25zKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBjb250ZW50LmpvaW4obmV3TGluZSk7XG59XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuLyogQmxvYi5qc1xuICogQSBCbG9iIGltcGxlbWVudGF0aW9uLlxuICogMjAxNC0wNS0yN1xuICpcbiAqIEJ5IEVsaSBHcmV5LCBodHRwOi8vZWxpZ3JleS5jb21cbiAqIEJ5IERldmluIFNhbWFyaW4sIGh0dHBzOi8vZ2l0aHViLmNvbS9lYm95anJcbiAqIExpY2Vuc2U6IFgxMS9NSVRcbiAqICAgU2VlIExJQ0VOU0UubWRcbiAqL1xuXG4vKmdsb2JhbCBzZWxmLCB1bmVzY2FwZSAqL1xuLypqc2xpbnQgYml0d2lzZTogdHJ1ZSwgcmVnZXhwOiB0cnVlLCBjb25mdXNpb246IHRydWUsIGVzNTogdHJ1ZSwgdmFyczogdHJ1ZSwgd2hpdGU6IHRydWUsXG4gcGx1c3BsdXM6IHRydWUgKi9cblxuLyohIEBzb3VyY2UgaHR0cDovL3B1cmwuZWxpZ3JleS5jb20vZ2l0aHViL0Jsb2IuanMvYmxvYi9tYXN0ZXIvQmxvYi5qcyAqL1xuXG4oZnVuY3Rpb24gKHZpZXcpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgIHZpZXcuVVJMID0gdmlldy5VUkwgfHwgdmlldy53ZWJraXRVUkw7XG5cbiAgICBpZiAodmlldy5CbG9iICYmIHZpZXcuVVJMKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBuZXcgQmxvYjtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICB9XG5cbiAgICAvLyBJbnRlcm5hbGx5IHdlIHVzZSBhIEJsb2JCdWlsZGVyIGltcGxlbWVudGF0aW9uIHRvIGJhc2UgQmxvYiBvZmYgb2ZcbiAgICAvLyBpbiBvcmRlciB0byBzdXBwb3J0IG9sZGVyIGJyb3dzZXJzIHRoYXQgb25seSBoYXZlIEJsb2JCdWlsZGVyXG4gICAgdmFyIEJsb2JCdWlsZGVyID0gdmlldy5CbG9iQnVpbGRlciB8fCB2aWV3LldlYktpdEJsb2JCdWlsZGVyIHx8IHZpZXcuTW96QmxvYkJ1aWxkZXIgfHwgKGZ1bmN0aW9uKHZpZXcpIHtcbiAgICAgICAgICAgIHZhclxuICAgICAgICAgICAgICAgIGdldF9jbGFzcyA9IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkubWF0Y2goL15cXFtvYmplY3RcXHMoLiopXFxdJC8pWzFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAsIEZha2VCbG9iQnVpbGRlciA9IGZ1bmN0aW9uIEJsb2JCdWlsZGVyKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLCBGYWtlQmxvYiA9IGZ1bmN0aW9uIEJsb2IoZGF0YSwgdHlwZSwgZW5jb2RpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXplID0gZGF0YS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW5jb2RpbmcgPSBlbmNvZGluZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLCBGQkJfcHJvdG8gPSBGYWtlQmxvYkJ1aWxkZXIucHJvdG90eXBlXG4gICAgICAgICAgICAgICAgLCBGQl9wcm90byA9IEZha2VCbG9iLnByb3RvdHlwZVxuICAgICAgICAgICAgICAgICwgRmlsZVJlYWRlclN5bmMgPSB2aWV3LkZpbGVSZWFkZXJTeW5jXG4gICAgICAgICAgICAgICAgLCBGaWxlRXhjZXB0aW9uID0gZnVuY3Rpb24odHlwZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvZGUgPSB0aGlzW3RoaXMubmFtZSA9IHR5cGVdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAsIGZpbGVfZXhfY29kZXMgPSAoXG4gICAgICAgICAgICAgICAgICAgIFwiTk9UX0ZPVU5EX0VSUiBTRUNVUklUWV9FUlIgQUJPUlRfRVJSIE5PVF9SRUFEQUJMRV9FUlIgRU5DT0RJTkdfRVJSIFwiXG4gICAgICAgICAgICAgICAgICAgICsgXCJOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIgSU5WQUxJRF9TVEFURV9FUlIgU1lOVEFYX0VSUlwiXG4gICAgICAgICAgICAgICAgKS5zcGxpdChcIiBcIilcbiAgICAgICAgICAgICAgICAsIGZpbGVfZXhfY29kZSA9IGZpbGVfZXhfY29kZXMubGVuZ3RoXG4gICAgICAgICAgICAgICAgLCByZWFsX1VSTCA9IHZpZXcuVVJMIHx8IHZpZXcud2Via2l0VVJMIHx8IHZpZXdcbiAgICAgICAgICAgICAgICAsIHJlYWxfY3JlYXRlX29iamVjdF9VUkwgPSByZWFsX1VSTC5jcmVhdGVPYmplY3RVUkxcbiAgICAgICAgICAgICAgICAsIHJlYWxfcmV2b2tlX29iamVjdF9VUkwgPSByZWFsX1VSTC5yZXZva2VPYmplY3RVUkxcbiAgICAgICAgICAgICAgICAsIFVSTCA9IHJlYWxfVVJMXG4gICAgICAgICAgICAgICAgLCBidG9hID0gdmlldy5idG9hXG4gICAgICAgICAgICAgICAgLCBhdG9iID0gdmlldy5hdG9iXG5cbiAgICAgICAgICAgICAgICAsIEFycmF5QnVmZmVyID0gdmlldy5BcnJheUJ1ZmZlclxuICAgICAgICAgICAgICAgICwgVWludDhBcnJheSA9IHZpZXcuVWludDhBcnJheVxuICAgICAgICAgICAgICAgIDtcbiAgICAgICAgICAgIEZha2VCbG9iLmZha2UgPSBGQl9wcm90by5mYWtlID0gdHJ1ZTtcbiAgICAgICAgICAgIHdoaWxlIChmaWxlX2V4X2NvZGUtLSkge1xuICAgICAgICAgICAgICAgIEZpbGVFeGNlcHRpb24ucHJvdG90eXBlW2ZpbGVfZXhfY29kZXNbZmlsZV9leF9jb2RlXV0gPSBmaWxlX2V4X2NvZGUgKyAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFyZWFsX1VSTC5jcmVhdGVPYmplY3RVUkwpIHtcbiAgICAgICAgICAgICAgICBVUkwgPSB2aWV3LlVSTCA9IHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgVVJMLmNyZWF0ZU9iamVjdFVSTCA9IGZ1bmN0aW9uKGJsb2IpIHtcbiAgICAgICAgICAgICAgICB2YXJcbiAgICAgICAgICAgICAgICAgICAgdHlwZSA9IGJsb2IudHlwZVxuICAgICAgICAgICAgICAgICAgICAsIGRhdGFfVVJJX2hlYWRlclxuICAgICAgICAgICAgICAgICAgICA7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZSA9IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChibG9iIGluc3RhbmNlb2YgRmFrZUJsb2IpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YV9VUklfaGVhZGVyID0gXCJkYXRhOlwiICsgdHlwZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2IuZW5jb2RpbmcgPT09IFwiYmFzZTY0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhX1VSSV9oZWFkZXIgKyBcIjtiYXNlNjQsXCIgKyBibG9iLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYmxvYi5lbmNvZGluZyA9PT0gXCJVUklcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFfVVJJX2hlYWRlciArIFwiLFwiICsgZGVjb2RlVVJJQ29tcG9uZW50KGJsb2IuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH0gaWYgKGJ0b2EpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhX1VSSV9oZWFkZXIgKyBcIjtiYXNlNjQsXCIgKyBidG9hKGJsb2IuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YV9VUklfaGVhZGVyICsgXCIsXCIgKyBlbmNvZGVVUklDb21wb25lbnQoYmxvYi5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVhbF9jcmVhdGVfb2JqZWN0X1VSTCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVhbF9jcmVhdGVfb2JqZWN0X1VSTC5jYWxsKHJlYWxfVVJMLCBibG9iKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCA9IGZ1bmN0aW9uKG9iamVjdF9VUkwpIHtcbiAgICAgICAgICAgICAgICBpZiAob2JqZWN0X1VSTC5zdWJzdHJpbmcoMCwgNSkgIT09IFwiZGF0YTpcIiAmJiByZWFsX3Jldm9rZV9vYmplY3RfVVJMKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlYWxfcmV2b2tlX29iamVjdF9VUkwuY2FsbChyZWFsX1VSTCwgb2JqZWN0X1VSTCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIEZCQl9wcm90by5hcHBlbmQgPSBmdW5jdGlvbihkYXRhLyosIGVuZGluZ3MqLykge1xuICAgICAgICAgICAgICAgIHZhciBiYiA9IHRoaXMuZGF0YTtcbiAgICAgICAgICAgICAgICAvLyBkZWNvZGUgZGF0YSB0byBhIGJpbmFyeSBzdHJpbmdcbiAgICAgICAgICAgICAgICBpZiAoVWludDhBcnJheSAmJiAoZGF0YSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyIHx8IGRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgICAgICAgICAgICAgICAgICB2YXJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICwgYnVmID0gbmV3IFVpbnQ4QXJyYXkoZGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgICwgaSA9IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICwgYnVmX2xlbiA9IGJ1Zi5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgIDtcbiAgICAgICAgICAgICAgICAgICAgZm9yICg7IGkgPCBidWZfbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYmIucHVzaChzdHIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZ2V0X2NsYXNzKGRhdGEpID09PSBcIkJsb2JcIiB8fCBnZXRfY2xhc3MoZGF0YSkgPT09IFwiRmlsZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChGaWxlUmVhZGVyU3luYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZyID0gbmV3IEZpbGVSZWFkZXJTeW5jO1xuICAgICAgICAgICAgICAgICAgICAgICAgYmIucHVzaChmci5yZWFkQXNCaW5hcnlTdHJpbmcoZGF0YSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXN5bmMgRmlsZVJlYWRlciB3b24ndCB3b3JrIGFzIEJsb2JCdWlsZGVyIGlzIHN5bmNcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBGaWxlRXhjZXB0aW9uKFwiTk9UX1JFQURBQkxFX0VSUlwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YSBpbnN0YW5jZW9mIEZha2VCbG9iKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmVuY29kaW5nID09PSBcImJhc2U2NFwiICYmIGF0b2IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJiLnB1c2goYXRvYihkYXRhLmRhdGEpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhLmVuY29kaW5nID09PSBcIlVSSVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYi5wdXNoKGRlY29kZVVSSUNvbXBvbmVudChkYXRhLmRhdGEpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhLmVuY29kaW5nID09PSBcInJhd1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYi5wdXNoKGRhdGEuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgKz0gXCJcIjsgLy8gY29udmVydCB1bnN1cHBvcnRlZCB0eXBlcyB0byBzdHJpbmdzXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gZGVjb2RlIFVURi0xNiB0byBiaW5hcnkgc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgIGJiLnB1c2godW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGRhdGEpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIEZCQl9wcm90by5nZXRCbG9iID0gZnVuY3Rpb24odHlwZSkge1xuICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0eXBlID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGYWtlQmxvYih0aGlzLmRhdGEuam9pbihcIlwiKSwgdHlwZSwgXCJyYXdcIik7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgRkJCX3Byb3RvLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiW29iamVjdCBCbG9iQnVpbGRlcl1cIjtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBGQl9wcm90by5zbGljZSA9IGZ1bmN0aW9uKHN0YXJ0LCBlbmQsIHR5cGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgaWYgKGFyZ3MgPCAzKSB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZha2VCbG9iKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGEuc2xpY2Uoc3RhcnQsIGFyZ3MgPiAxID8gZW5kIDogdGhpcy5kYXRhLmxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgLCB0eXBlXG4gICAgICAgICAgICAgICAgICAgICwgdGhpcy5lbmNvZGluZ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgRkJfcHJvdG8udG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJbb2JqZWN0IEJsb2JdXCI7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgRkJfcHJvdG8uY2xvc2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNpemUgPSB0aGlzLmRhdGEubGVuZ3RoID0gMDtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gRmFrZUJsb2JCdWlsZGVyO1xuICAgICAgICB9KHZpZXcpKTtcblxuICAgIHZpZXcuQmxvYiA9IGZ1bmN0aW9uIEJsb2IoYmxvYlBhcnRzLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciB0eXBlID0gb3B0aW9ucyA/IChvcHRpb25zLnR5cGUgfHwgXCJcIikgOiBcIlwiO1xuICAgICAgICB2YXIgYnVpbGRlciA9IG5ldyBCbG9iQnVpbGRlcigpO1xuICAgICAgICBpZiAoYmxvYlBhcnRzKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYmxvYlBhcnRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoYmxvYlBhcnRzW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYnVpbGRlci5nZXRCbG9iKHR5cGUpO1xuICAgIH07XG59KHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiICYmIHNlbGYgfHwgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB3aW5kb3cgfHwgdGhpcy5jb250ZW50IHx8IHRoaXMpKTtcbiIsIihmdW5jdGlvbihhLGIpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10sYik7ZWxzZSBpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgZXhwb3J0cyliKCk7ZWxzZXtiKCksYS5GaWxlU2F2ZXI9e2V4cG9ydHM6e319LmV4cG9ydHN9fSkodGhpcyxmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIGIoYSxiKXtyZXR1cm5cInVuZGVmaW5lZFwiPT10eXBlb2YgYj9iPXthdXRvQm9tOiExfTpcIm9iamVjdFwiIT10eXBlb2YgYiYmKGNvbnNvbGUud2FybihcIkRlcHJlY2F0ZWQ6IEV4cGVjdGVkIHRoaXJkIGFyZ3VtZW50IHRvIGJlIGEgb2JqZWN0XCIpLGI9e2F1dG9Cb206IWJ9KSxiLmF1dG9Cb20mJi9eXFxzKig/OnRleHRcXC9cXFMqfGFwcGxpY2F0aW9uXFwveG1sfFxcUypcXC9cXFMqXFwreG1sKVxccyo7LipjaGFyc2V0XFxzKj1cXHMqdXRmLTgvaS50ZXN0KGEudHlwZSk/bmV3IEJsb2IoW1wiXFx1RkVGRlwiLGFdLHt0eXBlOmEudHlwZX0pOmF9ZnVuY3Rpb24gYyhhLGIsYyl7dmFyIGQ9bmV3IFhNTEh0dHBSZXF1ZXN0O2Qub3BlbihcIkdFVFwiLGEpLGQucmVzcG9uc2VUeXBlPVwiYmxvYlwiLGQub25sb2FkPWZ1bmN0aW9uKCl7ZyhkLnJlc3BvbnNlLGIsYyl9LGQub25lcnJvcj1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoXCJjb3VsZCBub3QgZG93bmxvYWQgZmlsZVwiKX0sZC5zZW5kKCl9ZnVuY3Rpb24gZChhKXt2YXIgYj1uZXcgWE1MSHR0cFJlcXVlc3Q7Yi5vcGVuKFwiSEVBRFwiLGEsITEpO3RyeXtiLnNlbmQoKX1jYXRjaChhKXt9cmV0dXJuIDIwMDw9Yi5zdGF0dXMmJjI5OT49Yi5zdGF0dXN9ZnVuY3Rpb24gZShhKXt0cnl7YS5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KFwiY2xpY2tcIikpfWNhdGNoKGMpe3ZhciBiPWRvY3VtZW50LmNyZWF0ZUV2ZW50KFwiTW91c2VFdmVudHNcIik7Yi5pbml0TW91c2VFdmVudChcImNsaWNrXCIsITAsITAsd2luZG93LDAsMCwwLDgwLDIwLCExLCExLCExLCExLDAsbnVsbCksYS5kaXNwYXRjaEV2ZW50KGIpfX12YXIgZj1cIm9iamVjdFwiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cud2luZG93PT09d2luZG93P3dpbmRvdzpcIm9iamVjdFwiPT10eXBlb2Ygc2VsZiYmc2VsZi5zZWxmPT09c2VsZj9zZWxmOlwib2JqZWN0XCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbC5nbG9iYWw9PT1nbG9iYWw/Z2xvYmFsOnZvaWQgMCxhPWYubmF2aWdhdG9yJiYvTWFjaW50b3NoLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpJiYvQXBwbGVXZWJLaXQvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJiEvU2FmYXJpLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLGc9Zi5zYXZlQXN8fChcIm9iamVjdFwiIT10eXBlb2Ygd2luZG93fHx3aW5kb3chPT1mP2Z1bmN0aW9uKCl7fTpcImRvd25sb2FkXCJpbiBIVE1MQW5jaG9yRWxlbWVudC5wcm90b3R5cGUmJiFhP2Z1bmN0aW9uKGIsZyxoKXt2YXIgaT1mLlVSTHx8Zi53ZWJraXRVUkwsaj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtnPWd8fGIubmFtZXx8XCJkb3dubG9hZFwiLGouZG93bmxvYWQ9ZyxqLnJlbD1cIm5vb3BlbmVyXCIsXCJzdHJpbmdcIj09dHlwZW9mIGI/KGouaHJlZj1iLGoub3JpZ2luPT09bG9jYXRpb24ub3JpZ2luP2Uoaik6ZChqLmhyZWYpP2MoYixnLGgpOmUoaixqLnRhcmdldD1cIl9ibGFua1wiKSk6KGouaHJlZj1pLmNyZWF0ZU9iamVjdFVSTChiKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aS5yZXZva2VPYmplY3RVUkwoai5ocmVmKX0sNEU0KSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZShqKX0sMCkpfTpcIm1zU2F2ZU9yT3BlbkJsb2JcImluIG5hdmlnYXRvcj9mdW5jdGlvbihmLGcsaCl7aWYoZz1nfHxmLm5hbWV8fFwiZG93bmxvYWRcIixcInN0cmluZ1wiIT10eXBlb2YgZiluYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYihiKGYsaCksZyk7ZWxzZSBpZihkKGYpKWMoZixnLGgpO2Vsc2V7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7aS5ocmVmPWYsaS50YXJnZXQ9XCJfYmxhbmtcIixzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZShpKX0pfX06ZnVuY3Rpb24oYixkLGUsZyl7aWYoZz1nfHxvcGVuKFwiXCIsXCJfYmxhbmtcIiksZyYmKGcuZG9jdW1lbnQudGl0bGU9Zy5kb2N1bWVudC5ib2R5LmlubmVyVGV4dD1cImRvd25sb2FkaW5nLi4uXCIpLFwic3RyaW5nXCI9PXR5cGVvZiBiKXJldHVybiBjKGIsZCxlKTt2YXIgaD1cImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiPT09Yi50eXBlLGk9L2NvbnN0cnVjdG9yL2kudGVzdChmLkhUTUxFbGVtZW50KXx8Zi5zYWZhcmksaj0vQ3JpT1NcXC9bXFxkXSsvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7aWYoKGp8fGgmJml8fGEpJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgRmlsZVJlYWRlcil7dmFyIGs9bmV3IEZpbGVSZWFkZXI7ay5vbmxvYWRlbmQ9ZnVuY3Rpb24oKXt2YXIgYT1rLnJlc3VsdDthPWo/YTphLnJlcGxhY2UoL15kYXRhOlteO10qOy8sXCJkYXRhOmF0dGFjaG1lbnQvZmlsZTtcIiksZz9nLmxvY2F0aW9uLmhyZWY9YTpsb2NhdGlvbj1hLGc9bnVsbH0say5yZWFkQXNEYXRhVVJMKGIpfWVsc2V7dmFyIGw9Zi5VUkx8fGYud2Via2l0VVJMLG09bC5jcmVhdGVPYmplY3RVUkwoYik7Zz9nLmxvY2F0aW9uPW06bG9jYXRpb24uaHJlZj1tLGc9bnVsbCxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bC5yZXZva2VPYmplY3RVUkwobSl9LDRFNCl9fSk7Zi5zYXZlQXM9Zy5zYXZlQXM9ZyxcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlJiYobW9kdWxlLmV4cG9ydHM9Zyl9KTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RmlsZVNhdmVyLm1pbi5qcy5tYXAiLCIvKiEgeGxzeC5qcyAoQykgMjAxMy1wcmVzZW50IFNoZWV0SlMgLS0gaHR0cDovL3NoZWV0anMuY29tICovXG4vKiB2aW06IHNldCB0cz0yOiAqL1xuLypleHBvcnRlZCBYTFNYICovXG4vKmdsb2JhbCBwcm9jZXNzOmZhbHNlLCBCdWZmZXI6ZmFsc2UsIEFycmF5QnVmZmVyOmZhbHNlLCBEYXRhVmlldzpmYWxzZSwgRGVubzpmYWxzZSAqL1xudmFyIFhMU1ggPSB7fTtcblhMU1gudmVyc2lvbiA9ICcwLjE4LjUnO1xudmFyIGN1cnJlbnRfY29kZXBhZ2UgPSAxMjAwLCBjdXJyZW50X2Fuc2kgPSAxMjUyO1xuXG52YXIgVkFMSURfQU5TSSA9IFsgODc0LCA5MzIsIDkzNiwgOTQ5LCA5NTAsIDEyNTAsIDEyNTEsIDEyNTIsIDEyNTMsIDEyNTQsIDEyNTUsIDEyNTYsIDEyNTcsIDEyNTgsIDEwMDAwIF07XG4vKiBFQ01BLTM3NiBQYXJ0IEkgMTguNC4xIGNoYXJzZXQgdG8gY29kZXBhZ2UgbWFwcGluZyAqL1xudmFyIENTMkNQID0gKHtcblx0Lyo6OlsqLzAvKjo6XSovOiAgICAxMjUyLCAvKiBBTlNJICovXG5cdC8qOjpbKi8xLyo6Ol0qLzogICA2NTAwMSwgLyogREVGQVVMVCAqL1xuXHQvKjo6WyovMi8qOjpdKi86ICAgNjUwMDEsIC8qIFNZTUJPTCAqL1xuXHQvKjo6WyovNzcvKjo6XSovOiAgMTAwMDAsIC8qIE1BQyAqL1xuXHQvKjo6WyovMTI4Lyo6Ol0qLzogICA5MzIsIC8qIFNISUZUSklTICovXG5cdC8qOjpbKi8xMjkvKjo6XSovOiAgIDk0OSwgLyogSEFOR1VMICovXG5cdC8qOjpbKi8xMzAvKjo6XSovOiAgMTM2MSwgLyogSk9IQUIgKi9cblx0Lyo6OlsqLzEzNC8qOjpdKi86ICAgOTM2LCAvKiBHQjIzMTIgKi9cblx0Lyo6OlsqLzEzNi8qOjpdKi86ICAgOTUwLCAvKiBDSElORVNFQklHNSAqL1xuXHQvKjo6WyovMTYxLyo6Ol0qLzogIDEyNTMsIC8qIEdSRUVLICovXG5cdC8qOjpbKi8xNjIvKjo6XSovOiAgMTI1NCwgLyogVFVSS0lTSCAqL1xuXHQvKjo6WyovMTYzLyo6Ol0qLzogIDEyNTgsIC8qIFZJRVROQU1FU0UgKi9cblx0Lyo6OlsqLzE3Ny8qOjpdKi86ICAxMjU1LCAvKiBIRUJSRVcgKi9cblx0Lyo6OlsqLzE3OC8qOjpdKi86ICAxMjU2LCAvKiBBUkFCSUMgKi9cblx0Lyo6OlsqLzE4Ni8qOjpdKi86ICAxMjU3LCAvKiBCQUxUSUMgKi9cblx0Lyo6OlsqLzIwNC8qOjpdKi86ICAxMjUxLCAvKiBSVVNTSUFOICovXG5cdC8qOjpbKi8yMjIvKjo6XSovOiAgIDg3NCwgLyogVEhBSSAqL1xuXHQvKjo6WyovMjM4Lyo6Ol0qLzogIDEyNTAsIC8qIEVBU1RFVVJPUEUgKi9cblx0Lyo6OlsqLzI1NS8qOjpdKi86ICAxMjUyLCAvKiBPRU0gKi9cblx0Lyo6OlsqLzY5Lyo6Ol0qLzogICA2OTY5ICAvKiBNSVNDICovXG59Lyo6YW55Ki8pO1xuXG52YXIgc2V0X2Fuc2kgPSBmdW5jdGlvbihjcC8qOm51bWJlciovKSB7IGlmKFZBTElEX0FOU0kuaW5kZXhPZihjcCkgPT0gLTEpIHJldHVybjsgY3VycmVudF9hbnNpID0gQ1MyQ1BbMF0gPSBjcDsgfTtcbmZ1bmN0aW9uIHJlc2V0X2Fuc2koKSB7IHNldF9hbnNpKDEyNTIpOyB9XG5cbnZhciBzZXRfY3AgPSBmdW5jdGlvbihjcC8qOm51bWJlciovKSB7IGN1cnJlbnRfY29kZXBhZ2UgPSBjcDsgc2V0X2Fuc2koY3ApOyB9O1xuZnVuY3Rpb24gcmVzZXRfY3AoKSB7IHNldF9jcCgxMjAwKTsgcmVzZXRfYW5zaSgpOyB9XG5cbmZ1bmN0aW9uIGNoYXJfY29kZXMoZGF0YS8qOnN0cmluZyovKS8qOkFycmF5PG51bWJlcj4qLyB7IHZhciBvLyo6QXJyYXk8bnVtYmVyPiovID0gW107IGZvcih2YXIgaSA9IDAsIGxlbiA9IGRhdGEubGVuZ3RoOyBpIDwgbGVuOyArK2kpIG9baV0gPSBkYXRhLmNoYXJDb2RlQXQoaSk7IHJldHVybiBvOyB9XG5cbmZ1bmN0aW9uIHV0ZjE2bGVyZWFkKGRhdGEvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdGZvcih2YXIgaSA9IDA7IGkgPCAoZGF0YS5sZW5ndGg+PjEpOyArK2kpIG9baV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGRhdGEuY2hhckNvZGVBdCgyKmkpICsgKGRhdGEuY2hhckNvZGVBdCgyKmkrMSk8PDgpKTtcblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cbmZ1bmN0aW9uIHV0ZjE2YmVyZWFkKGRhdGEvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdGZvcih2YXIgaSA9IDA7IGkgPCAoZGF0YS5sZW5ndGg+PjEpOyArK2kpIG9baV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGRhdGEuY2hhckNvZGVBdCgyKmkrMSkgKyAoZGF0YS5jaGFyQ29kZUF0KDIqaSk8PDgpKTtcblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cblxudmFyIGRlYm9tID0gZnVuY3Rpb24oZGF0YS8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0dmFyIGMxID0gZGF0YS5jaGFyQ29kZUF0KDApLCBjMiA9IGRhdGEuY2hhckNvZGVBdCgxKTtcblx0aWYoYzEgPT0gMHhGRiAmJiBjMiA9PSAweEZFKSByZXR1cm4gdXRmMTZsZXJlYWQoZGF0YS5zbGljZSgyKSk7XG5cdGlmKGMxID09IDB4RkUgJiYgYzIgPT0gMHhGRikgcmV0dXJuIHV0ZjE2YmVyZWFkKGRhdGEuc2xpY2UoMikpO1xuXHRpZihjMSA9PSAweEZFRkYpIHJldHVybiBkYXRhLnNsaWNlKDEpO1xuXHRyZXR1cm4gZGF0YTtcbn07XG5cbnZhciBfZ2V0Y2hhciA9IGZ1bmN0aW9uIF9nYzEoeC8qOm51bWJlciovKS8qOnN0cmluZyovIHsgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoeCk7IH07XG52YXIgX2dldGFuc2kgPSBmdW5jdGlvbiBfZ2ExKHgvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7IHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHgpOyB9O1xuXG52YXIgJGNwdGFibGU7XG5mdW5jdGlvbiBzZXRfY3B0YWJsZShjcHRhYmxlKSB7XG5cdCRjcHRhYmxlID0gY3B0YWJsZTtcblx0c2V0X2NwID0gZnVuY3Rpb24oY3AvKjpudW1iZXIqLykgeyBjdXJyZW50X2NvZGVwYWdlID0gY3A7IHNldF9hbnNpKGNwKTsgfTtcblx0ZGVib20gPSBmdW5jdGlvbihkYXRhLyo6c3RyaW5nKi8pIHtcblx0XHRpZihkYXRhLmNoYXJDb2RlQXQoMCkgPT09IDB4RkYgJiYgZGF0YS5jaGFyQ29kZUF0KDEpID09PSAweEZFKSB7IHJldHVybiAkY3B0YWJsZS51dGlscy5kZWNvZGUoMTIwMCwgY2hhcl9jb2RlcyhkYXRhLnNsaWNlKDIpKSk7IH1cblx0XHRyZXR1cm4gZGF0YTtcblx0fTtcblx0X2dldGNoYXIgPSBmdW5jdGlvbiBfZ2MyKHgvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7XG5cdFx0aWYoY3VycmVudF9jb2RlcGFnZSA9PT0gMTIwMCkgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoeCk7XG5cdFx0cmV0dXJuICRjcHRhYmxlLnV0aWxzLmRlY29kZShjdXJyZW50X2NvZGVwYWdlLCBbeCYyNTUseD4+OF0pWzBdO1xuXHR9O1xuXHRfZ2V0YW5zaSA9IGZ1bmN0aW9uIF9nYTIoeC8qOm51bWJlciovKS8qOnN0cmluZyovIHtcblx0XHRyZXR1cm4gJGNwdGFibGUudXRpbHMuZGVjb2RlKGN1cnJlbnRfYW5zaSwgW3hdKVswXTtcblx0fTtcblx0Y3Bkb2l0KCk7XG59XG5leHBvcnQgeyBzZXRfY3B0YWJsZSB9O1xudmFyIERFTlNFID0gbnVsbDtcbnZhciBESUZfWEwgPSB0cnVlO1xudmFyIEJhc2U2NF9tYXAgPSBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89XCI7XG5mdW5jdGlvbiBCYXNlNjRfZW5jb2RlKGlucHV0KSB7XG4gIHZhciBvID0gXCJcIjtcbiAgdmFyIGMxID0gMCwgYzIgPSAwLCBjMyA9IDAsIGUxID0gMCwgZTIgPSAwLCBlMyA9IDAsIGU0ID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7ICkge1xuICAgIGMxID0gaW5wdXQuY2hhckNvZGVBdChpKyspO1xuICAgIGUxID0gYzEgPj4gMjtcbiAgICBjMiA9IGlucHV0LmNoYXJDb2RlQXQoaSsrKTtcbiAgICBlMiA9IChjMSAmIDMpIDw8IDQgfCBjMiA+PiA0O1xuICAgIGMzID0gaW5wdXQuY2hhckNvZGVBdChpKyspO1xuICAgIGUzID0gKGMyICYgMTUpIDw8IDIgfCBjMyA+PiA2O1xuICAgIGU0ID0gYzMgJiA2MztcbiAgICBpZiAoaXNOYU4oYzIpKSB7XG4gICAgICBlMyA9IGU0ID0gNjQ7XG4gICAgfSBlbHNlIGlmIChpc05hTihjMykpIHtcbiAgICAgIGU0ID0gNjQ7XG4gICAgfVxuICAgIG8gKz0gQmFzZTY0X21hcC5jaGFyQXQoZTEpICsgQmFzZTY0X21hcC5jaGFyQXQoZTIpICsgQmFzZTY0X21hcC5jaGFyQXQoZTMpICsgQmFzZTY0X21hcC5jaGFyQXQoZTQpO1xuICB9XG4gIHJldHVybiBvO1xufVxuZnVuY3Rpb24gQmFzZTY0X2RlY29kZShpbnB1dCkge1xuICB2YXIgbyA9IFwiXCI7XG4gIHZhciBjMSA9IDAsIGMyID0gMCwgYzMgPSAwLCBlMSA9IDAsIGUyID0gMCwgZTMgPSAwLCBlNCA9IDA7XG4gIGlucHV0ID0gaW5wdXQucmVwbGFjZSgvW15cXHdcXCtcXC9cXD1dL2csIFwiXCIpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgKSB7XG4gICAgZTEgPSBCYXNlNjRfbWFwLmluZGV4T2YoaW5wdXQuY2hhckF0KGkrKykpO1xuICAgIGUyID0gQmFzZTY0X21hcC5pbmRleE9mKGlucHV0LmNoYXJBdChpKyspKTtcbiAgICBjMSA9IGUxIDw8IDIgfCBlMiA+PiA0O1xuICAgIG8gKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjMSk7XG4gICAgZTMgPSBCYXNlNjRfbWFwLmluZGV4T2YoaW5wdXQuY2hhckF0KGkrKykpO1xuICAgIGMyID0gKGUyICYgMTUpIDw8IDQgfCBlMyA+PiAyO1xuICAgIGlmIChlMyAhPT0gNjQpIHtcbiAgICAgIG8gKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjMik7XG4gICAgfVxuICAgIGU0ID0gQmFzZTY0X21hcC5pbmRleE9mKGlucHV0LmNoYXJBdChpKyspKTtcbiAgICBjMyA9IChlMyAmIDMpIDw8IDYgfCBlNDtcbiAgICBpZiAoZTQgIT09IDY0KSB7XG4gICAgICBvICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYzMpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbztcbn1cbnZhciBoYXNfYnVmID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpIHsgcmV0dXJuIHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucyAhPT0gJ3VuZGVmaW5lZCcgJiYgISFwcm9jZXNzLnZlcnNpb25zLm5vZGU7IH0pKCk7XG5cbnZhciBCdWZmZXJfZnJvbSA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG5cdGlmKHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnKSB7XG5cdFx0dmFyIG5iZnMgPSAhQnVmZmVyLmZyb207XG5cdFx0aWYoIW5iZnMpIHRyeSB7IEJ1ZmZlci5mcm9tKFwiZm9vXCIsIFwidXRmOFwiKTsgfSBjYXRjaChlKSB7IG5iZnMgPSB0cnVlOyB9XG5cdFx0cmV0dXJuIG5iZnMgPyBmdW5jdGlvbihidWYsIGVuYykgeyByZXR1cm4gKGVuYykgPyBuZXcgQnVmZmVyKGJ1ZiwgZW5jKSA6IG5ldyBCdWZmZXIoYnVmKTsgfSA6IEJ1ZmZlci5mcm9tLmJpbmQoQnVmZmVyKTtcblx0fVxuXHRyZXR1cm4gZnVuY3Rpb24oKSB7fTtcbn0pKCk7XG5cblxuZnVuY3Rpb24gbmV3X3Jhd19idWYobGVuLyo6bnVtYmVyKi8pIHtcblx0LyoganNoaW50IC1XMDU2ICovXG5cdGlmKGhhc19idWYpIHJldHVybiBCdWZmZXIuYWxsb2MgPyBCdWZmZXIuYWxsb2MobGVuKSA6IG5ldyBCdWZmZXIobGVuKTtcblx0cmV0dXJuIHR5cGVvZiBVaW50OEFycmF5ICE9IFwidW5kZWZpbmVkXCIgPyBuZXcgVWludDhBcnJheShsZW4pIDogbmV3IEFycmF5KGxlbik7XG5cdC8qIGpzaGludCArVzA1NiAqL1xufVxuXG5mdW5jdGlvbiBuZXdfdW5zYWZlX2J1ZihsZW4vKjpudW1iZXIqLykge1xuXHQvKiBqc2hpbnQgLVcwNTYgKi9cblx0aWYoaGFzX2J1ZikgcmV0dXJuIEJ1ZmZlci5hbGxvY1Vuc2FmZSA/IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW4pIDogbmV3IEJ1ZmZlcihsZW4pO1xuXHRyZXR1cm4gdHlwZW9mIFVpbnQ4QXJyYXkgIT0gXCJ1bmRlZmluZWRcIiA/IG5ldyBVaW50OEFycmF5KGxlbikgOiBuZXcgQXJyYXkobGVuKTtcblx0LyoganNoaW50ICtXMDU2ICovXG59XG5cbnZhciBzMmEgPSBmdW5jdGlvbiBzMmEocy8qOnN0cmluZyovKS8qOmFueSovIHtcblx0aWYoaGFzX2J1ZikgcmV0dXJuIEJ1ZmZlcl9mcm9tKHMsIFwiYmluYXJ5XCIpO1xuXHRyZXR1cm4gcy5zcGxpdChcIlwiKS5tYXAoZnVuY3Rpb24oeC8qOnN0cmluZyovKS8qOm51bWJlcioveyByZXR1cm4geC5jaGFyQ29kZUF0KDApICYgMHhmZjsgfSk7XG59O1xuXG5mdW5jdGlvbiBzMmFiKHMvKjpzdHJpbmcqLykvKjphbnkqLyB7XG5cdGlmKHR5cGVvZiBBcnJheUJ1ZmZlciA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybiBzMmEocyk7XG5cdHZhciBidWYgPSBuZXcgQXJyYXlCdWZmZXIocy5sZW5ndGgpLCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmKTtcblx0Zm9yICh2YXIgaT0wOyBpIT1zLmxlbmd0aDsgKytpKSB2aWV3W2ldID0gcy5jaGFyQ29kZUF0KGkpICYgMHhGRjtcblx0cmV0dXJuIGJ1Zjtcbn1cblxuZnVuY3Rpb24gYTJzKGRhdGEvKjphbnkqLykvKjpzdHJpbmcqLyB7XG5cdGlmKEFycmF5LmlzQXJyYXkoZGF0YSkpIHJldHVybiBkYXRhLm1hcChmdW5jdGlvbihjKSB7IHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpOyB9KS5qb2luKFwiXCIpO1xuXHR2YXIgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdOyBmb3IodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSkgb1tpXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoZGF0YVtpXSk7IHJldHVybiBvLmpvaW4oXCJcIik7XG59XG5cbmZ1bmN0aW9uIGEydShkYXRhLyo6QXJyYXk8bnVtYmVyPiovKS8qOlVpbnQ4QXJyYXkqLyB7XG5cdGlmKHR5cGVvZiBVaW50OEFycmF5ID09PSAndW5kZWZpbmVkJykgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWRcIik7XG5cdHJldHVybiBuZXcgVWludDhBcnJheShkYXRhKTtcbn1cblxuZnVuY3Rpb24gYWIyYShkYXRhLyo6QXJyYXlCdWZmZXJ8VWludDhBcnJheSovKS8qOkFycmF5PG51bWJlcj4qLyB7XG5cdGlmKHR5cGVvZiBBcnJheUJ1ZmZlciA9PSAndW5kZWZpbmVkJykgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWRcIik7XG5cdGlmKGRhdGEgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikgcmV0dXJuIGFiMmEobmV3IFVpbnQ4QXJyYXkoZGF0YSkpO1xuXHQvKjo6IGlmKGRhdGEgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikgdGhyb3cgbmV3IEVycm9yKFwidW5yZWFjaGFibGVcIik7ICovXG5cdHZhciBvID0gbmV3IEFycmF5KGRhdGEubGVuZ3RoKTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIG9baV0gPSBkYXRhW2ldO1xuXHRyZXR1cm4gbztcbn1cblxudmFyIGJjb25jYXQgPSBoYXNfYnVmID8gZnVuY3Rpb24oYnVmcykgeyByZXR1cm4gQnVmZmVyLmNvbmNhdChidWZzLm1hcChmdW5jdGlvbihidWYpIHsgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihidWYpID8gYnVmIDogQnVmZmVyX2Zyb20oYnVmKTsgfSkpOyB9IDogZnVuY3Rpb24oYnVmcykge1xuXHRpZih0eXBlb2YgVWludDhBcnJheSAhPT0gXCJ1bmRlZmluZWRcIikge1xuXHRcdHZhciBpID0gMCwgbWF4bGVuID0gMDtcblx0XHRmb3IoaSA9IDA7IGkgPCBidWZzLmxlbmd0aDsgKytpKSBtYXhsZW4gKz0gYnVmc1tpXS5sZW5ndGg7XG5cdFx0dmFyIG8gPSBuZXcgVWludDhBcnJheShtYXhsZW4pO1xuXHRcdHZhciBsZW4gPSAwO1xuXHRcdGZvcihpID0gMCwgbWF4bGVuID0gMDsgaSA8IGJ1ZnMubGVuZ3RoOyBtYXhsZW4gKz0gbGVuLCArK2kpIHtcblx0XHRcdGxlbiA9IGJ1ZnNbaV0ubGVuZ3RoO1xuXHRcdFx0aWYoYnVmc1tpXSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIG8uc2V0KGJ1ZnNbaV0sIG1heGxlbik7XG5cdFx0XHRlbHNlIGlmKHR5cGVvZiBidWZzW2ldID09IFwic3RyaW5nXCIpIHsgdGhyb3cgXCJ3dGZcIjsgfVxuXHRcdFx0ZWxzZSBvLnNldChuZXcgVWludDhBcnJheShidWZzW2ldKSwgbWF4bGVuKTtcblx0XHR9XG5cdFx0cmV0dXJuIG87XG5cdH1cblx0cmV0dXJuIFtdLmNvbmNhdC5hcHBseShbXSwgYnVmcy5tYXAoZnVuY3Rpb24oYnVmKSB7IHJldHVybiBBcnJheS5pc0FycmF5KGJ1ZikgPyBidWYgOiBbXS5zbGljZS5jYWxsKGJ1Zik7IH0pKTtcbn07XG5cbmZ1bmN0aW9uIHV0ZjhkZWNvZGUoY29udGVudC8qOnN0cmluZyovKSB7XG5cdHZhciBvdXQgPSBbXSwgd2lkeCA9IDAsIEwgPSBjb250ZW50Lmxlbmd0aCArIDI1MDtcblx0dmFyIG8gPSBuZXdfcmF3X2J1Zihjb250ZW50Lmxlbmd0aCArIDI1NSk7XG5cdGZvcih2YXIgcmlkeCA9IDA7IHJpZHggPCBjb250ZW50Lmxlbmd0aDsgKytyaWR4KSB7XG5cdFx0dmFyIGMgPSBjb250ZW50LmNoYXJDb2RlQXQocmlkeCk7XG5cdFx0aWYoYyA8IDB4ODApIG9bd2lkeCsrXSA9IGM7XG5cdFx0ZWxzZSBpZihjIDwgMHg4MDApIHtcblx0XHRcdG9bd2lkeCsrXSA9ICgxOTJ8KChjPj42KSYzMSkpO1xuXHRcdFx0b1t3aWR4KytdID0gKDEyOHwoYyY2MykpO1xuXHRcdH0gZWxzZSBpZihjID49IDB4RDgwMCAmJiBjIDwgMHhFMDAwKSB7XG5cdFx0XHRjID0gKGMmMTAyMykrNjQ7XG5cdFx0XHR2YXIgZCA9IGNvbnRlbnQuY2hhckNvZGVBdCgrK3JpZHgpJjEwMjM7XG5cdFx0XHRvW3dpZHgrK10gPSAoMjQwfCgoYz4+OCkmNykpO1xuXHRcdFx0b1t3aWR4KytdID0gKDEyOHwoKGM+PjIpJjYzKSk7XG5cdFx0XHRvW3dpZHgrK10gPSAoMTI4fCgoZD4+NikmMTUpfCgoYyYzKTw8NCkpO1xuXHRcdFx0b1t3aWR4KytdID0gKDEyOHwoZCY2MykpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvW3dpZHgrK10gPSAoMjI0fCgoYz4+MTIpJjE1KSk7XG5cdFx0XHRvW3dpZHgrK10gPSAoMTI4fCgoYz4+NikmNjMpKTtcblx0XHRcdG9bd2lkeCsrXSA9ICgxMjh8KGMmNjMpKTtcblx0XHR9XG5cdFx0aWYod2lkeCA+IEwpIHtcblx0XHRcdG91dC5wdXNoKG8uc2xpY2UoMCwgd2lkeCkpO1xuXHRcdFx0d2lkeCA9IDA7XG5cdFx0XHRvID0gbmV3X3Jhd19idWYoNjU1MzUpO1xuXHRcdFx0TCA9IDY1NTMwO1xuXHRcdH1cblx0fVxuXHRvdXQucHVzaChvLnNsaWNlKDAsIHdpZHgpKTtcblx0cmV0dXJuIGJjb25jYXQob3V0KTtcbn1cblxudmFyIGNocjAgPSAvXFx1MDAwMC9nLCBjaHIxID0gL1tcXHUwMDAxLVxcdTAwMDZdL2c7XG4vKjo6XG5kZWNsYXJlIHR5cGUgQmxvY2sgPSBhbnk7XG5kZWNsYXJlIHR5cGUgQnVmQXJyYXkgPSB7XG5cdG5ld2JsayhzejpudW1iZXIpOkJsb2NrO1xuXHRuZXh0KHN6Om51bWJlcik6QmxvY2s7XG5cdGVuZCgpOmFueTtcblx0cHVzaChidWY6QmxvY2spOnZvaWQ7XG59O1xuXG50eXBlIFJlY29yZEhvcHBlckNCID0geyhkOmFueSwgUm46c3RyaW5nLCBSVDpudW1iZXIpOj9ib29sZWFuO307XG5cbnR5cGUgRXZlcnRUeXBlID0ge1tzdHJpbmddOnN0cmluZ307XG50eXBlIEV2ZXJ0TnVtVHlwZSA9IHtbc3RyaW5nXTpudW1iZXJ9O1xudHlwZSBFdmVydEFyclR5cGUgPSB7W3N0cmluZ106QXJyYXk8c3RyaW5nPn07XG5cbnR5cGUgU3RyaW5nQ29udiA9IHsoc3RyaW5nKTpzdHJpbmd9O1xuXG4qL1xuLyogc3NmLmpzIChDKSAyMDEzLXByZXNlbnQgU2hlZXRKUyAtLSBodHRwOi8vc2hlZXRqcy5jb20gKi9cbi8qanNoaW50IC1XMDQxICovXG5mdW5jdGlvbiBfc3RycmV2KHgvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7IHZhciBvID0gXCJcIiwgaSA9IHgubGVuZ3RoLTE7IHdoaWxlKGk+PTApIG8gKz0geC5jaGFyQXQoaS0tKTsgcmV0dXJuIG87IH1cbmZ1bmN0aW9uIHBhZDAodi8qOmFueSovLGQvKjpudW1iZXIqLykvKjpzdHJpbmcqL3t2YXIgdD1cIlwiK3Y7IHJldHVybiB0Lmxlbmd0aD49ZD90OmZpbGwoJzAnLGQtdC5sZW5ndGgpK3Q7fVxuZnVuY3Rpb24gcGFkXyh2Lyo6YW55Ki8sZC8qOm51bWJlciovKS8qOnN0cmluZyove3ZhciB0PVwiXCIrdjtyZXR1cm4gdC5sZW5ndGg+PWQ/dDpmaWxsKCcgJyxkLXQubGVuZ3RoKSt0O31cbmZ1bmN0aW9uIHJwYWRfKHYvKjphbnkqLyxkLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi97dmFyIHQ9XCJcIit2OyByZXR1cm4gdC5sZW5ndGg+PWQ/dDp0K2ZpbGwoJyAnLGQtdC5sZW5ndGgpO31cbmZ1bmN0aW9uIHBhZDByMSh2Lyo6YW55Ki8sZC8qOm51bWJlciovKS8qOnN0cmluZyove3ZhciB0PVwiXCIrTWF0aC5yb3VuZCh2KTsgcmV0dXJuIHQubGVuZ3RoPj1kP3Q6ZmlsbCgnMCcsZC10Lmxlbmd0aCkrdDt9XG5mdW5jdGlvbiBwYWQwcjIodi8qOmFueSovLGQvKjpudW1iZXIqLykvKjpzdHJpbmcqL3t2YXIgdD1cIlwiK3Y7IHJldHVybiB0Lmxlbmd0aD49ZD90OmZpbGwoJzAnLGQtdC5sZW5ndGgpK3Q7fVxudmFyIHAyXzMyID0gLyojX19QVVJFX18qL01hdGgucG93KDIsMzIpO1xuZnVuY3Rpb24gcGFkMHIodi8qOmFueSovLGQvKjpudW1iZXIqLykvKjpzdHJpbmcqL3tpZih2PnAyXzMyfHx2PC1wMl8zMikgcmV0dXJuIHBhZDByMSh2LGQpOyB2YXIgaSA9IE1hdGgucm91bmQodik7IHJldHVybiBwYWQwcjIoaSxkKTsgfVxuLyogeWVzLCBpbiAyMDIyIHRoaXMgaXMgc3RpbGwgZmFzdGVyIHRoYW4gc3RyaW5nIGNvbXBhcmUgKi9cbmZ1bmN0aW9uIFNTRl9pc2dlbmVyYWwocy8qOnN0cmluZyovLCBpLyo6P251bWJlciovKS8qOmJvb2xlYW4qLyB7IGkgPSBpIHx8IDA7IHJldHVybiBzLmxlbmd0aCA+PSA3ICsgaSAmJiAocy5jaGFyQ29kZUF0KGkpfDMyKSA9PT0gMTAzICYmIChzLmNoYXJDb2RlQXQoaSsxKXwzMikgPT09IDEwMSAmJiAocy5jaGFyQ29kZUF0KGkrMil8MzIpID09PSAxMTAgJiYgKHMuY2hhckNvZGVBdChpKzMpfDMyKSA9PT0gMTAxICYmIChzLmNoYXJDb2RlQXQoaSs0KXwzMikgPT09IDExNCAmJiAocy5jaGFyQ29kZUF0KGkrNSl8MzIpID09PSA5NyAmJiAocy5jaGFyQ29kZUF0KGkrNil8MzIpID09PSAxMDg7IH1cbnZhciBkYXlzLyo6QXJyYXk8QXJyYXk8c3RyaW5nPiA+Ki8gPSBbXG5cdFsnU3VuJywgJ1N1bmRheSddLFxuXHRbJ01vbicsICdNb25kYXknXSxcblx0WydUdWUnLCAnVHVlc2RheSddLFxuXHRbJ1dlZCcsICdXZWRuZXNkYXknXSxcblx0WydUaHUnLCAnVGh1cnNkYXknXSxcblx0WydGcmknLCAnRnJpZGF5J10sXG5cdFsnU2F0JywgJ1NhdHVyZGF5J11cbl07XG52YXIgbW9udGhzLyo6QXJyYXk8QXJyYXk8c3RyaW5nPiA+Ki8gPSBbXG5cdFsnSicsICdKYW4nLCAnSmFudWFyeSddLFxuXHRbJ0YnLCAnRmViJywgJ0ZlYnJ1YXJ5J10sXG5cdFsnTScsICdNYXInLCAnTWFyY2gnXSxcblx0WydBJywgJ0FwcicsICdBcHJpbCddLFxuXHRbJ00nLCAnTWF5JywgJ01heSddLFxuXHRbJ0onLCAnSnVuJywgJ0p1bmUnXSxcblx0WydKJywgJ0p1bCcsICdKdWx5J10sXG5cdFsnQScsICdBdWcnLCAnQXVndXN0J10sXG5cdFsnUycsICdTZXAnLCAnU2VwdGVtYmVyJ10sXG5cdFsnTycsICdPY3QnLCAnT2N0b2JlciddLFxuXHRbJ04nLCAnTm92JywgJ05vdmVtYmVyJ10sXG5cdFsnRCcsICdEZWMnLCAnRGVjZW1iZXInXVxuXTtcbmZ1bmN0aW9uIFNTRl9pbml0X3RhYmxlKHQvKjphbnkqLykge1xuXHRpZighdCkgdCA9IHt9O1xuXHR0WzBdPSAgJ0dlbmVyYWwnO1xuXHR0WzFdPSAgJzAnO1xuXHR0WzJdPSAgJzAuMDAnO1xuXHR0WzNdPSAgJyMsIyMwJztcblx0dFs0XT0gICcjLCMjMC4wMCc7XG5cdHRbOV09ICAnMCUnO1xuXHR0WzEwXT0gJzAuMDAlJztcblx0dFsxMV09ICcwLjAwRSswMCc7XG5cdHRbMTJdPSAnIyA/Lz8nO1xuXHR0WzEzXT0gJyMgPz8vPz8nO1xuXHR0WzE0XT0gJ20vZC95eSc7XG5cdHRbMTVdPSAnZC1tbW0teXknO1xuXHR0WzE2XT0gJ2QtbW1tJztcblx0dFsxN109ICdtbW0teXknO1xuXHR0WzE4XT0gJ2g6bW0gQU0vUE0nO1xuXHR0WzE5XT0gJ2g6bW06c3MgQU0vUE0nO1xuXHR0WzIwXT0gJ2g6bW0nO1xuXHR0WzIxXT0gJ2g6bW06c3MnO1xuXHR0WzIyXT0gJ20vZC95eSBoOm1tJztcblx0dFszN109ICcjLCMjMCA7KCMsIyMwKSc7XG5cdHRbMzhdPSAnIywjIzAgO1tSZWRdKCMsIyMwKSc7XG5cdHRbMzldPSAnIywjIzAuMDA7KCMsIyMwLjAwKSc7XG5cdHRbNDBdPSAnIywjIzAuMDA7W1JlZF0oIywjIzAuMDApJztcblx0dFs0NV09ICdtbTpzcyc7XG5cdHRbNDZdPSAnW2hdOm1tOnNzJztcblx0dFs0N109ICdtbXNzLjAnO1xuXHR0WzQ4XT0gJyMjMC4wRSswJztcblx0dFs0OV09ICdAJztcblx0dFs1Nl09ICdcIuS4iuWNiC/kuIvljYggXCJoaFwi5pmCXCJtbVwi5YiGXCJzc1wi56eSIFwiJztcblx0cmV0dXJuIHQ7XG59XG4vKiByZXBlYXRlZCB0byBzYXRpYXRlIHdlYnBhY2sgKi9cbnZhciB0YWJsZV9mbXQgPSB7XG5cdDA6ICAnR2VuZXJhbCcsXG5cdDE6ICAnMCcsXG5cdDI6ICAnMC4wMCcsXG5cdDM6ICAnIywjIzAnLFxuXHQ0OiAgJyMsIyMwLjAwJyxcblx0OTogICcwJScsXG5cdDEwOiAnMC4wMCUnLFxuXHQxMTogJzAuMDBFKzAwJyxcblx0MTI6ICcjID8vPycsXG5cdDEzOiAnIyA/Py8/PycsXG5cdDE0OiAnbS9kL3l5Jyxcblx0MTU6ICdkLW1tbS15eScsXG5cdDE2OiAnZC1tbW0nLFxuXHQxNzogJ21tbS15eScsXG5cdDE4OiAnaDptbSBBTS9QTScsXG5cdDE5OiAnaDptbTpzcyBBTS9QTScsXG5cdDIwOiAnaDptbScsXG5cdDIxOiAnaDptbTpzcycsXG5cdDIyOiAnbS9kL3l5IGg6bW0nLFxuXHQzNzogJyMsIyMwIDsoIywjIzApJyxcblx0Mzg6ICcjLCMjMCA7W1JlZF0oIywjIzApJyxcblx0Mzk6ICcjLCMjMC4wMDsoIywjIzAuMDApJyxcblx0NDA6ICcjLCMjMC4wMDtbUmVkXSgjLCMjMC4wMCknLFxuXHQ0NTogJ21tOnNzJyxcblx0NDY6ICdbaF06bW06c3MnLFxuXHQ0NzogJ21tc3MuMCcsXG5cdDQ4OiAnIyMwLjBFKzAnLFxuXHQ0OTogJ0AnLFxuXHQ1NjogJ1wi5LiK5Y2IL+S4i+WNiCBcImhoXCLmmYJcIm1tXCLliIZcInNzXCLnp5IgXCInXG59O1xuXG4vKiBEZWZhdWx0cyBkZXRlcm1pbmVkIGJ5IHN5c3RlbWF0aWNhbGx5IHRlc3RpbmcgaW4gRXhjZWwgMjAxOSAqL1xuXG4vKiBUaGVzZSBmb3JtYXRzIGFwcGVhciB0byBkZWZhdWx0IHRvIG90aGVyIGZvcm1hdHMgaW4gdGhlIHRhYmxlICovXG52YXIgU1NGX2RlZmF1bHRfbWFwID0ge1xuXHQ1OiAgMzcsIDY6ICAzOCwgNzogIDM5LCA4OiAgNDAsICAgICAgICAgLy8gIDUgLT4gMzcgLi4uICA4IC0+IDQwXG5cblx0MjM6ICAwLCAyNDogIDAsIDI1OiAgMCwgMjY6ICAwLCAgICAgICAgIC8vIDIzIC0+ICAwIC4uLiAyNiAtPiAgMFxuXG5cdDI3OiAxNCwgMjg6IDE0LCAyOTogMTQsIDMwOiAxNCwgMzE6IDE0LCAvLyAyNyAtPiAxNCAuLi4gMzEgLT4gMTRcblxuXHQ1MDogMTQsIDUxOiAxNCwgNTI6IDE0LCA1MzogMTQsIDU0OiAxNCwgLy8gNTAgLT4gMTQgLi4uIDU4IC0+IDE0XG5cdDU1OiAxNCwgNTY6IDE0LCA1NzogMTQsIDU4OiAxNCxcblx0NTk6ICAxLCA2MDogIDIsIDYxOiAgMywgNjI6ICA0LCAgICAgICAgIC8vIDU5IC0+ICAxIC4uLiA2MiAtPiAgNFxuXG5cdDY3OiAgOSwgNjg6IDEwLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyA2NyAtPiAgOSAuLi4gNjggLT4gMTBcblx0Njk6IDEyLCA3MDogMTMsIDcxOiAxNCwgICAgICAgICAgICAgICAgIC8vIDY5IC0+IDEyIC4uLiA3MSAtPiAxNFxuXHQ3MjogMTQsIDczOiAxNSwgNzQ6IDE2LCA3NTogMTcsICAgICAgICAgLy8gNzIgLT4gMTQgLi4uIDc1IC0+IDE3XG5cdDc2OiAyMCwgNzc6IDIxLCA3ODogMjIsICAgICAgICAgICAgICAgICAvLyA3NiAtPiAyMCAuLi4gNzggLT4gMjJcblx0Nzk6IDQ1LCA4MDogNDYsIDgxOiA0NywgICAgICAgICAgICAgICAgIC8vIDc5IC0+IDQ1IC4uLiA4MSAtPiA0N1xuXHQ4MjogMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gODIgLT4gIDAgLi4uIDY1NTM2IC0+IDAgKG9taXR0ZWQpXG59O1xuXG5cbi8qIFRoZXNlIGZvcm1hdHMgdGVjaG5pY2FsbHkgcmVmZXIgdG8gQWNjb3VudGluZyBmb3JtYXRzIHdpdGggbm8gZXF1aXZhbGVudCAqL1xudmFyIFNTRl9kZWZhdWx0X3N0ciA9IHtcblx0Ly8gIDUgLS0gQ3VycmVuY3ksICAgMCBkZWNpbWFsLCBibGFjayBuZWdhdGl2ZVxuXHQ1OiAgJ1wiJFwiIywjIzBfKTtcXFxcKFwiJFwiIywjIzBcXFxcKScsXG5cdDYzOiAnXCIkXCIjLCMjMF8pO1xcXFwoXCIkXCIjLCMjMFxcXFwpJyxcblxuXHQvLyAgNiAtLSBDdXJyZW5jeSwgICAwIGRlY2ltYWwsIHJlZCAgIG5lZ2F0aXZlXG5cdDY6ICAnXCIkXCIjLCMjMF8pO1tSZWRdXFxcXChcIiRcIiMsIyMwXFxcXCknLFxuXHQ2NDogJ1wiJFwiIywjIzBfKTtbUmVkXVxcXFwoXCIkXCIjLCMjMFxcXFwpJyxcblxuXHQvLyAgNyAtLSBDdXJyZW5jeSwgICAyIGRlY2ltYWwsIGJsYWNrIG5lZ2F0aXZlXG5cdDc6ICAnXCIkXCIjLCMjMC4wMF8pO1xcXFwoXCIkXCIjLCMjMC4wMFxcXFwpJyxcblx0NjU6ICdcIiRcIiMsIyMwLjAwXyk7XFxcXChcIiRcIiMsIyMwLjAwXFxcXCknLFxuXG5cdC8vICA4IC0tIEN1cnJlbmN5LCAgIDIgZGVjaW1hbCwgcmVkICAgbmVnYXRpdmVcblx0ODogICdcIiRcIiMsIyMwLjAwXyk7W1JlZF1cXFxcKFwiJFwiIywjIzAuMDBcXFxcKScsXG5cdDY2OiAnXCIkXCIjLCMjMC4wMF8pO1tSZWRdXFxcXChcIiRcIiMsIyMwLjAwXFxcXCknLFxuXG5cdC8vIDQxIC0tIEFjY291bnRpbmcsIDAgZGVjaW1hbCwgTm8gU3ltYm9sXG5cdDQxOiAnXygqICMsIyMwXyk7XygqIFxcXFwoIywjIzBcXFxcKTtfKCogXCItXCJfKTtfKEBfKScsXG5cblx0Ly8gNDIgLS0gQWNjb3VudGluZywgMCBkZWNpbWFsLCAkICBTeW1ib2xcblx0NDI6ICdfKFwiJFwiKiAjLCMjMF8pO18oXCIkXCIqIFxcXFwoIywjIzBcXFxcKTtfKFwiJFwiKiBcIi1cIl8pO18oQF8pJyxcblxuXHQvLyA0MyAtLSBBY2NvdW50aW5nLCAyIGRlY2ltYWwsIE5vIFN5bWJvbFxuXHQ0MzogJ18oKiAjLCMjMC4wMF8pO18oKiBcXFxcKCMsIyMwLjAwXFxcXCk7XygqIFwiLVwiPz9fKTtfKEBfKScsXG5cblx0Ly8gNDQgLS0gQWNjb3VudGluZywgMiBkZWNpbWFsLCAkICBTeW1ib2xcblx0NDQ6ICdfKFwiJFwiKiAjLCMjMC4wMF8pO18oXCIkXCIqIFxcXFwoIywjIzAuMDBcXFxcKTtfKFwiJFwiKiBcIi1cIj8/Xyk7XyhAXyknXG59O1xuXG5mdW5jdGlvbiBTU0ZfZnJhYyh4Lyo6bnVtYmVyKi8sIEQvKjpudW1iZXIqLywgbWl4ZWQvKjo/Ym9vbGVhbiovKS8qOkFycmF5PG51bWJlcj4qLyB7XG5cdHZhciBzZ24gPSB4IDwgMCA/IC0xIDogMTtcblx0dmFyIEIgPSB4ICogc2duO1xuXHR2YXIgUF8yID0gMCwgUF8xID0gMSwgUCA9IDA7XG5cdHZhciBRXzIgPSAxLCBRXzEgPSAwLCBRID0gMDtcblx0dmFyIEEgPSBNYXRoLmZsb29yKEIpO1xuXHR3aGlsZShRXzEgPCBEKSB7XG5cdFx0QSA9IE1hdGguZmxvb3IoQik7XG5cdFx0UCA9IEEgKiBQXzEgKyBQXzI7XG5cdFx0USA9IEEgKiBRXzEgKyBRXzI7XG5cdFx0aWYoKEIgLSBBKSA8IDAuMDAwMDAwMDUpIGJyZWFrO1xuXHRcdEIgPSAxIC8gKEIgLSBBKTtcblx0XHRQXzIgPSBQXzE7IFBfMSA9IFA7XG5cdFx0UV8yID0gUV8xOyBRXzEgPSBRO1xuXHR9XG5cdGlmKFEgPiBEKSB7IGlmKFFfMSA+IEQpIHsgUSA9IFFfMjsgUCA9IFBfMjsgfSBlbHNlIHsgUSA9IFFfMTsgUCA9IFBfMTsgfSB9XG5cdGlmKCFtaXhlZCkgcmV0dXJuIFswLCBzZ24gKiBQLCBRXTtcblx0dmFyIHEgPSBNYXRoLmZsb29yKHNnbiAqIFAvUSk7XG5cdHJldHVybiBbcSwgc2duKlAgLSBxKlEsIFFdO1xufVxuZnVuY3Rpb24gU1NGX3BhcnNlX2RhdGVfY29kZSh2Lyo6bnVtYmVyKi8sb3B0cy8qOj9hbnkqLyxiMi8qOj9ib29sZWFuKi8pIHtcblx0aWYodiA+IDI5NTg0NjUgfHwgdiA8IDApIHJldHVybiBudWxsO1xuXHR2YXIgZGF0ZSA9ICh2fDApLCB0aW1lID0gTWF0aC5mbG9vcig4NjQwMCAqICh2IC0gZGF0ZSkpLCBkb3c9MDtcblx0dmFyIGRvdXQ9W107XG5cdHZhciBvdXQ9e0Q6ZGF0ZSwgVDp0aW1lLCB1Ojg2NDAwKih2LWRhdGUpLXRpbWUseTowLG06MCxkOjAsSDowLE06MCxTOjAscTowfTtcblx0aWYoTWF0aC5hYnMob3V0LnUpIDwgMWUtNikgb3V0LnUgPSAwO1xuXHRpZihvcHRzICYmIG9wdHMuZGF0ZTE5MDQpIGRhdGUgKz0gMTQ2Mjtcblx0aWYob3V0LnUgPiAwLjk5OTkpIHtcblx0XHRvdXQudSA9IDA7XG5cdFx0aWYoKyt0aW1lID09IDg2NDAwKSB7IG91dC5UID0gdGltZSA9IDA7ICsrZGF0ZTsgKytvdXQuRDsgfVxuXHR9XG5cdGlmKGRhdGUgPT09IDYwKSB7ZG91dCA9IGIyID8gWzEzMTcsMTAsMjldIDogWzE5MDAsMiwyOV07IGRvdz0zO31cblx0ZWxzZSBpZihkYXRlID09PSAwKSB7ZG91dCA9IGIyID8gWzEzMTcsOCwyOV0gOiBbMTkwMCwxLDBdOyBkb3c9Njt9XG5cdGVsc2Uge1xuXHRcdGlmKGRhdGUgPiA2MCkgLS1kYXRlO1xuXHRcdC8qIDEgPSBKYW4gMSAxOTAwIGluIEdyZWdvcmlhbiAqL1xuXHRcdHZhciBkID0gbmV3IERhdGUoMTkwMCwgMCwgMSk7XG5cdFx0ZC5zZXREYXRlKGQuZ2V0RGF0ZSgpICsgZGF0ZSAtIDEpO1xuXHRcdGRvdXQgPSBbZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCkrMSxkLmdldERhdGUoKV07XG5cdFx0ZG93ID0gZC5nZXREYXkoKTtcblx0XHRpZihkYXRlIDwgNjApIGRvdyA9IChkb3cgKyA2KSAlIDc7XG5cdFx0aWYoYjIpIGRvdyA9IFNTRl9maXhfaGlqcmkoZCwgZG91dCk7XG5cdH1cblx0b3V0LnkgPSBkb3V0WzBdOyBvdXQubSA9IGRvdXRbMV07IG91dC5kID0gZG91dFsyXTtcblx0b3V0LlMgPSB0aW1lICUgNjA7IHRpbWUgPSBNYXRoLmZsb29yKHRpbWUgLyA2MCk7XG5cdG91dC5NID0gdGltZSAlIDYwOyB0aW1lID0gTWF0aC5mbG9vcih0aW1lIC8gNjApO1xuXHRvdXQuSCA9IHRpbWU7XG5cdG91dC5xID0gZG93O1xuXHRyZXR1cm4gb3V0O1xufVxudmFyIFNTRmJhc2VkYXRlID0gLyojX19QVVJFX18qL25ldyBEYXRlKDE4OTksIDExLCAzMSwgMCwgMCwgMCk7XG52YXIgU1NGZG50aHJlc2ggPSAvKiNfX1BVUkVfXyovU1NGYmFzZWRhdGUuZ2V0VGltZSgpO1xudmFyIFNTRmJhc2UxOTA0ID0gLyojX19QVVJFX18qL25ldyBEYXRlKDE5MDAsIDIsIDEsIDAsIDAsIDApO1xuZnVuY3Rpb24gZGF0ZW51bV9sb2NhbCh2Lyo6RGF0ZSovLCBkYXRlMTkwNC8qOj9ib29sZWFuKi8pLyo6bnVtYmVyKi8ge1xuXHR2YXIgZXBvY2ggPSAvKiNfX1BVUkVfXyovdi5nZXRUaW1lKCk7XG5cdGlmKGRhdGUxOTA0KSBlcG9jaCAtPSAxNDYxKjI0KjYwKjYwKjEwMDA7XG5cdGVsc2UgaWYodiA+PSBTU0ZiYXNlMTkwNCkgZXBvY2ggKz0gMjQqNjAqNjAqMTAwMDtcblx0cmV0dXJuIChlcG9jaCAtIChTU0ZkbnRocmVzaCArICgvKiNfX1BVUkVfXyovdi5nZXRUaW1lem9uZU9mZnNldCgpIC0gLyojX19QVVJFX18qL1NTRmJhc2VkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkpICogNjAwMDApKSAvICgyNCAqIDYwICogNjAgKiAxMDAwKTtcbn1cbi8qIEVDTUEtMzc2IDE4LjguMzAgbnVtRm10Ki9cbi8qIE5vdGU6IGB0b1ByZWNpc2lvbmAgdXNlcyBzdGFuZGFyZCBmb3JtIHdoZW4gcHJlYyA+IEUgYW5kIEUgPj0gLTYgKi9cbi8qIGV4cG9uZW50ID49IC05IGFuZCA8PSA5ICovXG5mdW5jdGlvbiBTU0Zfc3RyaXBfZGVjaW1hbChvLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHRyZXR1cm4gKG8uaW5kZXhPZihcIi5cIikgPT0gLTEpID8gbyA6IG8ucmVwbGFjZSgvKD86XFwuMCp8KFxcLlxcZCpbMS05XSkwKykkLywgXCIkMVwiKTtcbn1cblxuLyogR2VuZXJhbCBFeHBvbmVudGlhbCBhbHdheXMgc2hvd3MgMiBkaWdpdHMgZXhwIGFuZCB0cmltcyB0aGUgbWFudGlzc2EgKi9cbmZ1bmN0aW9uIFNTRl9ub3JtYWxpemVfZXhwKG8vKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdGlmKG8uaW5kZXhPZihcIkVcIikgPT0gLTEpIHJldHVybiBvO1xuXHRyZXR1cm4gby5yZXBsYWNlKC8oPzpcXC4wKnwoXFwuXFxkKlsxLTldKTArKVtFZV0vLFwiJDFFXCIpLnJlcGxhY2UoLyhFWystXSkoXFxkKSQvLFwiJDEwJDJcIik7XG59XG5cbi8qIGV4cG9uZW50ID49IC05IGFuZCA8PSA5ICovXG5mdW5jdGlvbiBTU0Zfc21hbGxfZXhwKHYvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7XG5cdHZhciB3ID0gKHY8MD8xMjoxMSk7XG5cdHZhciBvID0gU1NGX3N0cmlwX2RlY2ltYWwodi50b0ZpeGVkKDEyKSk7IGlmKG8ubGVuZ3RoIDw9IHcpIHJldHVybiBvO1xuXHRvID0gdi50b1ByZWNpc2lvbigxMCk7IGlmKG8ubGVuZ3RoIDw9IHcpIHJldHVybiBvO1xuXHRyZXR1cm4gdi50b0V4cG9uZW50aWFsKDUpO1xufVxuXG4vKiBleHBvbmVudCA+PSAxMSBvciA8PSAtMTAgbGlrZWx5IGV4cG9uZW50aWFsICovXG5mdW5jdGlvbiBTU0ZfbGFyZ2VfZXhwKHYvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvID0gU1NGX3N0cmlwX2RlY2ltYWwodi50b0ZpeGVkKDExKSk7XG5cdHJldHVybiAoby5sZW5ndGggPiAodjwwPzEyOjExKSB8fCBvID09PSBcIjBcIiB8fCBvID09PSBcIi0wXCIpID8gdi50b1ByZWNpc2lvbig2KSA6IG87XG59XG5cbmZ1bmN0aW9uIFNTRl9nZW5lcmFsX251bSh2Lyo6bnVtYmVyKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgViA9IE1hdGguZmxvb3IoTWF0aC5sb2coTWF0aC5hYnModikpKk1hdGguTE9HMTBFKSwgbztcblxuXHRpZihWID49IC00ICYmIFYgPD0gLTEpIG8gPSB2LnRvUHJlY2lzaW9uKDEwK1YpO1xuXHRlbHNlIGlmKE1hdGguYWJzKFYpIDw9IDkpIG8gPSBTU0Zfc21hbGxfZXhwKHYpO1xuXHRlbHNlIGlmKFYgPT09IDEwKSBvID0gdi50b0ZpeGVkKDEwKS5zdWJzdHIoMCwxMik7XG5cdGVsc2UgbyA9IFNTRl9sYXJnZV9leHAodik7XG5cblx0cmV0dXJuIFNTRl9zdHJpcF9kZWNpbWFsKFNTRl9ub3JtYWxpemVfZXhwKG8udG9VcHBlckNhc2UoKSkpO1xufVxuXG5cbi8qXG5cdFwiR2VuZXJhbFwiIHJ1bGVzOlxuXHQtIHRleHQgaXMgcGFzc2VkIHRocm91Z2ggKFwiQFwiKVxuXHQtIGJvb2xlYW5zIGFyZSByZW5kZXJlZCBhcyBUUlVFL0ZBTFNFXG5cdC0gXCJ1cCB0byAxMSBjaGFyYWN0ZXJzXCIgZGlzcGxheWVkIGZvciBudW1iZXJzXG5cdC0gRGVmYXVsdCBkYXRlIGZvcm1hdCAoY29kZSAxNCkgdXNlZCBmb3IgRGF0ZXNcblxuXHRUaGUgbG9uZ2VzdCAzMi1iaXQgaW50ZWdlciB0ZXh0IGlzIFwiLTIxNDc0ODM2NDhcIiwgZXhhY3RseSAxMSBjaGFyc1xuXHRUT0RPOiB0ZWNobmljYWxseSB0aGUgZGlzcGxheSBkZXBlbmRzIG9uIHRoZSB3aWR0aCBvZiB0aGUgY2VsbFxuKi9cbmZ1bmN0aW9uIFNTRl9nZW5lcmFsKHYvKjphbnkqLywgb3B0cy8qOmFueSovKSB7XG5cdHN3aXRjaCh0eXBlb2Ygdikge1xuXHRcdGNhc2UgJ3N0cmluZyc6IHJldHVybiB2O1xuXHRcdGNhc2UgJ2Jvb2xlYW4nOiByZXR1cm4gdiA/IFwiVFJVRVwiIDogXCJGQUxTRVwiO1xuXHRcdGNhc2UgJ251bWJlcic6IHJldHVybiAodnwwKSA9PT0gdiA/IHYudG9TdHJpbmcoMTApIDogU1NGX2dlbmVyYWxfbnVtKHYpO1xuXHRcdGNhc2UgJ3VuZGVmaW5lZCc6IHJldHVybiBcIlwiO1xuXHRcdGNhc2UgJ29iamVjdCc6XG5cdFx0XHRpZih2ID09IG51bGwpIHJldHVybiBcIlwiO1xuXHRcdFx0aWYodiBpbnN0YW5jZW9mIERhdGUpIHJldHVybiBTU0ZfZm9ybWF0KDE0LCBkYXRlbnVtX2xvY2FsKHYsIG9wdHMgJiYgb3B0cy5kYXRlMTkwNCksIG9wdHMpO1xuXHR9XG5cdHRocm93IG5ldyBFcnJvcihcInVuc3VwcG9ydGVkIHZhbHVlIGluIEdlbmVyYWwgZm9ybWF0OiBcIiArIHYpO1xufVxuXG5mdW5jdGlvbiBTU0ZfZml4X2hpanJpKGRhdGUvKjpEYXRlKi8sIG8vKjpbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0qLykge1xuICAvKiBUT0RPOiBwcm9wZXJseSBhZGp1c3QgeS9tL2QgYW5kICAqL1xuICBvWzBdIC09IDU4MTtcbiAgdmFyIGRvdyA9IGRhdGUuZ2V0RGF5KCk7XG4gIGlmKGRhdGUgPCA2MCkgZG93ID0gKGRvdyArIDYpICUgNztcbiAgcmV0dXJuIGRvdztcbn1cbi8vdmFyIFRIQUlfRElHSVRTID0gXCJcXHUwRTUwXFx1MEU1MVxcdTBFNTJcXHUwRTUzXFx1MEU1NFxcdTBFNTVcXHUwRTU2XFx1MEU1N1xcdTBFNThcXHUwRTU5XCIuc3BsaXQoXCJcIik7XG5mdW5jdGlvbiBTU0Zfd3JpdGVfZGF0ZSh0eXBlLyo6bnVtYmVyKi8sIGZtdC8qOnN0cmluZyovLCB2YWwsIHNzMC8qOj9udW1iZXIqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvPVwiXCIsIHNzPTAsIHR0PTAsIHkgPSB2YWwueSwgb3V0LCBvdXRsID0gMDtcblx0c3dpdGNoKHR5cGUpIHtcblx0XHRjYXNlIDk4OiAvKiAnYicgYnVkZGhpc3QgeWVhciAqL1xuXHRcdFx0eSA9IHZhbC55ICsgNTQzO1xuXHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdGNhc2UgMTIxOiAvKiAneScgeWVhciAqL1xuXHRcdHN3aXRjaChmbXQubGVuZ3RoKSB7XG5cdFx0XHRjYXNlIDE6IGNhc2UgMjogb3V0ID0geSAlIDEwMDsgb3V0bCA9IDI7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogb3V0ID0geSAlIDEwMDAwOyBvdXRsID0gNDsgYnJlYWs7XG5cdFx0fSBicmVhaztcblx0XHRjYXNlIDEwOTogLyogJ20nIG1vbnRoICovXG5cdFx0c3dpdGNoKGZtdC5sZW5ndGgpIHtcblx0XHRcdGNhc2UgMTogY2FzZSAyOiBvdXQgPSB2YWwubTsgb3V0bCA9IGZtdC5sZW5ndGg7IGJyZWFrO1xuXHRcdFx0Y2FzZSAzOiByZXR1cm4gbW9udGhzW3ZhbC5tLTFdWzFdO1xuXHRcdFx0Y2FzZSA1OiByZXR1cm4gbW9udGhzW3ZhbC5tLTFdWzBdO1xuXHRcdFx0ZGVmYXVsdDogcmV0dXJuIG1vbnRoc1t2YWwubS0xXVsyXTtcblx0XHR9IGJyZWFrO1xuXHRcdGNhc2UgMTAwOiAvKiAnZCcgZGF5ICovXG5cdFx0c3dpdGNoKGZtdC5sZW5ndGgpIHtcblx0XHRcdGNhc2UgMTogY2FzZSAyOiBvdXQgPSB2YWwuZDsgb3V0bCA9IGZtdC5sZW5ndGg7IGJyZWFrO1xuXHRcdFx0Y2FzZSAzOiByZXR1cm4gZGF5c1t2YWwucV1bMF07XG5cdFx0XHRkZWZhdWx0OiByZXR1cm4gZGF5c1t2YWwucV1bMV07XG5cdFx0fSBicmVhaztcblx0XHRjYXNlIDEwNDogLyogJ2gnIDEyLWhvdXIgKi9cblx0XHRzd2l0Y2goZm10Lmxlbmd0aCkge1xuXHRcdFx0Y2FzZSAxOiBjYXNlIDI6IG91dCA9IDErKHZhbC5IKzExKSUxMjsgb3V0bCA9IGZtdC5sZW5ndGg7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogdGhyb3cgJ2JhZCBob3VyIGZvcm1hdDogJyArIGZtdDtcblx0XHR9IGJyZWFrO1xuXHRcdGNhc2UgNzI6IC8qICdIJyAyNC1ob3VyICovXG5cdFx0c3dpdGNoKGZtdC5sZW5ndGgpIHtcblx0XHRcdGNhc2UgMTogY2FzZSAyOiBvdXQgPSB2YWwuSDsgb3V0bCA9IGZtdC5sZW5ndGg7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogdGhyb3cgJ2JhZCBob3VyIGZvcm1hdDogJyArIGZtdDtcblx0XHR9IGJyZWFrO1xuXHRcdGNhc2UgNzc6IC8qICdNJyBtaW51dGVzICovXG5cdFx0c3dpdGNoKGZtdC5sZW5ndGgpIHtcblx0XHRcdGNhc2UgMTogY2FzZSAyOiBvdXQgPSB2YWwuTTsgb3V0bCA9IGZtdC5sZW5ndGg7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogdGhyb3cgJ2JhZCBtaW51dGUgZm9ybWF0OiAnICsgZm10O1xuXHRcdH0gYnJlYWs7XG5cdFx0Y2FzZSAxMTU6IC8qICdzJyBzZWNvbmRzICovXG5cdFx0XHRpZihmbXQgIT0gJ3MnICYmIGZtdCAhPSAnc3MnICYmIGZtdCAhPSAnLjAnICYmIGZtdCAhPSAnLjAwJyAmJiBmbXQgIT0gJy4wMDAnKSB0aHJvdyAnYmFkIHNlY29uZCBmb3JtYXQ6ICcgKyBmbXQ7XG5cdFx0XHRpZih2YWwudSA9PT0gMCAmJiAoZm10ID09IFwic1wiIHx8IGZtdCA9PSBcInNzXCIpKSByZXR1cm4gcGFkMCh2YWwuUywgZm10Lmxlbmd0aCk7XG5cdFx0XHQvKjo6aWYoIXNzMCkgc3MwID0gMDsgKi9cblx0XHRcdGlmKHNzMCA+PSAyKSB0dCA9IHNzMCA9PT0gMyA/IDEwMDAgOiAxMDA7XG5cdFx0XHRlbHNlIHR0ID0gc3MwID09PSAxID8gMTAgOiAxO1xuXHRcdFx0c3MgPSBNYXRoLnJvdW5kKCh0dCkqKHZhbC5TICsgdmFsLnUpKTtcblx0XHRcdGlmKHNzID49IDYwKnR0KSBzcyA9IDA7XG5cdFx0XHRpZihmbXQgPT09ICdzJykgcmV0dXJuIHNzID09PSAwID8gXCIwXCIgOiBcIlwiK3NzL3R0O1xuXHRcdFx0byA9IHBhZDAoc3MsMiArIHNzMCk7XG5cdFx0XHRpZihmbXQgPT09ICdzcycpIHJldHVybiBvLnN1YnN0cigwLDIpO1xuXHRcdFx0cmV0dXJuIFwiLlwiICsgby5zdWJzdHIoMixmbXQubGVuZ3RoLTEpO1xuXHRcdGNhc2UgOTA6IC8qICdaJyBhYnNvbHV0ZSB0aW1lICovXG5cdFx0c3dpdGNoKGZtdCkge1xuXHRcdFx0Y2FzZSAnW2hdJzogY2FzZSAnW2hoXSc6IG91dCA9IHZhbC5EKjI0K3ZhbC5IOyBicmVhaztcblx0XHRcdGNhc2UgJ1ttXSc6IGNhc2UgJ1ttbV0nOiBvdXQgPSAodmFsLkQqMjQrdmFsLkgpKjYwK3ZhbC5NOyBicmVhaztcblx0XHRcdGNhc2UgJ1tzXSc6IGNhc2UgJ1tzc10nOiBvdXQgPSAoKHZhbC5EKjI0K3ZhbC5IKSo2MCt2YWwuTSkqNjArTWF0aC5yb3VuZCh2YWwuUyt2YWwudSk7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogdGhyb3cgJ2JhZCBhYnN0aW1lIGZvcm1hdDogJyArIGZtdDtcblx0XHR9IG91dGwgPSBmbXQubGVuZ3RoID09PSAzID8gMSA6IDI7IGJyZWFrO1xuXHRcdGNhc2UgMTAxOiAvKiAnZScgZXJhICovXG5cdFx0XHRvdXQgPSB5OyBvdXRsID0gMTsgYnJlYWs7XG5cdH1cblx0dmFyIG91dHN0ciA9IG91dGwgPiAwID8gcGFkMChvdXQsIG91dGwpIDogXCJcIjtcblx0cmV0dXJuIG91dHN0cjtcbn1cblxuXG4vKmpzaGludCAtVzA4NiAqL1xuLypqc2hpbnQgK1cwODYgKi9cbmZ1bmN0aW9uIGNvbW1haWZ5KHMvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdHZhciB3ID0gMztcblx0aWYocy5sZW5ndGggPD0gdykgcmV0dXJuIHM7XG5cdHZhciBqID0gKHMubGVuZ3RoICUgdyksIG8gPSBzLnN1YnN0cigwLGopO1xuXHRmb3IoOyBqIT1zLmxlbmd0aDsgais9dykgbys9KG8ubGVuZ3RoID4gMCA/IFwiLFwiIDogXCJcIikgKyBzLnN1YnN0cihqLHcpO1xuXHRyZXR1cm4gbztcbn1cbnZhciBwY3QxID0gLyUvZztcbmZ1bmN0aW9uIHdyaXRlX251bV9wY3QodHlwZS8qOnN0cmluZyovLCBmbXQvKjpzdHJpbmcqLywgdmFsLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi97XG5cdHZhciBzZm10ID0gZm10LnJlcGxhY2UocGN0MSxcIlwiKSwgbXVsID0gZm10Lmxlbmd0aCAtIHNmbXQubGVuZ3RoO1xuXHRyZXR1cm4gd3JpdGVfbnVtKHR5cGUsIHNmbXQsIHZhbCAqIE1hdGgucG93KDEwLDIqbXVsKSkgKyBmaWxsKFwiJVwiLG11bCk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX251bV9jbSh0eXBlLyo6c3RyaW5nKi8sIGZtdC8qOnN0cmluZyovLCB2YWwvKjpudW1iZXIqLykvKjpzdHJpbmcqL3tcblx0dmFyIGlkeCA9IGZtdC5sZW5ndGggLSAxO1xuXHR3aGlsZShmbXQuY2hhckNvZGVBdChpZHgtMSkgPT09IDQ0KSAtLWlkeDtcblx0cmV0dXJuIHdyaXRlX251bSh0eXBlLCBmbXQuc3Vic3RyKDAsaWR4KSwgdmFsIC8gTWF0aC5wb3coMTAsMyooZm10Lmxlbmd0aC1pZHgpKSk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX251bV9leHAoZm10Lyo6c3RyaW5nKi8sIHZhbC8qOm51bWJlciovKS8qOnN0cmluZyove1xuXHR2YXIgby8qOnN0cmluZyovO1xuXHR2YXIgaWR4ID0gZm10LmluZGV4T2YoXCJFXCIpIC0gZm10LmluZGV4T2YoXCIuXCIpIC0gMTtcblx0aWYoZm10Lm1hdGNoKC9eIyswLjBFXFwrMCQvKSkge1xuXHRcdGlmKHZhbCA9PSAwKSByZXR1cm4gXCIwLjBFKzBcIjtcblx0XHRlbHNlIGlmKHZhbCA8IDApIHJldHVybiBcIi1cIiArIHdyaXRlX251bV9leHAoZm10LCAtdmFsKTtcblx0XHR2YXIgcGVyaW9kID0gZm10LmluZGV4T2YoXCIuXCIpOyBpZihwZXJpb2QgPT09IC0xKSBwZXJpb2Q9Zm10LmluZGV4T2YoJ0UnKTtcblx0XHR2YXIgZWUgPSBNYXRoLmZsb29yKE1hdGgubG9nKHZhbCkqTWF0aC5MT0cxMEUpJXBlcmlvZDtcblx0XHRpZihlZSA8IDApIGVlICs9IHBlcmlvZDtcblx0XHRvID0gKHZhbC9NYXRoLnBvdygxMCxlZSkpLnRvUHJlY2lzaW9uKGlkeCsxKyhwZXJpb2QrZWUpJXBlcmlvZCk7XG5cdFx0aWYoby5pbmRleE9mKFwiZVwiKSA9PT0gLTEpIHtcblx0XHRcdHZhciBmYWtlZSA9IE1hdGguZmxvb3IoTWF0aC5sb2codmFsKSpNYXRoLkxPRzEwRSk7XG5cdFx0XHRpZihvLmluZGV4T2YoXCIuXCIpID09PSAtMSkgbyA9IG8uY2hhckF0KDApICsgXCIuXCIgKyBvLnN1YnN0cigxKSArIFwiRStcIiArIChmYWtlZSAtIG8ubGVuZ3RoK2VlKTtcblx0XHRcdGVsc2UgbyArPSBcIkUrXCIgKyAoZmFrZWUgLSBlZSk7XG5cdFx0XHR3aGlsZShvLnN1YnN0cigwLDIpID09PSBcIjAuXCIpIHtcblx0XHRcdFx0byA9IG8uY2hhckF0KDApICsgby5zdWJzdHIoMixwZXJpb2QpICsgXCIuXCIgKyBvLnN1YnN0cigyK3BlcmlvZCk7XG5cdFx0XHRcdG8gPSBvLnJlcGxhY2UoL14wKyhbMS05XSkvLFwiJDFcIikucmVwbGFjZSgvXjArXFwuLyxcIjAuXCIpO1xuXHRcdFx0fVxuXHRcdFx0byA9IG8ucmVwbGFjZSgvXFwrLS8sXCItXCIpO1xuXHRcdH1cblx0XHRvID0gby5yZXBsYWNlKC9eKFsrLV0/KShcXGQqKVxcLihcXGQqKVtFZV0vLGZ1bmN0aW9uKCQkLCQxLCQyLCQzKSB7IHJldHVybiAkMSArICQyICsgJDMuc3Vic3RyKDAsKHBlcmlvZCtlZSklcGVyaW9kKSArIFwiLlwiICsgJDMuc3Vic3RyKGVlKSArIFwiRVwiOyB9KTtcblx0fSBlbHNlIG8gPSB2YWwudG9FeHBvbmVudGlhbChpZHgpO1xuXHRpZihmbXQubWF0Y2goL0VcXCswMCQvKSAmJiBvLm1hdGNoKC9lWystXVxcZCQvKSkgbyA9IG8uc3Vic3RyKDAsby5sZW5ndGgtMSkgKyBcIjBcIiArIG8uY2hhckF0KG8ubGVuZ3RoLTEpO1xuXHRpZihmbXQubWF0Y2goL0VcXC0vKSAmJiBvLm1hdGNoKC9lXFwrLykpIG8gPSBvLnJlcGxhY2UoL2VcXCsvLFwiZVwiKTtcblx0cmV0dXJuIG8ucmVwbGFjZShcImVcIixcIkVcIik7XG59XG52YXIgZnJhYzEgPSAvIyAoXFw/KykoID8pXFwvKCA/KShcXGQrKS87XG5mdW5jdGlvbiB3cml0ZV9udW1fZjEoci8qOkFycmF5PHN0cmluZz4qLywgYXZhbC8qOm51bWJlciovLCBzaWduLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgZGVuID0gcGFyc2VJbnQocls0XSwxMCksIHJyID0gTWF0aC5yb3VuZChhdmFsICogZGVuKSwgYmFzZSA9IE1hdGguZmxvb3IocnIvZGVuKTtcblx0dmFyIG15biA9IChyciAtIGJhc2UqZGVuKSwgbXlkID0gZGVuO1xuXHRyZXR1cm4gc2lnbiArIChiYXNlID09PSAwID8gXCJcIiA6IFwiXCIrYmFzZSkgKyBcIiBcIiArIChteW4gPT09IDAgPyBmaWxsKFwiIFwiLCByWzFdLmxlbmd0aCArIDEgKyByWzRdLmxlbmd0aCkgOiBwYWRfKG15bixyWzFdLmxlbmd0aCkgKyByWzJdICsgXCIvXCIgKyByWzNdICsgcGFkMChteWQscls0XS5sZW5ndGgpKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX251bV9mMihyLyo6QXJyYXk8c3RyaW5nPiovLCBhdmFsLyo6bnVtYmVyKi8sIHNpZ24vKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdHJldHVybiBzaWduICsgKGF2YWwgPT09IDAgPyBcIlwiIDogXCJcIithdmFsKSArIGZpbGwoXCIgXCIsIHJbMV0ubGVuZ3RoICsgMiArIHJbNF0ubGVuZ3RoKTtcbn1cbnZhciBkZWMxID0gL14jKjAqXFwuKFswI10rKS87XG52YXIgY2xvc2VwYXJlbiA9IC9cXCkuKlswI10vO1xudmFyIHBob25lID0gL1xcKCMjI1xcKSAjIyNcXFxcPy0jIyMjLztcbmZ1bmN0aW9uIGhhc2hxKHN0ci8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0dmFyIG8gPSBcIlwiLCBjYztcblx0Zm9yKHZhciBpID0gMDsgaSAhPSBzdHIubGVuZ3RoOyArK2kpIHN3aXRjaCgoY2M9c3RyLmNoYXJDb2RlQXQoaSkpKSB7XG5cdFx0Y2FzZSAzNTogYnJlYWs7XG5cdFx0Y2FzZSA2Mzogbys9IFwiIFwiOyBicmVhaztcblx0XHRjYXNlIDQ4OiBvKz0gXCIwXCI7IGJyZWFrO1xuXHRcdGRlZmF1bHQ6IG8rPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNjKTtcblx0fVxuXHRyZXR1cm4gbztcbn1cbmZ1bmN0aW9uIHJuZCh2YWwvKjpudW1iZXIqLywgZC8qOm51bWJlciovKS8qOnN0cmluZyovIHsgdmFyIGRkID0gTWF0aC5wb3coMTAsZCk7IHJldHVybiBcIlwiKyhNYXRoLnJvdW5kKHZhbCAqIGRkKS9kZCk7IH1cbmZ1bmN0aW9uIGRlYyh2YWwvKjpudW1iZXIqLywgZC8qOm51bWJlciovKS8qOm51bWJlciovIHtcblx0dmFyIF9mcmFjID0gdmFsIC0gTWF0aC5mbG9vcih2YWwpLCBkZCA9IE1hdGgucG93KDEwLGQpO1xuXHRpZiAoZCA8ICgnJyArIE1hdGgucm91bmQoX2ZyYWMgKiBkZCkpLmxlbmd0aCkgcmV0dXJuIDA7XG5cdHJldHVybiBNYXRoLnJvdW5kKF9mcmFjICogZGQpO1xufVxuZnVuY3Rpb24gY2FycnkodmFsLyo6bnVtYmVyKi8sIGQvKjpudW1iZXIqLykvKjpudW1iZXIqLyB7XG5cdGlmIChkIDwgKCcnICsgTWF0aC5yb3VuZCgodmFsLU1hdGguZmxvb3IodmFsKSkqTWF0aC5wb3coMTAsZCkpKS5sZW5ndGgpIHtcblx0XHRyZXR1cm4gMTtcblx0fVxuXHRyZXR1cm4gMDtcbn1cbmZ1bmN0aW9uIGZscih2YWwvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7XG5cdGlmKHZhbCA8IDIxNDc0ODM2NDcgJiYgdmFsID4gLTIxNDc0ODM2NDgpIHJldHVybiBcIlwiKyh2YWwgPj0gMCA/ICh2YWx8MCkgOiAodmFsLTF8MCkpO1xuXHRyZXR1cm4gXCJcIitNYXRoLmZsb29yKHZhbCk7XG59XG5mdW5jdGlvbiB3cml0ZV9udW1fZmx0KHR5cGUvKjpzdHJpbmcqLywgZm10Lyo6c3RyaW5nKi8sIHZhbC8qOm51bWJlciovKS8qOnN0cmluZyovIHtcblx0aWYodHlwZS5jaGFyQ29kZUF0KDApID09PSA0MCAmJiAhZm10Lm1hdGNoKGNsb3NlcGFyZW4pKSB7XG5cdFx0dmFyIGZmbXQgPSBmbXQucmVwbGFjZSgvXFwoICovLFwiXCIpLnJlcGxhY2UoLyBcXCkvLFwiXCIpLnJlcGxhY2UoL1xcKS8sXCJcIik7XG5cdFx0aWYodmFsID49IDApIHJldHVybiB3cml0ZV9udW1fZmx0KCduJywgZmZtdCwgdmFsKTtcblx0XHRyZXR1cm4gJygnICsgd3JpdGVfbnVtX2ZsdCgnbicsIGZmbXQsIC12YWwpICsgJyknO1xuXHR9XG5cdGlmKGZtdC5jaGFyQ29kZUF0KGZtdC5sZW5ndGggLSAxKSA9PT0gNDQpIHJldHVybiB3cml0ZV9udW1fY20odHlwZSwgZm10LCB2YWwpO1xuXHRpZihmbXQuaW5kZXhPZignJScpICE9PSAtMSkgcmV0dXJuIHdyaXRlX251bV9wY3QodHlwZSwgZm10LCB2YWwpO1xuXHRpZihmbXQuaW5kZXhPZignRScpICE9PSAtMSkgcmV0dXJuIHdyaXRlX251bV9leHAoZm10LCB2YWwpO1xuXHRpZihmbXQuY2hhckNvZGVBdCgwKSA9PT0gMzYpIHJldHVybiBcIiRcIit3cml0ZV9udW1fZmx0KHR5cGUsZm10LnN1YnN0cihmbXQuY2hhckF0KDEpPT0nICc/MjoxKSx2YWwpO1xuXHR2YXIgbztcblx0dmFyIHIvKjo/QXJyYXk8c3RyaW5nPiovLCByaSwgZmYsIGF2YWwgPSBNYXRoLmFicyh2YWwpLCBzaWduID0gdmFsIDwgMCA/IFwiLVwiIDogXCJcIjtcblx0aWYoZm10Lm1hdGNoKC9eMDArJC8pKSByZXR1cm4gc2lnbiArIHBhZDByKGF2YWwsZm10Lmxlbmd0aCk7XG5cdGlmKGZtdC5tYXRjaCgvXlsjP10rJC8pKSB7XG5cdFx0byA9IHBhZDByKHZhbCwwKTsgaWYobyA9PT0gXCIwXCIpIG8gPSBcIlwiO1xuXHRcdHJldHVybiBvLmxlbmd0aCA+IGZtdC5sZW5ndGggPyBvIDogaGFzaHEoZm10LnN1YnN0cigwLGZtdC5sZW5ndGgtby5sZW5ndGgpKSArIG87XG5cdH1cblx0aWYoKHIgPSBmbXQubWF0Y2goZnJhYzEpKSkgcmV0dXJuIHdyaXRlX251bV9mMShyLCBhdmFsLCBzaWduKTtcblx0aWYoZm10Lm1hdGNoKC9eIyswKyQvKSkgcmV0dXJuIHNpZ24gKyBwYWQwcihhdmFsLGZtdC5sZW5ndGggLSBmbXQuaW5kZXhPZihcIjBcIikpO1xuXHRpZigociA9IGZtdC5tYXRjaChkZWMxKSkpIHtcblx0XHRvID0gcm5kKHZhbCwgclsxXS5sZW5ndGgpLnJlcGxhY2UoL14oW15cXC5dKykkLyxcIiQxLlwiK2hhc2hxKHJbMV0pKS5yZXBsYWNlKC9cXC4kLyxcIi5cIitoYXNocShyWzFdKSkucmVwbGFjZSgvXFwuKFxcZCopJC8sZnVuY3Rpb24oJCQsICQxKSB7IHJldHVybiBcIi5cIiArICQxICsgZmlsbChcIjBcIiwgaGFzaHEoLyo6OigqL3IvKjo6fHxbXCJcIl0pKi9bMV0pLmxlbmd0aC0kMS5sZW5ndGgpOyB9KTtcblx0XHRyZXR1cm4gZm10LmluZGV4T2YoXCIwLlwiKSAhPT0gLTEgPyBvIDogby5yZXBsYWNlKC9eMFxcLi8sXCIuXCIpO1xuXHR9XG5cdGZtdCA9IGZtdC5yZXBsYWNlKC9eIysoWzAuXSkvLCBcIiQxXCIpO1xuXHRpZigociA9IGZtdC5tYXRjaCgvXigwKilcXC4oIyopJC8pKSkge1xuXHRcdHJldHVybiBzaWduICsgcm5kKGF2YWwsIHJbMl0ubGVuZ3RoKS5yZXBsYWNlKC9cXC4oXFxkKlsxLTldKTAqJC8sXCIuJDFcIikucmVwbGFjZSgvXigtP1xcZCopJC8sXCIkMS5cIikucmVwbGFjZSgvXjBcXC4vLHJbMV0ubGVuZ3RoP1wiMC5cIjpcIi5cIik7XG5cdH1cblx0aWYoKHIgPSBmbXQubWF0Y2goL14jezEsM30sIyMwKFxcLj8pJC8pKSkgcmV0dXJuIHNpZ24gKyBjb21tYWlmeShwYWQwcihhdmFsLDApKTtcblx0aWYoKHIgPSBmbXQubWF0Y2goL14jLCMjMFxcLihbIzBdKjApJC8pKSkge1xuXHRcdHJldHVybiB2YWwgPCAwID8gXCItXCIgKyB3cml0ZV9udW1fZmx0KHR5cGUsIGZtdCwgLXZhbCkgOiBjb21tYWlmeShcIlwiKyhNYXRoLmZsb29yKHZhbCkgKyBjYXJyeSh2YWwsIHJbMV0ubGVuZ3RoKSkpICsgXCIuXCIgKyBwYWQwKGRlYyh2YWwsIHJbMV0ubGVuZ3RoKSxyWzFdLmxlbmd0aCk7XG5cdH1cblx0aWYoKHIgPSBmbXQubWF0Y2goL14jLCMqLCMwLykpKSByZXR1cm4gd3JpdGVfbnVtX2ZsdCh0eXBlLGZtdC5yZXBsYWNlKC9eIywjKiwvLFwiXCIpLHZhbCk7XG5cdGlmKChyID0gZm10Lm1hdGNoKC9eKFswI10rKShcXFxcPy0oWzAjXSspKSskLykpKSB7XG5cdFx0byA9IF9zdHJyZXYod3JpdGVfbnVtX2ZsdCh0eXBlLCBmbXQucmVwbGFjZSgvW1xcXFwtXS9nLFwiXCIpLCB2YWwpKTtcblx0XHRyaSA9IDA7XG5cdFx0cmV0dXJuIF9zdHJyZXYoX3N0cnJldihmbXQucmVwbGFjZSgvXFxcXC9nLFwiXCIpKS5yZXBsYWNlKC9bMCNdL2csZnVuY3Rpb24oeCl7cmV0dXJuIHJpPG8ubGVuZ3RoP28uY2hhckF0KHJpKyspOng9PT0nMCc/JzAnOlwiXCI7fSkpO1xuXHR9XG5cdGlmKGZtdC5tYXRjaChwaG9uZSkpIHtcblx0XHRvID0gd3JpdGVfbnVtX2ZsdCh0eXBlLCBcIiMjIyMjIyMjIyNcIiwgdmFsKTtcblx0XHRyZXR1cm4gXCIoXCIgKyBvLnN1YnN0cigwLDMpICsgXCIpIFwiICsgby5zdWJzdHIoMywgMykgKyBcIi1cIiArIG8uc3Vic3RyKDYpO1xuXHR9XG5cdHZhciBvYSA9IFwiXCI7XG5cdGlmKChyID0gZm10Lm1hdGNoKC9eKFsjMD9dKykoID8pXFwvKCA/KShbIzA/XSspLykpKSB7XG5cdFx0cmkgPSBNYXRoLm1pbigvKjo6U3RyaW5nKCovcls0XS8qOjopKi8ubGVuZ3RoLDcpO1xuXHRcdGZmID0gU1NGX2ZyYWMoYXZhbCwgTWF0aC5wb3coMTAscmkpLTEsIGZhbHNlKTtcblx0XHRvID0gXCJcIiArIHNpZ247XG5cdFx0b2EgPSB3cml0ZV9udW0oXCJuXCIsIC8qOjpTdHJpbmcoKi9yWzFdLyo6OikqLywgZmZbMV0pO1xuXHRcdGlmKG9hLmNoYXJBdChvYS5sZW5ndGgtMSkgPT0gXCIgXCIpIG9hID0gb2Euc3Vic3RyKDAsb2EubGVuZ3RoLTEpICsgXCIwXCI7XG5cdFx0byArPSBvYSArIC8qOjpTdHJpbmcoKi9yWzJdLyo6OikqLyArIFwiL1wiICsgLyo6OlN0cmluZygqL3JbM10vKjo6KSovO1xuXHRcdG9hID0gcnBhZF8oZmZbMl0scmkpO1xuXHRcdGlmKG9hLmxlbmd0aCA8IHJbNF0ubGVuZ3RoKSBvYSA9IGhhc2hxKHJbNF0uc3Vic3RyKHJbNF0ubGVuZ3RoLW9hLmxlbmd0aCkpICsgb2E7XG5cdFx0byArPSBvYTtcblx0XHRyZXR1cm4gbztcblx0fVxuXHRpZigociA9IGZtdC5tYXRjaCgvXiMgKFsjMD9dKykoID8pXFwvKCA/KShbIzA/XSspLykpKSB7XG5cdFx0cmkgPSBNYXRoLm1pbihNYXRoLm1heChyWzFdLmxlbmd0aCwgcls0XS5sZW5ndGgpLDcpO1xuXHRcdGZmID0gU1NGX2ZyYWMoYXZhbCwgTWF0aC5wb3coMTAscmkpLTEsIHRydWUpO1xuXHRcdHJldHVybiBzaWduICsgKGZmWzBdfHwoZmZbMV0gPyBcIlwiIDogXCIwXCIpKSArIFwiIFwiICsgKGZmWzFdID8gcGFkXyhmZlsxXSxyaSkgKyByWzJdICsgXCIvXCIgKyByWzNdICsgcnBhZF8oZmZbMl0scmkpOiBmaWxsKFwiIFwiLCAyKnJpKzEgKyByWzJdLmxlbmd0aCArIHJbM10ubGVuZ3RoKSk7XG5cdH1cblx0aWYoKHIgPSBmbXQubWF0Y2goL15bIzA/XSskLykpKSB7XG5cdFx0byA9IHBhZDByKHZhbCwgMCk7XG5cdFx0aWYoZm10Lmxlbmd0aCA8PSBvLmxlbmd0aCkgcmV0dXJuIG87XG5cdFx0cmV0dXJuIGhhc2hxKGZtdC5zdWJzdHIoMCxmbXQubGVuZ3RoLW8ubGVuZ3RoKSkgKyBvO1xuXHR9XG5cdGlmKChyID0gZm10Lm1hdGNoKC9eKFsjMD9dKylcXC4oWyMwXSspJC8pKSkge1xuXHRcdG8gPSBcIlwiICsgdmFsLnRvRml4ZWQoTWF0aC5taW4oclsyXS5sZW5ndGgsMTApKS5yZXBsYWNlKC8oW14wXSkwKyQvLFwiJDFcIik7XG5cdFx0cmkgPSBvLmluZGV4T2YoXCIuXCIpO1xuXHRcdHZhciBscmVzID0gZm10LmluZGV4T2YoXCIuXCIpIC0gcmksIHJyZXMgPSBmbXQubGVuZ3RoIC0gby5sZW5ndGggLSBscmVzO1xuXHRcdHJldHVybiBoYXNocShmbXQuc3Vic3RyKDAsbHJlcykgKyBvICsgZm10LnN1YnN0cihmbXQubGVuZ3RoLXJyZXMpKTtcblx0fVxuXHRpZigociA9IGZtdC5tYXRjaCgvXjAwLDAwMFxcLihbIzBdKjApJC8pKSkge1xuXHRcdHJpID0gZGVjKHZhbCwgclsxXS5sZW5ndGgpO1xuXHRcdHJldHVybiB2YWwgPCAwID8gXCItXCIgKyB3cml0ZV9udW1fZmx0KHR5cGUsIGZtdCwgLXZhbCkgOiBjb21tYWlmeShmbHIodmFsKSkucmVwbGFjZSgvXlxcZCxcXGR7M30kLyxcIjAkJlwiKS5yZXBsYWNlKC9eXFxkKiQvLGZ1bmN0aW9uKCQkKSB7IHJldHVybiBcIjAwLFwiICsgKCQkLmxlbmd0aCA8IDMgPyBwYWQwKDAsMy0kJC5sZW5ndGgpIDogXCJcIikgKyAkJDsgfSkgKyBcIi5cIiArIHBhZDAocmksclsxXS5sZW5ndGgpO1xuXHR9XG5cdHN3aXRjaChmbXQpIHtcblx0XHRjYXNlIFwiIyMjLCMjMC4wMFwiOiByZXR1cm4gd3JpdGVfbnVtX2ZsdCh0eXBlLCBcIiMsIyMwLjAwXCIsIHZhbCk7XG5cdFx0Y2FzZSBcIiMjIywjIyNcIjpcblx0XHRjYXNlIFwiIyMsIyMjXCI6XG5cdFx0Y2FzZSBcIiMsIyMjXCI6IHZhciB4ID0gY29tbWFpZnkocGFkMHIoYXZhbCwwKSk7IHJldHVybiB4ICE9PSBcIjBcIiA/IHNpZ24gKyB4IDogXCJcIjtcblx0XHRjYXNlIFwiIyMjLCMjIy4wMFwiOiByZXR1cm4gd3JpdGVfbnVtX2ZsdCh0eXBlLCBcIiMjIywjIzAuMDBcIix2YWwpLnJlcGxhY2UoL14wXFwuLyxcIi5cIik7XG5cdFx0Y2FzZSBcIiMsIyMjLjAwXCI6IHJldHVybiB3cml0ZV9udW1fZmx0KHR5cGUsIFwiIywjIzAuMDBcIix2YWwpLnJlcGxhY2UoL14wXFwuLyxcIi5cIik7XG5cdFx0ZGVmYXVsdDpcblx0fVxuXHR0aHJvdyBuZXcgRXJyb3IoXCJ1bnN1cHBvcnRlZCBmb3JtYXQgfFwiICsgZm10ICsgXCJ8XCIpO1xufVxuZnVuY3Rpb24gd3JpdGVfbnVtX2NtMih0eXBlLyo6c3RyaW5nKi8sIGZtdC8qOnN0cmluZyovLCB2YWwvKjpudW1iZXIqLykvKjpzdHJpbmcqL3tcblx0dmFyIGlkeCA9IGZtdC5sZW5ndGggLSAxO1xuXHR3aGlsZShmbXQuY2hhckNvZGVBdChpZHgtMSkgPT09IDQ0KSAtLWlkeDtcblx0cmV0dXJuIHdyaXRlX251bSh0eXBlLCBmbXQuc3Vic3RyKDAsaWR4KSwgdmFsIC8gTWF0aC5wb3coMTAsMyooZm10Lmxlbmd0aC1pZHgpKSk7XG59XG5mdW5jdGlvbiB3cml0ZV9udW1fcGN0Mih0eXBlLyo6c3RyaW5nKi8sIGZtdC8qOnN0cmluZyovLCB2YWwvKjpudW1iZXIqLykvKjpzdHJpbmcqL3tcblx0dmFyIHNmbXQgPSBmbXQucmVwbGFjZShwY3QxLFwiXCIpLCBtdWwgPSBmbXQubGVuZ3RoIC0gc2ZtdC5sZW5ndGg7XG5cdHJldHVybiB3cml0ZV9udW0odHlwZSwgc2ZtdCwgdmFsICogTWF0aC5wb3coMTAsMiptdWwpKSArIGZpbGwoXCIlXCIsbXVsKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX251bV9leHAyKGZtdC8qOnN0cmluZyovLCB2YWwvKjpudW1iZXIqLykvKjpzdHJpbmcqL3tcblx0dmFyIG8vKjpzdHJpbmcqLztcblx0dmFyIGlkeCA9IGZtdC5pbmRleE9mKFwiRVwiKSAtIGZtdC5pbmRleE9mKFwiLlwiKSAtIDE7XG5cdGlmKGZtdC5tYXRjaCgvXiMrMC4wRVxcKzAkLykpIHtcblx0XHRpZih2YWwgPT0gMCkgcmV0dXJuIFwiMC4wRSswXCI7XG5cdFx0ZWxzZSBpZih2YWwgPCAwKSByZXR1cm4gXCItXCIgKyB3cml0ZV9udW1fZXhwMihmbXQsIC12YWwpO1xuXHRcdHZhciBwZXJpb2QgPSBmbXQuaW5kZXhPZihcIi5cIik7IGlmKHBlcmlvZCA9PT0gLTEpIHBlcmlvZD1mbXQuaW5kZXhPZignRScpO1xuXHRcdHZhciBlZSA9IE1hdGguZmxvb3IoTWF0aC5sb2codmFsKSpNYXRoLkxPRzEwRSklcGVyaW9kO1xuXHRcdGlmKGVlIDwgMCkgZWUgKz0gcGVyaW9kO1xuXHRcdG8gPSAodmFsL01hdGgucG93KDEwLGVlKSkudG9QcmVjaXNpb24oaWR4KzErKHBlcmlvZCtlZSklcGVyaW9kKTtcblx0XHRpZighby5tYXRjaCgvW0VlXS8pKSB7XG5cdFx0XHR2YXIgZmFrZWUgPSBNYXRoLmZsb29yKE1hdGgubG9nKHZhbCkqTWF0aC5MT0cxMEUpO1xuXHRcdFx0aWYoby5pbmRleE9mKFwiLlwiKSA9PT0gLTEpIG8gPSBvLmNoYXJBdCgwKSArIFwiLlwiICsgby5zdWJzdHIoMSkgKyBcIkUrXCIgKyAoZmFrZWUgLSBvLmxlbmd0aCtlZSk7XG5cdFx0XHRlbHNlIG8gKz0gXCJFK1wiICsgKGZha2VlIC0gZWUpO1xuXHRcdFx0byA9IG8ucmVwbGFjZSgvXFwrLS8sXCItXCIpO1xuXHRcdH1cblx0XHRvID0gby5yZXBsYWNlKC9eKFsrLV0/KShcXGQqKVxcLihcXGQqKVtFZV0vLGZ1bmN0aW9uKCQkLCQxLCQyLCQzKSB7IHJldHVybiAkMSArICQyICsgJDMuc3Vic3RyKDAsKHBlcmlvZCtlZSklcGVyaW9kKSArIFwiLlwiICsgJDMuc3Vic3RyKGVlKSArIFwiRVwiOyB9KTtcblx0fSBlbHNlIG8gPSB2YWwudG9FeHBvbmVudGlhbChpZHgpO1xuXHRpZihmbXQubWF0Y2goL0VcXCswMCQvKSAmJiBvLm1hdGNoKC9lWystXVxcZCQvKSkgbyA9IG8uc3Vic3RyKDAsby5sZW5ndGgtMSkgKyBcIjBcIiArIG8uY2hhckF0KG8ubGVuZ3RoLTEpO1xuXHRpZihmbXQubWF0Y2goL0VcXC0vKSAmJiBvLm1hdGNoKC9lXFwrLykpIG8gPSBvLnJlcGxhY2UoL2VcXCsvLFwiZVwiKTtcblx0cmV0dXJuIG8ucmVwbGFjZShcImVcIixcIkVcIik7XG59XG5mdW5jdGlvbiB3cml0ZV9udW1faW50KHR5cGUvKjpzdHJpbmcqLywgZm10Lyo6c3RyaW5nKi8sIHZhbC8qOm51bWJlciovKS8qOnN0cmluZyovIHtcblx0aWYodHlwZS5jaGFyQ29kZUF0KDApID09PSA0MCAmJiAhZm10Lm1hdGNoKGNsb3NlcGFyZW4pKSB7XG5cdFx0dmFyIGZmbXQgPSBmbXQucmVwbGFjZSgvXFwoICovLFwiXCIpLnJlcGxhY2UoLyBcXCkvLFwiXCIpLnJlcGxhY2UoL1xcKS8sXCJcIik7XG5cdFx0aWYodmFsID49IDApIHJldHVybiB3cml0ZV9udW1faW50KCduJywgZmZtdCwgdmFsKTtcblx0XHRyZXR1cm4gJygnICsgd3JpdGVfbnVtX2ludCgnbicsIGZmbXQsIC12YWwpICsgJyknO1xuXHR9XG5cdGlmKGZtdC5jaGFyQ29kZUF0KGZtdC5sZW5ndGggLSAxKSA9PT0gNDQpIHJldHVybiB3cml0ZV9udW1fY20yKHR5cGUsIGZtdCwgdmFsKTtcblx0aWYoZm10LmluZGV4T2YoJyUnKSAhPT0gLTEpIHJldHVybiB3cml0ZV9udW1fcGN0Mih0eXBlLCBmbXQsIHZhbCk7XG5cdGlmKGZtdC5pbmRleE9mKCdFJykgIT09IC0xKSByZXR1cm4gd3JpdGVfbnVtX2V4cDIoZm10LCB2YWwpO1xuXHRpZihmbXQuY2hhckNvZGVBdCgwKSA9PT0gMzYpIHJldHVybiBcIiRcIit3cml0ZV9udW1faW50KHR5cGUsZm10LnN1YnN0cihmbXQuY2hhckF0KDEpPT0nICc/MjoxKSx2YWwpO1xuXHR2YXIgbztcblx0dmFyIHIvKjo/QXJyYXk8c3RyaW5nPiovLCByaSwgZmYsIGF2YWwgPSBNYXRoLmFicyh2YWwpLCBzaWduID0gdmFsIDwgMCA/IFwiLVwiIDogXCJcIjtcblx0aWYoZm10Lm1hdGNoKC9eMDArJC8pKSByZXR1cm4gc2lnbiArIHBhZDAoYXZhbCxmbXQubGVuZ3RoKTtcblx0aWYoZm10Lm1hdGNoKC9eWyM/XSskLykpIHtcblx0XHRvID0gKFwiXCIrdmFsKTsgaWYodmFsID09PSAwKSBvID0gXCJcIjtcblx0XHRyZXR1cm4gby5sZW5ndGggPiBmbXQubGVuZ3RoID8gbyA6IGhhc2hxKGZtdC5zdWJzdHIoMCxmbXQubGVuZ3RoLW8ubGVuZ3RoKSkgKyBvO1xuXHR9XG5cdGlmKChyID0gZm10Lm1hdGNoKGZyYWMxKSkpIHJldHVybiB3cml0ZV9udW1fZjIociwgYXZhbCwgc2lnbik7XG5cdGlmKGZtdC5tYXRjaCgvXiMrMCskLykpIHJldHVybiBzaWduICsgcGFkMChhdmFsLGZtdC5sZW5ndGggLSBmbXQuaW5kZXhPZihcIjBcIikpO1xuXHRpZigociA9IGZtdC5tYXRjaChkZWMxKSkpIHtcblx0XHQvKjo6IGlmKCFBcnJheS5pc0FycmF5KHIpKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi9cblx0XHRvID0gKFwiXCIrdmFsKS5yZXBsYWNlKC9eKFteXFwuXSspJC8sXCIkMS5cIitoYXNocShyWzFdKSkucmVwbGFjZSgvXFwuJC8sXCIuXCIraGFzaHEoclsxXSkpO1xuXHRcdG8gPSBvLnJlcGxhY2UoL1xcLihcXGQqKSQvLGZ1bmN0aW9uKCQkLCAkMSkge1xuXHRcdC8qOjogaWYoIUFycmF5LmlzQXJyYXkocikpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHRcdFx0cmV0dXJuIFwiLlwiICsgJDEgKyBmaWxsKFwiMFwiLCBoYXNocShyWzFdKS5sZW5ndGgtJDEubGVuZ3RoKTsgfSk7XG5cdFx0cmV0dXJuIGZtdC5pbmRleE9mKFwiMC5cIikgIT09IC0xID8gbyA6IG8ucmVwbGFjZSgvXjBcXC4vLFwiLlwiKTtcblx0fVxuXHRmbXQgPSBmbXQucmVwbGFjZSgvXiMrKFswLl0pLywgXCIkMVwiKTtcblx0aWYoKHIgPSBmbXQubWF0Y2goL14oMCopXFwuKCMqKSQvKSkpIHtcblx0XHRyZXR1cm4gc2lnbiArIChcIlwiK2F2YWwpLnJlcGxhY2UoL1xcLihcXGQqWzEtOV0pMCokLyxcIi4kMVwiKS5yZXBsYWNlKC9eKC0/XFxkKikkLyxcIiQxLlwiKS5yZXBsYWNlKC9eMFxcLi8sclsxXS5sZW5ndGg/XCIwLlwiOlwiLlwiKTtcblx0fVxuXHRpZigociA9IGZtdC5tYXRjaCgvXiN7MSwzfSwjIzAoXFwuPykkLykpKSByZXR1cm4gc2lnbiArIGNvbW1haWZ5KChcIlwiK2F2YWwpKTtcblx0aWYoKHIgPSBmbXQubWF0Y2goL14jLCMjMFxcLihbIzBdKjApJC8pKSkge1xuXHRcdHJldHVybiB2YWwgPCAwID8gXCItXCIgKyB3cml0ZV9udW1faW50KHR5cGUsIGZtdCwgLXZhbCkgOiBjb21tYWlmeSgoXCJcIit2YWwpKSArIFwiLlwiICsgZmlsbCgnMCcsclsxXS5sZW5ndGgpO1xuXHR9XG5cdGlmKChyID0gZm10Lm1hdGNoKC9eIywjKiwjMC8pKSkgcmV0dXJuIHdyaXRlX251bV9pbnQodHlwZSxmbXQucmVwbGFjZSgvXiMsIyosLyxcIlwiKSx2YWwpO1xuXHRpZigociA9IGZtdC5tYXRjaCgvXihbMCNdKykoXFxcXD8tKFswI10rKSkrJC8pKSkge1xuXHRcdG8gPSBfc3RycmV2KHdyaXRlX251bV9pbnQodHlwZSwgZm10LnJlcGxhY2UoL1tcXFxcLV0vZyxcIlwiKSwgdmFsKSk7XG5cdFx0cmkgPSAwO1xuXHRcdHJldHVybiBfc3RycmV2KF9zdHJyZXYoZm10LnJlcGxhY2UoL1xcXFwvZyxcIlwiKSkucmVwbGFjZSgvWzAjXS9nLGZ1bmN0aW9uKHgpe3JldHVybiByaTxvLmxlbmd0aD9vLmNoYXJBdChyaSsrKTp4PT09JzAnPycwJzpcIlwiO30pKTtcblx0fVxuXHRpZihmbXQubWF0Y2gocGhvbmUpKSB7XG5cdFx0byA9IHdyaXRlX251bV9pbnQodHlwZSwgXCIjIyMjIyMjIyMjXCIsIHZhbCk7XG5cdFx0cmV0dXJuIFwiKFwiICsgby5zdWJzdHIoMCwzKSArIFwiKSBcIiArIG8uc3Vic3RyKDMsIDMpICsgXCItXCIgKyBvLnN1YnN0cig2KTtcblx0fVxuXHR2YXIgb2EgPSBcIlwiO1xuXHRpZigociA9IGZtdC5tYXRjaCgvXihbIzA/XSspKCA/KVxcLyggPykoWyMwP10rKS8pKSkge1xuXHRcdHJpID0gTWF0aC5taW4oLyo6OlN0cmluZygqL3JbNF0vKjo6KSovLmxlbmd0aCw3KTtcblx0XHRmZiA9IFNTRl9mcmFjKGF2YWwsIE1hdGgucG93KDEwLHJpKS0xLCBmYWxzZSk7XG5cdFx0byA9IFwiXCIgKyBzaWduO1xuXHRcdG9hID0gd3JpdGVfbnVtKFwiblwiLCAvKjo6U3RyaW5nKCovclsxXS8qOjopKi8sIGZmWzFdKTtcblx0XHRpZihvYS5jaGFyQXQob2EubGVuZ3RoLTEpID09IFwiIFwiKSBvYSA9IG9hLnN1YnN0cigwLG9hLmxlbmd0aC0xKSArIFwiMFwiO1xuXHRcdG8gKz0gb2EgKyAvKjo6U3RyaW5nKCovclsyXS8qOjopKi8gKyBcIi9cIiArIC8qOjpTdHJpbmcoKi9yWzNdLyo6OikqLztcblx0XHRvYSA9IHJwYWRfKGZmWzJdLHJpKTtcblx0XHRpZihvYS5sZW5ndGggPCByWzRdLmxlbmd0aCkgb2EgPSBoYXNocShyWzRdLnN1YnN0cihyWzRdLmxlbmd0aC1vYS5sZW5ndGgpKSArIG9hO1xuXHRcdG8gKz0gb2E7XG5cdFx0cmV0dXJuIG87XG5cdH1cblx0aWYoKHIgPSBmbXQubWF0Y2goL14jIChbIzA/XSspKCA/KVxcLyggPykoWyMwP10rKS8pKSkge1xuXHRcdHJpID0gTWF0aC5taW4oTWF0aC5tYXgoclsxXS5sZW5ndGgsIHJbNF0ubGVuZ3RoKSw3KTtcblx0XHRmZiA9IFNTRl9mcmFjKGF2YWwsIE1hdGgucG93KDEwLHJpKS0xLCB0cnVlKTtcblx0XHRyZXR1cm4gc2lnbiArIChmZlswXXx8KGZmWzFdID8gXCJcIiA6IFwiMFwiKSkgKyBcIiBcIiArIChmZlsxXSA/IHBhZF8oZmZbMV0scmkpICsgclsyXSArIFwiL1wiICsgclszXSArIHJwYWRfKGZmWzJdLHJpKTogZmlsbChcIiBcIiwgMipyaSsxICsgclsyXS5sZW5ndGggKyByWzNdLmxlbmd0aCkpO1xuXHR9XG5cdGlmKChyID0gZm10Lm1hdGNoKC9eWyMwP10rJC8pKSkge1xuXHRcdG8gPSBcIlwiICsgdmFsO1xuXHRcdGlmKGZtdC5sZW5ndGggPD0gby5sZW5ndGgpIHJldHVybiBvO1xuXHRcdHJldHVybiBoYXNocShmbXQuc3Vic3RyKDAsZm10Lmxlbmd0aC1vLmxlbmd0aCkpICsgbztcblx0fVxuXHRpZigociA9IGZtdC5tYXRjaCgvXihbIzBdKylcXC4oWyMwXSspJC8pKSkge1xuXHRcdG8gPSBcIlwiICsgdmFsLnRvRml4ZWQoTWF0aC5taW4oclsyXS5sZW5ndGgsMTApKS5yZXBsYWNlKC8oW14wXSkwKyQvLFwiJDFcIik7XG5cdFx0cmkgPSBvLmluZGV4T2YoXCIuXCIpO1xuXHRcdHZhciBscmVzID0gZm10LmluZGV4T2YoXCIuXCIpIC0gcmksIHJyZXMgPSBmbXQubGVuZ3RoIC0gby5sZW5ndGggLSBscmVzO1xuXHRcdHJldHVybiBoYXNocShmbXQuc3Vic3RyKDAsbHJlcykgKyBvICsgZm10LnN1YnN0cihmbXQubGVuZ3RoLXJyZXMpKTtcblx0fVxuXHRpZigociA9IGZtdC5tYXRjaCgvXjAwLDAwMFxcLihbIzBdKjApJC8pKSkge1xuXHRcdHJldHVybiB2YWwgPCAwID8gXCItXCIgKyB3cml0ZV9udW1faW50KHR5cGUsIGZtdCwgLXZhbCkgOiBjb21tYWlmeShcIlwiK3ZhbCkucmVwbGFjZSgvXlxcZCxcXGR7M30kLyxcIjAkJlwiKS5yZXBsYWNlKC9eXFxkKiQvLGZ1bmN0aW9uKCQkKSB7IHJldHVybiBcIjAwLFwiICsgKCQkLmxlbmd0aCA8IDMgPyBwYWQwKDAsMy0kJC5sZW5ndGgpIDogXCJcIikgKyAkJDsgfSkgKyBcIi5cIiArIHBhZDAoMCxyWzFdLmxlbmd0aCk7XG5cdH1cblx0c3dpdGNoKGZtdCkge1xuXHRcdGNhc2UgXCIjIyMsIyMjXCI6XG5cdFx0Y2FzZSBcIiMjLCMjI1wiOlxuXHRcdGNhc2UgXCIjLCMjI1wiOiB2YXIgeCA9IGNvbW1haWZ5KFwiXCIrYXZhbCk7IHJldHVybiB4ICE9PSBcIjBcIiA/IHNpZ24gKyB4IDogXCJcIjtcblx0XHRkZWZhdWx0OlxuXHRcdFx0aWYoZm10Lm1hdGNoKC9cXC5bMCM/XSokLykpIHJldHVybiB3cml0ZV9udW1faW50KHR5cGUsIGZtdC5zbGljZSgwLGZtdC5sYXN0SW5kZXhPZihcIi5cIikpLCB2YWwpICsgaGFzaHEoZm10LnNsaWNlKGZtdC5sYXN0SW5kZXhPZihcIi5cIikpKTtcblx0fVxuXHR0aHJvdyBuZXcgRXJyb3IoXCJ1bnN1cHBvcnRlZCBmb3JtYXQgfFwiICsgZm10ICsgXCJ8XCIpO1xufVxuZnVuY3Rpb24gd3JpdGVfbnVtKHR5cGUvKjpzdHJpbmcqLywgZm10Lyo6c3RyaW5nKi8sIHZhbC8qOm51bWJlciovKS8qOnN0cmluZyovIHtcblx0cmV0dXJuICh2YWx8MCkgPT09IHZhbCA/IHdyaXRlX251bV9pbnQodHlwZSwgZm10LCB2YWwpIDogd3JpdGVfbnVtX2ZsdCh0eXBlLCBmbXQsIHZhbCk7XG59XG5mdW5jdGlvbiBTU0Zfc3BsaXRfZm10KGZtdC8qOnN0cmluZyovKS8qOkFycmF5PHN0cmluZz4qLyB7XG5cdHZhciBvdXQvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0dmFyIGluX3N0ciA9IGZhbHNlLyosIGNjKi87XG5cdGZvcih2YXIgaSA9IDAsIGogPSAwOyBpIDwgZm10Lmxlbmd0aDsgKytpKSBzd2l0Y2goKC8qY2M9Ki9mbXQuY2hhckNvZGVBdChpKSkpIHtcblx0XHRjYXNlIDM0OiAvKiAnXCInICovXG5cdFx0XHRpbl9zdHIgPSAhaW5fc3RyOyBicmVhaztcblx0XHRjYXNlIDk1OiBjYXNlIDQyOiBjYXNlIDkyOiAvKiAnXycgJyonICdcXFxcJyAqL1xuXHRcdFx0KytpOyBicmVhaztcblx0XHRjYXNlIDU5OiAvKiAnOycgKi9cblx0XHRcdG91dFtvdXQubGVuZ3RoXSA9IGZtdC5zdWJzdHIoaixpLWopO1xuXHRcdFx0aiA9IGkrMTtcblx0fVxuXHRvdXRbb3V0Lmxlbmd0aF0gPSBmbXQuc3Vic3RyKGopO1xuXHRpZihpbl9zdHIgPT09IHRydWUpIHRocm93IG5ldyBFcnJvcihcIkZvcm1hdCB8XCIgKyBmbXQgKyBcInwgdW50ZXJtaW5hdGVkIHN0cmluZyBcIik7XG5cdHJldHVybiBvdXQ7XG59XG5cbnZhciBTU0ZfYWJzdGltZSA9IC9cXFtbSGhNbVNzXFx1MEUwQVxcdTBFMTlcXHUwRTE3XSpcXF0vO1xuZnVuY3Rpb24gZm10X2lzX2RhdGUoZm10Lyo6c3RyaW5nKi8pLyo6Ym9vbGVhbiovIHtcblx0dmFyIGkgPSAwLCAvKmNjID0gMCwqLyBjID0gXCJcIiwgbyA9IFwiXCI7XG5cdHdoaWxlKGkgPCBmbXQubGVuZ3RoKSB7XG5cdFx0c3dpdGNoKChjID0gZm10LmNoYXJBdChpKSkpIHtcblx0XHRcdGNhc2UgJ0cnOiBpZihTU0ZfaXNnZW5lcmFsKGZtdCwgaSkpIGkrPSA2OyBpKys7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnXCInOiBmb3IoOygvKmNjPSovZm10LmNoYXJDb2RlQXQoKytpKSkgIT09IDM0ICYmIGkgPCBmbXQubGVuZ3RoOyl7LyplbXB0eSovfSArK2k7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnXFxcXCc6IGkrPTI7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnXyc6IGkrPTI7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnQCc6ICsraTsgYnJlYWs7XG5cdFx0XHRjYXNlICdCJzogY2FzZSAnYic6XG5cdFx0XHRcdGlmKGZtdC5jaGFyQXQoaSsxKSA9PT0gXCIxXCIgfHwgZm10LmNoYXJBdChpKzEpID09PSBcIjJcIikgcmV0dXJuIHRydWU7XG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJ00nOiBjYXNlICdEJzogY2FzZSAnWSc6IGNhc2UgJ0gnOiBjYXNlICdTJzogY2FzZSAnRSc6XG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJ20nOiBjYXNlICdkJzogY2FzZSAneSc6IGNhc2UgJ2gnOiBjYXNlICdzJzogY2FzZSAnZSc6IGNhc2UgJ2cnOiByZXR1cm4gdHJ1ZTtcblx0XHRcdGNhc2UgJ0EnOiBjYXNlICdhJzogY2FzZSAn5LiKJzpcblx0XHRcdFx0aWYoZm10LnN1YnN0cihpLCAzKS50b1VwcGVyQ2FzZSgpID09PSBcIkEvUFwiKSByZXR1cm4gdHJ1ZTtcblx0XHRcdFx0aWYoZm10LnN1YnN0cihpLCA1KS50b1VwcGVyQ2FzZSgpID09PSBcIkFNL1BNXCIpIHJldHVybiB0cnVlO1xuXHRcdFx0XHRpZihmbXQuc3Vic3RyKGksIDUpLnRvVXBwZXJDYXNlKCkgPT09IFwi5LiK5Y2IL+S4i+WNiFwiKSByZXR1cm4gdHJ1ZTtcblx0XHRcdFx0KytpOyBicmVhaztcblx0XHRcdGNhc2UgJ1snOlxuXHRcdFx0XHRvID0gYztcblx0XHRcdFx0d2hpbGUoZm10LmNoYXJBdChpKyspICE9PSAnXScgJiYgaSA8IGZtdC5sZW5ndGgpIG8gKz0gZm10LmNoYXJBdChpKTtcblx0XHRcdFx0aWYoby5tYXRjaChTU0ZfYWJzdGltZSkpIHJldHVybiB0cnVlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJy4nOlxuXHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICcwJzogY2FzZSAnIyc6XG5cdFx0XHRcdHdoaWxlKGkgPCBmbXQubGVuZ3RoICYmIChcIjAjPy4sRSstJVwiLmluZGV4T2YoYz1mbXQuY2hhckF0KCsraSkpID4gLTEgfHwgKGM9PSdcXFxcJyAmJiBmbXQuY2hhckF0KGkrMSkgPT0gXCItXCIgJiYgXCIwI1wiLmluZGV4T2YoZm10LmNoYXJBdChpKzIpKT4tMSkpKXsvKiBlbXB0eSAqL31cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICc/Jzogd2hpbGUoZm10LmNoYXJBdCgrK2kpID09PSBjKXsvKiBlbXB0eSAqL30gYnJlYWs7XG5cdFx0XHRjYXNlICcqJzogKytpOyBpZihmbXQuY2hhckF0KGkpID09ICcgJyB8fCBmbXQuY2hhckF0KGkpID09ICcqJykgKytpOyBicmVhaztcblx0XHRcdGNhc2UgJygnOiBjYXNlICcpJzogKytpOyBicmVhaztcblx0XHRcdGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOiBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6XG5cdFx0XHRcdHdoaWxlKGkgPCBmbXQubGVuZ3RoICYmIFwiMDEyMzQ1Njc4OVwiLmluZGV4T2YoZm10LmNoYXJBdCgrK2kpKSA+IC0xKXsvKiBlbXB0eSAqL30gYnJlYWs7XG5cdFx0XHRjYXNlICcgJzogKytpOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6ICsraTsgYnJlYWs7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZXZhbF9mbXQoZm10Lyo6c3RyaW5nKi8sIHYvKjphbnkqLywgb3B0cy8qOmFueSovLCBmbGVuLyo6bnVtYmVyKi8pIHtcblx0dmFyIG91dCA9IFtdLCBvID0gXCJcIiwgaSA9IDAsIGMgPSBcIlwiLCBsc3Q9J3QnLCBkdCwgaiwgY2M7XG5cdHZhciBocj0nSCc7XG5cdC8qIFRva2VuaXplICovXG5cdHdoaWxlKGkgPCBmbXQubGVuZ3RoKSB7XG5cdFx0c3dpdGNoKChjID0gZm10LmNoYXJBdChpKSkpIHtcblx0XHRcdGNhc2UgJ0cnOiAvKiBHZW5lcmFsICovXG5cdFx0XHRcdGlmKCFTU0ZfaXNnZW5lcmFsKGZtdCwgaSkpIHRocm93IG5ldyBFcnJvcigndW5yZWNvZ25pemVkIGNoYXJhY3RlciAnICsgYyArICcgaW4gJyArZm10KTtcblx0XHRcdFx0b3V0W291dC5sZW5ndGhdID0ge3Q6J0cnLCB2OidHZW5lcmFsJ307IGkrPTc7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnXCInOiAvKiBMaXRlcmFsIHRleHQgKi9cblx0XHRcdFx0Zm9yKG89XCJcIjsoY2M9Zm10LmNoYXJDb2RlQXQoKytpKSkgIT09IDM0ICYmIGkgPCBmbXQubGVuZ3RoOykgbyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNjKTtcblx0XHRcdFx0b3V0W291dC5sZW5ndGhdID0ge3Q6J3QnLCB2Om99OyArK2k7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnXFxcXCc6IHZhciB3ID0gZm10LmNoYXJBdCgrK2kpLCB0ID0gKHcgPT09IFwiKFwiIHx8IHcgPT09IFwiKVwiKSA/IHcgOiAndCc7XG5cdFx0XHRcdG91dFtvdXQubGVuZ3RoXSA9IHt0OnQsIHY6d307ICsraTsgYnJlYWs7XG5cdFx0XHRjYXNlICdfJzogb3V0W291dC5sZW5ndGhdID0ge3Q6J3QnLCB2OlwiIFwifTsgaSs9MjsgYnJlYWs7XG5cdFx0XHRjYXNlICdAJzogLyogVGV4dCBQbGFjZWhvbGRlciAqL1xuXHRcdFx0XHRvdXRbb3V0Lmxlbmd0aF0gPSB7dDonVCcsIHY6dn07ICsraTsgYnJlYWs7XG5cdFx0XHRjYXNlICdCJzogY2FzZSAnYic6XG5cdFx0XHRcdGlmKGZtdC5jaGFyQXQoaSsxKSA9PT0gXCIxXCIgfHwgZm10LmNoYXJBdChpKzEpID09PSBcIjJcIikge1xuXHRcdFx0XHRcdGlmKGR0PT1udWxsKSB7IGR0PVNTRl9wYXJzZV9kYXRlX2NvZGUodiwgb3B0cywgZm10LmNoYXJBdChpKzEpID09PSBcIjJcIik7IGlmKGR0PT1udWxsKSByZXR1cm4gXCJcIjsgfVxuXHRcdFx0XHRcdG91dFtvdXQubGVuZ3RoXSA9IHt0OidYJywgdjpmbXQuc3Vic3RyKGksMil9OyBsc3QgPSBjOyBpKz0yOyBicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICdNJzogY2FzZSAnRCc6IGNhc2UgJ1knOiBjYXNlICdIJzogY2FzZSAnUyc6IGNhc2UgJ0UnOlxuXHRcdFx0XHRjID0gYy50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICdtJzogY2FzZSAnZCc6IGNhc2UgJ3knOiBjYXNlICdoJzogY2FzZSAncyc6IGNhc2UgJ2UnOiBjYXNlICdnJzpcblx0XHRcdFx0aWYodiA8IDApIHJldHVybiBcIlwiO1xuXHRcdFx0XHRpZihkdD09bnVsbCkgeyBkdD1TU0ZfcGFyc2VfZGF0ZV9jb2RlKHYsIG9wdHMpOyBpZihkdD09bnVsbCkgcmV0dXJuIFwiXCI7IH1cblx0XHRcdFx0byA9IGM7IHdoaWxlKCsraSA8IGZtdC5sZW5ndGggJiYgZm10LmNoYXJBdChpKS50b0xvd2VyQ2FzZSgpID09PSBjKSBvKz1jO1xuXHRcdFx0XHRpZihjID09PSAnbScgJiYgbHN0LnRvTG93ZXJDYXNlKCkgPT09ICdoJykgYyA9ICdNJztcblx0XHRcdFx0aWYoYyA9PT0gJ2gnKSBjID0gaHI7XG5cdFx0XHRcdG91dFtvdXQubGVuZ3RoXSA9IHt0OmMsIHY6b307IGxzdCA9IGM7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnQSc6IGNhc2UgJ2EnOiBjYXNlICfkuIonOlxuXHRcdFx0XHR2YXIgcT17dDpjLCB2OmN9O1xuXHRcdFx0XHRpZihkdD09bnVsbCkgZHQ9U1NGX3BhcnNlX2RhdGVfY29kZSh2LCBvcHRzKTtcblx0XHRcdFx0aWYoZm10LnN1YnN0cihpLCAzKS50b1VwcGVyQ2FzZSgpID09PSBcIkEvUFwiKSB7IGlmKGR0IT1udWxsKSBxLnYgPSBkdC5IID49IDEyID8gXCJQXCIgOiBcIkFcIjsgcS50ID0gJ1QnOyBocj0naCc7aSs9Mzt9XG5cdFx0XHRcdGVsc2UgaWYoZm10LnN1YnN0cihpLDUpLnRvVXBwZXJDYXNlKCkgPT09IFwiQU0vUE1cIikgeyBpZihkdCE9bnVsbCkgcS52ID0gZHQuSCA+PSAxMiA/IFwiUE1cIiA6IFwiQU1cIjsgcS50ID0gJ1QnOyBpKz01OyBocj0naCc7IH1cblx0XHRcdFx0ZWxzZSBpZihmbXQuc3Vic3RyKGksNSkudG9VcHBlckNhc2UoKSA9PT0gXCLkuIrljYgv5LiL5Y2IXCIpIHsgaWYoZHQhPW51bGwpIHEudiA9IGR0LkggPj0gMTIgPyBcIuS4i+WNiFwiIDogXCLkuIrljYhcIjsgcS50ID0gJ1QnOyBpKz01OyBocj0naCc7IH1cblx0XHRcdFx0ZWxzZSB7IHEudCA9IFwidFwiOyArK2k7IH1cblx0XHRcdFx0aWYoZHQ9PW51bGwgJiYgcS50ID09PSAnVCcpIHJldHVybiBcIlwiO1xuXHRcdFx0XHRvdXRbb3V0Lmxlbmd0aF0gPSBxOyBsc3QgPSBjOyBicmVhaztcblx0XHRcdGNhc2UgJ1snOlxuXHRcdFx0XHRvID0gYztcblx0XHRcdFx0d2hpbGUoZm10LmNoYXJBdChpKyspICE9PSAnXScgJiYgaSA8IGZtdC5sZW5ndGgpIG8gKz0gZm10LmNoYXJBdChpKTtcblx0XHRcdFx0aWYoby5zbGljZSgtMSkgIT09ICddJykgdGhyb3cgJ3VudGVybWluYXRlZCBcIltcIiBibG9jazogfCcgKyBvICsgJ3wnO1xuXHRcdFx0XHRpZihvLm1hdGNoKFNTRl9hYnN0aW1lKSkge1xuXHRcdFx0XHRcdGlmKGR0PT1udWxsKSB7IGR0PVNTRl9wYXJzZV9kYXRlX2NvZGUodiwgb3B0cyk7IGlmKGR0PT1udWxsKSByZXR1cm4gXCJcIjsgfVxuXHRcdFx0XHRcdG91dFtvdXQubGVuZ3RoXSA9IHt0OidaJywgdjpvLnRvTG93ZXJDYXNlKCl9O1xuXHRcdFx0XHRcdGxzdCA9IG8uY2hhckF0KDEpO1xuXHRcdFx0XHR9IGVsc2UgaWYoby5pbmRleE9mKFwiJFwiKSA+IC0xKSB7XG5cdFx0XHRcdFx0byA9IChvLm1hdGNoKC9cXCQoW14tXFxbXFxdXSopLyl8fFtdKVsxXXx8XCIkXCI7XG5cdFx0XHRcdFx0aWYoIWZtdF9pc19kYXRlKGZtdCkpIG91dFtvdXQubGVuZ3RoXSA9IHt0Oid0Jyx2Om99O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0LyogTnVtYmVycyAqL1xuXHRcdFx0Y2FzZSAnLic6XG5cdFx0XHRcdGlmKGR0ICE9IG51bGwpIHtcblx0XHRcdFx0XHRvID0gYzsgd2hpbGUoKytpIDwgZm10Lmxlbmd0aCAmJiAoYz1mbXQuY2hhckF0KGkpKSA9PT0gXCIwXCIpIG8gKz0gYztcblx0XHRcdFx0XHRvdXRbb3V0Lmxlbmd0aF0gPSB7dDoncycsIHY6b307IGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJzAnOiBjYXNlICcjJzpcblx0XHRcdFx0byA9IGM7IHdoaWxlKCsraSA8IGZtdC5sZW5ndGggJiYgXCIwIz8uLEUrLSVcIi5pbmRleE9mKGM9Zm10LmNoYXJBdChpKSkgPiAtMSkgbyArPSBjO1xuXHRcdFx0XHRvdXRbb3V0Lmxlbmd0aF0gPSB7dDonbicsIHY6b307IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPyc6XG5cdFx0XHRcdG8gPSBjOyB3aGlsZShmbXQuY2hhckF0KCsraSkgPT09IGMpIG8rPWM7XG5cdFx0XHRcdG91dFtvdXQubGVuZ3RoXSA9IHt0OmMsIHY6b307IGxzdCA9IGM7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnKic6ICsraTsgaWYoZm10LmNoYXJBdChpKSA9PSAnICcgfHwgZm10LmNoYXJBdChpKSA9PSAnKicpICsraTsgYnJlYWs7IC8vICoqXG5cdFx0XHRjYXNlICcoJzogY2FzZSAnKSc6IG91dFtvdXQubGVuZ3RoXSA9IHt0OihmbGVuPT09MT8ndCc6YyksIHY6Y307ICsraTsgYnJlYWs7XG5cdFx0XHRjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzogY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOlxuXHRcdFx0XHRvID0gYzsgd2hpbGUoaSA8IGZtdC5sZW5ndGggJiYgXCIwMTIzNDU2Nzg5XCIuaW5kZXhPZihmbXQuY2hhckF0KCsraSkpID4gLTEpIG8rPWZtdC5jaGFyQXQoaSk7XG5cdFx0XHRcdG91dFtvdXQubGVuZ3RoXSA9IHt0OidEJywgdjpvfTsgYnJlYWs7XG5cdFx0XHRjYXNlICcgJzogb3V0W291dC5sZW5ndGhdID0ge3Q6YywgdjpjfTsgKytpOyBicmVhaztcblx0XHRcdGNhc2UgJyQnOiBvdXRbb3V0Lmxlbmd0aF0gPSB7dDondCcsIHY6JyQnfTsgKytpOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGlmKFwiLCQtKy8oKTohXiYnfnt9PD494oKsYWNmaWprbG9wcXJ0dXZ3eHpQXCIuaW5kZXhPZihjKSA9PT0gLTEpIHRocm93IG5ldyBFcnJvcigndW5yZWNvZ25pemVkIGNoYXJhY3RlciAnICsgYyArICcgaW4gJyArIGZtdCk7XG5cdFx0XHRcdG91dFtvdXQubGVuZ3RoXSA9IHt0Oid0JywgdjpjfTsgKytpOyBicmVhaztcblx0XHR9XG5cdH1cblxuXHQvKiBTY2FuIGZvciBkYXRlL3RpbWUgcGFydHMgKi9cblx0dmFyIGJ0ID0gMCwgc3MwID0gMCwgc3NtO1xuXHRmb3IoaT1vdXQubGVuZ3RoLTEsIGxzdD0ndCc7IGkgPj0gMDsgLS1pKSB7XG5cdFx0c3dpdGNoKG91dFtpXS50KSB7XG5cdFx0XHRjYXNlICdoJzogY2FzZSAnSCc6IG91dFtpXS50ID0gaHI7IGxzdD0naCc7IGlmKGJ0IDwgMSkgYnQgPSAxOyBicmVhaztcblx0XHRcdGNhc2UgJ3MnOlxuXHRcdFx0XHRpZigoc3NtPW91dFtpXS52Lm1hdGNoKC9cXC4wKyQvKSkpIHNzMD1NYXRoLm1heChzczAsc3NtWzBdLmxlbmd0aC0xKTtcblx0XHRcdFx0aWYoYnQgPCAzKSBidCA9IDM7XG5cdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICdkJzogY2FzZSAneSc6IGNhc2UgJ00nOiBjYXNlICdlJzogbHN0PW91dFtpXS50OyBicmVhaztcblx0XHRcdGNhc2UgJ20nOiBpZihsc3QgPT09ICdzJykgeyBvdXRbaV0udCA9ICdNJzsgaWYoYnQgPCAyKSBidCA9IDI7IH0gYnJlYWs7XG5cdFx0XHRjYXNlICdYJzogLyppZihvdXRbaV0udiA9PT0gXCJCMlwiKTsqL1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1onOlxuXHRcdFx0XHRpZihidCA8IDEgJiYgb3V0W2ldLnYubWF0Y2goL1tIaF0vKSkgYnQgPSAxO1xuXHRcdFx0XHRpZihidCA8IDIgJiYgb3V0W2ldLnYubWF0Y2goL1tNbV0vKSkgYnQgPSAyO1xuXHRcdFx0XHRpZihidCA8IDMgJiYgb3V0W2ldLnYubWF0Y2goL1tTc10vKSkgYnQgPSAzO1xuXHRcdH1cblx0fVxuXHQvKiB0aW1lIHJvdW5kaW5nIGRlcGVuZHMgb24gcHJlc2VuY2Ugb2YgbWludXRlIC8gc2Vjb25kIC8gdXNlYyBmaWVsZHMgKi9cblx0c3dpdGNoKGJ0KSB7XG5cdFx0Y2FzZSAwOiBicmVhaztcblx0XHRjYXNlIDE6XG5cdFx0XHQvKjo6aWYoIWR0KSBicmVhazsqL1xuXHRcdFx0aWYoZHQudSA+PSAwLjUpIHsgZHQudSA9IDA7ICsrZHQuUzsgfVxuXHRcdFx0aWYoZHQuUyA+PSAgNjApIHsgZHQuUyA9IDA7ICsrZHQuTTsgfVxuXHRcdFx0aWYoZHQuTSA+PSAgNjApIHsgZHQuTSA9IDA7ICsrZHQuSDsgfVxuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAyOlxuXHRcdFx0Lyo6OmlmKCFkdCkgYnJlYWs7Ki9cblx0XHRcdGlmKGR0LnUgPj0gMC41KSB7IGR0LnUgPSAwOyArK2R0LlM7IH1cblx0XHRcdGlmKGR0LlMgPj0gIDYwKSB7IGR0LlMgPSAwOyArK2R0Lk07IH1cblx0XHRcdGJyZWFrO1xuXHR9XG5cblx0LyogcmVwbGFjZSBmaWVsZHMgKi9cblx0dmFyIG5zdHIgPSBcIlwiLCBqajtcblx0Zm9yKGk9MDsgaSA8IG91dC5sZW5ndGg7ICsraSkge1xuXHRcdHN3aXRjaChvdXRbaV0udCkge1xuXHRcdFx0Y2FzZSAndCc6IGNhc2UgJ1QnOiBjYXNlICcgJzogY2FzZSAnRCc6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnWCc6IG91dFtpXS52ID0gXCJcIjsgb3V0W2ldLnQgPSBcIjtcIjsgYnJlYWs7XG5cdFx0XHRjYXNlICdkJzogY2FzZSAnbSc6IGNhc2UgJ3knOiBjYXNlICdoJzogY2FzZSAnSCc6IGNhc2UgJ00nOiBjYXNlICdzJzogY2FzZSAnZSc6IGNhc2UgJ2InOiBjYXNlICdaJzpcblx0XHRcdFx0Lyo6OmlmKCFkdCkgdGhyb3cgXCJ1bnJlYWNoYWJsZVwiOyAqL1xuXHRcdFx0XHRvdXRbaV0udiA9IFNTRl93cml0ZV9kYXRlKG91dFtpXS50LmNoYXJDb2RlQXQoMCksIG91dFtpXS52LCBkdCwgc3MwKTtcblx0XHRcdFx0b3V0W2ldLnQgPSAndCc7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnbic6IGNhc2UgJz8nOlxuXHRcdFx0XHRqaiA9IGkrMTtcblx0XHRcdFx0d2hpbGUob3V0W2pqXSAhPSBudWxsICYmIChcblx0XHRcdFx0XHQoYz1vdXRbampdLnQpID09PSBcIj9cIiB8fCBjID09PSBcIkRcIiB8fFxuXHRcdFx0XHRcdCgoYyA9PT0gXCIgXCIgfHwgYyA9PT0gXCJ0XCIpICYmIG91dFtqaisxXSAhPSBudWxsICYmIChvdXRbamorMV0udCA9PT0gJz8nIHx8IG91dFtqaisxXS50ID09PSBcInRcIiAmJiBvdXRbamorMV0udiA9PT0gJy8nKSkgfHxcblx0XHRcdFx0XHQob3V0W2ldLnQgPT09ICcoJyAmJiAoYyA9PT0gJyAnIHx8IGMgPT09ICduJyB8fCBjID09PSAnKScpKSB8fFxuXHRcdFx0XHRcdChjID09PSAndCcgJiYgKG91dFtqal0udiA9PT0gJy8nIHx8IG91dFtqal0udiA9PT0gJyAnICYmIG91dFtqaisxXSAhPSBudWxsICYmIG91dFtqaisxXS50ID09ICc/JykpXG5cdFx0XHRcdCkpIHtcblx0XHRcdFx0XHRvdXRbaV0udiArPSBvdXRbampdLnY7XG5cdFx0XHRcdFx0b3V0W2pqXSA9IHt2OlwiXCIsIHQ6XCI7XCJ9OyArK2pqO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG5zdHIgKz0gb3V0W2ldLnY7XG5cdFx0XHRcdGkgPSBqai0xOyBicmVhaztcblx0XHRcdGNhc2UgJ0cnOiBvdXRbaV0udCA9ICd0Jzsgb3V0W2ldLnYgPSBTU0ZfZ2VuZXJhbCh2LG9wdHMpOyBicmVhaztcblx0XHR9XG5cdH1cblx0dmFyIHZ2ID0gXCJcIiwgbXl2LCBvc3RyO1xuXHRpZihuc3RyLmxlbmd0aCA+IDApIHtcblx0XHRpZihuc3RyLmNoYXJDb2RlQXQoMCkgPT0gNDApIC8qICcoJyAqLyB7XG5cdFx0XHRteXYgPSAodjwwJiZuc3RyLmNoYXJDb2RlQXQoMCkgPT09IDQ1ID8gLXYgOiB2KTtcblx0XHRcdG9zdHIgPSB3cml0ZV9udW0oJ24nLCBuc3RyLCBteXYpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRteXYgPSAodjwwICYmIGZsZW4gPiAxID8gLXYgOiB2KTtcblx0XHRcdG9zdHIgPSB3cml0ZV9udW0oJ24nLCBuc3RyLCBteXYpO1xuXHRcdFx0aWYobXl2IDwgMCAmJiBvdXRbMF0gJiYgb3V0WzBdLnQgPT0gJ3QnKSB7XG5cdFx0XHRcdG9zdHIgPSBvc3RyLnN1YnN0cigxKTtcblx0XHRcdFx0b3V0WzBdLnYgPSBcIi1cIiArIG91dFswXS52O1xuXHRcdFx0fVxuXHRcdH1cblx0XHRqaj1vc3RyLmxlbmd0aC0xO1xuXHRcdHZhciBkZWNwdCA9IG91dC5sZW5ndGg7XG5cdFx0Zm9yKGk9MDsgaSA8IG91dC5sZW5ndGg7ICsraSkgaWYob3V0W2ldICE9IG51bGwgJiYgb3V0W2ldLnQgIT0gJ3QnICYmIG91dFtpXS52LmluZGV4T2YoXCIuXCIpID4gLTEpIHsgZGVjcHQgPSBpOyBicmVhazsgfVxuXHRcdHZhciBsYXN0aT1vdXQubGVuZ3RoO1xuXHRcdGlmKGRlY3B0ID09PSBvdXQubGVuZ3RoICYmIG9zdHIuaW5kZXhPZihcIkVcIikgPT09IC0xKSB7XG5cdFx0XHRmb3IoaT1vdXQubGVuZ3RoLTE7IGk+PSAwOy0taSkge1xuXHRcdFx0XHRpZihvdXRbaV0gPT0gbnVsbCB8fCAnbj8nLmluZGV4T2Yob3V0W2ldLnQpID09PSAtMSkgY29udGludWU7XG5cdFx0XHRcdGlmKGpqPj1vdXRbaV0udi5sZW5ndGgtMSkgeyBqaiAtPSBvdXRbaV0udi5sZW5ndGg7IG91dFtpXS52ID0gb3N0ci5zdWJzdHIoamorMSwgb3V0W2ldLnYubGVuZ3RoKTsgfVxuXHRcdFx0XHRlbHNlIGlmKGpqIDwgMCkgb3V0W2ldLnYgPSBcIlwiO1xuXHRcdFx0XHRlbHNlIHsgb3V0W2ldLnYgPSBvc3RyLnN1YnN0cigwLCBqaisxKTsgamogPSAtMTsgfVxuXHRcdFx0XHRvdXRbaV0udCA9ICd0Jztcblx0XHRcdFx0bGFzdGkgPSBpO1xuXHRcdFx0fVxuXHRcdFx0aWYoamo+PTAgJiYgbGFzdGk8b3V0Lmxlbmd0aCkgb3V0W2xhc3RpXS52ID0gb3N0ci5zdWJzdHIoMCxqaisxKSArIG91dFtsYXN0aV0udjtcblx0XHR9XG5cdFx0ZWxzZSBpZihkZWNwdCAhPT0gb3V0Lmxlbmd0aCAmJiBvc3RyLmluZGV4T2YoXCJFXCIpID09PSAtMSkge1xuXHRcdFx0amogPSBvc3RyLmluZGV4T2YoXCIuXCIpLTE7XG5cdFx0XHRmb3IoaT1kZWNwdDsgaT49IDA7IC0taSkge1xuXHRcdFx0XHRpZihvdXRbaV0gPT0gbnVsbCB8fCAnbj8nLmluZGV4T2Yob3V0W2ldLnQpID09PSAtMSkgY29udGludWU7XG5cdFx0XHRcdGo9b3V0W2ldLnYuaW5kZXhPZihcIi5cIik+LTEmJmk9PT1kZWNwdD9vdXRbaV0udi5pbmRleE9mKFwiLlwiKS0xOm91dFtpXS52Lmxlbmd0aC0xO1xuXHRcdFx0XHR2diA9IG91dFtpXS52LnN1YnN0cihqKzEpO1xuXHRcdFx0XHRmb3IoOyBqPj0wOyAtLWopIHtcblx0XHRcdFx0XHRpZihqaj49MCAmJiAob3V0W2ldLnYuY2hhckF0KGopID09PSBcIjBcIiB8fCBvdXRbaV0udi5jaGFyQXQoaikgPT09IFwiI1wiKSkgdnYgPSBvc3RyLmNoYXJBdChqai0tKSArIHZ2O1xuXHRcdFx0XHR9XG5cdFx0XHRcdG91dFtpXS52ID0gdnY7XG5cdFx0XHRcdG91dFtpXS50ID0gJ3QnO1xuXHRcdFx0XHRsYXN0aSA9IGk7XG5cdFx0XHR9XG5cdFx0XHRpZihqaj49MCAmJiBsYXN0aTxvdXQubGVuZ3RoKSBvdXRbbGFzdGldLnYgPSBvc3RyLnN1YnN0cigwLGpqKzEpICsgb3V0W2xhc3RpXS52O1xuXHRcdFx0amogPSBvc3RyLmluZGV4T2YoXCIuXCIpKzE7XG5cdFx0XHRmb3IoaT1kZWNwdDsgaTxvdXQubGVuZ3RoOyArK2kpIHtcblx0XHRcdFx0aWYob3V0W2ldID09IG51bGwgfHwgKCduPygnLmluZGV4T2Yob3V0W2ldLnQpID09PSAtMSAmJiBpICE9PSBkZWNwdCkpIGNvbnRpbnVlO1xuXHRcdFx0XHRqPW91dFtpXS52LmluZGV4T2YoXCIuXCIpPi0xJiZpPT09ZGVjcHQ/b3V0W2ldLnYuaW5kZXhPZihcIi5cIikrMTowO1xuXHRcdFx0XHR2diA9IG91dFtpXS52LnN1YnN0cigwLGopO1xuXHRcdFx0XHRmb3IoOyBqPG91dFtpXS52Lmxlbmd0aDsgKytqKSB7XG5cdFx0XHRcdFx0aWYoamo8b3N0ci5sZW5ndGgpIHZ2ICs9IG9zdHIuY2hhckF0KGpqKyspO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG91dFtpXS52ID0gdnY7XG5cdFx0XHRcdG91dFtpXS50ID0gJ3QnO1xuXHRcdFx0XHRsYXN0aSA9IGk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdGZvcihpPTA7IGk8b3V0Lmxlbmd0aDsgKytpKSBpZihvdXRbaV0gIT0gbnVsbCAmJiAnbj8nLmluZGV4T2Yob3V0W2ldLnQpPi0xKSB7XG5cdFx0bXl2ID0gKGZsZW4gPjEgJiYgdiA8IDAgJiYgaT4wICYmIG91dFtpLTFdLnYgPT09IFwiLVwiID8gLXY6dik7XG5cdFx0b3V0W2ldLnYgPSB3cml0ZV9udW0ob3V0W2ldLnQsIG91dFtpXS52LCBteXYpO1xuXHRcdG91dFtpXS50ID0gJ3QnO1xuXHR9XG5cdHZhciByZXR2YWwgPSBcIlwiO1xuXHRmb3IoaT0wOyBpICE9PSBvdXQubGVuZ3RoOyArK2kpIGlmKG91dFtpXSAhPSBudWxsKSByZXR2YWwgKz0gb3V0W2ldLnY7XG5cdHJldHVybiByZXR2YWw7XG59XG5cbnZhciBjZnJlZ2V4MiA9IC9cXFsoPXw+Wz1dP3w8Wz49XT8pKC0/XFxkKyg/OlxcLlxcZCopPylcXF0vO1xuZnVuY3Rpb24gY2hrY29uZCh2LCBycikge1xuXHRpZihyciA9PSBudWxsKSByZXR1cm4gZmFsc2U7XG5cdHZhciB0aHJlc2ggPSBwYXJzZUZsb2F0KHJyWzJdKTtcblx0c3dpdGNoKHJyWzFdKSB7XG5cdFx0Y2FzZSBcIj1cIjogIGlmKHYgPT0gdGhyZXNoKSByZXR1cm4gdHJ1ZTsgYnJlYWs7XG5cdFx0Y2FzZSBcIj5cIjogIGlmKHYgPiAgdGhyZXNoKSByZXR1cm4gdHJ1ZTsgYnJlYWs7XG5cdFx0Y2FzZSBcIjxcIjogIGlmKHYgPCAgdGhyZXNoKSByZXR1cm4gdHJ1ZTsgYnJlYWs7XG5cdFx0Y2FzZSBcIjw+XCI6IGlmKHYgIT0gdGhyZXNoKSByZXR1cm4gdHJ1ZTsgYnJlYWs7XG5cdFx0Y2FzZSBcIj49XCI6IGlmKHYgPj0gdGhyZXNoKSByZXR1cm4gdHJ1ZTsgYnJlYWs7XG5cdFx0Y2FzZSBcIjw9XCI6IGlmKHYgPD0gdGhyZXNoKSByZXR1cm4gdHJ1ZTsgYnJlYWs7XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gY2hvb3NlX2ZtdChmLyo6c3RyaW5nKi8sIHYvKjphbnkqLykge1xuXHR2YXIgZm10ID0gU1NGX3NwbGl0X2ZtdChmKTtcblx0dmFyIGwgPSBmbXQubGVuZ3RoLCBsYXQgPSBmbXRbbC0xXS5pbmRleE9mKFwiQFwiKTtcblx0aWYobDw0ICYmIGxhdD4tMSkgLS1sO1xuXHRpZihmbXQubGVuZ3RoID4gNCkgdGhyb3cgbmV3IEVycm9yKFwiY2Fubm90IGZpbmQgcmlnaHQgZm9ybWF0IGZvciB8XCIgKyBmbXQuam9pbihcInxcIikgKyBcInxcIik7XG5cdGlmKHR5cGVvZiB2ICE9PSBcIm51bWJlclwiKSByZXR1cm4gWzQsIGZtdC5sZW5ndGggPT09IDQgfHwgbGF0Pi0xP2ZtdFtmbXQubGVuZ3RoLTFdOlwiQFwiXTtcblx0c3dpdGNoKGZtdC5sZW5ndGgpIHtcblx0XHRjYXNlIDE6IGZtdCA9IGxhdD4tMSA/IFtcIkdlbmVyYWxcIiwgXCJHZW5lcmFsXCIsIFwiR2VuZXJhbFwiLCBmbXRbMF1dIDogW2ZtdFswXSwgZm10WzBdLCBmbXRbMF0sIFwiQFwiXTsgYnJlYWs7XG5cdFx0Y2FzZSAyOiBmbXQgPSBsYXQ+LTEgPyBbZm10WzBdLCBmbXRbMF0sIGZtdFswXSwgZm10WzFdXSA6IFtmbXRbMF0sIGZtdFsxXSwgZm10WzBdLCBcIkBcIl07IGJyZWFrO1xuXHRcdGNhc2UgMzogZm10ID0gbGF0Pi0xID8gW2ZtdFswXSwgZm10WzFdLCBmbXRbMF0sIGZtdFsyXV0gOiBbZm10WzBdLCBmbXRbMV0sIGZtdFsyXSwgXCJAXCJdOyBicmVhaztcblx0XHRjYXNlIDQ6IGJyZWFrO1xuXHR9XG5cdHZhciBmZiA9IHYgPiAwID8gZm10WzBdIDogdiA8IDAgPyBmbXRbMV0gOiBmbXRbMl07XG5cdGlmKGZtdFswXS5pbmRleE9mKFwiW1wiKSA9PT0gLTEgJiYgZm10WzFdLmluZGV4T2YoXCJbXCIpID09PSAtMSkgcmV0dXJuIFtsLCBmZl07XG5cdGlmKGZtdFswXS5tYXRjaCgvXFxbWz08Pl0vKSAhPSBudWxsIHx8IGZtdFsxXS5tYXRjaCgvXFxbWz08Pl0vKSAhPSBudWxsKSB7XG5cdFx0dmFyIG0xID0gZm10WzBdLm1hdGNoKGNmcmVnZXgyKTtcblx0XHR2YXIgbTIgPSBmbXRbMV0ubWF0Y2goY2ZyZWdleDIpO1xuXHRcdHJldHVybiBjaGtjb25kKHYsIG0xKSA/IFtsLCBmbXRbMF1dIDogY2hrY29uZCh2LCBtMikgPyBbbCwgZm10WzFdXSA6IFtsLCBmbXRbbTEgIT0gbnVsbCAmJiBtMiAhPSBudWxsID8gMiA6IDFdXTtcblx0fVxuXHRyZXR1cm4gW2wsIGZmXTtcbn1cbmZ1bmN0aW9uIFNTRl9mb3JtYXQoZm10Lyo6c3RyaW5nfG51bWJlciovLHYvKjphbnkqLyxvLyo6P2FueSovKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IHt9O1xuXHR2YXIgc2ZtdCA9IFwiXCI7XG5cdHN3aXRjaCh0eXBlb2YgZm10KSB7XG5cdFx0Y2FzZSBcInN0cmluZ1wiOlxuXHRcdFx0aWYoZm10ID09IFwibS9kL3l5XCIgJiYgby5kYXRlTkYpIHNmbXQgPSBvLmRhdGVORjtcblx0XHRcdGVsc2Ugc2ZtdCA9IGZtdDtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJudW1iZXJcIjpcblx0XHRcdGlmKGZtdCA9PSAxNCAmJiBvLmRhdGVORikgc2ZtdCA9IG8uZGF0ZU5GO1xuXHRcdFx0ZWxzZSBzZm10ID0gKG8udGFibGUgIT0gbnVsbCA/IChvLnRhYmxlLyo6YW55Ki8pIDogdGFibGVfZm10KVtmbXRdO1xuXHRcdFx0aWYoc2ZtdCA9PSBudWxsKSBzZm10ID0gKG8udGFibGUgJiYgby50YWJsZVtTU0ZfZGVmYXVsdF9tYXBbZm10XV0pIHx8IHRhYmxlX2ZtdFtTU0ZfZGVmYXVsdF9tYXBbZm10XV07XG5cdFx0XHRpZihzZm10ID09IG51bGwpIHNmbXQgPSBTU0ZfZGVmYXVsdF9zdHJbZm10XSB8fCBcIkdlbmVyYWxcIjtcblx0XHRcdGJyZWFrO1xuXHR9XG5cdGlmKFNTRl9pc2dlbmVyYWwoc2ZtdCwwKSkgcmV0dXJuIFNTRl9nZW5lcmFsKHYsIG8pO1xuXHRpZih2IGluc3RhbmNlb2YgRGF0ZSkgdiA9IGRhdGVudW1fbG9jYWwodiwgby5kYXRlMTkwNCk7XG5cdHZhciBmID0gY2hvb3NlX2ZtdChzZm10LCB2KTtcblx0aWYoU1NGX2lzZ2VuZXJhbChmWzFdKSkgcmV0dXJuIFNTRl9nZW5lcmFsKHYsIG8pO1xuXHRpZih2ID09PSB0cnVlKSB2ID0gXCJUUlVFXCI7IGVsc2UgaWYodiA9PT0gZmFsc2UpIHYgPSBcIkZBTFNFXCI7XG5cdGVsc2UgaWYodiA9PT0gXCJcIiB8fCB2ID09IG51bGwpIHJldHVybiBcIlwiO1xuXHRyZXR1cm4gZXZhbF9mbXQoZlsxXSwgdiwgbywgZlswXSk7XG59XG5mdW5jdGlvbiBTU0ZfbG9hZChmbXQvKjpzdHJpbmcqLywgaWR4Lyo6P251bWJlciovKS8qOm51bWJlciovIHtcblx0aWYodHlwZW9mIGlkeCAhPSAnbnVtYmVyJykge1xuXHRcdGlkeCA9ICtpZHggfHwgLTE7XG4vKjo6aWYodHlwZW9mIGlkeCAhPSAnbnVtYmVyJykgcmV0dXJuIDB4MTg4OyAqL1xuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCAweDAxODg7ICsraSkge1xuLyo6OmlmKHR5cGVvZiBpZHggIT0gJ251bWJlcicpIHJldHVybiAweDE4ODsgKi9cblx0XHRcdGlmKHRhYmxlX2ZtdFtpXSA9PSB1bmRlZmluZWQpIHsgaWYoaWR4IDwgMCkgaWR4ID0gaTsgY29udGludWU7IH1cblx0XHRcdGlmKHRhYmxlX2ZtdFtpXSA9PSBmbXQpIHsgaWR4ID0gaTsgYnJlYWs7IH1cblx0XHR9XG4vKjo6aWYodHlwZW9mIGlkeCAhPSAnbnVtYmVyJykgcmV0dXJuIDB4MTg4OyAqL1xuXHRcdGlmKGlkeCA8IDApIGlkeCA9IDB4MTg3O1xuXHR9XG4vKjo6aWYodHlwZW9mIGlkeCAhPSAnbnVtYmVyJykgcmV0dXJuIDB4MTg4OyAqL1xuXHR0YWJsZV9mbXRbaWR4XSA9IGZtdDtcblx0cmV0dXJuIGlkeDtcbn1cbmZ1bmN0aW9uIFNTRl9sb2FkX3RhYmxlKHRibC8qOlNTRlRhYmxlKi8pLyo6dm9pZCovIHtcblx0Zm9yKHZhciBpPTA7IGkhPTB4MDE4ODsgKytpKVxuXHRcdGlmKHRibFtpXSAhPT0gdW5kZWZpbmVkKSBTU0ZfbG9hZCh0YmxbaV0sIGkpO1xufVxuXG5mdW5jdGlvbiBtYWtlX3NzZigpIHtcblx0dGFibGVfZm10ID0gU1NGX2luaXRfdGFibGUoKTtcbn1cblxudmFyIFNTRiA9IHtcblx0Zm9ybWF0OiBTU0ZfZm9ybWF0LFxuXHRsb2FkOiBTU0ZfbG9hZCxcblx0X3RhYmxlOiB0YWJsZV9mbXQsXG5cdGxvYWRfdGFibGU6IFNTRl9sb2FkX3RhYmxlLFxuXHRwYXJzZV9kYXRlX2NvZGU6IFNTRl9wYXJzZV9kYXRlX2NvZGUsXG5cdGlzX2RhdGU6IGZtdF9pc19kYXRlLFxuXHRnZXRfdGFibGU6IGZ1bmN0aW9uIGdldF90YWJsZSgpIHsgcmV0dXJuIFNTRi5fdGFibGUgPSB0YWJsZV9mbXQ7IH1cbn07XG5cbnZhciBTU0ZJbXBsaWNpdC8qe1tudW1iZXJdOnN0cmluZ30qLyA9ICh7XG5cdFwiNVwiOiAnXCIkXCIjLCMjMF8pO1xcXFwoXCIkXCIjLCMjMFxcXFwpJyxcblx0XCI2XCI6ICdcIiRcIiMsIyMwXyk7W1JlZF1cXFxcKFwiJFwiIywjIzBcXFxcKScsXG5cdFwiN1wiOiAnXCIkXCIjLCMjMC4wMF8pO1xcXFwoXCIkXCIjLCMjMC4wMFxcXFwpJyxcblx0XCI4XCI6ICdcIiRcIiMsIyMwLjAwXyk7W1JlZF1cXFxcKFwiJFwiIywjIzAuMDBcXFxcKScsXG5cdFwiMjNcIjogJ0dlbmVyYWwnLCBcIjI0XCI6ICdHZW5lcmFsJywgXCIyNVwiOiAnR2VuZXJhbCcsIFwiMjZcIjogJ0dlbmVyYWwnLFxuXHRcIjI3XCI6ICdtL2QveXknLCBcIjI4XCI6ICdtL2QveXknLCBcIjI5XCI6ICdtL2QveXknLCBcIjMwXCI6ICdtL2QveXknLCBcIjMxXCI6ICdtL2QveXknLFxuXHRcIjMyXCI6ICdoOm1tOnNzJywgXCIzM1wiOiAnaDptbTpzcycsIFwiMzRcIjogJ2g6bW06c3MnLCBcIjM1XCI6ICdoOm1tOnNzJyxcblx0XCIzNlwiOiAnbS9kL3l5Jyxcblx0XCI0MVwiOiAnXygqICMsIyMwXyk7XygqIFxcKCMsIyMwXFwpO18oKiBcIi1cIl8pO18oQF8pJyxcblx0XCI0MlwiOiAnXyhcIiRcIiogIywjIzBfKTtfKFwiJFwiKiBcXCgjLCMjMFxcKTtfKFwiJFwiKiBcIi1cIl8pO18oQF8pJyxcblx0XCI0M1wiOiAnXygqICMsIyMwLjAwXyk7XygqIFxcKCMsIyMwLjAwXFwpO18oKiBcIi1cIj8/Xyk7XyhAXyknLFxuXHRcIjQ0XCI6ICdfKFwiJFwiKiAjLCMjMC4wMF8pO18oXCIkXCIqIFxcKCMsIyMwLjAwXFwpO18oXCIkXCIqIFwiLVwiPz9fKTtfKEBfKScsXG5cdFwiNTBcIjogJ20vZC95eScsIFwiNTFcIjogJ20vZC95eScsIFwiNTJcIjogJ20vZC95eScsIFwiNTNcIjogJ20vZC95eScsIFwiNTRcIjogJ20vZC95eScsXG5cdFwiNTVcIjogJ20vZC95eScsIFwiNTZcIjogJ20vZC95eScsIFwiNTdcIjogJ20vZC95eScsIFwiNThcIjogJ20vZC95eScsXG5cdFwiNTlcIjogJzAnLFxuXHRcIjYwXCI6ICcwLjAwJyxcblx0XCI2MVwiOiAnIywjIzAnLFxuXHRcIjYyXCI6ICcjLCMjMC4wMCcsXG5cdFwiNjNcIjogJ1wiJFwiIywjIzBfKTtcXFxcKFwiJFwiIywjIzBcXFxcKScsXG5cdFwiNjRcIjogJ1wiJFwiIywjIzBfKTtbUmVkXVxcXFwoXCIkXCIjLCMjMFxcXFwpJyxcblx0XCI2NVwiOiAnXCIkXCIjLCMjMC4wMF8pO1xcXFwoXCIkXCIjLCMjMC4wMFxcXFwpJyxcblx0XCI2NlwiOiAnXCIkXCIjLCMjMC4wMF8pO1tSZWRdXFxcXChcIiRcIiMsIyMwLjAwXFxcXCknLFxuXHRcIjY3XCI6ICcwJScsXG5cdFwiNjhcIjogJzAuMDAlJyxcblx0XCI2OVwiOiAnIyA/Lz8nLFxuXHRcIjcwXCI6ICcjID8/Lz8/Jyxcblx0XCI3MVwiOiAnbS9kL3l5Jyxcblx0XCI3MlwiOiAnbS9kL3l5Jyxcblx0XCI3M1wiOiAnZC1tbW0teXknLFxuXHRcIjc0XCI6ICdkLW1tbScsXG5cdFwiNzVcIjogJ21tbS15eScsXG5cdFwiNzZcIjogJ2g6bW0nLFxuXHRcIjc3XCI6ICdoOm1tOnNzJyxcblx0XCI3OFwiOiAnbS9kL3l5IGg6bW0nLFxuXHRcIjc5XCI6ICdtbTpzcycsXG5cdFwiODBcIjogJ1toXTptbTpzcycsXG5cdFwiODFcIjogJ21tc3MuMCdcbn0vKjphbnkqLyk7XG5cbi8qIGRhdGVORiBwYXJzZSBUT0RPOiBtb3ZlIHRvIFNTRiAqL1xudmFyIGRhdGVORnJlZ2V4ID0gL1tkRF0rfFttTV0rfFt5WWVFXSt8W0hoXSt8W1NzXSsvZztcbmZ1bmN0aW9uIGRhdGVORl9yZWdleChkYXRlTkYvKjpzdHJpbmd8bnVtYmVyKi8pLyo6UmVnRXhwKi8ge1xuXHR2YXIgZm10ID0gdHlwZW9mIGRhdGVORiA9PSBcIm51bWJlclwiID8gdGFibGVfZm10W2RhdGVORl0gOiBkYXRlTkY7XG5cdGZtdCA9IGZtdC5yZXBsYWNlKGRhdGVORnJlZ2V4LCBcIihcXFxcZCspXCIpO1xuXHRyZXR1cm4gbmV3IFJlZ0V4cChcIl5cIiArIGZtdCArIFwiJFwiKTtcbn1cbmZ1bmN0aW9uIGRhdGVORl9maXgoc3RyLyo6c3RyaW5nKi8sIGRhdGVORi8qOnN0cmluZyovLCBtYXRjaC8qOkFycmF5PHN0cmluZz4qLykvKjpzdHJpbmcqLyB7XG5cdHZhciBZID0gLTEsIG0gPSAtMSwgZCA9IC0xLCBIID0gLTEsIE0gPSAtMSwgUyA9IC0xO1xuXHQoZGF0ZU5GLm1hdGNoKGRhdGVORnJlZ2V4KXx8W10pLmZvckVhY2goZnVuY3Rpb24obiwgaSkge1xuXHRcdHZhciB2ID0gcGFyc2VJbnQobWF0Y2hbaSsxXSwgMTApO1xuXHRcdHN3aXRjaChuLnRvTG93ZXJDYXNlKCkuY2hhckF0KDApKSB7XG5cdFx0XHRjYXNlICd5JzogWSA9IHY7IGJyZWFrOyBjYXNlICdkJzogZCA9IHY7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnaCc6IEggPSB2OyBicmVhazsgY2FzZSAncyc6IFMgPSB2OyBicmVhaztcblx0XHRcdGNhc2UgJ20nOiBpZihIID49IDApIE0gPSB2OyBlbHNlIG0gPSB2OyBicmVhaztcblx0XHR9XG5cdH0pO1xuXHRpZihTID49IDAgJiYgTSA9PSAtMSAmJiBtID49IDApIHsgTSA9IG07IG0gPSAtMTsgfVxuXHR2YXIgZGF0ZXN0ciA9ICgoXCJcIiArIChZPj0wP1k6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSkpLnNsaWNlKC00KSArIFwiLVwiICsgKFwiMDBcIiArIChtPj0xP206MSkpLnNsaWNlKC0yKSArIFwiLVwiICsgKFwiMDBcIiArIChkPj0xP2Q6MSkpLnNsaWNlKC0yKSk7XG5cdGlmKGRhdGVzdHIubGVuZ3RoID09IDcpIGRhdGVzdHIgPSBcIjBcIiArIGRhdGVzdHI7XG5cdGlmKGRhdGVzdHIubGVuZ3RoID09IDgpIGRhdGVzdHIgPSBcIjIwXCIgKyBkYXRlc3RyO1xuXHR2YXIgdGltZXN0ciA9ICgoXCIwMFwiICsgKEg+PTA/SDowKSkuc2xpY2UoLTIpICsgXCI6XCIgKyAoXCIwMFwiICsgKE0+PTA/TTowKSkuc2xpY2UoLTIpICsgXCI6XCIgKyAoXCIwMFwiICsgKFM+PTA/UzowKSkuc2xpY2UoLTIpKTtcblx0aWYoSCA9PSAtMSAmJiBNID09IC0xICYmIFMgPT0gLTEpIHJldHVybiBkYXRlc3RyO1xuXHRpZihZID09IC0xICYmIG0gPT0gLTEgJiYgZCA9PSAtMSkgcmV0dXJuIHRpbWVzdHI7XG5cdHJldHVybiBkYXRlc3RyICsgXCJUXCIgKyB0aW1lc3RyO1xufVxuXG4vKjo6XG5kZWNsYXJlIHZhciBSZWFkU2hpZnQ6YW55O1xuZGVjbGFyZSB2YXIgQ2hlY2tGaWVsZDphbnk7XG5kZWNsYXJlIHZhciBwcmVwX2Jsb2I6YW55O1xuZGVjbGFyZSB2YXIgX19yZWFkVUludDMyTEU6YW55O1xuZGVjbGFyZSB2YXIgX19yZWFkSW50MzJMRTphbnk7XG5kZWNsYXJlIHZhciBfX3RvQnVmZmVyOmFueTtcbmRlY2xhcmUgdmFyIF9fdXRmMTZsZTphbnk7XG5kZWNsYXJlIHZhciBiY29uY2F0OmFueTtcbmRlY2xhcmUgdmFyIHMyYTphbnk7XG5kZWNsYXJlIHZhciBjaHIwOmFueTtcbmRlY2xhcmUgdmFyIGNocjE6YW55O1xuZGVjbGFyZSB2YXIgaGFzX2J1Zjpib29sZWFuO1xuZGVjbGFyZSB2YXIgbmV3X2J1Zjphbnk7XG5kZWNsYXJlIHZhciBuZXdfcmF3X2J1Zjphbnk7XG5kZWNsYXJlIHZhciBuZXdfdW5zYWZlX2J1Zjphbnk7XG5kZWNsYXJlIHZhciBCdWZmZXJfZnJvbTphbnk7XG4qL1xuLyogY2ZiLmpzIChDKSAyMDEzLXByZXNlbnQgU2hlZXRKUyAtLSBodHRwOi8vc2hlZXRqcy5jb20gKi9cbi8qIHZpbTogc2V0IHRzPTI6ICovXG4vKmpzaGludCBlcW51bGw6dHJ1ZSAqL1xuLypleHBvcnRlZCBDRkIgKi9cbi8qZ2xvYmFsIFVpbnQ4QXJyYXk6ZmFsc2UsIFVpbnQxNkFycmF5OmZhbHNlICovXG5cbi8qOjpcbnR5cGUgU2VjdG9yRW50cnkgPSB7XG5cdG5hbWU/OnN0cmluZztcblx0bm9kZXM/OkFycmF5PG51bWJlcj47XG5cdGRhdGE6UmF3Qnl0ZXM7XG59O1xudHlwZSBTZWN0b3JMaXN0ID0ge1xuXHRbazpzdHJpbmd8bnVtYmVyXTpTZWN0b3JFbnRyeTtcblx0bmFtZTo/c3RyaW5nO1xuXHRmYXRfYWRkcnM6QXJyYXk8bnVtYmVyPjtcblx0c3N6Om51bWJlcjtcbn1cbnR5cGUgQ0ZCRmlsZXMgPSB7W246c3RyaW5nXTpDRkJFbnRyeX07XG4qL1xuLyogY3JjMzIuanMgKEMpIDIwMTQtcHJlc2VudCBTaGVldEpTIC0tIGh0dHA6Ly9zaGVldGpzLmNvbSAqL1xuLyogdmltOiBzZXQgdHM9MjogKi9cbi8qZXhwb3J0ZWQgQ1JDMzIgKi9cbnZhciBDUkMzMiA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG52YXIgQ1JDMzIgPSB7fTtcbkNSQzMyLnZlcnNpb24gPSAnMS4yLjAnO1xuLyogc2VlIHBlcmYvY3JjMzJ0YWJsZS5qcyAqL1xuLypnbG9iYWwgSW50MzJBcnJheSAqL1xuZnVuY3Rpb24gc2lnbmVkX2NyY190YWJsZSgpLyo6YW55Ki8ge1xuXHR2YXIgYyA9IDAsIHRhYmxlLyo6QXJyYXk8bnVtYmVyPiovID0gbmV3IEFycmF5KDI1Nik7XG5cblx0Zm9yKHZhciBuID0wOyBuICE9IDI1NjsgKytuKXtcblx0XHRjID0gbjtcblx0XHRjID0gKChjJjEpID8gKC0zMDY2NzQ5MTIgXiAoYyA+Pj4gMSkpIDogKGMgPj4+IDEpKTtcblx0XHRjID0gKChjJjEpID8gKC0zMDY2NzQ5MTIgXiAoYyA+Pj4gMSkpIDogKGMgPj4+IDEpKTtcblx0XHRjID0gKChjJjEpID8gKC0zMDY2NzQ5MTIgXiAoYyA+Pj4gMSkpIDogKGMgPj4+IDEpKTtcblx0XHRjID0gKChjJjEpID8gKC0zMDY2NzQ5MTIgXiAoYyA+Pj4gMSkpIDogKGMgPj4+IDEpKTtcblx0XHRjID0gKChjJjEpID8gKC0zMDY2NzQ5MTIgXiAoYyA+Pj4gMSkpIDogKGMgPj4+IDEpKTtcblx0XHRjID0gKChjJjEpID8gKC0zMDY2NzQ5MTIgXiAoYyA+Pj4gMSkpIDogKGMgPj4+IDEpKTtcblx0XHRjID0gKChjJjEpID8gKC0zMDY2NzQ5MTIgXiAoYyA+Pj4gMSkpIDogKGMgPj4+IDEpKTtcblx0XHRjID0gKChjJjEpID8gKC0zMDY2NzQ5MTIgXiAoYyA+Pj4gMSkpIDogKGMgPj4+IDEpKTtcblx0XHR0YWJsZVtuXSA9IGM7XG5cdH1cblxuXHRyZXR1cm4gdHlwZW9mIEludDMyQXJyYXkgIT09ICd1bmRlZmluZWQnID8gbmV3IEludDMyQXJyYXkodGFibGUpIDogdGFibGU7XG59XG5cbnZhciBUMCA9IHNpZ25lZF9jcmNfdGFibGUoKTtcbmZ1bmN0aW9uIHNsaWNlX2J5XzE2X3RhYmxlcyhUKSB7XG5cdHZhciBjID0gMCwgdiA9IDAsIG4gPSAwLCB0YWJsZS8qOkFycmF5PG51bWJlcj4qLyA9IHR5cGVvZiBJbnQzMkFycmF5ICE9PSAndW5kZWZpbmVkJyA/IG5ldyBJbnQzMkFycmF5KDQwOTYpIDogbmV3IEFycmF5KDQwOTYpIDtcblxuXHRmb3IobiA9IDA7IG4gIT0gMjU2OyArK24pIHRhYmxlW25dID0gVFtuXTtcblx0Zm9yKG4gPSAwOyBuICE9IDI1NjsgKytuKSB7XG5cdFx0diA9IFRbbl07XG5cdFx0Zm9yKGMgPSAyNTYgKyBuOyBjIDwgNDA5NjsgYyArPSAyNTYpIHYgPSB0YWJsZVtjXSA9ICh2ID4+PiA4KSBeIFRbdiAmIDB4RkZdO1xuXHR9XG5cdHZhciBvdXQgPSBbXTtcblx0Zm9yKG4gPSAxOyBuICE9IDE2OyArK24pIG91dFtuIC0gMV0gPSB0eXBlb2YgSW50MzJBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyB0YWJsZS5zdWJhcnJheShuICogMjU2LCBuICogMjU2ICsgMjU2KSA6IHRhYmxlLnNsaWNlKG4gKiAyNTYsIG4gKiAyNTYgKyAyNTYpO1xuXHRyZXR1cm4gb3V0O1xufVxudmFyIFRUID0gc2xpY2VfYnlfMTZfdGFibGVzKFQwKTtcbnZhciBUMSA9IFRUWzBdLCAgVDIgPSBUVFsxXSwgIFQzID0gVFRbMl0sICBUNCA9IFRUWzNdLCAgVDUgPSBUVFs0XTtcbnZhciBUNiA9IFRUWzVdLCAgVDcgPSBUVFs2XSwgIFQ4ID0gVFRbN10sICBUOSA9IFRUWzhdLCAgVGEgPSBUVFs5XTtcbnZhciBUYiA9IFRUWzEwXSwgVGMgPSBUVFsxMV0sIFRkID0gVFRbMTJdLCBUZSA9IFRUWzEzXSwgVGYgPSBUVFsxNF07XG5mdW5jdGlvbiBjcmMzMl9ic3RyKGJzdHIvKjpzdHJpbmcqLywgc2VlZC8qOm51bWJlciovKS8qOm51bWJlciovIHtcblx0dmFyIEMgPSBzZWVkLyo6OiA/IDAgOiAwICovIF4gLTE7XG5cdGZvcih2YXIgaSA9IDAsIEwgPSBic3RyLmxlbmd0aDsgaSA8IEw7KSBDID0gKEM+Pj44KSBeIFQwWyhDXmJzdHIuY2hhckNvZGVBdChpKyspKSYweEZGXTtcblx0cmV0dXJuIH5DO1xufVxuXG5mdW5jdGlvbiBjcmMzMl9idWYoQi8qOlVpbnQ4QXJyYXl8QXJyYXk8bnVtYmVyPiovLCBzZWVkLyo6bnVtYmVyKi8pLyo6bnVtYmVyKi8ge1xuXHR2YXIgQyA9IHNlZWQvKjo6ID8gMCA6IDAgKi8gXiAtMSwgTCA9IEIubGVuZ3RoIC0gMTUsIGkgPSAwO1xuXHRmb3IoOyBpIDwgTDspIEMgPVxuXHRcdFRmW0JbaSsrXSBeIChDICYgMjU1KV0gXlxuXHRcdFRlW0JbaSsrXSBeICgoQyA+PiA4KSAmIDI1NSldIF5cblx0XHRUZFtCW2krK10gXiAoKEMgPj4gMTYpICYgMjU1KV0gXlxuXHRcdFRjW0JbaSsrXSBeIChDID4+PiAyNCldIF5cblx0XHRUYltCW2krK11dIF4gVGFbQltpKytdXSBeIFQ5W0JbaSsrXV0gXiBUOFtCW2krK11dIF5cblx0XHRUN1tCW2krK11dIF4gVDZbQltpKytdXSBeIFQ1W0JbaSsrXV0gXiBUNFtCW2krK11dIF5cblx0XHRUM1tCW2krK11dIF4gVDJbQltpKytdXSBeIFQxW0JbaSsrXV0gXiBUMFtCW2krK11dO1xuXHRMICs9IDE1O1xuXHR3aGlsZShpIDwgTCkgQyA9IChDPj4+OCkgXiBUMFsoQ15CW2krK10pJjB4RkZdO1xuXHRyZXR1cm4gfkM7XG59XG5cbmZ1bmN0aW9uIGNyYzMyX3N0cihzdHIvKjpzdHJpbmcqLywgc2VlZC8qOm51bWJlciovKS8qOm51bWJlciovIHtcblx0dmFyIEMgPSBzZWVkIF4gLTE7XG5cdGZvcih2YXIgaSA9IDAsIEwgPSBzdHIubGVuZ3RoLCBjID0gMCwgZCA9IDA7IGkgPCBMOykge1xuXHRcdGMgPSBzdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdGlmKGMgPCAweDgwKSB7XG5cdFx0XHRDID0gKEM+Pj44KSBeIFQwWyhDXmMpJjB4RkZdO1xuXHRcdH0gZWxzZSBpZihjIDwgMHg4MDApIHtcblx0XHRcdEMgPSAoQz4+PjgpIF4gVDBbKEMgXiAoMTkyfCgoYz4+NikmMzEpKSkmMHhGRl07XG5cdFx0XHRDID0gKEM+Pj44KSBeIFQwWyhDIF4gKDEyOHwoYyY2MykpKSYweEZGXTtcblx0XHR9IGVsc2UgaWYoYyA+PSAweEQ4MDAgJiYgYyA8IDB4RTAwMCkge1xuXHRcdFx0YyA9IChjJjEwMjMpKzY0OyBkID0gc3RyLmNoYXJDb2RlQXQoaSsrKSYxMDIzO1xuXHRcdFx0QyA9IChDPj4+OCkgXiBUMFsoQyBeICgyNDB8KChjPj44KSY3KSkpJjB4RkZdO1xuXHRcdFx0QyA9IChDPj4+OCkgXiBUMFsoQyBeICgxMjh8KChjPj4yKSY2MykpKSYweEZGXTtcblx0XHRcdEMgPSAoQz4+PjgpIF4gVDBbKEMgXiAoMTI4fCgoZD4+NikmMTUpfCgoYyYzKTw8NCkpKSYweEZGXTtcblx0XHRcdEMgPSAoQz4+PjgpIF4gVDBbKEMgXiAoMTI4fChkJjYzKSkpJjB4RkZdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRDID0gKEM+Pj44KSBeIFQwWyhDIF4gKDIyNHwoKGM+PjEyKSYxNSkpKSYweEZGXTtcblx0XHRcdEMgPSAoQz4+PjgpIF4gVDBbKEMgXiAoMTI4fCgoYz4+NikmNjMpKSkmMHhGRl07XG5cdFx0XHRDID0gKEM+Pj44KSBeIFQwWyhDIF4gKDEyOHwoYyY2MykpKSYweEZGXTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIH5DO1xufVxuQ1JDMzIudGFibGUgPSBUMDtcbkNSQzMyLmJzdHIgPSBjcmMzMl9ic3RyO1xuQ1JDMzIuYnVmID0gY3JjMzJfYnVmO1xuQ1JDMzIuc3RyID0gY3JjMzJfc3RyO1xucmV0dXJuIENSQzMyO1xufSkoKTtcbi8qIFtNUy1DRkJdIHYyMDE3MTIwMSAqL1xudmFyIENGQiA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24gX0NGQigpe1xudmFyIGV4cG9ydHMgPSB7fTtcbmV4cG9ydHMudmVyc2lvbiA9ICcxLjIuMSc7XG4vKiBbTVMtQ0ZCXSAyLjYuNCAqL1xuZnVuY3Rpb24gbmFtZWNtcChsLyo6c3RyaW5nKi8sIHIvKjpzdHJpbmcqLykvKjpudW1iZXIqLyB7XG5cdHZhciBMID0gbC5zcGxpdChcIi9cIiksIFIgPSByLnNwbGl0KFwiL1wiKTtcblx0Zm9yKHZhciBpID0gMCwgYyA9IDAsIFogPSBNYXRoLm1pbihMLmxlbmd0aCwgUi5sZW5ndGgpOyBpIDwgWjsgKytpKSB7XG5cdFx0aWYoKGMgPSBMW2ldLmxlbmd0aCAtIFJbaV0ubGVuZ3RoKSkgcmV0dXJuIGM7XG5cdFx0aWYoTFtpXSAhPSBSW2ldKSByZXR1cm4gTFtpXSA8IFJbaV0gPyAtMSA6IDE7XG5cdH1cblx0cmV0dXJuIEwubGVuZ3RoIC0gUi5sZW5ndGg7XG59XG5mdW5jdGlvbiBkaXJuYW1lKHAvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdGlmKHAuY2hhckF0KHAubGVuZ3RoIC0gMSkgPT0gXCIvXCIpIHJldHVybiAocC5zbGljZSgwLC0xKS5pbmRleE9mKFwiL1wiKSA9PT0gLTEpID8gcCA6IGRpcm5hbWUocC5zbGljZSgwLCAtMSkpO1xuXHR2YXIgYyA9IHAubGFzdEluZGV4T2YoXCIvXCIpO1xuXHRyZXR1cm4gKGMgPT09IC0xKSA/IHAgOiBwLnNsaWNlKDAsIGMrMSk7XG59XG5cbmZ1bmN0aW9uIGZpbGVuYW1lKHAvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdGlmKHAuY2hhckF0KHAubGVuZ3RoIC0gMSkgPT0gXCIvXCIpIHJldHVybiBmaWxlbmFtZShwLnNsaWNlKDAsIC0xKSk7XG5cdHZhciBjID0gcC5sYXN0SW5kZXhPZihcIi9cIik7XG5cdHJldHVybiAoYyA9PT0gLTEpID8gcCA6IHAuc2xpY2UoYysxKTtcbn1cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiBET1MgRGF0ZSBmb3JtYXQ6XG4gICBoaWdofFlZWVlZWVltLm1tbWRkZGRkLkhISEhITU1NLk1NTVNTU1NTfGxvd1xuICAgYWRkIDE5ODAgdG8gc3RvcmVkIHllYXJcbiAgIHN0b3JlZCBzZWNvbmQgc2hvdWxkIGJlIGRvdWJsZWRcbiovXG5cbi8qIHdyaXRlIEpTIGRhdGUgdG8gYnVmIGFzIGEgRE9TIGRhdGUgKi9cbmZ1bmN0aW9uIHdyaXRlX2Rvc19kYXRlKGJ1Zi8qOkNGQmxvYiovLCBkYXRlLyo6RGF0ZXxzdHJpbmcqLykge1xuXHRpZih0eXBlb2YgZGF0ZSA9PT0gXCJzdHJpbmdcIikgZGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuXHR2YXIgaG1zLyo6bnVtYmVyKi8gPSBkYXRlLmdldEhvdXJzKCk7XG5cdGhtcyA9IGhtcyA8PCA2IHwgZGF0ZS5nZXRNaW51dGVzKCk7XG5cdGhtcyA9IGhtcyA8PCA1IHwgKGRhdGUuZ2V0U2Vjb25kcygpPj4+MSk7XG5cdGJ1Zi53cml0ZV9zaGlmdCgyLCBobXMpO1xuXHR2YXIgeW1kLyo6bnVtYmVyKi8gPSAoZGF0ZS5nZXRGdWxsWWVhcigpIC0gMTk4MCk7XG5cdHltZCA9IHltZCA8PCA0IHwgKGRhdGUuZ2V0TW9udGgoKSsxKTtcblx0eW1kID0geW1kIDw8IDUgfCBkYXRlLmdldERhdGUoKTtcblx0YnVmLndyaXRlX3NoaWZ0KDIsIHltZCk7XG59XG5cbi8qIHJlYWQgZm91ciBieXRlcyBmcm9tIGJ1ZiBhbmQgaW50ZXJwcmV0IGFzIGEgRE9TIGRhdGUgKi9cbmZ1bmN0aW9uIHBhcnNlX2Rvc19kYXRlKGJ1Zi8qOkNGQmxvYiovKS8qOkRhdGUqLyB7XG5cdHZhciBobXMgPSBidWYucmVhZF9zaGlmdCgyKSAmIDB4RkZGRjtcblx0dmFyIHltZCA9IGJ1Zi5yZWFkX3NoaWZ0KDIpICYgMHhGRkZGO1xuXHR2YXIgdmFsID0gbmV3IERhdGUoKTtcblx0dmFyIGQgPSB5bWQgJiAweDFGOyB5bWQgPj4+PSA1O1xuXHR2YXIgbSA9IHltZCAmIDB4MEY7IHltZCA+Pj49IDQ7XG5cdHZhbC5zZXRNaWxsaXNlY29uZHMoMCk7XG5cdHZhbC5zZXRGdWxsWWVhcih5bWQgKyAxOTgwKTtcblx0dmFsLnNldE1vbnRoKG0tMSk7XG5cdHZhbC5zZXREYXRlKGQpO1xuXHR2YXIgUyA9IGhtcyAmIDB4MUY7IGhtcyA+Pj49IDU7XG5cdHZhciBNID0gaG1zICYgMHgzRjsgaG1zID4+Pj0gNjtcblx0dmFsLnNldEhvdXJzKGhtcyk7XG5cdHZhbC5zZXRNaW51dGVzKE0pO1xuXHR2YWwuc2V0U2Vjb25kcyhTPDwxKTtcblx0cmV0dXJuIHZhbDtcbn1cbmZ1bmN0aW9uIHBhcnNlX2V4dHJhX2ZpZWxkKGJsb2IvKjpDRkJsb2IqLykvKjphbnkqLyB7XG5cdHByZXBfYmxvYihibG9iLCAwKTtcblx0dmFyIG8gPSAvKjo6KCove30vKjo6IDphbnkpKi87XG5cdHZhciBmbGFncyA9IDA7XG5cdHdoaWxlKGJsb2IubCA8PSBibG9iLmxlbmd0aCAtIDQpIHtcblx0XHR2YXIgdHlwZSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHR2YXIgc3ogPSBibG9iLnJlYWRfc2hpZnQoMiksIHRndCA9IGJsb2IubCArIHN6O1xuXHRcdHZhciBwID0ge307XG5cdFx0c3dpdGNoKHR5cGUpIHtcblx0XHRcdC8qIFVOSVgtc3R5bGUgVGltZXN0YW1wcyAqL1xuXHRcdFx0Y2FzZSAweDU0NTU6IHtcblx0XHRcdFx0ZmxhZ3MgPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdFx0XHRcdGlmKGZsYWdzICYgMSkgcC5tdGltZSA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0XHRcdFx0LyogZm9yIHNvbWUgcmVhc29uLCBDRCBmbGFnIGNvcnJlc3BvbmRzIHRvIExGSCAqL1xuXHRcdFx0XHRpZihzeiA+IDUpIHtcblx0XHRcdFx0XHRpZihmbGFncyAmIDIpIHAuYXRpbWUgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdFx0XHRcdFx0aWYoZmxhZ3MgJiA0KSBwLmN0aW1lID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmKHAubXRpbWUpIHAubXQgPSBuZXcgRGF0ZShwLm10aW1lKjEwMDApO1xuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGJsb2IubCA9IHRndDtcblx0XHRvW3R5cGVdID0gcDtcblx0fVxuXHRyZXR1cm4gbztcbn1cbnZhciBmcy8qOjogPSByZXF1aXJlKCdmcycpOyAqLztcbmZ1bmN0aW9uIGdldF9mcygpIHsgcmV0dXJuIGZzIHx8IChmcyA9IHt9KTsgfVxuZnVuY3Rpb24gcGFyc2UoZmlsZS8qOlJhd0J5dGVzKi8sIG9wdGlvbnMvKjpDRkJSZWFkT3B0cyovKS8qOkNGQkNvbnRhaW5lciovIHtcbmlmKGZpbGVbMF0gPT0gMHg1MCAmJiBmaWxlWzFdID09IDB4NGIpIHJldHVybiBwYXJzZV96aXAoZmlsZSwgb3B0aW9ucyk7XG5pZigoZmlsZVswXSB8IDB4MjApID09IDB4NmQgJiYgKGZpbGVbMV18MHgyMCkgPT0gMHg2OSkgcmV0dXJuIHBhcnNlX21hZChmaWxlLCBvcHRpb25zKTtcbmlmKGZpbGUubGVuZ3RoIDwgNTEyKSB0aHJvdyBuZXcgRXJyb3IoXCJDRkIgZmlsZSBzaXplIFwiICsgZmlsZS5sZW5ndGggKyBcIiA8IDUxMlwiKTtcbnZhciBtdmVyID0gMztcbnZhciBzc3ogPSA1MTI7XG52YXIgbm1mcyA9IDA7IC8vIG51bWJlciBvZiBtaW5pIEZBVCBzZWN0b3JzXG52YXIgZGlmYXRfc2VjX2NudCA9IDA7XG52YXIgZGlyX3N0YXJ0ID0gMDtcbnZhciBtaW5pZmF0X3N0YXJ0ID0gMDtcbnZhciBkaWZhdF9zdGFydCA9IDA7XG5cbnZhciBmYXRfYWRkcnMvKjpBcnJheTxudW1iZXI+Ki8gPSBbXTsgLy8gbG9jYXRpb25zIG9mIEZBVCBzZWN0b3JzXG5cbi8qIFtNUy1DRkJdIDIuMiBDb21wb3VuZCBGaWxlIEhlYWRlciAqL1xudmFyIGJsb2IvKjpDRkJsb2IqLyA9IC8qOjooKi9maWxlLnNsaWNlKDAsNTEyKS8qOjogOmFueSkqLztcbnByZXBfYmxvYihibG9iLCAwKTtcblxuLyogbWFqb3IgdmVyc2lvbiAqL1xudmFyIG12ID0gY2hlY2tfZ2V0X212ZXIoYmxvYik7XG5tdmVyID0gbXZbMF07XG5zd2l0Y2gobXZlcikge1xuXHRjYXNlIDM6IHNzeiA9IDUxMjsgYnJlYWs7IGNhc2UgNDogc3N6ID0gNDA5NjsgYnJlYWs7XG5cdGNhc2UgMDogaWYobXZbMV0gPT0gMCkgcmV0dXJuIHBhcnNlX3ppcChmaWxlLCBvcHRpb25zKTtcblx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJNYWpvciBWZXJzaW9uOiBFeHBlY3RlZCAzIG9yIDQgc2F3IFwiICsgbXZlcik7XG59XG5cbi8qIHJlcHJvY2VzcyBoZWFkZXIgKi9cbmlmKHNzeiAhPT0gNTEyKSB7IGJsb2IgPSAvKjo6KCovZmlsZS5zbGljZSgwLHNzeikvKjo6IDphbnkpKi87IHByZXBfYmxvYihibG9iLCAyOCAvKiBibG9iLmwgKi8pOyB9XG4vKiBTYXZlIGhlYWRlciBmb3IgZmluYWwgb2JqZWN0ICovXG52YXIgaGVhZGVyLyo6UmF3Qnl0ZXMqLyA9IGZpbGUuc2xpY2UoMCxzc3opO1xuXG5jaGVja19zaGlmdHMoYmxvYiwgbXZlcik7XG5cbi8vIE51bWJlciBvZiBEaXJlY3RvcnkgU2VjdG9yc1xudmFyIGRpcl9jbnQvKjpudW1iZXIqLyA9IGJsb2IucmVhZF9zaGlmdCg0LCAnaScpO1xuaWYobXZlciA9PT0gMyAmJiBkaXJfY250ICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJyMgRGlyZWN0b3J5IFNlY3RvcnM6IEV4cGVjdGVkIDAgc2F3ICcgKyBkaXJfY250KTtcblxuLy8gTnVtYmVyIG9mIEZBVCBTZWN0b3JzXG5ibG9iLmwgKz0gNDtcblxuLy8gRmlyc3QgRGlyZWN0b3J5IFNlY3RvciBMb2NhdGlvblxuZGlyX3N0YXJ0ID0gYmxvYi5yZWFkX3NoaWZ0KDQsICdpJyk7XG5cbi8vIFRyYW5zYWN0aW9uIFNpZ25hdHVyZVxuYmxvYi5sICs9IDQ7XG5cbi8vIE1pbmkgU3RyZWFtIEN1dG9mZiBTaXplXG5ibG9iLmNoaygnMDAxMDAwMDAnLCAnTWluaSBTdHJlYW0gQ3V0b2ZmIFNpemU6ICcpO1xuXG4vLyBGaXJzdCBNaW5pIEZBVCBTZWN0b3IgTG9jYXRpb25cbm1pbmlmYXRfc3RhcnQgPSBibG9iLnJlYWRfc2hpZnQoNCwgJ2knKTtcblxuLy8gTnVtYmVyIG9mIE1pbmkgRkFUIFNlY3RvcnNcbm5tZnMgPSBibG9iLnJlYWRfc2hpZnQoNCwgJ2knKTtcblxuLy8gRmlyc3QgRElGQVQgc2VjdG9yIGxvY2F0aW9uXG5kaWZhdF9zdGFydCA9IGJsb2IucmVhZF9zaGlmdCg0LCAnaScpO1xuXG4vLyBOdW1iZXIgb2YgRElGQVQgU2VjdG9yc1xuZGlmYXRfc2VjX2NudCA9IGJsb2IucmVhZF9zaGlmdCg0LCAnaScpO1xuXG4vLyBHcmFiIEZBVCBTZWN0b3IgTG9jYXRpb25zXG5mb3IodmFyIHEgPSAtMSwgaiA9IDA7IGogPCAxMDk7ICsraikgeyAvKiAxMDkgPSAoNTEyIC0gYmxvYi5sKT4+PjI7ICovXG5cdHEgPSBibG9iLnJlYWRfc2hpZnQoNCwgJ2knKTtcblx0aWYocTwwKSBicmVhaztcblx0ZmF0X2FkZHJzW2pdID0gcTtcbn1cblxuLyoqIEJyZWFrIHRoZSBmaWxlIHVwIGludG8gc2VjdG9ycyAqL1xudmFyIHNlY3RvcnMvKjpBcnJheTxSYXdCeXRlcz4qLyA9IHNlY3RvcmlmeShmaWxlLCBzc3opO1xuXG5zbGV1dGhfZmF0KGRpZmF0X3N0YXJ0LCBkaWZhdF9zZWNfY250LCBzZWN0b3JzLCBzc3osIGZhdF9hZGRycyk7XG5cbi8qKiBDaGFpbnMgKi9cbnZhciBzZWN0b3JfbGlzdC8qOlNlY3Rvckxpc3QqLyA9IG1ha2Vfc2VjdG9yX2xpc3Qoc2VjdG9ycywgZGlyX3N0YXJ0LCBmYXRfYWRkcnMsIHNzeik7XG5cbnNlY3Rvcl9saXN0W2Rpcl9zdGFydF0ubmFtZSA9IFwiIURpcmVjdG9yeVwiO1xuaWYobm1mcyA+IDAgJiYgbWluaWZhdF9zdGFydCAhPT0gRU5ET0ZDSEFJTikgc2VjdG9yX2xpc3RbbWluaWZhdF9zdGFydF0ubmFtZSA9IFwiIU1pbmlGQVRcIjtcbnNlY3Rvcl9saXN0W2ZhdF9hZGRyc1swXV0ubmFtZSA9IFwiIUZBVFwiO1xuc2VjdG9yX2xpc3QuZmF0X2FkZHJzID0gZmF0X2FkZHJzO1xuc2VjdG9yX2xpc3Quc3N6ID0gc3N6O1xuXG4vKiBbTVMtQ0ZCXSAyLjYuMSBDb21wb3VuZCBGaWxlIERpcmVjdG9yeSBFbnRyeSAqL1xudmFyIGZpbGVzLyo6Q0ZCRmlsZXMqLyA9IHt9LCBQYXRocy8qOkFycmF5PHN0cmluZz4qLyA9IFtdLCBGaWxlSW5kZXgvKjpDRkJGaWxlSW5kZXgqLyA9IFtdLCBGdWxsUGF0aHMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcbnJlYWRfZGlyZWN0b3J5KGRpcl9zdGFydCwgc2VjdG9yX2xpc3QsIHNlY3RvcnMsIFBhdGhzLCBubWZzLCBmaWxlcywgRmlsZUluZGV4LCBtaW5pZmF0X3N0YXJ0KTtcblxuYnVpbGRfZnVsbF9wYXRocyhGaWxlSW5kZXgsIEZ1bGxQYXRocywgUGF0aHMpO1xuUGF0aHMuc2hpZnQoKTtcblxudmFyIG8gPSB7XG5cdEZpbGVJbmRleDogRmlsZUluZGV4LFxuXHRGdWxsUGF0aHM6IEZ1bGxQYXRoc1xufTtcblxuLy8gJEZsb3dJZ25vcmVcbmlmKG9wdGlvbnMgJiYgb3B0aW9ucy5yYXcpIG8ucmF3ID0ge2hlYWRlcjogaGVhZGVyLCBzZWN0b3JzOiBzZWN0b3JzfTtcbnJldHVybiBvO1xufSAvLyBwYXJzZVxuXG4vKiBbTVMtQ0ZCXSAyLjIgQ29tcG91bmQgRmlsZSBIZWFkZXIgLS0gcmVhZCB1cCB0byBtYWpvciB2ZXJzaW9uICovXG5mdW5jdGlvbiBjaGVja19nZXRfbXZlcihibG9iLyo6Q0ZCbG9iKi8pLyo6W251bWJlciwgbnVtYmVyXSovIHtcblx0aWYoYmxvYltibG9iLmxdID09IDB4NTAgJiYgYmxvYltibG9iLmwgKyAxXSA9PSAweDRiKSByZXR1cm4gWzAsIDBdO1xuXHQvLyBoZWFkZXIgc2lnbmF0dXJlIDhcblx0YmxvYi5jaGsoSEVBREVSX1NJR05BVFVSRSwgJ0hlYWRlciBTaWduYXR1cmU6ICcpO1xuXG5cdC8vIGNsc2lkIDE2XG5cdC8vYmxvYi5jaGsoSEVBREVSX0NMU0lELCAnQ0xTSUQ6ICcpO1xuXHRibG9iLmwgKz0gMTY7XG5cblx0Ly8gbWlub3IgdmVyc2lvbiAyXG5cdHZhciBtdmVyLyo6bnVtYmVyKi8gPSBibG9iLnJlYWRfc2hpZnQoMiwgJ3UnKTtcblxuXHRyZXR1cm4gW2Jsb2IucmVhZF9zaGlmdCgyLCd1JyksIG12ZXJdO1xufVxuZnVuY3Rpb24gY2hlY2tfc2hpZnRzKGJsb2IvKjpDRkJsb2IqLywgbXZlci8qOm51bWJlciovKS8qOnZvaWQqLyB7XG5cdHZhciBzaGlmdCA9IDB4MDk7XG5cblx0Ly8gQnl0ZSBPcmRlclxuXHQvL2Jsb2IuY2hrKCdmZWZmJywgJ0J5dGUgT3JkZXI6ICcpOyAvLyBub3RlOiBzb21lIHdyaXRlcnMgcHV0IDB4ZmZmZlxuXHRibG9iLmwgKz0gMjtcblxuXHQvLyBTZWN0b3IgU2hpZnRcblx0c3dpdGNoKChzaGlmdCA9IGJsb2IucmVhZF9zaGlmdCgyKSkpIHtcblx0XHRjYXNlIDB4MDk6IGlmKG12ZXIgIT0gMykgdGhyb3cgbmV3IEVycm9yKCdTZWN0b3IgU2hpZnQ6IEV4cGVjdGVkIDkgc2F3ICcgKyBzaGlmdCk7IGJyZWFrO1xuXHRcdGNhc2UgMHgwYzogaWYobXZlciAhPSA0KSB0aHJvdyBuZXcgRXJyb3IoJ1NlY3RvciBTaGlmdDogRXhwZWN0ZWQgMTIgc2F3ICcgKyBzaGlmdCk7IGJyZWFrO1xuXHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcignU2VjdG9yIFNoaWZ0OiBFeHBlY3RlZCA5IG9yIDEyIHNhdyAnICsgc2hpZnQpO1xuXHR9XG5cblx0Ly8gTWluaSBTZWN0b3IgU2hpZnRcblx0YmxvYi5jaGsoJzA2MDAnLCAnTWluaSBTZWN0b3IgU2hpZnQ6ICcpO1xuXG5cdC8vIFJlc2VydmVkXG5cdGJsb2IuY2hrKCcwMDAwMDAwMDAwMDAnLCAnUmVzZXJ2ZWQ6ICcpO1xufVxuXG4vKiogQnJlYWsgdGhlIGZpbGUgdXAgaW50byBzZWN0b3JzICovXG5mdW5jdGlvbiBzZWN0b3JpZnkoZmlsZS8qOlJhd0J5dGVzKi8sIHNzei8qOm51bWJlciovKS8qOkFycmF5PFJhd0J5dGVzPiovIHtcblx0dmFyIG5zZWN0b3JzID0gTWF0aC5jZWlsKGZpbGUubGVuZ3RoL3NzeiktMTtcblx0dmFyIHNlY3RvcnMvKjpBcnJheTxSYXdCeXRlcz4qLyA9IFtdO1xuXHRmb3IodmFyIGk9MTsgaSA8IG5zZWN0b3JzOyArK2kpIHNlY3RvcnNbaS0xXSA9IGZpbGUuc2xpY2UoaSpzc3osKGkrMSkqc3N6KTtcblx0c2VjdG9yc1tuc2VjdG9ycy0xXSA9IGZpbGUuc2xpY2UobnNlY3RvcnMqc3N6KTtcblx0cmV0dXJuIHNlY3RvcnM7XG59XG5cbi8qIFtNUy1DRkJdIDIuNi40IFJlZC1CbGFjayBUcmVlICovXG5mdW5jdGlvbiBidWlsZF9mdWxsX3BhdGhzKEZJLyo6Q0ZCRmlsZUluZGV4Ki8sIEZQLyo6QXJyYXk8c3RyaW5nPiovLCBQYXRocy8qOkFycmF5PHN0cmluZz4qLykvKjp2b2lkKi8ge1xuXHR2YXIgaSA9IDAsIEwgPSAwLCBSID0gMCwgQyA9IDAsIGogPSAwLCBwbCA9IFBhdGhzLmxlbmd0aDtcblx0dmFyIGRhZC8qOkFycmF5PG51bWJlcj4qLyA9IFtdLCBxLyo6QXJyYXk8bnVtYmVyPiovID0gW107XG5cblx0Zm9yKDsgaSA8IHBsOyArK2kpIHsgZGFkW2ldPXFbaV09aTsgRlBbaV09UGF0aHNbaV07IH1cblxuXHRmb3IoOyBqIDwgcS5sZW5ndGg7ICsraikge1xuXHRcdGkgPSBxW2pdO1xuXHRcdEwgPSBGSVtpXS5MOyBSID0gRklbaV0uUjsgQyA9IEZJW2ldLkM7XG5cdFx0aWYoZGFkW2ldID09PSBpKSB7XG5cdFx0XHRpZihMICE9PSAtMSAvKk5PU1RSRUFNKi8gJiYgZGFkW0xdICE9PSBMKSBkYWRbaV0gPSBkYWRbTF07XG5cdFx0XHRpZihSICE9PSAtMSAmJiBkYWRbUl0gIT09IFIpIGRhZFtpXSA9IGRhZFtSXTtcblx0XHR9XG5cdFx0aWYoQyAhPT0gLTEgLypOT1NUUkVBTSovKSBkYWRbQ10gPSBpO1xuXHRcdGlmKEwgIT09IC0xICYmIGkgIT0gZGFkW2ldKSB7IGRhZFtMXSA9IGRhZFtpXTsgaWYocS5sYXN0SW5kZXhPZihMKSA8IGopIHEucHVzaChMKTsgfVxuXHRcdGlmKFIgIT09IC0xICYmIGkgIT0gZGFkW2ldKSB7IGRhZFtSXSA9IGRhZFtpXTsgaWYocS5sYXN0SW5kZXhPZihSKSA8IGopIHEucHVzaChSKTsgfVxuXHR9XG5cdGZvcihpPTE7IGkgPCBwbDsgKytpKSBpZihkYWRbaV0gPT09IGkpIHtcblx0XHRpZihSICE9PSAtMSAvKk5PU1RSRUFNKi8gJiYgZGFkW1JdICE9PSBSKSBkYWRbaV0gPSBkYWRbUl07XG5cdFx0ZWxzZSBpZihMICE9PSAtMSAmJiBkYWRbTF0gIT09IEwpIGRhZFtpXSA9IGRhZFtMXTtcblx0fVxuXG5cdGZvcihpPTE7IGkgPCBwbDsgKytpKSB7XG5cdFx0aWYoRklbaV0udHlwZSA9PT0gMCAvKiB1bmtub3duICovKSBjb250aW51ZTtcblx0XHRqID0gaTtcblx0XHRpZihqICE9IGRhZFtqXSkgZG8ge1xuXHRcdFx0aiA9IGRhZFtqXTtcblx0XHRcdEZQW2ldID0gRlBbal0gKyBcIi9cIiArIEZQW2ldO1xuXHRcdH0gd2hpbGUgKGogIT09IDAgJiYgLTEgIT09IGRhZFtqXSAmJiBqICE9IGRhZFtqXSk7XG5cdFx0ZGFkW2ldID0gLTE7XG5cdH1cblxuXHRGUFswXSArPSBcIi9cIjtcblx0Zm9yKGk9MTsgaSA8IHBsOyArK2kpIHtcblx0XHRpZihGSVtpXS50eXBlICE9PSAyIC8qIHN0cmVhbSAqLykgRlBbaV0gKz0gXCIvXCI7XG5cdH1cbn1cblxuZnVuY3Rpb24gZ2V0X21mYXRfZW50cnkoZW50cnkvKjpDRkJFbnRyeSovLCBwYXlsb2FkLyo6UmF3Qnl0ZXMqLywgbWluaS8qOj9SYXdCeXRlcyovKS8qOkNGQmxvYiovIHtcblx0dmFyIHN0YXJ0ID0gZW50cnkuc3RhcnQsIHNpemUgPSBlbnRyeS5zaXplO1xuXHQvL3JldHVybiAocGF5bG9hZC5zbGljZShzdGFydCpNU1NaLCBzdGFydCpNU1NaICsgc2l6ZSkvKjphbnkqLyk7XG5cdHZhciBvID0gW107XG5cdHZhciBpZHggPSBzdGFydDtcblx0d2hpbGUobWluaSAmJiBzaXplID4gMCAmJiBpZHggPj0gMCkge1xuXHRcdG8ucHVzaChwYXlsb2FkLnNsaWNlKGlkeCAqIE1TU1osIGlkeCAqIE1TU1ogKyBNU1NaKSk7XG5cdFx0c2l6ZSAtPSBNU1NaO1xuXHRcdGlkeCA9IF9fcmVhZEludDMyTEUobWluaSwgaWR4ICogNCk7XG5cdH1cblx0aWYoby5sZW5ndGggPT09IDApIHJldHVybiAobmV3X2J1ZigwKS8qOmFueSovKTtcblx0cmV0dXJuIChiY29uY2F0KG8pLnNsaWNlKDAsIGVudHJ5LnNpemUpLyo6YW55Ki8pO1xufVxuXG4vKiogQ2hhc2UgZG93biB0aGUgcmVzdCBvZiB0aGUgRElGQVQgY2hhaW4gdG8gYnVpbGQgYSBjb21wcmVoZW5zaXZlIGxpc3RcbiAgICBESUZBVCBjaGFpbnMgYnkgc3RvcmluZyB0aGUgbmV4dCBzZWN0b3IgbnVtYmVyIGFzIHRoZSBsYXN0IDMyIGJpdHMgKi9cbmZ1bmN0aW9uIHNsZXV0aF9mYXQoaWR4Lyo6bnVtYmVyKi8sIGNudC8qOm51bWJlciovLCBzZWN0b3JzLyo6QXJyYXk8UmF3Qnl0ZXM+Ki8sIHNzei8qOm51bWJlciovLCBmYXRfYWRkcnMpLyo6dm9pZCovIHtcblx0dmFyIHEvKjpudW1iZXIqLyA9IEVORE9GQ0hBSU47XG5cdGlmKGlkeCA9PT0gRU5ET0ZDSEFJTikge1xuXHRcdGlmKGNudCAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKFwiRElGQVQgY2hhaW4gc2hvcnRlciB0aGFuIGV4cGVjdGVkXCIpO1xuXHR9IGVsc2UgaWYoaWR4ICE9PSAtMSAvKkZSRUVTRUNUKi8pIHtcblx0XHR2YXIgc2VjdG9yID0gc2VjdG9yc1tpZHhdLCBtID0gKHNzej4+PjIpLTE7XG5cdFx0aWYoIXNlY3RvcikgcmV0dXJuO1xuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCBtOyArK2kpIHtcblx0XHRcdGlmKChxID0gX19yZWFkSW50MzJMRShzZWN0b3IsaSo0KSkgPT09IEVORE9GQ0hBSU4pIGJyZWFrO1xuXHRcdFx0ZmF0X2FkZHJzLnB1c2gocSk7XG5cdFx0fVxuXHRcdHNsZXV0aF9mYXQoX19yZWFkSW50MzJMRShzZWN0b3Isc3N6LTQpLGNudCAtIDEsIHNlY3RvcnMsIHNzeiwgZmF0X2FkZHJzKTtcblx0fVxufVxuXG4vKiogRm9sbG93IHRoZSBsaW5rZWQgbGlzdCBvZiBzZWN0b3JzIGZvciBhIGdpdmVuIHN0YXJ0aW5nIHBvaW50ICovXG5mdW5jdGlvbiBnZXRfc2VjdG9yX2xpc3Qoc2VjdG9ycy8qOkFycmF5PFJhd0J5dGVzPiovLCBzdGFydC8qOm51bWJlciovLCBmYXRfYWRkcnMvKjpBcnJheTxudW1iZXI+Ki8sIHNzei8qOm51bWJlciovLCBjaGtkLyo6P0FycmF5PGJvb2xlYW4+Ki8pLyo6U2VjdG9yRW50cnkqLyB7XG5cdHZhciBidWYvKjpBcnJheTxudW1iZXI+Ki8gPSBbXSwgYnVmX2NoYWluLyo6QXJyYXk8YW55PiovID0gW107XG5cdGlmKCFjaGtkKSBjaGtkID0gW107XG5cdHZhciBtb2R1bHVzID0gc3N6IC0gMSwgaiA9IDAsIGpqID0gMDtcblx0Zm9yKGo9c3RhcnQ7IGo+PTA7KSB7XG5cdFx0Y2hrZFtqXSA9IHRydWU7XG5cdFx0YnVmW2J1Zi5sZW5ndGhdID0gajtcblx0XHRidWZfY2hhaW4ucHVzaChzZWN0b3JzW2pdKTtcblx0XHR2YXIgYWRkciA9IGZhdF9hZGRyc1tNYXRoLmZsb29yKGoqNC9zc3opXTtcblx0XHRqaiA9ICgoaio0KSAmIG1vZHVsdXMpO1xuXHRcdGlmKHNzeiA8IDQgKyBqaikgdGhyb3cgbmV3IEVycm9yKFwiRkFUIGJvdW5kYXJ5IGNyb3NzZWQ6IFwiICsgaiArIFwiIDQgXCIrc3N6KTtcblx0XHRpZighc2VjdG9yc1thZGRyXSkgYnJlYWs7XG5cdFx0aiA9IF9fcmVhZEludDMyTEUoc2VjdG9yc1thZGRyXSwgamopO1xuXHR9XG5cdHJldHVybiB7bm9kZXM6IGJ1ZiwgZGF0YTpfX3RvQnVmZmVyKFtidWZfY2hhaW5dKX07XG59XG5cbi8qKiBDaGFzZSBkb3duIHRoZSBzZWN0b3IgbGlua2VkIGxpc3RzICovXG5mdW5jdGlvbiBtYWtlX3NlY3Rvcl9saXN0KHNlY3RvcnMvKjpBcnJheTxSYXdCeXRlcz4qLywgZGlyX3N0YXJ0Lyo6bnVtYmVyKi8sIGZhdF9hZGRycy8qOkFycmF5PG51bWJlcj4qLywgc3N6Lyo6bnVtYmVyKi8pLyo6U2VjdG9yTGlzdCovIHtcblx0dmFyIHNsID0gc2VjdG9ycy5sZW5ndGgsIHNlY3Rvcl9saXN0Lyo6U2VjdG9yTGlzdCovID0gKFtdLyo6YW55Ki8pO1xuXHR2YXIgY2hrZC8qOkFycmF5PGJvb2xlYW4+Ki8gPSBbXSwgYnVmLyo6QXJyYXk8bnVtYmVyPiovID0gW10sIGJ1Zl9jaGFpbi8qOkFycmF5PFJhd0J5dGVzPiovID0gW107XG5cdHZhciBtb2R1bHVzID0gc3N6IC0gMSwgaT0wLCBqPTAsIGs9MCwgamo9MDtcblx0Zm9yKGk9MDsgaSA8IHNsOyArK2kpIHtcblx0XHRidWYgPSAoW10vKjpBcnJheTxudW1iZXI+Ki8pO1xuXHRcdGsgPSAoaSArIGRpcl9zdGFydCk7IGlmKGsgPj0gc2wpIGstPXNsO1xuXHRcdGlmKGNoa2Rba10pIGNvbnRpbnVlO1xuXHRcdGJ1Zl9jaGFpbiA9IFtdO1xuXHRcdHZhciBzZWVuID0gW107XG5cdFx0Zm9yKGo9azsgaj49MDspIHtcblx0XHRcdHNlZW5bal0gPSB0cnVlO1xuXHRcdFx0Y2hrZFtqXSA9IHRydWU7XG5cdFx0XHRidWZbYnVmLmxlbmd0aF0gPSBqO1xuXHRcdFx0YnVmX2NoYWluLnB1c2goc2VjdG9yc1tqXSk7XG5cdFx0XHR2YXIgYWRkci8qOm51bWJlciovID0gZmF0X2FkZHJzW01hdGguZmxvb3Ioaio0L3NzeildO1xuXHRcdFx0amogPSAoKGoqNCkgJiBtb2R1bHVzKTtcblx0XHRcdGlmKHNzeiA8IDQgKyBqaikgdGhyb3cgbmV3IEVycm9yKFwiRkFUIGJvdW5kYXJ5IGNyb3NzZWQ6IFwiICsgaiArIFwiIDQgXCIrc3N6KTtcblx0XHRcdGlmKCFzZWN0b3JzW2FkZHJdKSBicmVhaztcblx0XHRcdGogPSBfX3JlYWRJbnQzMkxFKHNlY3RvcnNbYWRkcl0sIGpqKTtcblx0XHRcdGlmKHNlZW5bal0pIGJyZWFrO1xuXHRcdH1cblx0XHRzZWN0b3JfbGlzdFtrXSA9ICh7bm9kZXM6IGJ1ZiwgZGF0YTpfX3RvQnVmZmVyKFtidWZfY2hhaW5dKX0vKjpTZWN0b3JFbnRyeSovKTtcblx0fVxuXHRyZXR1cm4gc2VjdG9yX2xpc3Q7XG59XG5cbi8qIFtNUy1DRkJdIDIuNi4xIENvbXBvdW5kIEZpbGUgRGlyZWN0b3J5IEVudHJ5ICovXG5mdW5jdGlvbiByZWFkX2RpcmVjdG9yeShkaXJfc3RhcnQvKjpudW1iZXIqLywgc2VjdG9yX2xpc3QvKjpTZWN0b3JMaXN0Ki8sIHNlY3RvcnMvKjpBcnJheTxSYXdCeXRlcz4qLywgUGF0aHMvKjpBcnJheTxzdHJpbmc+Ki8sIG5tZnMsIGZpbGVzLCBGaWxlSW5kZXgsIG1pbmkpIHtcblx0dmFyIG1pbmlmYXRfc3RvcmUgPSAwLCBwbCA9IChQYXRocy5sZW5ndGg/MjowKTtcblx0dmFyIHNlY3RvciA9IHNlY3Rvcl9saXN0W2Rpcl9zdGFydF0uZGF0YTtcblx0dmFyIGkgPSAwLCBuYW1lbGVuID0gMCwgbmFtZTtcblx0Zm9yKDsgaSA8IHNlY3Rvci5sZW5ndGg7IGkrPSAxMjgpIHtcblx0XHR2YXIgYmxvYi8qOkNGQmxvYiovID0gLyo6OigqL3NlY3Rvci5zbGljZShpLCBpKzEyOCkvKjo6IDphbnkpKi87XG5cdFx0cHJlcF9ibG9iKGJsb2IsIDY0KTtcblx0XHRuYW1lbGVuID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdG5hbWUgPSBfX3V0ZjE2bGUoYmxvYiwwLG5hbWVsZW4tcGwpO1xuXHRcdFBhdGhzLnB1c2gobmFtZSk7XG5cdFx0dmFyIG8vKjpDRkJFbnRyeSovID0gKHtcblx0XHRcdG5hbWU6ICBuYW1lLFxuXHRcdFx0dHlwZTogIGJsb2IucmVhZF9zaGlmdCgxKSxcblx0XHRcdGNvbG9yOiBibG9iLnJlYWRfc2hpZnQoMSksXG5cdFx0XHRMOiAgICAgYmxvYi5yZWFkX3NoaWZ0KDQsICdpJyksXG5cdFx0XHRSOiAgICAgYmxvYi5yZWFkX3NoaWZ0KDQsICdpJyksXG5cdFx0XHRDOiAgICAgYmxvYi5yZWFkX3NoaWZ0KDQsICdpJyksXG5cdFx0XHRjbHNpZDogYmxvYi5yZWFkX3NoaWZ0KDE2KSxcblx0XHRcdHN0YXRlOiBibG9iLnJlYWRfc2hpZnQoNCwgJ2knKSxcblx0XHRcdHN0YXJ0OiAwLFxuXHRcdFx0c2l6ZTogMFxuXHRcdH0pO1xuXHRcdHZhciBjdGltZS8qOm51bWJlciovID0gYmxvYi5yZWFkX3NoaWZ0KDIpICsgYmxvYi5yZWFkX3NoaWZ0KDIpICsgYmxvYi5yZWFkX3NoaWZ0KDIpICsgYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdGlmKGN0aW1lICE9PSAwKSBvLmN0ID0gcmVhZF9kYXRlKGJsb2IsIGJsb2IubC04KTtcblx0XHR2YXIgbXRpbWUvKjpudW1iZXIqLyA9IGJsb2IucmVhZF9zaGlmdCgyKSArIGJsb2IucmVhZF9zaGlmdCgyKSArIGJsb2IucmVhZF9zaGlmdCgyKSArIGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHRpZihtdGltZSAhPT0gMCkgby5tdCA9IHJlYWRfZGF0ZShibG9iLCBibG9iLmwtOCk7XG5cdFx0by5zdGFydCA9IGJsb2IucmVhZF9zaGlmdCg0LCAnaScpO1xuXHRcdG8uc2l6ZSA9IGJsb2IucmVhZF9zaGlmdCg0LCAnaScpO1xuXHRcdGlmKG8uc2l6ZSA8IDAgJiYgby5zdGFydCA8IDApIHsgby5zaXplID0gby50eXBlID0gMDsgby5zdGFydCA9IEVORE9GQ0hBSU47IG8ubmFtZSA9IFwiXCI7IH1cblx0XHRpZihvLnR5cGUgPT09IDUpIHsgLyogcm9vdCAqL1xuXHRcdFx0bWluaWZhdF9zdG9yZSA9IG8uc3RhcnQ7XG5cdFx0XHRpZihubWZzID4gMCAmJiBtaW5pZmF0X3N0b3JlICE9PSBFTkRPRkNIQUlOKSBzZWN0b3JfbGlzdFttaW5pZmF0X3N0b3JlXS5uYW1lID0gXCIhU3RyZWFtRGF0YVwiO1xuXHRcdFx0LyptaW5pZmF0X3NpemUgPSBvLnNpemU7Ki9cblx0XHR9IGVsc2UgaWYoby5zaXplID49IDQwOTYgLyogTVNDU1ogKi8pIHtcblx0XHRcdG8uc3RvcmFnZSA9ICdmYXQnO1xuXHRcdFx0aWYoc2VjdG9yX2xpc3Rbby5zdGFydF0gPT09IHVuZGVmaW5lZCkgc2VjdG9yX2xpc3Rbby5zdGFydF0gPSBnZXRfc2VjdG9yX2xpc3Qoc2VjdG9ycywgby5zdGFydCwgc2VjdG9yX2xpc3QuZmF0X2FkZHJzLCBzZWN0b3JfbGlzdC5zc3opO1xuXHRcdFx0c2VjdG9yX2xpc3Rbby5zdGFydF0ubmFtZSA9IG8ubmFtZTtcblx0XHRcdG8uY29udGVudCA9IChzZWN0b3JfbGlzdFtvLnN0YXJ0XS5kYXRhLnNsaWNlKDAsby5zaXplKS8qOmFueSovKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0by5zdG9yYWdlID0gJ21pbmlmYXQnO1xuXHRcdFx0aWYoby5zaXplIDwgMCkgby5zaXplID0gMDtcblx0XHRcdGVsc2UgaWYobWluaWZhdF9zdG9yZSAhPT0gRU5ET0ZDSEFJTiAmJiBvLnN0YXJ0ICE9PSBFTkRPRkNIQUlOICYmIHNlY3Rvcl9saXN0W21pbmlmYXRfc3RvcmVdKSB7XG5cdFx0XHRcdG8uY29udGVudCA9IGdldF9tZmF0X2VudHJ5KG8sIHNlY3Rvcl9saXN0W21pbmlmYXRfc3RvcmVdLmRhdGEsIChzZWN0b3JfbGlzdFttaW5pXXx8e30pLmRhdGEpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZihvLmNvbnRlbnQpIHByZXBfYmxvYihvLmNvbnRlbnQsIDApO1xuXHRcdGZpbGVzW25hbWVdID0gbztcblx0XHRGaWxlSW5kZXgucHVzaChvKTtcblx0fVxufVxuXG5mdW5jdGlvbiByZWFkX2RhdGUoYmxvYi8qOlJhd0J5dGVzfENGQmxvYiovLCBvZmZzZXQvKjpudW1iZXIqLykvKjpEYXRlKi8ge1xuXHRyZXR1cm4gbmV3IERhdGUoKCAoIChfX3JlYWRVSW50MzJMRShibG9iLG9mZnNldCs0KS8xZTcpKk1hdGgucG93KDIsMzIpK19fcmVhZFVJbnQzMkxFKGJsb2Isb2Zmc2V0KS8xZTcgKSAtIDExNjQ0NDczNjAwKSoxMDAwKTtcbn1cblxuZnVuY3Rpb24gcmVhZF9maWxlKGZpbGVuYW1lLyo6c3RyaW5nKi8sIG9wdGlvbnMvKjpDRkJSZWFkT3B0cyovKSB7XG5cdGdldF9mcygpO1xuXHRyZXR1cm4gcGFyc2UoZnMucmVhZEZpbGVTeW5jKGZpbGVuYW1lKSwgb3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIHJlYWQoYmxvYi8qOlJhd0J5dGVzfHN0cmluZyovLCBvcHRpb25zLyo6Q0ZCUmVhZE9wdHMqLykge1xuXHR2YXIgdHlwZSA9IG9wdGlvbnMgJiYgb3B0aW9ucy50eXBlO1xuXHRpZighdHlwZSkge1xuXHRcdGlmKGhhc19idWYgJiYgQnVmZmVyLmlzQnVmZmVyKGJsb2IpKSB0eXBlID0gXCJidWZmZXJcIjtcblx0fVxuXHRzd2l0Y2godHlwZSB8fCBcImJhc2U2NFwiKSB7XG5cdFx0Y2FzZSBcImZpbGVcIjogLyo6OiBpZih0eXBlb2YgYmxvYiAhPT0gJ3N0cmluZycpIHRocm93IFwiTXVzdCBwYXNzIGEgZmlsZW5hbWUgd2hlbiB0eXBlPSdmaWxlJ1wiOyAqL3JldHVybiByZWFkX2ZpbGUoYmxvYiwgb3B0aW9ucyk7XG5cdFx0Y2FzZSBcImJhc2U2NFwiOiAvKjo6IGlmKHR5cGVvZiBibG9iICE9PSAnc3RyaW5nJykgdGhyb3cgXCJNdXN0IHBhc3MgYSBiYXNlNjQtZW5jb2RlZCBiaW5hcnkgc3RyaW5nIHdoZW4gdHlwZT0nZmlsZSdcIjsgKi9yZXR1cm4gcGFyc2UoczJhKEJhc2U2NF9kZWNvZGUoYmxvYikpLCBvcHRpb25zKTtcblx0XHRjYXNlIFwiYmluYXJ5XCI6IC8qOjogaWYodHlwZW9mIGJsb2IgIT09ICdzdHJpbmcnKSB0aHJvdyBcIk11c3QgcGFzcyBhIGJpbmFyeSBzdHJpbmcgd2hlbiB0eXBlPSdmaWxlJ1wiOyAqL3JldHVybiBwYXJzZShzMmEoYmxvYiksIG9wdGlvbnMpO1xuXHR9XG5cdHJldHVybiBwYXJzZSgvKjo6dHlwZW9mIGJsb2IgPT0gJ3N0cmluZycgPyBuZXcgQnVmZmVyKGJsb2IsICd1dGYtOCcpIDogKi9ibG9iLCBvcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gaW5pdF9jZmIoY2ZiLyo6Q0ZCQ29udGFpbmVyKi8sIG9wdHMvKjo/YW55Ki8pLyo6dm9pZCovIHtcblx0dmFyIG8gPSBvcHRzIHx8IHt9LCByb290ID0gby5yb290IHx8IFwiUm9vdCBFbnRyeVwiO1xuXHRpZighY2ZiLkZ1bGxQYXRocykgY2ZiLkZ1bGxQYXRocyA9IFtdO1xuXHRpZighY2ZiLkZpbGVJbmRleCkgY2ZiLkZpbGVJbmRleCA9IFtdO1xuXHRpZihjZmIuRnVsbFBhdGhzLmxlbmd0aCAhPT0gY2ZiLkZpbGVJbmRleC5sZW5ndGgpIHRocm93IG5ldyBFcnJvcihcImluY29uc2lzdGVudCBDRkIgc3RydWN0dXJlXCIpO1xuXHRpZihjZmIuRnVsbFBhdGhzLmxlbmd0aCA9PT0gMCkge1xuXHRcdGNmYi5GdWxsUGF0aHNbMF0gPSByb290ICsgXCIvXCI7XG5cdFx0Y2ZiLkZpbGVJbmRleFswXSA9ICh7IG5hbWU6IHJvb3QsIHR5cGU6IDUgfS8qOmFueSovKTtcblx0fVxuXHRpZihvLkNMU0lEKSBjZmIuRmlsZUluZGV4WzBdLmNsc2lkID0gby5DTFNJRDtcblx0c2VlZF9jZmIoY2ZiKTtcbn1cbmZ1bmN0aW9uIHNlZWRfY2ZiKGNmYi8qOkNGQkNvbnRhaW5lciovKS8qOnZvaWQqLyB7XG5cdHZhciBubSA9IFwiXFx1MDAwMVNoMzN0SjVcIjtcblx0aWYoQ0ZCLmZpbmQoY2ZiLCBcIi9cIiArIG5tKSkgcmV0dXJuO1xuXHR2YXIgcCA9IG5ld19idWYoNCk7IHBbMF0gPSA1NTsgcFsxXSA9IHBbM10gPSA1MDsgcFsyXSA9IDU0O1xuXHRjZmIuRmlsZUluZGV4LnB1c2goKHsgbmFtZTogbm0sIHR5cGU6IDIsIGNvbnRlbnQ6cCwgc2l6ZTo0LCBMOjY5LCBSOjY5LCBDOjY5IH0vKjphbnkqLykpO1xuXHRjZmIuRnVsbFBhdGhzLnB1c2goY2ZiLkZ1bGxQYXRoc1swXSArIG5tKTtcblx0cmVidWlsZF9jZmIoY2ZiKTtcbn1cbmZ1bmN0aW9uIHJlYnVpbGRfY2ZiKGNmYi8qOkNGQkNvbnRhaW5lciovLCBmLyo6P2Jvb2xlYW4qLykvKjp2b2lkKi8ge1xuXHRpbml0X2NmYihjZmIpO1xuXHR2YXIgZ2MgPSBmYWxzZSwgcyA9IGZhbHNlO1xuXHRmb3IodmFyIGkgPSBjZmIuRnVsbFBhdGhzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG5cdFx0dmFyIF9maWxlID0gY2ZiLkZpbGVJbmRleFtpXTtcblx0XHRzd2l0Y2goX2ZpbGUudHlwZSkge1xuXHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRpZihzKSBnYyA9IHRydWU7XG5cdFx0XHRcdGVsc2UgeyBjZmIuRmlsZUluZGV4LnBvcCgpOyBjZmIuRnVsbFBhdGhzLnBvcCgpOyB9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAxOiBjYXNlIDI6IGNhc2UgNTpcblx0XHRcdFx0cyA9IHRydWU7XG5cdFx0XHRcdGlmKGlzTmFOKF9maWxlLlIgKiBfZmlsZS5MICogX2ZpbGUuQykpIGdjID0gdHJ1ZTtcblx0XHRcdFx0aWYoX2ZpbGUuUiA+IC0xICYmIF9maWxlLkwgPiAtMSAmJiBfZmlsZS5SID09IF9maWxlLkwpIGdjID0gdHJ1ZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OiBnYyA9IHRydWU7IGJyZWFrO1xuXHRcdH1cblx0fVxuXHRpZighZ2MgJiYgIWYpIHJldHVybjtcblxuXHR2YXIgbm93ID0gbmV3IERhdGUoMTk4NywgMSwgMTkpLCBqID0gMDtcblx0Ly8gVHJhY2sgd2hpY2ggbmFtZXMgZXhpc3Rcblx0dmFyIGZ1bGxQYXRocyA9IE9iamVjdC5jcmVhdGUgPyBPYmplY3QuY3JlYXRlKG51bGwpIDoge307XG5cdHZhciBkYXRhLyo6QXJyYXk8W3N0cmluZywgQ0ZCRW50cnldPiovID0gW107XG5cdGZvcihpID0gMDsgaSA8IGNmYi5GdWxsUGF0aHMubGVuZ3RoOyArK2kpIHtcblx0XHRmdWxsUGF0aHNbY2ZiLkZ1bGxQYXRoc1tpXV0gPSB0cnVlO1xuXHRcdGlmKGNmYi5GaWxlSW5kZXhbaV0udHlwZSA9PT0gMCkgY29udGludWU7XG5cdFx0ZGF0YS5wdXNoKFtjZmIuRnVsbFBhdGhzW2ldLCBjZmIuRmlsZUluZGV4W2ldXSk7XG5cdH1cblx0Zm9yKGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSkge1xuXHRcdHZhciBkYWQgPSBkaXJuYW1lKGRhdGFbaV1bMF0pO1xuXHRcdHMgPSBmdWxsUGF0aHNbZGFkXTtcblx0XHRpZighcykge1xuXHRcdFx0ZGF0YS5wdXNoKFtkYWQsICh7XG5cdFx0XHRcdG5hbWU6IGZpbGVuYW1lKGRhZCkucmVwbGFjZShcIi9cIixcIlwiKSxcblx0XHRcdFx0dHlwZTogMSxcblx0XHRcdFx0Y2xzaWQ6IEhFQURFUl9DTFNJRCxcblx0XHRcdFx0Y3Q6IG5vdywgbXQ6IG5vdyxcblx0XHRcdFx0Y29udGVudDogbnVsbFxuXHRcdFx0fS8qOmFueSovKV0pO1xuXHRcdFx0Ly8gQWRkIG5hbWUgdG8gc2V0XG5cdFx0XHRmdWxsUGF0aHNbZGFkXSA9IHRydWU7XG5cdFx0fVxuXHR9XG5cblx0ZGF0YS5zb3J0KGZ1bmN0aW9uKHgseSkgeyByZXR1cm4gbmFtZWNtcCh4WzBdLCB5WzBdKTsgfSk7XG5cdGNmYi5GdWxsUGF0aHMgPSBbXTsgY2ZiLkZpbGVJbmRleCA9IFtdO1xuXHRmb3IoaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKSB7IGNmYi5GdWxsUGF0aHNbaV0gPSBkYXRhW2ldWzBdOyBjZmIuRmlsZUluZGV4W2ldID0gZGF0YVtpXVsxXTsgfVxuXHRmb3IoaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIGVsdCA9IGNmYi5GaWxlSW5kZXhbaV07XG5cdFx0dmFyIG5tID0gY2ZiLkZ1bGxQYXRoc1tpXTtcblxuXHRcdGVsdC5uYW1lID0gIGZpbGVuYW1lKG5tKS5yZXBsYWNlKFwiL1wiLFwiXCIpO1xuXHRcdGVsdC5MID0gZWx0LlIgPSBlbHQuQyA9IC0oZWx0LmNvbG9yID0gMSk7XG5cdFx0ZWx0LnNpemUgPSBlbHQuY29udGVudCA/IGVsdC5jb250ZW50Lmxlbmd0aCA6IDA7XG5cdFx0ZWx0LnN0YXJ0ID0gMDtcblx0XHRlbHQuY2xzaWQgPSAoZWx0LmNsc2lkIHx8IEhFQURFUl9DTFNJRCk7XG5cdFx0aWYoaSA9PT0gMCkge1xuXHRcdFx0ZWx0LkMgPSBkYXRhLmxlbmd0aCA+IDEgPyAxIDogLTE7XG5cdFx0XHRlbHQuc2l6ZSA9IDA7XG5cdFx0XHRlbHQudHlwZSA9IDU7XG5cdFx0fSBlbHNlIGlmKG5tLnNsaWNlKC0xKSA9PSBcIi9cIikge1xuXHRcdFx0Zm9yKGo9aSsxO2ogPCBkYXRhLmxlbmd0aDsgKytqKSBpZihkaXJuYW1lKGNmYi5GdWxsUGF0aHNbal0pPT1ubSkgYnJlYWs7XG5cdFx0XHRlbHQuQyA9IGogPj0gZGF0YS5sZW5ndGggPyAtMSA6IGo7XG5cdFx0XHRmb3Ioaj1pKzE7aiA8IGRhdGEubGVuZ3RoOyArK2opIGlmKGRpcm5hbWUoY2ZiLkZ1bGxQYXRoc1tqXSk9PWRpcm5hbWUobm0pKSBicmVhaztcblx0XHRcdGVsdC5SID0gaiA+PSBkYXRhLmxlbmd0aCA/IC0xIDogajtcblx0XHRcdGVsdC50eXBlID0gMTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYoZGlybmFtZShjZmIuRnVsbFBhdGhzW2krMV18fFwiXCIpID09IGRpcm5hbWUobm0pKSBlbHQuUiA9IGkgKyAxO1xuXHRcdFx0ZWx0LnR5cGUgPSAyO1xuXHRcdH1cblx0fVxuXG59XG5cbmZ1bmN0aW9uIF93cml0ZShjZmIvKjpDRkJDb250YWluZXIqLywgb3B0aW9ucy8qOkNGQldyaXRlT3B0cyovKS8qOlJhd0J5dGVzfHN0cmluZyovIHtcblx0dmFyIF9vcHRzID0gb3B0aW9ucyB8fCB7fTtcblx0LyogTUFEIGlzIG9yZGVyLXNlbnNpdGl2ZSwgc2tpcCByZWJ1aWxkIGFuZCBzb3J0ICovXG5cdGlmKF9vcHRzLmZpbGVUeXBlID09ICdtYWQnKSByZXR1cm4gd3JpdGVfbWFkKGNmYiwgX29wdHMpO1xuXHRyZWJ1aWxkX2NmYihjZmIpO1xuXHRzd2l0Y2goX29wdHMuZmlsZVR5cGUpIHtcblx0XHRjYXNlICd6aXAnOiByZXR1cm4gd3JpdGVfemlwKGNmYiwgX29wdHMpO1xuXHRcdC8vY2FzZSAnbWFkJzogcmV0dXJuIHdyaXRlX21hZChjZmIsIF9vcHRzKTtcblx0fVxuXHR2YXIgTCA9IChmdW5jdGlvbihjZmIvKjpDRkJDb250YWluZXIqLykvKjpBcnJheTxudW1iZXI+Ki97XG5cdFx0dmFyIG1pbmlfc2l6ZSA9IDAsIGZhdF9zaXplID0gMDtcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgY2ZiLkZpbGVJbmRleC5sZW5ndGg7ICsraSkge1xuXHRcdFx0dmFyIGZpbGUgPSBjZmIuRmlsZUluZGV4W2ldO1xuXHRcdFx0aWYoIWZpbGUuY29udGVudCkgY29udGludWU7XG5cdFx0XHQvKjo6IGlmKGZpbGUuY29udGVudCA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi9cblx0XHRcdHZhciBmbGVuID0gZmlsZS5jb250ZW50Lmxlbmd0aDtcblx0XHRcdGlmKGZsZW4gPiAwKXtcblx0XHRcdFx0aWYoZmxlbiA8IDB4MTAwMCkgbWluaV9zaXplICs9IChmbGVuICsgMHgzRikgPj4gNjtcblx0XHRcdFx0ZWxzZSBmYXRfc2l6ZSArPSAoZmxlbiArIDB4MDFGRikgPj4gOTtcblx0XHRcdH1cblx0XHR9XG5cdFx0dmFyIGRpcl9jbnQgPSAoY2ZiLkZ1bGxQYXRocy5sZW5ndGggKzMpID4+IDI7XG5cdFx0dmFyIG1pbmlfY250ID0gKG1pbmlfc2l6ZSArIDcpID4+IDM7XG5cdFx0dmFyIG1mYXRfY250ID0gKG1pbmlfc2l6ZSArIDB4N0YpID4+IDc7XG5cdFx0dmFyIGZhdF9iYXNlID0gbWluaV9jbnQgKyBmYXRfc2l6ZSArIGRpcl9jbnQgKyBtZmF0X2NudDtcblx0XHR2YXIgZmF0X2NudCA9IChmYXRfYmFzZSArIDB4N0YpID4+IDc7XG5cdFx0dmFyIGRpZmF0X2NudCA9IGZhdF9jbnQgPD0gMTA5ID8gMCA6IE1hdGguY2VpbCgoZmF0X2NudC0xMDkpLzB4N0YpO1xuXHRcdHdoaWxlKCgoZmF0X2Jhc2UgKyBmYXRfY250ICsgZGlmYXRfY250ICsgMHg3RikgPj4gNykgPiBmYXRfY250KSBkaWZhdF9jbnQgPSArK2ZhdF9jbnQgPD0gMTA5ID8gMCA6IE1hdGguY2VpbCgoZmF0X2NudC0xMDkpLzB4N0YpO1xuXHRcdHZhciBMID0gIFsxLCBkaWZhdF9jbnQsIGZhdF9jbnQsIG1mYXRfY250LCBkaXJfY250LCBmYXRfc2l6ZSwgbWluaV9zaXplLCAwXTtcblx0XHRjZmIuRmlsZUluZGV4WzBdLnNpemUgPSBtaW5pX3NpemUgPDwgNjtcblx0XHRMWzddID0gKGNmYi5GaWxlSW5kZXhbMF0uc3RhcnQ9TFswXStMWzFdK0xbMl0rTFszXStMWzRdK0xbNV0pKygoTFs2XSs3KSA+PiAzKTtcblx0XHRyZXR1cm4gTDtcblx0fSkoY2ZiKTtcblx0dmFyIG8gPSBuZXdfYnVmKExbN10gPDwgOSk7XG5cdHZhciBpID0gMCwgVCA9IDA7XG5cdHtcblx0XHRmb3IoaSA9IDA7IGkgPCA4OyArK2kpIG8ud3JpdGVfc2hpZnQoMSwgSEVBREVSX1NJR1tpXSk7XG5cdFx0Zm9yKGkgPSAwOyBpIDwgODsgKytpKSBvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMHgwMDNFKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIDB4MDAwMyk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAweEZGRkUpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMHgwMDA5KTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIDB4MDAwNik7XG5cdFx0Zm9yKGkgPSAwOyBpIDwgMzsgKytpKSBvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdFx0by53cml0ZV9zaGlmdCg0LCBMWzJdKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIExbMF0gKyBMWzFdICsgTFsyXSArIExbM10gLSAxKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgMTw8MTIpO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgTFszXSA/IExbMF0gKyBMWzFdICsgTFsyXSAtIDE6IEVORE9GQ0hBSU4pO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgTFszXSk7XG5cdFx0by53cml0ZV9zaGlmdCgtNCwgTFsxXSA/IExbMF0gLSAxOiBFTkRPRkNIQUlOKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIExbMV0pO1xuXHRcdGZvcihpID0gMDsgaSA8IDEwOTsgKytpKSBvLndyaXRlX3NoaWZ0KC00LCBpIDwgTFsyXSA/IExbMV0gKyBpIDogLTEpO1xuXHR9XG5cdGlmKExbMV0pIHtcblx0XHRmb3IoVCA9IDA7IFQgPCBMWzFdOyArK1QpIHtcblx0XHRcdGZvcig7IGkgPCAyMzYgKyBUICogMTI3OyArK2kpIG8ud3JpdGVfc2hpZnQoLTQsIGkgPCBMWzJdID8gTFsxXSArIGkgOiAtMSk7XG5cdFx0XHRvLndyaXRlX3NoaWZ0KC00LCBUID09PSBMWzFdIC0gMSA/IEVORE9GQ0hBSU4gOiBUICsgMSk7XG5cdFx0fVxuXHR9XG5cdHZhciBjaGFpbml0ID0gZnVuY3Rpb24ody8qOm51bWJlciovKS8qOnZvaWQqLyB7XG5cdFx0Zm9yKFQgKz0gdzsgaTxULTE7ICsraSkgby53cml0ZV9zaGlmdCgtNCwgaSsxKTtcblx0XHRpZih3KSB7ICsraTsgby53cml0ZV9zaGlmdCgtNCwgRU5ET0ZDSEFJTik7IH1cblx0fTtcblx0VCA9IGkgPSAwO1xuXHRmb3IoVCs9TFsxXTsgaTxUOyArK2kpIG8ud3JpdGVfc2hpZnQoLTQsIGNvbnN0cy5ESUZTRUNUKTtcblx0Zm9yKFQrPUxbMl07IGk8VDsgKytpKSBvLndyaXRlX3NoaWZ0KC00LCBjb25zdHMuRkFUU0VDVCk7XG5cdGNoYWluaXQoTFszXSk7XG5cdGNoYWluaXQoTFs0XSk7XG5cdHZhciBqLyo6bnVtYmVyKi8gPSAwLCBmbGVuLyo6bnVtYmVyKi8gPSAwO1xuXHR2YXIgZmlsZS8qOkNGQkVudHJ5Ki8gPSBjZmIuRmlsZUluZGV4WzBdO1xuXHRmb3IoOyBqIDwgY2ZiLkZpbGVJbmRleC5sZW5ndGg7ICsraikge1xuXHRcdGZpbGUgPSBjZmIuRmlsZUluZGV4W2pdO1xuXHRcdGlmKCFmaWxlLmNvbnRlbnQpIGNvbnRpbnVlO1xuXHRcdC8qOjogaWYoZmlsZS5jb250ZW50ID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHRcdGZsZW4gPSBmaWxlLmNvbnRlbnQubGVuZ3RoO1xuXHRcdGlmKGZsZW4gPCAweDEwMDApIGNvbnRpbnVlO1xuXHRcdGZpbGUuc3RhcnQgPSBUO1xuXHRcdGNoYWluaXQoKGZsZW4gKyAweDAxRkYpID4+IDkpO1xuXHR9XG5cdGNoYWluaXQoKExbNl0gKyA3KSA+PiAzKTtcblx0d2hpbGUoby5sICYgMHgxRkYpIG8ud3JpdGVfc2hpZnQoLTQsIGNvbnN0cy5FTkRPRkNIQUlOKTtcblx0VCA9IGkgPSAwO1xuXHRmb3IoaiA9IDA7IGogPCBjZmIuRmlsZUluZGV4Lmxlbmd0aDsgKytqKSB7XG5cdFx0ZmlsZSA9IGNmYi5GaWxlSW5kZXhbal07XG5cdFx0aWYoIWZpbGUuY29udGVudCkgY29udGludWU7XG5cdFx0Lyo6OiBpZihmaWxlLmNvbnRlbnQgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwidW5yZWFjaGFibGVcIik7ICovXG5cdFx0ZmxlbiA9IGZpbGUuY29udGVudC5sZW5ndGg7XG5cdFx0aWYoIWZsZW4gfHwgZmxlbiA+PSAweDEwMDApIGNvbnRpbnVlO1xuXHRcdGZpbGUuc3RhcnQgPSBUO1xuXHRcdGNoYWluaXQoKGZsZW4gKyAweDNGKSA+PiA2KTtcblx0fVxuXHR3aGlsZShvLmwgJiAweDFGRikgby53cml0ZV9zaGlmdCgtNCwgY29uc3RzLkVORE9GQ0hBSU4pO1xuXHRmb3IoaSA9IDA7IGkgPCBMWzRdPDwyOyArK2kpIHtcblx0XHR2YXIgbm0gPSBjZmIuRnVsbFBhdGhzW2ldO1xuXHRcdGlmKCFubSB8fCBubS5sZW5ndGggPT09IDApIHtcblx0XHRcdGZvcihqID0gMDsgaiA8IDE3OyArK2opIG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdFx0XHRmb3IoaiA9IDA7IGogPCAzOyArK2opIG8ud3JpdGVfc2hpZnQoNCwgLTEpO1xuXHRcdFx0Zm9yKGogPSAwOyBqIDwgMTI7ICsraikgby53cml0ZV9zaGlmdCg0LCAwKTtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblx0XHRmaWxlID0gY2ZiLkZpbGVJbmRleFtpXTtcblx0XHRpZihpID09PSAwKSBmaWxlLnN0YXJ0ID0gZmlsZS5zaXplID8gZmlsZS5zdGFydCAtIDEgOiBFTkRPRkNIQUlOO1xuXHRcdHZhciBfbm0vKjpzdHJpbmcqLyA9IChpID09PSAwICYmIF9vcHRzLnJvb3QpIHx8IGZpbGUubmFtZTtcblx0XHRmbGVuID0gMiooX25tLmxlbmd0aCsxKTtcblx0XHRvLndyaXRlX3NoaWZ0KDY0LCBfbm0sIFwidXRmMTZsZVwiKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIGZsZW4pO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgZmlsZS50eXBlKTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIGZpbGUuY29sb3IpO1xuXHRcdG8ud3JpdGVfc2hpZnQoLTQsIGZpbGUuTCk7XG5cdFx0by53cml0ZV9zaGlmdCgtNCwgZmlsZS5SKTtcblx0XHRvLndyaXRlX3NoaWZ0KC00LCBmaWxlLkMpO1xuXHRcdGlmKCFmaWxlLmNsc2lkKSBmb3IoaiA9IDA7IGogPCA0OyArK2opIG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdFx0ZWxzZSBvLndyaXRlX3NoaWZ0KDE2LCBmaWxlLmNsc2lkLCBcImhleFwiKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIGZpbGUuc3RhdGUgfHwgMCk7XG5cdFx0by53cml0ZV9zaGlmdCg0LCAwKTsgby53cml0ZV9zaGlmdCg0LCAwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIDApOyBvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgZmlsZS5zdGFydCk7XG5cdFx0by53cml0ZV9zaGlmdCg0LCBmaWxlLnNpemUpOyBvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHR9XG5cdGZvcihpID0gMTsgaSA8IGNmYi5GaWxlSW5kZXgubGVuZ3RoOyArK2kpIHtcblx0XHRmaWxlID0gY2ZiLkZpbGVJbmRleFtpXTtcblx0XHQvKjo6IGlmKCFmaWxlLmNvbnRlbnQpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHRcdGlmKGZpbGUuc2l6ZSA+PSAweDEwMDApIHtcblx0XHRcdG8ubCA9IChmaWxlLnN0YXJ0KzEpIDw8IDk7XG5cdFx0XHRpZiAoaGFzX2J1ZiAmJiBCdWZmZXIuaXNCdWZmZXIoZmlsZS5jb250ZW50KSkge1xuXHRcdFx0XHRmaWxlLmNvbnRlbnQuY29weShvLCBvLmwsIDAsIGZpbGUuc2l6ZSk7XG5cdFx0XHRcdC8vIG8gaXMgYSAwLWZpbGxlZCBCdWZmZXIgc28ganVzdCBzZXQgbmV4dCBvZmZzZXRcblx0XHRcdFx0by5sICs9IChmaWxlLnNpemUgKyA1MTEpICYgLTUxMjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZvcihqID0gMDsgaiA8IGZpbGUuc2l6ZTsgKytqKSBvLndyaXRlX3NoaWZ0KDEsIGZpbGUuY29udGVudFtqXSk7XG5cdFx0XHRcdGZvcig7IGogJiAweDFGRjsgKytqKSBvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRmb3IoaSA9IDE7IGkgPCBjZmIuRmlsZUluZGV4Lmxlbmd0aDsgKytpKSB7XG5cdFx0ZmlsZSA9IGNmYi5GaWxlSW5kZXhbaV07XG5cdFx0Lyo6OiBpZighZmlsZS5jb250ZW50KSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi9cblx0XHRpZihmaWxlLnNpemUgPiAwICYmIGZpbGUuc2l6ZSA8IDB4MTAwMCkge1xuXHRcdFx0aWYgKGhhc19idWYgJiYgQnVmZmVyLmlzQnVmZmVyKGZpbGUuY29udGVudCkpIHtcblx0XHRcdFx0ZmlsZS5jb250ZW50LmNvcHkobywgby5sLCAwLCBmaWxlLnNpemUpO1xuXHRcdFx0XHQvLyBvIGlzIGEgMC1maWxsZWQgQnVmZmVyIHNvIGp1c3Qgc2V0IG5leHQgb2Zmc2V0XG5cdFx0XHRcdG8ubCArPSAoZmlsZS5zaXplICsgNjMpICYgLTY0O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Zm9yKGogPSAwOyBqIDwgZmlsZS5zaXplOyArK2opIG8ud3JpdGVfc2hpZnQoMSwgZmlsZS5jb250ZW50W2pdKTtcblx0XHRcdFx0Zm9yKDsgaiAmIDB4M0Y7ICsraikgby53cml0ZV9zaGlmdCgxLCAwKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0aWYgKGhhc19idWYpIHtcblx0XHRvLmwgPSBvLmxlbmd0aDtcblx0fSBlbHNlIHtcblx0XHQvLyBXaGVuIHVzaW5nIEJ1ZmZlciwgYWxyZWFkeSAwLWZpbGxlZFxuXHRcdHdoaWxlKG8ubCA8IG8ubGVuZ3RoKSBvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHR9XG5cdHJldHVybiBvO1xufVxuLyogW01TLUNGQl0gMi42LjQgKFVuaWNvZGUgMy4wLjEgY2FzZSBjb252ZXJzaW9uKSAqL1xuZnVuY3Rpb24gZmluZChjZmIvKjpDRkJDb250YWluZXIqLywgcGF0aC8qOnN0cmluZyovKS8qOj9DRkJFbnRyeSovIHtcblx0dmFyIFVDRnVsbFBhdGhzLyo6QXJyYXk8c3RyaW5nPiovID0gY2ZiLkZ1bGxQYXRocy5tYXAoZnVuY3Rpb24oeCkgeyByZXR1cm4geC50b1VwcGVyQ2FzZSgpOyB9KTtcblx0dmFyIFVDUGF0aHMvKjpBcnJheTxzdHJpbmc+Ki8gPSBVQ0Z1bGxQYXRocy5tYXAoZnVuY3Rpb24oeCkgeyB2YXIgeSA9IHguc3BsaXQoXCIvXCIpOyByZXR1cm4geVt5Lmxlbmd0aCAtICh4LnNsaWNlKC0xKSA9PSBcIi9cIiA/IDIgOiAxKV07IH0pO1xuXHR2YXIgay8qOmJvb2xlYW4qLyA9IGZhbHNlO1xuXHRpZihwYXRoLmNoYXJDb2RlQXQoMCkgPT09IDQ3IC8qIFwiL1wiICovKSB7IGsgPSB0cnVlOyBwYXRoID0gVUNGdWxsUGF0aHNbMF0uc2xpY2UoMCwgLTEpICsgcGF0aDsgfVxuXHRlbHNlIGsgPSBwYXRoLmluZGV4T2YoXCIvXCIpICE9PSAtMTtcblx0dmFyIFVDUGF0aC8qOnN0cmluZyovID0gcGF0aC50b1VwcGVyQ2FzZSgpO1xuXHR2YXIgdy8qOm51bWJlciovID0gayA9PT0gdHJ1ZSA/IFVDRnVsbFBhdGhzLmluZGV4T2YoVUNQYXRoKSA6IFVDUGF0aHMuaW5kZXhPZihVQ1BhdGgpO1xuXHRpZih3ICE9PSAtMSkgcmV0dXJuIGNmYi5GaWxlSW5kZXhbd107XG5cblx0dmFyIG0gPSAhVUNQYXRoLm1hdGNoKGNocjEpO1xuXHRVQ1BhdGggPSBVQ1BhdGgucmVwbGFjZShjaHIwLCcnKTtcblx0aWYobSkgVUNQYXRoID0gVUNQYXRoLnJlcGxhY2UoY2hyMSwnIScpO1xuXHRmb3IodyA9IDA7IHcgPCBVQ0Z1bGxQYXRocy5sZW5ndGg7ICsrdykge1xuXHRcdGlmKChtID8gVUNGdWxsUGF0aHNbd10ucmVwbGFjZShjaHIxLCchJykgOiBVQ0Z1bGxQYXRoc1t3XSkucmVwbGFjZShjaHIwLCcnKSA9PSBVQ1BhdGgpIHJldHVybiBjZmIuRmlsZUluZGV4W3ddO1xuXHRcdGlmKChtID8gVUNQYXRoc1t3XS5yZXBsYWNlKGNocjEsJyEnKSA6IFVDUGF0aHNbd10pLnJlcGxhY2UoY2hyMCwnJykgPT0gVUNQYXRoKSByZXR1cm4gY2ZiLkZpbGVJbmRleFt3XTtcblx0fVxuXHRyZXR1cm4gbnVsbDtcbn1cbi8qKiBDRkIgQ29uc3RhbnRzICovXG52YXIgTVNTWiA9IDY0OyAvKiBNaW5pIFNlY3RvciBTaXplID0gMTw8NiAqL1xuLy92YXIgTVNDU1ogPSA0MDk2OyAvKiBNaW5pIFN0cmVhbSBDdXRvZmYgU2l6ZSAqL1xuLyogMi4xIENvbXBvdW5kIEZpbGUgU2VjdG9yIE51bWJlcnMgYW5kIFR5cGVzICovXG52YXIgRU5ET0ZDSEFJTiA9IC0yO1xuLyogMi4yIENvbXBvdW5kIEZpbGUgSGVhZGVyICovXG52YXIgSEVBREVSX1NJR05BVFVSRSA9ICdkMGNmMTFlMGExYjExYWUxJztcbnZhciBIRUFERVJfU0lHID0gWzB4RDAsIDB4Q0YsIDB4MTEsIDB4RTAsIDB4QTEsIDB4QjEsIDB4MUEsIDB4RTFdO1xudmFyIEhFQURFUl9DTFNJRCA9ICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCc7XG52YXIgY29uc3RzID0ge1xuXHQvKiAyLjEgQ29tcHVuZCBGaWxlIFNlY3RvciBOdW1iZXJzIGFuZCBUeXBlcyAqL1xuXHRNQVhSRUdTRUNUOiAtNixcblx0RElGU0VDVDogLTQsXG5cdEZBVFNFQ1Q6IC0zLFxuXHRFTkRPRkNIQUlOOiBFTkRPRkNIQUlOLFxuXHRGUkVFU0VDVDogLTEsXG5cdC8qIDIuMiBDb21wb3VuZCBGaWxlIEhlYWRlciAqL1xuXHRIRUFERVJfU0lHTkFUVVJFOiBIRUFERVJfU0lHTkFUVVJFLFxuXHRIRUFERVJfTUlOT1JfVkVSU0lPTjogJzNlMDAnLFxuXHRNQVhSRUdTSUQ6IC02LFxuXHROT1NUUkVBTTogLTEsXG5cdEhFQURFUl9DTFNJRDogSEVBREVSX0NMU0lELFxuXHQvKiAyLjYuMSBDb21wb3VuZCBGaWxlIERpcmVjdG9yeSBFbnRyeSAqL1xuXHRFbnRyeVR5cGVzOiBbJ3Vua25vd24nLCdzdG9yYWdlJywnc3RyZWFtJywnbG9ja2J5dGVzJywncHJvcGVydHknLCdyb290J11cbn07XG5cbmZ1bmN0aW9uIHdyaXRlX2ZpbGUoY2ZiLyo6Q0ZCQ29udGFpbmVyKi8sIGZpbGVuYW1lLyo6c3RyaW5nKi8sIG9wdGlvbnMvKjpDRkJXcml0ZU9wdHMqLykvKjp2b2lkKi8ge1xuXHRnZXRfZnMoKTtcblx0dmFyIG8gPSBfd3JpdGUoY2ZiLCBvcHRpb25zKTtcblx0Lyo6OiBpZih0eXBlb2YgQnVmZmVyID09ICd1bmRlZmluZWQnIHx8ICFCdWZmZXIuaXNCdWZmZXIobykgfHwgIShvIGluc3RhbmNlb2YgQnVmZmVyKSkgdGhyb3cgbmV3IEVycm9yKFwidW5yZWFjaGFibGVcIik7ICovXG5cdGZzLndyaXRlRmlsZVN5bmMoZmlsZW5hbWUsIG8pO1xufVxuXG5mdW5jdGlvbiBhMnMoby8qOlJhd0J5dGVzKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgb3V0ID0gbmV3IEFycmF5KG8ubGVuZ3RoKTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IG8ubGVuZ3RoOyArK2kpIG91dFtpXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUob1tpXSk7XG5cdHJldHVybiBvdXQuam9pbihcIlwiKTtcbn1cblxuZnVuY3Rpb24gd3JpdGUoY2ZiLyo6Q0ZCQ29udGFpbmVyKi8sIG9wdGlvbnMvKjpDRkJXcml0ZU9wdHMqLykvKjpSYXdCeXRlc3xzdHJpbmcqLyB7XG5cdHZhciBvID0gX3dyaXRlKGNmYiwgb3B0aW9ucyk7XG5cdHN3aXRjaChvcHRpb25zICYmIG9wdGlvbnMudHlwZSB8fCBcImJ1ZmZlclwiKSB7XG5cdFx0Y2FzZSBcImZpbGVcIjogZ2V0X2ZzKCk7IGZzLndyaXRlRmlsZVN5bmMob3B0aW9ucy5maWxlbmFtZSwgKG8vKjphbnkqLykpOyByZXR1cm4gbztcblx0XHRjYXNlIFwiYmluYXJ5XCI6IHJldHVybiB0eXBlb2YgbyA9PSBcInN0cmluZ1wiID8gbyA6IGEycyhvKTtcblx0XHRjYXNlIFwiYmFzZTY0XCI6IHJldHVybiBCYXNlNjRfZW5jb2RlKHR5cGVvZiBvID09IFwic3RyaW5nXCIgPyBvIDogYTJzKG8pKTtcblx0XHRjYXNlIFwiYnVmZmVyXCI6IGlmKGhhc19idWYpIHJldHVybiBCdWZmZXIuaXNCdWZmZXIobykgPyBvIDogQnVmZmVyX2Zyb20obyk7XG5cdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0Y2FzZSBcImFycmF5XCI6IHJldHVybiB0eXBlb2YgbyA9PSBcInN0cmluZ1wiID8gczJhKG8pIDogbztcblx0fVxuXHRyZXR1cm4gbztcbn1cbi8qIG5vZGUgPCA4LjEgemxpYiBkb2VzIG5vdCBleHBvc2UgYnl0ZXNSZWFkLCBzbyBkZWZhdWx0IHRvIHB1cmUgSlMgKi9cbnZhciBfemxpYjtcbmZ1bmN0aW9uIHVzZV96bGliKHpsaWIpIHsgdHJ5IHtcblx0dmFyIEluZmxhdGVSYXcgPSB6bGliLkluZmxhdGVSYXc7XG5cdHZhciBJbmZsUmF3ID0gbmV3IEluZmxhdGVSYXcoKTtcblx0SW5mbFJhdy5fcHJvY2Vzc0NodW5rKG5ldyBVaW50OEFycmF5KFszLCAwXSksIEluZmxSYXcuX2ZpbmlzaEZsdXNoRmxhZyk7XG5cdGlmKEluZmxSYXcuYnl0ZXNSZWFkKSBfemxpYiA9IHpsaWI7XG5cdGVsc2UgdGhyb3cgbmV3IEVycm9yKFwiemxpYiBkb2VzIG5vdCBleHBvc2UgYnl0ZXNSZWFkXCIpO1xufSBjYXRjaChlKSB7Y29uc29sZS5lcnJvcihcImNhbm5vdCB1c2UgbmF0aXZlIHpsaWI6IFwiICsgKGUubWVzc2FnZSB8fCBlKSk7IH0gfVxuXG5mdW5jdGlvbiBfaW5mbGF0ZVJhd1N5bmMocGF5bG9hZCwgdXN6KSB7XG5cdGlmKCFfemxpYikgcmV0dXJuIF9pbmZsYXRlKHBheWxvYWQsIHVzeik7XG5cdHZhciBJbmZsYXRlUmF3ID0gX3psaWIuSW5mbGF0ZVJhdztcblx0dmFyIEluZmxSYXcgPSBuZXcgSW5mbGF0ZVJhdygpO1xuXHR2YXIgb3V0ID0gSW5mbFJhdy5fcHJvY2Vzc0NodW5rKHBheWxvYWQuc2xpY2UocGF5bG9hZC5sKSwgSW5mbFJhdy5fZmluaXNoRmx1c2hGbGFnKTtcblx0cGF5bG9hZC5sICs9IEluZmxSYXcuYnl0ZXNSZWFkO1xuXHRyZXR1cm4gb3V0O1xufVxuXG5mdW5jdGlvbiBfZGVmbGF0ZVJhd1N5bmMocGF5bG9hZCkge1xuXHRyZXR1cm4gX3psaWIgPyBfemxpYi5kZWZsYXRlUmF3U3luYyhwYXlsb2FkKSA6IF9kZWZsYXRlKHBheWxvYWQpO1xufVxudmFyIENMRU5fT1JERVIgPSBbIDE2LCAxNywgMTgsIDAsIDgsIDcsIDksIDYsIDEwLCA1LCAxMSwgNCwgMTIsIDMsIDEzLCAyLCAxNCwgMSwgMTUgXTtcblxuLyogIExFTl9JRCA9IFsgMjU3LCAyNTgsIDI1OSwgMjYwLCAyNjEsIDI2MiwgMjYzLCAyNjQsIDI2NSwgMjY2LCAyNjcsIDI2OCwgMjY5LCAyNzAsIDI3MSwgMjcyLCAyNzMsIDI3NCwgMjc1LCAyNzYsIDI3NywgMjc4LCAyNzksIDI4MCwgMjgxLCAyODIsIDI4MywgMjg0LCAyODUgXTsgKi9cbnZhciBMRU5fTE4gPSBbICAgMywgICA0LCAgIDUsICAgNiwgICA3LCAgIDgsICAgOSwgIDEwLCAgMTEsICAxMyAsIDE1LCAgMTcsICAxOSwgIDIzLCAgMjcsICAzMSwgIDM1LCAgNDMsICA1MSwgIDU5LCAgNjcsICA4MywgIDk5LCAxMTUsIDEzMSwgMTYzLCAxOTUsIDIyNywgMjU4IF07XG5cbi8qICBEU1RfSUQgPSBbICAwLCAgMSwgIDIsICAzLCAgNCwgIDUsICA2LCAgNywgIDgsICA5LCAxMCwgMTEsIDEyLCAxMywgIDE0LCAgMTUsICAxNiwgIDE3LCAgMTgsICAxOSwgICAyMCwgICAyMSwgICAyMiwgICAyMywgICAyNCwgICAyNSwgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSBdOyAqL1xudmFyIERTVF9MTiA9IFsgIDEsICAyLCAgMywgIDQsICA1LCAgNywgIDksIDEzLCAxNywgMjUsIDMzLCA0OSwgNjUsIDk3LCAxMjksIDE5MywgMjU3LCAzODUsIDUxMywgNzY5LCAxMDI1LCAxNTM3LCAyMDQ5LCAzMDczLCA0MDk3LCA2MTQ1LCA4MTkzLCAxMjI4OSwgMTYzODUsIDI0NTc3IF07XG5cbmZ1bmN0aW9uIGJpdF9zd2FwXzgobikgeyB2YXIgdCA9ICgoKCgobjw8MSl8KG48PDExKSkgJiAweDIyMTEwKSB8ICgoKG48PDUpfChuPDwxNSkpICYgMHg4ODQ0MCkpKTsgcmV0dXJuICgodD4+MTYpIHwgKHQ+PjgpIHx0KSYweEZGOyB9XG5cbnZhciB1c2VfdHlwZWRfYXJyYXlzID0gdHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnO1xuXG52YXIgYml0c3dhcDggPSB1c2VfdHlwZWRfYXJyYXlzID8gbmV3IFVpbnQ4QXJyYXkoMTw8OCkgOiBbXTtcbmZvcih2YXIgcSA9IDA7IHEgPCAoMTw8OCk7ICsrcSkgYml0c3dhcDhbcV0gPSBiaXRfc3dhcF84KHEpO1xuXG5mdW5jdGlvbiBiaXRfc3dhcF9uKG4sIGIpIHtcblx0dmFyIHJldiA9IGJpdHN3YXA4W24gJiAweEZGXTtcblx0aWYoYiA8PSA4KSByZXR1cm4gcmV2ID4+PiAoOC1iKTtcblx0cmV2ID0gKHJldiA8PCA4KSB8IGJpdHN3YXA4WyhuPj44KSYweEZGXTtcblx0aWYoYiA8PSAxNikgcmV0dXJuIHJldiA+Pj4gKDE2LWIpO1xuXHRyZXYgPSAocmV2IDw8IDgpIHwgYml0c3dhcDhbKG4+PjE2KSYweEZGXTtcblx0cmV0dXJuIHJldiA+Pj4gKDI0LWIpO1xufVxuXG4vKiBoZWxwZXJzIGZvciB1bmFsaWduZWQgYml0IHJlYWRzICovXG5mdW5jdGlvbiByZWFkX2JpdHNfMihidWYsIGJsKSB7IHZhciB3ID0gKGJsJjcpLCBoID0gKGJsPj4+Myk7IHJldHVybiAoKGJ1ZltoXXwodyA8PSA2ID8gMCA6IGJ1ZltoKzFdPDw4KSk+Pj53KSYgMHgwMzsgfVxuZnVuY3Rpb24gcmVhZF9iaXRzXzMoYnVmLCBibCkgeyB2YXIgdyA9IChibCY3KSwgaCA9IChibD4+PjMpOyByZXR1cm4gKChidWZbaF18KHcgPD0gNSA/IDAgOiBidWZbaCsxXTw8OCkpPj4+dykmIDB4MDc7IH1cbmZ1bmN0aW9uIHJlYWRfYml0c180KGJ1ZiwgYmwpIHsgdmFyIHcgPSAoYmwmNyksIGggPSAoYmw+Pj4zKTsgcmV0dXJuICgoYnVmW2hdfCh3IDw9IDQgPyAwIDogYnVmW2grMV08PDgpKT4+PncpJiAweDBGOyB9XG5mdW5jdGlvbiByZWFkX2JpdHNfNShidWYsIGJsKSB7IHZhciB3ID0gKGJsJjcpLCBoID0gKGJsPj4+Myk7IHJldHVybiAoKGJ1ZltoXXwodyA8PSAzID8gMCA6IGJ1ZltoKzFdPDw4KSk+Pj53KSYgMHgxRjsgfVxuZnVuY3Rpb24gcmVhZF9iaXRzXzcoYnVmLCBibCkgeyB2YXIgdyA9IChibCY3KSwgaCA9IChibD4+PjMpOyByZXR1cm4gKChidWZbaF18KHcgPD0gMSA/IDAgOiBidWZbaCsxXTw8OCkpPj4+dykmIDB4N0Y7IH1cblxuLyogd29ya3MgdXAgdG8gbiA9IDMgKiA4ICsgMSA9IDI1ICovXG5mdW5jdGlvbiByZWFkX2JpdHNfbihidWYsIGJsLCBuKSB7XG5cdHZhciB3ID0gKGJsJjcpLCBoID0gKGJsPj4+MyksIGYgPSAoKDE8PG4pLTEpO1xuXHR2YXIgdiA9IGJ1ZltoXSA+Pj4gdztcblx0aWYobiA8IDggLSB3KSByZXR1cm4gdiAmIGY7XG5cdHYgfD0gYnVmW2grMV08PCg4LXcpO1xuXHRpZihuIDwgMTYgLSB3KSByZXR1cm4gdiAmIGY7XG5cdHYgfD0gYnVmW2grMl08PCgxNi13KTtcblx0aWYobiA8IDI0IC0gdykgcmV0dXJuIHYgJiBmO1xuXHR2IHw9IGJ1ZltoKzNdPDwoMjQtdyk7XG5cdHJldHVybiB2ICYgZjtcbn1cblxuLyogaGVscGVycyBmb3IgdW5hbGlnbmVkIGJpdCB3cml0ZXMgKi9cbmZ1bmN0aW9uIHdyaXRlX2JpdHNfMyhidWYsIGJsLCB2KSB7IHZhciB3ID0gYmwgJiA3LCBoID0gYmwgPj4+IDM7XG5cdGlmKHcgPD0gNSkgYnVmW2hdIHw9ICh2ICYgNykgPDwgdztcblx0ZWxzZSB7XG5cdFx0YnVmW2hdIHw9ICh2IDw8IHcpICYgMHhGRjtcblx0XHRidWZbaCsxXSA9ICh2JjcpID4+ICg4LXcpO1xuXHR9XG5cdHJldHVybiBibCArIDM7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX2JpdHNfMShidWYsIGJsLCB2KSB7XG5cdHZhciB3ID0gYmwgJiA3LCBoID0gYmwgPj4+IDM7XG5cdHYgPSAodiYxKSA8PCB3O1xuXHRidWZbaF0gfD0gdjtcblx0cmV0dXJuIGJsICsgMTtcbn1cbmZ1bmN0aW9uIHdyaXRlX2JpdHNfOChidWYsIGJsLCB2KSB7XG5cdHZhciB3ID0gYmwgJiA3LCBoID0gYmwgPj4+IDM7XG5cdHYgPDw9IHc7XG5cdGJ1ZltoXSB8PSAgdiAmIDB4RkY7IHYgPj4+PSA4O1xuXHRidWZbaCsxXSA9IHY7XG5cdHJldHVybiBibCArIDg7XG59XG5mdW5jdGlvbiB3cml0ZV9iaXRzXzE2KGJ1ZiwgYmwsIHYpIHtcblx0dmFyIHcgPSBibCAmIDcsIGggPSBibCA+Pj4gMztcblx0diA8PD0gdztcblx0YnVmW2hdIHw9ICB2ICYgMHhGRjsgdiA+Pj49IDg7XG5cdGJ1ZltoKzFdID0gdiAmIDB4RkY7XG5cdGJ1ZltoKzJdID0gdiA+Pj4gODtcblx0cmV0dXJuIGJsICsgMTY7XG59XG5cbi8qIHVudGlsIEFycmF5QnVmZmVyI3JlYWxsb2MgaXMgYSB0aGluZywgZmFrZSBhIHJlYWxsb2MgKi9cbmZ1bmN0aW9uIHJlYWxsb2MoYiwgc3ovKjpudW1iZXIqLykge1xuXHR2YXIgTCA9IGIubGVuZ3RoLCBNID0gMipMID4gc3ogPyAyKkwgOiBzeiArIDUsIGkgPSAwO1xuXHRpZihMID49IHN6KSByZXR1cm4gYjtcblx0aWYoaGFzX2J1Zikge1xuXHRcdHZhciBvID0gbmV3X3Vuc2FmZV9idWYoTSk7XG5cdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRpZihiLmNvcHkpIGIuY29weShvKTtcblx0XHRlbHNlIGZvcig7IGkgPCBiLmxlbmd0aDsgKytpKSBvW2ldID0gYltpXTtcblx0XHRyZXR1cm4gbztcblx0fSBlbHNlIGlmKHVzZV90eXBlZF9hcnJheXMpIHtcblx0XHR2YXIgYSA9IG5ldyBVaW50OEFycmF5KE0pO1xuXHRcdGlmKGEuc2V0KSBhLnNldChiKTtcblx0XHRlbHNlIGZvcig7IGkgPCBMOyArK2kpIGFbaV0gPSBiW2ldO1xuXHRcdHJldHVybiBhO1xuXHR9XG5cdGIubGVuZ3RoID0gTTtcblx0cmV0dXJuIGI7XG59XG5cbi8qIHplcm8tZmlsbGVkIGFycmF5cyBmb3Igb2xkZXIgYnJvd3NlcnMgKi9cbmZ1bmN0aW9uIHplcm9fZmlsbF9hcnJheShuKSB7XG5cdHZhciBvID0gbmV3IEFycmF5KG4pO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgbjsgKytpKSBvW2ldID0gMDtcblx0cmV0dXJuIG87XG59XG5cbi8qIGJ1aWxkIHRyZWUgKHVzZWQgZm9yIGxpdGVyYWxzIGFuZCBsZW5ndGhzKSAqL1xuZnVuY3Rpb24gYnVpbGRfdHJlZShjbGVucywgY21hcCwgTUFYLyo6bnVtYmVyKi8pLyo6bnVtYmVyKi8ge1xuXHR2YXIgbWF4bGVuID0gMSwgdyA9IDAsIGkgPSAwLCBqID0gMCwgY2NvZGUgPSAwLCBMID0gY2xlbnMubGVuZ3RoO1xuXG5cdHZhciBibF9jb3VudCAgPSB1c2VfdHlwZWRfYXJyYXlzID8gbmV3IFVpbnQxNkFycmF5KDMyKSA6IHplcm9fZmlsbF9hcnJheSgzMik7XG5cdGZvcihpID0gMDsgaSA8IDMyOyArK2kpIGJsX2NvdW50W2ldID0gMDtcblxuXHRmb3IoaSA9IEw7IGkgPCBNQVg7ICsraSkgY2xlbnNbaV0gPSAwO1xuXHRMID0gY2xlbnMubGVuZ3RoO1xuXG5cdHZhciBjdHJlZSA9IHVzZV90eXBlZF9hcnJheXMgPyBuZXcgVWludDE2QXJyYXkoTCkgOiB6ZXJvX2ZpbGxfYXJyYXkoTCk7IC8vIFtdXG5cblx0LyogYnVpbGQgY29kZSB0cmVlICovXG5cdGZvcihpID0gMDsgaSA8IEw7ICsraSkge1xuXHRcdGJsX2NvdW50Wyh3ID0gY2xlbnNbaV0pXSsrO1xuXHRcdGlmKG1heGxlbiA8IHcpIG1heGxlbiA9IHc7XG5cdFx0Y3RyZWVbaV0gPSAwO1xuXHR9XG5cdGJsX2NvdW50WzBdID0gMDtcblx0Zm9yKGkgPSAxOyBpIDw9IG1heGxlbjsgKytpKSBibF9jb3VudFtpKzE2XSA9IChjY29kZSA9IChjY29kZSArIGJsX2NvdW50W2ktMV0pPDwxKTtcblx0Zm9yKGkgPSAwOyBpIDwgTDsgKytpKSB7XG5cdFx0Y2NvZGUgPSBjbGVuc1tpXTtcblx0XHRpZihjY29kZSAhPSAwKSBjdHJlZVtpXSA9IGJsX2NvdW50W2Njb2RlKzE2XSsrO1xuXHR9XG5cblx0LyogY21hcFttYXhsZW4gKyA0IGJpdHNdID0gKG9mZiYxNSkgKyAobGl0PDw0KSByZXZlcnNlIG1hcHBpbmcgKi9cblx0dmFyIGNsZW5pID0gMDtcblx0Zm9yKGkgPSAwOyBpIDwgTDsgKytpKSB7XG5cdFx0Y2xlbmkgPSBjbGVuc1tpXTtcblx0XHRpZihjbGVuaSAhPSAwKSB7XG5cdFx0XHRjY29kZSA9IGJpdF9zd2FwX24oY3RyZWVbaV0sIG1heGxlbik+PihtYXhsZW4tY2xlbmkpO1xuXHRcdFx0Zm9yKGogPSAoMTw8KG1heGxlbiArIDQgLSBjbGVuaSkpIC0gMTsgaj49MDsgLS1qKVxuXHRcdFx0XHRjbWFwW2Njb2RlfChqPDxjbGVuaSldID0gKGNsZW5pJjE1KSB8IChpPDw0KTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG1heGxlbjtcbn1cblxuLyogRml4ZWQgSHVmZm1hbiAqL1xudmFyIGZpeF9sbWFwID0gdXNlX3R5cGVkX2FycmF5cyA/IG5ldyBVaW50MTZBcnJheSg1MTIpIDogemVyb19maWxsX2FycmF5KDUxMik7XG52YXIgZml4X2RtYXAgPSB1c2VfdHlwZWRfYXJyYXlzID8gbmV3IFVpbnQxNkFycmF5KDMyKSAgOiB6ZXJvX2ZpbGxfYXJyYXkoMzIpO1xuaWYoIXVzZV90eXBlZF9hcnJheXMpIHtcblx0Zm9yKHZhciBpID0gMDsgaSA8IDUxMjsgKytpKSBmaXhfbG1hcFtpXSA9IDA7XG5cdGZvcihpID0gMDsgaSA8IDMyOyArK2kpIGZpeF9kbWFwW2ldID0gMDtcbn1cbihmdW5jdGlvbigpIHtcblx0dmFyIGRsZW5zLyo6QXJyYXk8bnVtYmVyPiovID0gW107XG5cdHZhciBpID0gMDtcblx0Zm9yKDtpPDMyOyBpKyspIGRsZW5zLnB1c2goNSk7XG5cdGJ1aWxkX3RyZWUoZGxlbnMsIGZpeF9kbWFwLCAzMik7XG5cblx0dmFyIGNsZW5zLyo6QXJyYXk8bnVtYmVyPiovID0gW107XG5cdGkgPSAwO1xuXHRmb3IoOyBpPD0xNDM7IGkrKykgY2xlbnMucHVzaCg4KTtcblx0Zm9yKDsgaTw9MjU1OyBpKyspIGNsZW5zLnB1c2goOSk7XG5cdGZvcig7IGk8PTI3OTsgaSsrKSBjbGVucy5wdXNoKDcpO1xuXHRmb3IoOyBpPD0yODc7IGkrKykgY2xlbnMucHVzaCg4KTtcblx0YnVpbGRfdHJlZShjbGVucywgZml4X2xtYXAsIDI4OCk7XG59KSgpO3ZhciBfZGVmbGF0ZVJhdyA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24gX2RlZmxhdGVSYXdJSUZFKCkge1xuXHR2YXIgRFNUX0xOX1JFID0gdXNlX3R5cGVkX2FycmF5cyA/IG5ldyBVaW50OEFycmF5KDB4ODAwMCkgOiBbXTtcblx0dmFyIGogPSAwLCBrID0gMDtcblx0Zm9yKDsgaiA8IERTVF9MTi5sZW5ndGggLSAxOyArK2opIHtcblx0XHRmb3IoOyBrIDwgRFNUX0xOW2orMV07ICsraykgRFNUX0xOX1JFW2tdID0gajtcblx0fVxuXHRmb3IoO2sgPCAzMjc2ODsgKytrKSBEU1RfTE5fUkVba10gPSAyOTtcblxuXHR2YXIgTEVOX0xOX1JFID0gdXNlX3R5cGVkX2FycmF5cyA/IG5ldyBVaW50OEFycmF5KDB4MTAzKSA6IFtdO1xuXHRmb3IoaiA9IDAsIGsgPSAwOyBqIDwgTEVOX0xOLmxlbmd0aCAtIDE7ICsraikge1xuXHRcdGZvcig7IGsgPCBMRU5fTE5baisxXTsgKytrKSBMRU5fTE5fUkVba10gPSBqO1xuXHR9XG5cblx0ZnVuY3Rpb24gd3JpdGVfc3RvcmVkKGRhdGEsIG91dCkge1xuXHRcdHZhciBib2ZmID0gMDtcblx0XHR3aGlsZShib2ZmIDwgZGF0YS5sZW5ndGgpIHtcblx0XHRcdHZhciBMID0gTWF0aC5taW4oMHhGRkZGLCBkYXRhLmxlbmd0aCAtIGJvZmYpO1xuXHRcdFx0dmFyIGggPSBib2ZmICsgTCA9PSBkYXRhLmxlbmd0aDtcblx0XHRcdG91dC53cml0ZV9zaGlmdCgxLCAraCk7XG5cdFx0XHRvdXQud3JpdGVfc2hpZnQoMiwgTCk7XG5cdFx0XHRvdXQud3JpdGVfc2hpZnQoMiwgKH5MKSAmIDB4RkZGRik7XG5cdFx0XHR3aGlsZShMLS0gPiAwKSBvdXRbb3V0LmwrK10gPSBkYXRhW2JvZmYrK107XG5cdFx0fVxuXHRcdHJldHVybiBvdXQubDtcblx0fVxuXG5cdC8qIEZpeGVkIEh1ZmZtYW4gKi9cblx0ZnVuY3Rpb24gd3JpdGVfaHVmZl9maXhlZChkYXRhLCBvdXQpIHtcblx0XHR2YXIgYmwgPSAwO1xuXHRcdHZhciBib2ZmID0gMDtcblx0XHR2YXIgYWRkcnMgPSB1c2VfdHlwZWRfYXJyYXlzID8gbmV3IFVpbnQxNkFycmF5KDB4ODAwMCkgOiBbXTtcblx0XHR3aGlsZShib2ZmIDwgZGF0YS5sZW5ndGgpIHtcblx0XHRcdHZhciBMID0gLyogZGF0YS5sZW5ndGggLSBib2ZmOyAqLyBNYXRoLm1pbigweEZGRkYsIGRhdGEubGVuZ3RoIC0gYm9mZik7XG5cblx0XHRcdC8qIHdyaXRlIGEgc3RvcmVkIGJsb2NrIGZvciBzaG9ydCBkYXRhICovXG5cdFx0XHRpZihMIDwgMTApIHtcblx0XHRcdFx0YmwgPSB3cml0ZV9iaXRzXzMob3V0LCBibCwgKyEhKGJvZmYgKyBMID09IGRhdGEubGVuZ3RoKSk7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuXHRcdFx0XHRpZihibCAmIDcpIGJsICs9IDggLSAoYmwgJiA3KTtcblx0XHRcdFx0b3V0LmwgPSAoYmwgLyA4KSB8IDA7XG5cdFx0XHRcdG91dC53cml0ZV9zaGlmdCgyLCBMKTtcblx0XHRcdFx0b3V0LndyaXRlX3NoaWZ0KDIsICh+TCkgJiAweEZGRkYpO1xuXHRcdFx0XHR3aGlsZShMLS0gPiAwKSBvdXRbb3V0LmwrK10gPSBkYXRhW2JvZmYrK107XG5cdFx0XHRcdGJsID0gb3V0LmwgKiA4O1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0YmwgPSB3cml0ZV9iaXRzXzMob3V0LCBibCwgKyEhKGJvZmYgKyBMID09IGRhdGEubGVuZ3RoKSArIDIpOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcblx0XHRcdHZhciBoYXNoID0gMDtcblx0XHRcdHdoaWxlKEwtLSA+IDApIHtcblx0XHRcdFx0dmFyIGQgPSBkYXRhW2JvZmZdO1xuXHRcdFx0XHRoYXNoID0gKChoYXNoIDw8IDUpIF4gZCkgJiAweDdGRkY7XG5cblx0XHRcdFx0dmFyIG1hdGNoID0gLTEsIG1sZW4gPSAwO1xuXG5cdFx0XHRcdGlmKChtYXRjaCA9IGFkZHJzW2hhc2hdKSkge1xuXHRcdFx0XHRcdG1hdGNoIHw9IGJvZmYgJiB+MHg3RkZGO1xuXHRcdFx0XHRcdGlmKG1hdGNoID4gYm9mZikgbWF0Y2ggLT0gMHg4MDAwO1xuXHRcdFx0XHRcdGlmKG1hdGNoIDwgYm9mZikgd2hpbGUoZGF0YVttYXRjaCArIG1sZW5dID09IGRhdGFbYm9mZiArIG1sZW5dICYmIG1sZW4gPCAyNTApICsrbWxlbjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmKG1sZW4gPiAyKSB7XG5cdFx0XHRcdFx0LyogQ29weSBUb2tlbiAgKi9cblx0XHRcdFx0XHRkID0gTEVOX0xOX1JFW21sZW5dO1xuXHRcdFx0XHRcdGlmKGQgPD0gMjIpIGJsID0gd3JpdGVfYml0c184KG91dCwgYmwsIGJpdHN3YXA4W2QrMV0+PjEpIC0gMTtcblx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdHdyaXRlX2JpdHNfOChvdXQsIGJsLCAzKTtcblx0XHRcdFx0XHRcdGJsICs9IDU7XG5cdFx0XHRcdFx0XHR3cml0ZV9iaXRzXzgob3V0LCBibCwgYml0c3dhcDhbZC0yM10+PjUpO1xuXHRcdFx0XHRcdFx0YmwgKz0gMztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dmFyIGxlbl9lYiA9IChkIDwgOCkgPyAwIDogKChkIC0gNCk+PjIpO1xuXHRcdFx0XHRcdGlmKGxlbl9lYiA+IDApIHtcblx0XHRcdFx0XHRcdHdyaXRlX2JpdHNfMTYob3V0LCBibCwgbWxlbiAtIExFTl9MTltkXSk7XG5cdFx0XHRcdFx0XHRibCArPSBsZW5fZWI7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0ZCA9IERTVF9MTl9SRVtib2ZmIC0gbWF0Y2hdO1xuXHRcdFx0XHRcdGJsID0gd3JpdGVfYml0c184KG91dCwgYmwsIGJpdHN3YXA4W2RdPj4zKTtcblx0XHRcdFx0XHRibCAtPSAzO1xuXG5cdFx0XHRcdFx0dmFyIGRzdF9lYiA9IGQgPCA0ID8gMCA6IChkLTIpPj4xO1xuXHRcdFx0XHRcdGlmKGRzdF9lYiA+IDApIHtcblx0XHRcdFx0XHRcdHdyaXRlX2JpdHNfMTYob3V0LCBibCwgYm9mZiAtIG1hdGNoIC0gRFNUX0xOW2RdKTtcblx0XHRcdFx0XHRcdGJsICs9IGRzdF9lYjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Zm9yKHZhciBxID0gMDsgcSA8IG1sZW47ICsrcSkge1xuXHRcdFx0XHRcdFx0YWRkcnNbaGFzaF0gPSBib2ZmICYgMHg3RkZGO1xuXHRcdFx0XHRcdFx0aGFzaCA9ICgoaGFzaCA8PCA1KSBeIGRhdGFbYm9mZl0pICYgMHg3RkZGO1xuXHRcdFx0XHRcdFx0Kytib2ZmO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRMLT0gbWxlbiAtIDE7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0LyogTGl0ZXJhbCBUb2tlbiAqL1xuXHRcdFx0XHRcdGlmKGQgPD0gMTQzKSBkID0gZCArIDQ4O1xuXHRcdFx0XHRcdGVsc2UgYmwgPSB3cml0ZV9iaXRzXzEob3V0LCBibCwgMSk7XG5cdFx0XHRcdFx0YmwgPSB3cml0ZV9iaXRzXzgob3V0LCBibCwgYml0c3dhcDhbZF0pO1xuXHRcdFx0XHRcdGFkZHJzW2hhc2hdID0gYm9mZiAmIDB4N0ZGRjtcblx0XHRcdFx0XHQrK2JvZmY7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0YmwgPSB3cml0ZV9iaXRzXzgob3V0LCBibCwgMCkgLSAxO1xuXHRcdH1cblx0XHRvdXQubCA9ICgoYmwgKyA3KS84KXwwO1xuXHRcdHJldHVybiBvdXQubDtcblx0fVxuXHRyZXR1cm4gZnVuY3Rpb24gX2RlZmxhdGVSYXcoZGF0YSwgb3V0KSB7XG5cdFx0aWYoZGF0YS5sZW5ndGggPCA4KSByZXR1cm4gd3JpdGVfc3RvcmVkKGRhdGEsIG91dCk7XG5cdFx0cmV0dXJuIHdyaXRlX2h1ZmZfZml4ZWQoZGF0YSwgb3V0KTtcblx0fTtcbn0pKCk7XG5cbmZ1bmN0aW9uIF9kZWZsYXRlKGRhdGEpIHtcblx0dmFyIGJ1ZiA9IG5ld19idWYoNTArTWF0aC5mbG9vcihkYXRhLmxlbmd0aCoxLjEpKTtcblx0dmFyIG9mZiA9IF9kZWZsYXRlUmF3KGRhdGEsIGJ1Zik7XG5cdHJldHVybiBidWYuc2xpY2UoMCwgb2ZmKTtcbn1cbi8qIG1vZGlmaWVkIGluZmxhdGUgZnVuY3Rpb24gYWxzbyBtb3ZlcyBvcmlnaW5hbCByZWFkIGhlYWQgKi9cblxudmFyIGR5bl9sbWFwID0gdXNlX3R5cGVkX2FycmF5cyA/IG5ldyBVaW50MTZBcnJheSgzMjc2OCkgOiB6ZXJvX2ZpbGxfYXJyYXkoMzI3NjgpO1xudmFyIGR5bl9kbWFwID0gdXNlX3R5cGVkX2FycmF5cyA/IG5ldyBVaW50MTZBcnJheSgzMjc2OCkgOiB6ZXJvX2ZpbGxfYXJyYXkoMzI3NjgpO1xudmFyIGR5bl9jbWFwID0gdXNlX3R5cGVkX2FycmF5cyA/IG5ldyBVaW50MTZBcnJheSgxMjgpICAgOiB6ZXJvX2ZpbGxfYXJyYXkoMTI4KTtcbnZhciBkeW5fbGVuXzEgPSAxLCBkeW5fbGVuXzIgPSAxO1xuXG4vKiA1LjUuMyBFeHBhbmRpbmcgSHVmZm1hbiBDb2RlcyAqL1xuZnVuY3Rpb24gZHluKGRhdGEsIGJvZmYvKjpudW1iZXIqLykge1xuXHQvKiBub21lbmNsYXR1cmUgZnJvbSBSRkMxOTUxIHJlZmVycyB0byBiaXQgdmFsdWVzOyB0aGVzZSBhcmUgb2Zmc2V0IGJ5IHRoZSBpbXBsaWNpdCBjb25zdGFudCAqL1xuXHR2YXIgX0hMSVQgPSByZWFkX2JpdHNfNShkYXRhLCBib2ZmKSArIDI1NzsgYm9mZiArPSA1O1xuXHR2YXIgX0hESVNUID0gcmVhZF9iaXRzXzUoZGF0YSwgYm9mZikgKyAxOyBib2ZmICs9IDU7XG5cdHZhciBfSENMRU4gPSByZWFkX2JpdHNfNChkYXRhLCBib2ZmKSArIDQ7IGJvZmYgKz0gNDtcblx0dmFyIHcgPSAwO1xuXG5cdC8qIGdyYWIgYW5kIHN0b3JlIGNvZGUgbGVuZ3RocyAqL1xuXHR2YXIgY2xlbnMgPSB1c2VfdHlwZWRfYXJyYXlzID8gbmV3IFVpbnQ4QXJyYXkoMTkpIDogemVyb19maWxsX2FycmF5KDE5KTtcblx0dmFyIGN0cmVlID0gWyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwIF07XG5cdHZhciBtYXhsZW4gPSAxO1xuXHR2YXIgYmxfY291bnQgPSAgdXNlX3R5cGVkX2FycmF5cyA/IG5ldyBVaW50OEFycmF5KDgpIDogemVyb19maWxsX2FycmF5KDgpO1xuXHR2YXIgbmV4dF9jb2RlID0gdXNlX3R5cGVkX2FycmF5cyA/IG5ldyBVaW50OEFycmF5KDgpIDogemVyb19maWxsX2FycmF5KDgpO1xuXHR2YXIgTCA9IGNsZW5zLmxlbmd0aDsgLyogMTkgKi9cblx0Zm9yKHZhciBpID0gMDsgaSA8IF9IQ0xFTjsgKytpKSB7XG5cdFx0Y2xlbnNbQ0xFTl9PUkRFUltpXV0gPSB3ID0gcmVhZF9iaXRzXzMoZGF0YSwgYm9mZik7XG5cdFx0aWYobWF4bGVuIDwgdykgbWF4bGVuID0gdztcblx0XHRibF9jb3VudFt3XSsrO1xuXHRcdGJvZmYgKz0gMztcblx0fVxuXG5cdC8qIGJ1aWxkIGNvZGUgdHJlZSAqL1xuXHR2YXIgY2NvZGUgPSAwO1xuXHRibF9jb3VudFswXSA9IDA7XG5cdGZvcihpID0gMTsgaSA8PSBtYXhsZW47ICsraSkgbmV4dF9jb2RlW2ldID0gY2NvZGUgPSAoY2NvZGUgKyBibF9jb3VudFtpLTFdKTw8MTtcblx0Zm9yKGkgPSAwOyBpIDwgTDsgKytpKSBpZigoY2NvZGUgPSBjbGVuc1tpXSkgIT0gMCkgY3RyZWVbaV0gPSBuZXh0X2NvZGVbY2NvZGVdKys7XG5cdC8qIGNtYXBbNyBiaXRzIGZyb20gc3RyZWFtXSA9IChvZmYmNykgKyAobGl0PDwzKSAqL1xuXHR2YXIgY2xlbmkgPSAwO1xuXHRmb3IoaSA9IDA7IGkgPCBMOyArK2kpIHtcblx0XHRjbGVuaSA9IGNsZW5zW2ldO1xuXHRcdGlmKGNsZW5pICE9IDApIHtcblx0XHRcdGNjb2RlID0gYml0c3dhcDhbY3RyZWVbaV1dPj4oOC1jbGVuaSk7XG5cdFx0XHRmb3IodmFyIGogPSAoMTw8KDctY2xlbmkpKS0xOyBqPj0wOyAtLWopIGR5bl9jbWFwW2Njb2RlfChqPDxjbGVuaSldID0gKGNsZW5pJjcpIHwgKGk8PDMpO1xuXHRcdH1cblx0fVxuXG5cdC8qIHJlYWQgbGl0ZXJhbCBhbmQgZGlzdCBjb2RlcyBhdCBvbmNlICovXG5cdHZhciBoY29kZXMvKjpBcnJheTxudW1iZXI+Ki8gPSBbXTtcblx0bWF4bGVuID0gMTtcblx0Zm9yKDsgaGNvZGVzLmxlbmd0aCA8IF9ITElUICsgX0hESVNUOykge1xuXHRcdGNjb2RlID0gZHluX2NtYXBbcmVhZF9iaXRzXzcoZGF0YSwgYm9mZildO1xuXHRcdGJvZmYgKz0gY2NvZGUgJiA3O1xuXHRcdHN3aXRjaCgoY2NvZGUgPj4+PSAzKSkge1xuXHRcdFx0Y2FzZSAxNjpcblx0XHRcdFx0dyA9IDMgKyByZWFkX2JpdHNfMihkYXRhLCBib2ZmKTsgYm9mZiArPSAyO1xuXHRcdFx0XHRjY29kZSA9IGhjb2Rlc1toY29kZXMubGVuZ3RoIC0gMV07XG5cdFx0XHRcdHdoaWxlKHctLSA+IDApIGhjb2Rlcy5wdXNoKGNjb2RlKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDE3OlxuXHRcdFx0XHR3ID0gMyArIHJlYWRfYml0c18zKGRhdGEsIGJvZmYpOyBib2ZmICs9IDM7XG5cdFx0XHRcdHdoaWxlKHctLSA+IDApIGhjb2Rlcy5wdXNoKDApO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMTg6XG5cdFx0XHRcdHcgPSAxMSArIHJlYWRfYml0c183KGRhdGEsIGJvZmYpOyBib2ZmICs9IDc7XG5cdFx0XHRcdHdoaWxlKHcgLS0gPiAwKSBoY29kZXMucHVzaCgwKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRoY29kZXMucHVzaChjY29kZSk7XG5cdFx0XHRcdGlmKG1heGxlbiA8IGNjb2RlKSBtYXhsZW4gPSBjY29kZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cblx0LyogYnVpbGQgbGl0ZXJhbCAvIGxlbmd0aCB0cmVlcyAqL1xuXHR2YXIgaDEgPSBoY29kZXMuc2xpY2UoMCwgX0hMSVQpLCBoMiA9IGhjb2Rlcy5zbGljZShfSExJVCk7XG5cdGZvcihpID0gX0hMSVQ7IGkgPCAyODY7ICsraSkgaDFbaV0gPSAwO1xuXHRmb3IoaSA9IF9IRElTVDsgaSA8IDMwOyArK2kpIGgyW2ldID0gMDtcblx0ZHluX2xlbl8xID0gYnVpbGRfdHJlZShoMSwgZHluX2xtYXAsIDI4Nik7XG5cdGR5bl9sZW5fMiA9IGJ1aWxkX3RyZWUoaDIsIGR5bl9kbWFwLCAzMCk7XG5cdHJldHVybiBib2ZmO1xufVxuXG4vKiByZXR1cm4gWyBkYXRhLCBieXRlc1JlYWQgXSAqL1xuZnVuY3Rpb24gaW5mbGF0ZShkYXRhLCB1c3ovKjpudW1iZXIqLykge1xuXHQvKiBzaG9ydGNpcmN1aXQgZm9yIGVtcHR5IGJ1ZmZlciBbMHgwMywgMHgwMF0gKi9cblx0aWYoZGF0YVswXSA9PSAzICYmICEoZGF0YVsxXSAmIDB4MykpIHsgcmV0dXJuIFtuZXdfcmF3X2J1Zih1c3opLCAyXTsgfVxuXG5cdC8qIGJpdCBvZmZzZXQgKi9cblx0dmFyIGJvZmYgPSAwO1xuXG5cdC8qIGhlYWRlciBpbmNsdWRlcyBmaW5hbCBiaXQgYW5kIHR5cGUgYml0cyAqL1xuXHR2YXIgaGVhZGVyID0gMDtcblxuXHR2YXIgb3V0YnVmID0gbmV3X3Vuc2FmZV9idWYodXN6ID8gdXN6IDogKDE8PDE4KSk7XG5cdHZhciB3b2ZmID0gMDtcblx0dmFyIE9MID0gb3V0YnVmLmxlbmd0aD4+PjA7XG5cdHZhciBtYXhfbGVuXzEgPSAwLCBtYXhfbGVuXzIgPSAwO1xuXG5cdHdoaWxlKChoZWFkZXImMSkgPT0gMCkge1xuXHRcdGhlYWRlciA9IHJlYWRfYml0c18zKGRhdGEsIGJvZmYpOyBib2ZmICs9IDM7XG5cdFx0aWYoKGhlYWRlciA+Pj4gMSkgPT0gMCkge1xuXHRcdFx0LyogU3RvcmVkIGJsb2NrICovXG5cdFx0XHRpZihib2ZmICYgNykgYm9mZiArPSA4IC0gKGJvZmYmNyk7XG5cdFx0XHQvKiAyIGJ5dGVzIHN6LCAyIGJ5dGVzIGJpdCBpbnZlcnNlICovXG5cdFx0XHR2YXIgc3ogPSBkYXRhW2JvZmY+Pj4zXSB8IGRhdGFbKGJvZmY+Pj4zKSsxXTw8ODtcblx0XHRcdGJvZmYgKz0gMzI7XG5cdFx0XHQvKiBwdXNoIHN6IGJ5dGVzICovXG5cdFx0XHRpZihzeiA+IDApIHtcblx0XHRcdFx0aWYoIXVzeiAmJiBPTCA8IHdvZmYgKyBzeikgeyBvdXRidWYgPSByZWFsbG9jKG91dGJ1Ziwgd29mZiArIHN6KTsgT0wgPSBvdXRidWYubGVuZ3RoOyB9XG5cdFx0XHRcdHdoaWxlKHN6LS0gPiAwKSB7IG91dGJ1Zlt3b2ZmKytdID0gZGF0YVtib2ZmPj4+M107IGJvZmYgKz0gODsgfVxuXHRcdFx0fVxuXHRcdFx0Y29udGludWU7XG5cdFx0fSBlbHNlIGlmKChoZWFkZXIgPj4gMSkgPT0gMSkge1xuXHRcdFx0LyogRml4ZWQgSHVmZm1hbiAqL1xuXHRcdFx0bWF4X2xlbl8xID0gOTsgbWF4X2xlbl8yID0gNTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0LyogRHluYW1pYyBIdWZmbWFuICovXG5cdFx0XHRib2ZmID0gZHluKGRhdGEsIGJvZmYpO1xuXHRcdFx0bWF4X2xlbl8xID0gZHluX2xlbl8xOyBtYXhfbGVuXzIgPSBkeW5fbGVuXzI7XG5cdFx0fVxuXHRcdGZvcig7OykgeyAvLyB3aGlsZSh0cnVlKSBpcyBhcHBhcmVudGx5IG91dCBvZiB2b2d1ZSBpbiBtb2Rlcm4gSlMgY2lyY2xlc1xuXHRcdFx0aWYoIXVzeiAmJiAoT0wgPCB3b2ZmICsgMzI3NjcpKSB7IG91dGJ1ZiA9IHJlYWxsb2Mob3V0YnVmLCB3b2ZmICsgMzI3NjcpOyBPTCA9IG91dGJ1Zi5sZW5ndGg7IH1cblx0XHRcdC8qIGluZ2VzdCBjb2RlIGFuZCBtb3ZlIHJlYWQgaGVhZCAqL1xuXHRcdFx0dmFyIGJpdHMgPSByZWFkX2JpdHNfbihkYXRhLCBib2ZmLCBtYXhfbGVuXzEpO1xuXHRcdFx0dmFyIGNvZGUgPSAoaGVhZGVyPj4+MSkgPT0gMSA/IGZpeF9sbWFwW2JpdHNdIDogZHluX2xtYXBbYml0c107XG5cdFx0XHRib2ZmICs9IGNvZGUgJiAxNTsgY29kZSA+Pj49IDQ7XG5cdFx0XHQvKiAwLTI1NSBhcmUgbGl0ZXJhbHMsIDI1NiBpcyBlbmQgb2YgYmxvY2sgdG9rZW4sIDI1NysgYXJlIGNvcHkgdG9rZW5zICovXG5cdFx0XHRpZigoKGNvZGU+Pj44KSYweEZGKSA9PT0gMCkgb3V0YnVmW3dvZmYrK10gPSBjb2RlO1xuXHRcdFx0ZWxzZSBpZihjb2RlID09IDI1NikgYnJlYWs7XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0Y29kZSAtPSAyNTc7XG5cdFx0XHRcdHZhciBsZW5fZWIgPSAoY29kZSA8IDgpID8gMCA6ICgoY29kZS00KT4+Mik7IGlmKGxlbl9lYiA+IDUpIGxlbl9lYiA9IDA7XG5cdFx0XHRcdHZhciB0Z3QgPSB3b2ZmICsgTEVOX0xOW2NvZGVdO1xuXHRcdFx0XHQvKiBsZW5ndGggZXh0cmEgYml0cyAqL1xuXHRcdFx0XHRpZihsZW5fZWIgPiAwKSB7XG5cdFx0XHRcdFx0dGd0ICs9IHJlYWRfYml0c19uKGRhdGEsIGJvZmYsIGxlbl9lYik7XG5cdFx0XHRcdFx0Ym9mZiArPSBsZW5fZWI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvKiBkaXN0IGNvZGUgKi9cblx0XHRcdFx0Yml0cyA9IHJlYWRfYml0c19uKGRhdGEsIGJvZmYsIG1heF9sZW5fMik7XG5cdFx0XHRcdGNvZGUgPSAoaGVhZGVyPj4+MSkgPT0gMSA/IGZpeF9kbWFwW2JpdHNdIDogZHluX2RtYXBbYml0c107XG5cdFx0XHRcdGJvZmYgKz0gY29kZSAmIDE1OyBjb2RlID4+Pj0gNDtcblx0XHRcdFx0dmFyIGRzdF9lYiA9IChjb2RlIDwgNCA/IDAgOiAoY29kZS0yKT4+MSk7XG5cdFx0XHRcdHZhciBkc3QgPSBEU1RfTE5bY29kZV07XG5cdFx0XHRcdC8qIGRpc3QgZXh0cmEgYml0cyAqL1xuXHRcdFx0XHRpZihkc3RfZWIgPiAwKSB7XG5cdFx0XHRcdFx0ZHN0ICs9IHJlYWRfYml0c19uKGRhdGEsIGJvZmYsIGRzdF9lYik7XG5cdFx0XHRcdFx0Ym9mZiArPSBkc3RfZWI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvKiBpbiB0aGUgY29tbW9uIGNhc2UsIG1hbnVhbCBieXRlIGNvcHkgaXMgZmFzdGVyIHRoYW4gVEEgc2V0IC8gQnVmZmVyIGNvcHkgKi9cblx0XHRcdFx0aWYoIXVzeiAmJiBPTCA8IHRndCkgeyBvdXRidWYgPSByZWFsbG9jKG91dGJ1ZiwgdGd0ICsgMTAwKTsgT0wgPSBvdXRidWYubGVuZ3RoOyB9XG5cdFx0XHRcdHdoaWxlKHdvZmYgPCB0Z3QpIHsgb3V0YnVmW3dvZmZdID0gb3V0YnVmW3dvZmYgLSBkc3RdOyArK3dvZmY7IH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblx0aWYodXN6KSByZXR1cm4gW291dGJ1ZiwgKGJvZmYrNyk+Pj4zXTtcblx0cmV0dXJuIFtvdXRidWYuc2xpY2UoMCwgd29mZiksIChib2ZmKzcpPj4+M107XG59XG5cbmZ1bmN0aW9uIF9pbmZsYXRlKHBheWxvYWQsIHVzeikge1xuXHR2YXIgZGF0YSA9IHBheWxvYWQuc2xpY2UocGF5bG9hZC5sfHwwKTtcblx0dmFyIG91dCA9IGluZmxhdGUoZGF0YSwgdXN6KTtcblx0cGF5bG9hZC5sICs9IG91dFsxXTtcblx0cmV0dXJuIG91dFswXTtcbn1cblxuZnVuY3Rpb24gd2Fybl9vcl90aHJvdyh3cm4sIG1zZykge1xuXHRpZih3cm4pIHsgaWYodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSBjb25zb2xlLmVycm9yKG1zZyk7IH1cblx0ZWxzZSB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VfemlwKGZpbGUvKjpSYXdCeXRlcyovLCBvcHRpb25zLyo6Q0ZCUmVhZE9wdHMqLykvKjpDRkJDb250YWluZXIqLyB7XG5cdHZhciBibG9iLyo6Q0ZCbG9iKi8gPSAvKjo6KCovZmlsZS8qOjogOmFueSkqLztcblx0cHJlcF9ibG9iKGJsb2IsIDApO1xuXG5cdHZhciBGaWxlSW5kZXgvKjpDRkJGaWxlSW5kZXgqLyA9IFtdLCBGdWxsUGF0aHMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0dmFyIG8gPSB7XG5cdFx0RmlsZUluZGV4OiBGaWxlSW5kZXgsXG5cdFx0RnVsbFBhdGhzOiBGdWxsUGF0aHNcblx0fTtcblx0aW5pdF9jZmIobywgeyByb290OiBvcHRpb25zLnJvb3QgfSk7XG5cblx0LyogZmluZCBlbmQgb2YgY2VudHJhbCBkaXJlY3RvcnksIHN0YXJ0IGp1c3QgYWZ0ZXIgc2lnbmF0dXJlICovXG5cdHZhciBpID0gYmxvYi5sZW5ndGggLSA0O1xuXHR3aGlsZSgoYmxvYltpXSAhPSAweDUwIHx8IGJsb2JbaSsxXSAhPSAweDRiIHx8IGJsb2JbaSsyXSAhPSAweDA1IHx8IGJsb2JbaSszXSAhPSAweDA2KSAmJiBpID49IDApIC0taTtcblx0YmxvYi5sID0gaSArIDQ7XG5cblx0LyogcGFyc2UgZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5ICovXG5cdGJsb2IubCArPSA0O1xuXHR2YXIgZmNudCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDY7XG5cdHZhciBzdGFydF9jZCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblxuXHQvKiBwYXJzZSBjZW50cmFsIGRpcmVjdG9yeSAqL1xuXHRibG9iLmwgPSBzdGFydF9jZDtcblxuXHRmb3IoaSA9IDA7IGkgPCBmY250OyArK2kpIHtcblx0XHQvKiB0cnVzdCBsb2NhbCBmaWxlIGhlYWRlciBpbnN0ZWFkIG9mIENEIGVudHJ5ICovXG5cdFx0YmxvYi5sICs9IDIwO1xuXHRcdHZhciBjc3ogPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdFx0dmFyIHVzeiA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0XHR2YXIgbmFtZWxlbiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHR2YXIgZWZzeiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHR2YXIgZmNzeiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHRibG9iLmwgKz0gODtcblx0XHR2YXIgb2Zmc2V0ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRcdHZhciBFRiA9IHBhcnNlX2V4dHJhX2ZpZWxkKC8qOjooKi9ibG9iLnNsaWNlKGJsb2IubCtuYW1lbGVuLCBibG9iLmwrbmFtZWxlbitlZnN6KS8qOjogOmFueSkqLyk7XG5cdFx0YmxvYi5sICs9IG5hbWVsZW4gKyBlZnN6ICsgZmNzejtcblxuXHRcdHZhciBMID0gYmxvYi5sO1xuXHRcdGJsb2IubCA9IG9mZnNldCArIDQ7XG5cdFx0cGFyc2VfbG9jYWxfZmlsZShibG9iLCBjc3osIHVzeiwgbywgRUYpO1xuXHRcdGJsb2IubCA9IEw7XG5cdH1cblx0cmV0dXJuIG87XG59XG5cblxuLyogaGVhZCBzdGFydHMganVzdCBhZnRlciBsb2NhbCBmaWxlIGhlYWRlciBzaWduYXR1cmUgKi9cbmZ1bmN0aW9uIHBhcnNlX2xvY2FsX2ZpbGUoYmxvYi8qOkNGQmxvYiovLCBjc3ovKjpudW1iZXIqLywgdXN6Lyo6bnVtYmVyKi8sIG8vKjpDRkJDb250YWluZXIqLywgRUYpIHtcblx0LyogW2xvY2FsIGZpbGUgaGVhZGVyXSAqL1xuXHRibG9iLmwgKz0gMjtcblx0dmFyIGZsYWdzID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgbWV0aCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGRhdGUgPSBwYXJzZV9kb3NfZGF0ZShibG9iKTtcblxuXHRpZihmbGFncyAmIDB4MjA0MSkgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgWklQIGVuY3J5cHRpb25cIik7XG5cdHZhciBjcmMzMiA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIF9jc3ogPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBfdXN6ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXG5cdHZhciBuYW1lbGVuID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgZWZzeiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblxuXHQvLyBUT0RPOiBmbGFncyAmICgxPDwxMSkgLy8gVVRGOFxuXHR2YXIgbmFtZSA9IFwiXCI7IGZvcih2YXIgaSA9IDA7IGkgPCBuYW1lbGVuOyArK2kpIG5hbWUgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShibG9iW2Jsb2IubCsrXSk7XG5cdGlmKGVmc3opIHtcblx0XHR2YXIgZWYgPSBwYXJzZV9leHRyYV9maWVsZCgvKjo6KCovYmxvYi5zbGljZShibG9iLmwsIGJsb2IubCArIGVmc3opLyo6OiA6YW55KSovKTtcblx0XHRpZigoZWZbMHg1NDU1XXx8e30pLm10KSBkYXRlID0gZWZbMHg1NDU1XS5tdDtcblx0XHRpZigoKEVGfHx7fSlbMHg1NDU1XXx8e30pLm10KSBkYXRlID0gRUZbMHg1NDU1XS5tdDtcblx0fVxuXHRibG9iLmwgKz0gZWZzejtcblxuXHQvKiBbZW5jcnlwdGlvbiBoZWFkZXJdICovXG5cblx0LyogW2ZpbGUgZGF0YV0gKi9cblx0dmFyIGRhdGEgPSBibG9iLnNsaWNlKGJsb2IubCwgYmxvYi5sICsgX2Nzeik7XG5cdHN3aXRjaChtZXRoKSB7XG5cdFx0Y2FzZSA4OiBkYXRhID0gX2luZmxhdGVSYXdTeW5jKGJsb2IsIF91c3opOyBicmVhaztcblx0XHRjYXNlIDA6IGJyZWFrOyAvLyBUT0RPOiBzY2FuIGZvciBtYWdpYyBudW1iZXJcblx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBaSVAgQ29tcHJlc3Npb24gbWV0aG9kIFwiICsgbWV0aCk7XG5cdH1cblxuXHQvKiBbZGF0YSBkZXNjcmlwdG9yXSAqL1xuXHR2YXIgd3JuID0gZmFsc2U7XG5cdGlmKGZsYWdzICYgOCkge1xuXHRcdGNyYzMyID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRcdGlmKGNyYzMyID09IDB4MDgwNzRiNTApIHsgY3JjMzIgPSBibG9iLnJlYWRfc2hpZnQoNCk7IHdybiA9IHRydWU7IH1cblx0XHRfY3N6ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRcdF91c3ogPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdH1cblxuXHRpZihfY3N6ICE9IGNzeikgd2Fybl9vcl90aHJvdyh3cm4sIFwiQmFkIGNvbXByZXNzZWQgc2l6ZTogXCIgKyBjc3ogKyBcIiAhPSBcIiArIF9jc3opO1xuXHRpZihfdXN6ICE9IHVzeikgd2Fybl9vcl90aHJvdyh3cm4sIFwiQmFkIHVuY29tcHJlc3NlZCBzaXplOiBcIiArIHVzeiArIFwiICE9IFwiICsgX3Vzeik7XG5cdC8vdmFyIF9jcmMzMiA9IENSQzMyLmJ1ZihkYXRhLCAwKTtcblx0Ly9pZigoY3JjMzI+PjApICE9IChfY3JjMzI+PjApKSB3YXJuX29yX3Rocm93KHdybiwgXCJCYWQgQ1JDMzIgY2hlY2tzdW06IFwiICsgY3JjMzIgKyBcIiAhPSBcIiArIF9jcmMzMik7XG5cdGNmYl9hZGQobywgbmFtZSwgZGF0YSwge3Vuc2FmZTogdHJ1ZSwgbXQ6IGRhdGV9KTtcbn1cbmZ1bmN0aW9uIHdyaXRlX3ppcChjZmIvKjpDRkJDb250YWluZXIqLywgb3B0aW9ucy8qOkNGQldyaXRlT3B0cyovKS8qOlJhd0J5dGVzKi8ge1xuXHR2YXIgX29wdHMgPSBvcHRpb25zIHx8IHt9O1xuXHR2YXIgb3V0ID0gW10sIGNkaXJzID0gW107XG5cdHZhciBvLyo6Q0ZCbG9iKi8gPSBuZXdfYnVmKDEpO1xuXHR2YXIgbWV0aG9kID0gKF9vcHRzLmNvbXByZXNzaW9uID8gOCA6IDApLCBmbGFncyA9IDA7XG5cdHZhciBkZXNjID0gZmFsc2U7XG5cdGlmKGRlc2MpIGZsYWdzIHw9IDg7XG5cdHZhciBpID0gMCwgaiA9IDA7XG5cblx0dmFyIHN0YXJ0X2NkID0gMCwgZmNudCA9IDA7XG5cdHZhciByb290ID0gY2ZiLkZ1bGxQYXRoc1swXSwgZnAgPSByb290LCBmaSA9IGNmYi5GaWxlSW5kZXhbMF07XG5cdHZhciBjcmNzID0gW107XG5cdHZhciBzel9jZCA9IDA7XG5cblx0Zm9yKGkgPSAxOyBpIDwgY2ZiLkZ1bGxQYXRocy5sZW5ndGg7ICsraSkge1xuXHRcdGZwID0gY2ZiLkZ1bGxQYXRoc1tpXS5zbGljZShyb290Lmxlbmd0aCk7IGZpID0gY2ZiLkZpbGVJbmRleFtpXTtcblx0XHRpZighZmkuc2l6ZSB8fCAhZmkuY29udGVudCB8fCBmcCA9PSBcIlxcdTAwMDFTaDMzdEo1XCIpIGNvbnRpbnVlO1xuXHRcdHZhciBzdGFydCA9IHN0YXJ0X2NkO1xuXG5cdFx0LyogVE9ETzogQ1A0MzcgZmlsZW5hbWUgKi9cblx0XHR2YXIgbmFtZWJ1ZiA9IG5ld19idWYoZnAubGVuZ3RoKTtcblx0XHRmb3IoaiA9IDA7IGogPCBmcC5sZW5ndGg7ICsraikgbmFtZWJ1Zi53cml0ZV9zaGlmdCgxLCBmcC5jaGFyQ29kZUF0KGopICYgMHg3Rik7XG5cdFx0bmFtZWJ1ZiA9IG5hbWVidWYuc2xpY2UoMCwgbmFtZWJ1Zi5sKTtcblx0XHRjcmNzW2ZjbnRdID0gQ1JDMzIuYnVmKC8qOjooKCovZmkuY29udGVudC8qOjp8fFtdKTphbnkpKi8sIDApO1xuXG5cdFx0dmFyIG91dGJ1ZiA9IGZpLmNvbnRlbnQvKjo6fHxbXSovO1xuXHRcdGlmKG1ldGhvZCA9PSA4KSBvdXRidWYgPSBfZGVmbGF0ZVJhd1N5bmMob3V0YnVmKTtcblxuXHRcdC8qIGxvY2FsIGZpbGUgaGVhZGVyICovXG5cdFx0byA9IG5ld19idWYoMzApO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgMHgwNDAzNGI1MCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAyMCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCBmbGFncyk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCBtZXRob2QpO1xuXHRcdC8qIFRPRE86IGxhc3QgbW9kIGZpbGUgdGltZS9kYXRlICovXG5cdFx0aWYoZmkubXQpIHdyaXRlX2Rvc19kYXRlKG8sIGZpLm10KTtcblx0XHRlbHNlIG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdFx0by53cml0ZV9zaGlmdCgtNCwgKGZsYWdzICYgOCkgPyAwIDogY3Jjc1tmY250XSk7XG5cdFx0by53cml0ZV9zaGlmdCg0LCAgKGZsYWdzICYgOCkgPyAwIDogb3V0YnVmLmxlbmd0aCk7XG5cdFx0by53cml0ZV9zaGlmdCg0LCAgKGZsYWdzICYgOCkgPyAwIDogLyo6OigqL2ZpLmNvbnRlbnQvKjo6fHxbXSkqLy5sZW5ndGgpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgbmFtZWJ1Zi5sZW5ndGgpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cblx0XHRzdGFydF9jZCArPSBvLmxlbmd0aDtcblx0XHRvdXQucHVzaChvKTtcblx0XHRzdGFydF9jZCArPSBuYW1lYnVmLmxlbmd0aDtcblx0XHRvdXQucHVzaChuYW1lYnVmKTtcblxuXHRcdC8qIFRPRE86IGV4dHJhIGZpZWxkcz8gKi9cblxuXHRcdC8qIFRPRE86IGVuY3J5cHRpb24gaGVhZGVyID8gKi9cblxuXHRcdHN0YXJ0X2NkICs9IG91dGJ1Zi5sZW5ndGg7XG5cdFx0b3V0LnB1c2gob3V0YnVmKTtcblxuXHRcdC8qIGRhdGEgZGVzY3JpcHRvciAqL1xuXHRcdGlmKGZsYWdzICYgOCkge1xuXHRcdFx0byA9IG5ld19idWYoMTIpO1xuXHRcdFx0by53cml0ZV9zaGlmdCgtNCwgY3Jjc1tmY250XSk7XG5cdFx0XHRvLndyaXRlX3NoaWZ0KDQsIG91dGJ1Zi5sZW5ndGgpO1xuXHRcdFx0by53cml0ZV9zaGlmdCg0LCAvKjo6KCovZmkuY29udGVudC8qOjp8fFtdKSovLmxlbmd0aCk7XG5cdFx0XHRzdGFydF9jZCArPSBvLmw7XG5cdFx0XHRvdXQucHVzaChvKTtcblx0XHR9XG5cblx0XHQvKiBjZW50cmFsIGRpcmVjdG9yeSAqL1xuXHRcdG8gPSBuZXdfYnVmKDQ2KTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIDB4MDIwMTRiNTApO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAyMCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCBmbGFncyk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCBtZXRob2QpO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgMCk7IC8qIFRPRE86IGxhc3QgbW9kIGZpbGUgdGltZS9kYXRlICovXG5cdFx0by53cml0ZV9zaGlmdCgtNCwgY3Jjc1tmY250XSk7XG5cblx0XHRvLndyaXRlX3NoaWZ0KDQsIG91dGJ1Zi5sZW5ndGgpO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgLyo6OigqL2ZpLmNvbnRlbnQvKjo6fHxbXSkqLy5sZW5ndGgpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgbmFtZWJ1Zi5sZW5ndGgpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdFx0by53cml0ZV9zaGlmdCg0LCAwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIHN0YXJ0KTtcblxuXHRcdHN6X2NkICs9IG8ubDtcblx0XHRjZGlycy5wdXNoKG8pO1xuXHRcdHN6X2NkICs9IG5hbWVidWYubGVuZ3RoO1xuXHRcdGNkaXJzLnB1c2gobmFtZWJ1Zik7XG5cdFx0KytmY250O1xuXHR9XG5cblx0LyogZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5ICovXG5cdG8gPSBuZXdfYnVmKDIyKTtcblx0by53cml0ZV9zaGlmdCg0LCAweDA2MDU0YjUwKTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCBmY250KTtcblx0by53cml0ZV9zaGlmdCgyLCBmY250KTtcblx0by53cml0ZV9zaGlmdCg0LCBzel9jZCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgc3RhcnRfY2QpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXG5cdHJldHVybiBiY29uY2F0KChbYmNvbmNhdCgob3V0Lyo6YW55Ki8pKSwgYmNvbmNhdChjZGlycyksIG9dLyo6YW55Ki8pKTtcbn1cbnZhciBDb250ZW50VHlwZU1hcCA9ICh7XG5cdFwiaHRtXCI6IFwidGV4dC9odG1sXCIsXG5cdFwieG1sXCI6IFwidGV4dC94bWxcIixcblxuXHRcImdpZlwiOiBcImltYWdlL2dpZlwiLFxuXHRcImpwZ1wiOiBcImltYWdlL2pwZWdcIixcblx0XCJwbmdcIjogXCJpbWFnZS9wbmdcIixcblxuXHRcIm1zb1wiOiBcImFwcGxpY2F0aW9uL3gtbXNvXCIsXG5cdFwidGhteFwiOiBcImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2V0aGVtZVwiLFxuXHRcInNoMzN0ajVcIjogXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIlxufS8qOmFueSovKTtcblxuZnVuY3Rpb24gZ2V0X2NvbnRlbnRfdHlwZShmaS8qOkNGQkVudHJ5Ki8sIGZwLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHRpZihmaS5jdHlwZSkgcmV0dXJuIGZpLmN0eXBlO1xuXG5cdHZhciBleHQgPSBmaS5uYW1lIHx8IFwiXCIsIG0gPSBleHQubWF0Y2goL1xcLihbXlxcLl0rKSQvKTtcblx0aWYobSAmJiBDb250ZW50VHlwZU1hcFttWzFdXSkgcmV0dXJuIENvbnRlbnRUeXBlTWFwW21bMV1dO1xuXG5cdGlmKGZwKSB7XG5cdFx0bSA9IChleHQgPSBmcCkubWF0Y2goL1tcXC5cXFxcXShbXlxcLlxcXFxdKSskLyk7XG5cdFx0aWYobSAmJiBDb250ZW50VHlwZU1hcFttWzFdXSkgcmV0dXJuIENvbnRlbnRUeXBlTWFwW21bMV1dO1xuXHR9XG5cblx0cmV0dXJuIFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCI7XG59XG5cbi8qIDc2IGNoYXJhY3RlciBjaHVua3MgVE9ETzogaW50ZXJ0d2luZSBlbmNvZGluZyAqL1xuZnVuY3Rpb24gd3JpdGVfYmFzZTY0Xzc2KGJzdHIvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBkYXRhID0gQmFzZTY0X2VuY29kZShic3RyKTtcblx0dmFyIG8gPSBbXTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKz0gNzYpIG8ucHVzaChkYXRhLnNsaWNlKGksIGkrNzYpKTtcblx0cmV0dXJuIG8uam9pbihcIlxcclxcblwiKSArIFwiXFxyXFxuXCI7XG59XG5cbi8qXG5SdWxlcyBmb3IgUVA6XG5cdC0gZXNjYXBlID0jIyBhcHBsaWVzIGZvciBhbGwgbm9uLWRpc3BsYXkgY2hhcmFjdGVycyBhbmQgbGl0ZXJhbCBcIj1cIlxuXHQtIHNwYWNlIG9yIHRhYiBhdCBlbmQgb2YgbGluZSBtdXN0IGJlIGVuY29kZWRcblx0LSBcXHJcXG4gbmV3bGluZXMgY2FuIGJlIHByZXNlcnZlZCwgYnV0IGJhcmUgXFxyIGFuZCBcXG4gbXVzdCBiZSBlc2NhcGVkXG5cdC0gbGluZXMgbXVzdCBub3QgZXhjZWVkIDc2IGNoYXJhY3RlcnMsIHVzZSBzb2Z0IGJyZWFrcyA9XFxyXFxuXG5cblRPRE86IFNvbWUgZmlsZXMgZnJvbSB3b3JkIGFwcGVhciB0byB3cml0ZSBsaW5lIGV4dGVuc2lvbnMgd2l0aCBiYXJlIGVxdWFsczpcblxuYGBgXG48dGFibGUgY2xhc3M9M0RNc29UYWJsZUdyaWQgYm9yZGVyPTNEMSBjZWxsc3BhY2luZz0zRDAgY2VsbHBhZGRpbmc9M0QwIHdpZHRoPVxuPVwiNzAlXCJcbmBgYFxuKi9cbmZ1bmN0aW9uIHdyaXRlX3F1b3RlZF9wcmludGFibGUodGV4dC8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0dmFyIGVuY29kZWQgPSB0ZXh0LnJlcGxhY2UoL1tcXHgwMC1cXHgwOFxceDBCXFx4MENcXHgwRS1cXHgxRlxceDdFLVxceEZGPV0vZywgZnVuY3Rpb24oYykge1xuXHRcdHZhciB3ID0gYy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO1xuXHRcdHJldHVybiBcIj1cIiArICh3Lmxlbmd0aCA9PSAxID8gXCIwXCIgKyB3IDogdyk7XG5cdH0pO1xuXG5cdGVuY29kZWQgPSBlbmNvZGVkLnJlcGxhY2UoLyAkL21nLCBcIj0yMFwiKS5yZXBsYWNlKC9cXHQkL21nLCBcIj0wOVwiKTtcblxuXHRpZihlbmNvZGVkLmNoYXJBdCgwKSA9PSBcIlxcblwiKSBlbmNvZGVkID0gXCI9MERcIiArIGVuY29kZWQuc2xpY2UoMSk7XG5cdGVuY29kZWQgPSBlbmNvZGVkLnJlcGxhY2UoL1xccig/IVxcbikvbWcsIFwiPTBEXCIpLnJlcGxhY2UoL1xcblxcbi9tZywgXCJcXG49MEFcIikucmVwbGFjZSgvKFteXFxyXFxuXSlcXG4vbWcsIFwiJDE9MEFcIik7XG5cblx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXSwgc3BsaXQgPSBlbmNvZGVkLnNwbGl0KFwiXFxyXFxuXCIpO1xuXHRmb3IodmFyIHNpID0gMDsgc2kgPCBzcGxpdC5sZW5ndGg7ICsrc2kpIHtcblx0XHR2YXIgc3RyID0gc3BsaXRbc2ldO1xuXHRcdGlmKHN0ci5sZW5ndGggPT0gMCkgeyBvLnB1c2goXCJcIik7IGNvbnRpbnVlOyB9XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7KSB7XG5cdFx0XHR2YXIgZW5kID0gNzY7XG5cdFx0XHR2YXIgdG1wID0gc3RyLnNsaWNlKGksIGkgKyBlbmQpO1xuXHRcdFx0aWYodG1wLmNoYXJBdChlbmQgLSAxKSA9PSBcIj1cIikgZW5kIC0tO1xuXHRcdFx0ZWxzZSBpZih0bXAuY2hhckF0KGVuZCAtIDIpID09IFwiPVwiKSBlbmQgLT0gMjtcblx0XHRcdGVsc2UgaWYodG1wLmNoYXJBdChlbmQgLSAzKSA9PSBcIj1cIikgZW5kIC09IDM7XG5cdFx0XHR0bXAgPSBzdHIuc2xpY2UoaSwgaSArIGVuZCk7XG5cdFx0XHRpICs9IGVuZDtcblx0XHRcdGlmKGkgPCBzdHIubGVuZ3RoKSB0bXAgKz0gXCI9XCI7XG5cdFx0XHRvLnB1c2godG1wKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gby5qb2luKFwiXFxyXFxuXCIpO1xufVxuZnVuY3Rpb24gcGFyc2VfcXVvdGVkX3ByaW50YWJsZShkYXRhLyo6QXJyYXk8c3RyaW5nPiovKS8qOlJhd0J5dGVzKi8ge1xuXHR2YXIgbyA9IFtdO1xuXG5cdC8qIHVuaWZ5IGxvbmcgbGluZXMgKi9cblx0Zm9yKHZhciBkaSA9IDA7IGRpIDwgZGF0YS5sZW5ndGg7ICsrZGkpIHtcblx0XHR2YXIgbGluZSA9IGRhdGFbZGldO1xuXHRcdHdoaWxlKGRpIDw9IGRhdGEubGVuZ3RoICYmIGxpbmUuY2hhckF0KGxpbmUubGVuZ3RoIC0gMSkgPT0gXCI9XCIpIGxpbmUgPSBsaW5lLnNsaWNlKDAsIGxpbmUubGVuZ3RoIC0gMSkgKyBkYXRhWysrZGldO1xuXHRcdG8ucHVzaChsaW5lKTtcblx0fVxuXG5cdC8qIGRlY29kZSAqL1xuXHRmb3IodmFyIG9pID0gMDsgb2kgPCBvLmxlbmd0aDsgKytvaSkgb1tvaV0gPSBvW29pXS5yZXBsYWNlKC9bPV1bMC05QS1GYS1mXXsyfS9nLCBmdW5jdGlvbigkJCkgeyByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludCgkJC5zbGljZSgxKSwgMTYpKTsgfSk7XG5cdHJldHVybiBzMmEoby5qb2luKFwiXFxyXFxuXCIpKTtcbn1cblxuXG5mdW5jdGlvbiBwYXJzZV9taW1lKGNmYi8qOkNGQkNvbnRhaW5lciovLCBkYXRhLyo6QXJyYXk8c3RyaW5nPiovLCByb290Lyo6c3RyaW5nKi8pLyo6dm9pZCovIHtcblx0dmFyIGZuYW1lID0gXCJcIiwgY3RlID0gXCJcIiwgY3R5cGUgPSBcIlwiLCBmZGF0YTtcblx0dmFyIGRpID0gMDtcblx0Zm9yKDtkaSA8IDEwOyArK2RpKSB7XG5cdFx0dmFyIGxpbmUgPSBkYXRhW2RpXTtcblx0XHRpZighbGluZSB8fCBsaW5lLm1hdGNoKC9eXFxzKiQvKSkgYnJlYWs7XG5cdFx0dmFyIG0gPSBsaW5lLm1hdGNoKC9eKC4qPyk6XFxzKihbXlxcc10uKikkLyk7XG5cdFx0aWYobSkgc3dpdGNoKG1bMV0udG9Mb3dlckNhc2UoKSkge1xuXHRcdFx0Y2FzZSBcImNvbnRlbnQtbG9jYXRpb25cIjogZm5hbWUgPSBtWzJdLnRyaW0oKTsgYnJlYWs7XG5cdFx0XHRjYXNlIFwiY29udGVudC10eXBlXCI6IGN0eXBlID0gbVsyXS50cmltKCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSBcImNvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmdcIjogY3RlID0gbVsyXS50cmltKCk7IGJyZWFrO1xuXHRcdH1cblx0fVxuXHQrK2RpO1xuXHRzd2l0Y2goY3RlLnRvTG93ZXJDYXNlKCkpIHtcblx0XHRjYXNlICdiYXNlNjQnOiBmZGF0YSA9IHMyYShCYXNlNjRfZGVjb2RlKGRhdGEuc2xpY2UoZGkpLmpvaW4oXCJcIikpKTsgYnJlYWs7XG5cdFx0Y2FzZSAncXVvdGVkLXByaW50YWJsZSc6IGZkYXRhID0gcGFyc2VfcXVvdGVkX3ByaW50YWJsZShkYXRhLnNsaWNlKGRpKSk7IGJyZWFrO1xuXHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcgXCIgKyBjdGUpO1xuXHR9XG5cdHZhciBmaWxlID0gY2ZiX2FkZChjZmIsIGZuYW1lLnNsaWNlKHJvb3QubGVuZ3RoKSwgZmRhdGEsIHt1bnNhZmU6IHRydWV9KTtcblx0aWYoY3R5cGUpIGZpbGUuY3R5cGUgPSBjdHlwZTtcbn1cblxuZnVuY3Rpb24gcGFyc2VfbWFkKGZpbGUvKjpSYXdCeXRlcyovLCBvcHRpb25zLyo6Q0ZCUmVhZE9wdHMqLykvKjpDRkJDb250YWluZXIqLyB7XG5cdGlmKGEycyhmaWxlLnNsaWNlKDAsMTMpKS50b0xvd2VyQ2FzZSgpICE9IFwibWltZS12ZXJzaW9uOlwiKSB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBNQUQgaGVhZGVyXCIpO1xuXHR2YXIgcm9vdCA9IChvcHRpb25zICYmIG9wdGlvbnMucm9vdCB8fCBcIlwiKTtcblx0Ly8gJEZsb3dJZ25vcmVcblx0dmFyIGRhdGEgPSAoaGFzX2J1ZiAmJiBCdWZmZXIuaXNCdWZmZXIoZmlsZSkgPyBmaWxlLnRvU3RyaW5nKFwiYmluYXJ5XCIpIDogYTJzKGZpbGUpKS5zcGxpdChcIlxcclxcblwiKTtcblx0dmFyIGRpID0gMCwgcm93ID0gXCJcIjtcblxuXHQvKiBpZiByb290IGlzIG5vdCBzcGVjaWZpZWQsIHNjYW4gZm9yIHRoZSBjb21tb24gcHJlZml4ICovXG5cdGZvcihkaSA9IDA7IGRpIDwgZGF0YS5sZW5ndGg7ICsrZGkpIHtcblx0XHRyb3cgPSBkYXRhW2RpXTtcblx0XHRpZighL15Db250ZW50LUxvY2F0aW9uOi9pLnRlc3Qocm93KSkgY29udGludWU7XG5cdFx0cm93ID0gcm93LnNsaWNlKHJvdy5pbmRleE9mKFwiZmlsZVwiKSk7XG5cdFx0aWYoIXJvb3QpIHJvb3QgPSByb3cuc2xpY2UoMCwgcm93Lmxhc3RJbmRleE9mKFwiL1wiKSArIDEpO1xuXHRcdGlmKHJvdy5zbGljZSgwLCByb290Lmxlbmd0aCkgPT0gcm9vdCkgY29udGludWU7XG5cdFx0d2hpbGUocm9vdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRyb290ID0gcm9vdC5zbGljZSgwLCByb290Lmxlbmd0aCAtIDEpO1xuXHRcdFx0cm9vdCA9IHJvb3Quc2xpY2UoMCwgcm9vdC5sYXN0SW5kZXhPZihcIi9cIikgKyAxKTtcblx0XHRcdGlmKHJvdy5zbGljZSgwLHJvb3QubGVuZ3RoKSA9PSByb290KSBicmVhaztcblx0XHR9XG5cdH1cblxuXHR2YXIgbWJvdW5kYXJ5ID0gKGRhdGFbMV0gfHwgXCJcIikubWF0Y2goL2JvdW5kYXJ5PVwiKC4qPylcIi8pO1xuXHRpZighbWJvdW5kYXJ5KSB0aHJvdyBuZXcgRXJyb3IoXCJNQUQgY2Fubm90IGZpbmQgYm91bmRhcnlcIik7XG5cdHZhciBib3VuZGFyeSA9IFwiLS1cIiArIChtYm91bmRhcnlbMV0gfHwgXCJcIik7XG5cblx0dmFyIEZpbGVJbmRleC8qOkNGQkZpbGVJbmRleCovID0gW10sIEZ1bGxQYXRocy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgbyA9IHtcblx0XHRGaWxlSW5kZXg6IEZpbGVJbmRleCxcblx0XHRGdWxsUGF0aHM6IEZ1bGxQYXRoc1xuXHR9O1xuXHRpbml0X2NmYihvKTtcblx0dmFyIHN0YXJ0X2RpLCBmY250ID0gMDtcblx0Zm9yKGRpID0gMDsgZGkgPCBkYXRhLmxlbmd0aDsgKytkaSkge1xuXHRcdHZhciBsaW5lID0gZGF0YVtkaV07XG5cdFx0aWYobGluZSAhPT0gYm91bmRhcnkgJiYgbGluZSAhPT0gYm91bmRhcnkgKyBcIi0tXCIpIGNvbnRpbnVlO1xuXHRcdGlmKGZjbnQrKykgcGFyc2VfbWltZShvLCBkYXRhLnNsaWNlKHN0YXJ0X2RpLCBkaSksIHJvb3QpO1xuXHRcdHN0YXJ0X2RpID0gZGk7XG5cdH1cblx0cmV0dXJuIG87XG59XG5cbmZ1bmN0aW9uIHdyaXRlX21hZChjZmIvKjpDRkJDb250YWluZXIqLywgb3B0aW9ucy8qOkNGQldyaXRlT3B0cyovKS8qOnN0cmluZyovIHtcblx0dmFyIG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuXHR2YXIgYm91bmRhcnkgPSBvcHRzLmJvdW5kYXJ5IHx8IFwiU2hlZXRKU1wiO1xuXHRib3VuZGFyeSA9ICctLS0tLS09JyArIGJvdW5kYXJ5O1xuXG5cdHZhciBvdXQgPSBbXG5cdFx0J01JTUUtVmVyc2lvbjogMS4wJyxcblx0XHQnQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvcmVsYXRlZDsgYm91bmRhcnk9XCInICsgYm91bmRhcnkuc2xpY2UoMikgKyAnXCInLFxuXHRcdCcnLFxuXHRcdCcnLFxuXHRcdCcnXG5cdF07XG5cblx0dmFyIHJvb3QgPSBjZmIuRnVsbFBhdGhzWzBdLCBmcCA9IHJvb3QsIGZpID0gY2ZiLkZpbGVJbmRleFswXTtcblx0Zm9yKHZhciBpID0gMTsgaSA8IGNmYi5GdWxsUGF0aHMubGVuZ3RoOyArK2kpIHtcblx0XHRmcCA9IGNmYi5GdWxsUGF0aHNbaV0uc2xpY2Uocm9vdC5sZW5ndGgpO1xuXHRcdGZpID0gY2ZiLkZpbGVJbmRleFtpXTtcblx0XHRpZighZmkuc2l6ZSB8fCAhZmkuY29udGVudCB8fCBmcCA9PSBcIlxcdTAwMDFTaDMzdEo1XCIpIGNvbnRpbnVlO1xuXG5cdFx0LyogTm9ybWFsaXplIGZpbGVuYW1lICovXG5cdFx0ZnAgPSBmcC5yZXBsYWNlKC9bXFx4MDAtXFx4MDhcXHgwQlxceDBDXFx4MEUtXFx4MUZcXHg3RS1cXHhGRl0vZywgZnVuY3Rpb24oYykge1xuXHRcdFx0cmV0dXJuIFwiX3hcIiArIGMuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikgKyBcIl9cIjtcblx0XHR9KS5yZXBsYWNlKC9bXFx1MDA4MC1cXHVGRkZGXS9nLCBmdW5jdGlvbih1KSB7XG5cdFx0XHRyZXR1cm4gXCJfdVwiICsgdS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSArIFwiX1wiO1xuXHRcdH0pO1xuXG5cdFx0LyogRXh0cmFjdCBjb250ZW50IGFzIGJpbmFyeSBzdHJpbmcgKi9cblx0XHR2YXIgY2EgPSBmaS5jb250ZW50O1xuXHRcdC8vICRGbG93SWdub3JlXG5cdFx0dmFyIGNzdHIgPSBoYXNfYnVmICYmIEJ1ZmZlci5pc0J1ZmZlcihjYSkgPyBjYS50b1N0cmluZyhcImJpbmFyeVwiKSA6IGEycyhjYSk7XG5cblx0XHQvKiA0LzUgb2YgZmlyc3QgMTAyNCBjaGFycyBhc2NpaSAtPiBxdW90ZWQgcHJpbnRhYmxlLCBlbHNlIGJhc2U2NCAqL1xuXHRcdHZhciBkaXNwY250ID0gMCwgTCA9IE1hdGgubWluKDEwMjQsIGNzdHIubGVuZ3RoKSwgY2MgPSAwO1xuXHRcdGZvcih2YXIgY3NsID0gMDsgY3NsIDw9IEw7ICsrY3NsKSBpZigoY2M9Y3N0ci5jaGFyQ29kZUF0KGNzbCkpID49IDB4MjAgJiYgY2MgPCAweDgwKSArK2Rpc3BjbnQ7XG5cdFx0dmFyIHFwID0gZGlzcGNudCA+PSBMICogNCAvIDU7XG5cblx0XHRvdXQucHVzaChib3VuZGFyeSk7XG5cdFx0b3V0LnB1c2goJ0NvbnRlbnQtTG9jYXRpb246ICcgKyAob3B0cy5yb290IHx8ICdmaWxlOi8vL0M6L1NoZWV0SlMvJykgKyBmcCk7XG5cdFx0b3V0LnB1c2goJ0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6ICcgKyAocXAgPyAncXVvdGVkLXByaW50YWJsZScgOiAnYmFzZTY0JykpO1xuXHRcdG91dC5wdXNoKCdDb250ZW50LVR5cGU6ICcgKyBnZXRfY29udGVudF90eXBlKGZpLCBmcCkpO1xuXHRcdG91dC5wdXNoKCcnKTtcblxuXHRcdG91dC5wdXNoKHFwID8gd3JpdGVfcXVvdGVkX3ByaW50YWJsZShjc3RyKSA6IHdyaXRlX2Jhc2U2NF83Nihjc3RyKSk7XG5cdH1cblx0b3V0LnB1c2goYm91bmRhcnkgKyAnLS1cXHJcXG4nKTtcblx0cmV0dXJuIG91dC5qb2luKFwiXFxyXFxuXCIpO1xufVxuZnVuY3Rpb24gY2ZiX25ldyhvcHRzLyo6P2FueSovKS8qOkNGQkNvbnRhaW5lciovIHtcblx0dmFyIG8vKjpDRkJDb250YWluZXIqLyA9ICh7fS8qOmFueSovKTtcblx0aW5pdF9jZmIobywgb3B0cyk7XG5cdHJldHVybiBvO1xufVxuXG5mdW5jdGlvbiBjZmJfYWRkKGNmYi8qOkNGQkNvbnRhaW5lciovLCBuYW1lLyo6c3RyaW5nKi8sIGNvbnRlbnQvKjo/UmF3Qnl0ZXMqLywgb3B0cy8qOj9hbnkqLykvKjpDRkJFbnRyeSovIHtcblx0dmFyIHVuc2FmZSA9IG9wdHMgJiYgb3B0cy51bnNhZmU7XG5cdGlmKCF1bnNhZmUpIGluaXRfY2ZiKGNmYik7XG5cdHZhciBmaWxlID0gIXVuc2FmZSAmJiBDRkIuZmluZChjZmIsIG5hbWUpO1xuXHRpZighZmlsZSkge1xuXHRcdHZhciBmcGF0aC8qOnN0cmluZyovID0gY2ZiLkZ1bGxQYXRoc1swXTtcblx0XHRpZihuYW1lLnNsaWNlKDAsIGZwYXRoLmxlbmd0aCkgPT0gZnBhdGgpIGZwYXRoID0gbmFtZTtcblx0XHRlbHNlIHtcblx0XHRcdGlmKGZwYXRoLnNsaWNlKC0xKSAhPSBcIi9cIikgZnBhdGggKz0gXCIvXCI7XG5cdFx0XHRmcGF0aCA9IChmcGF0aCArIG5hbWUpLnJlcGxhY2UoXCIvL1wiLFwiL1wiKTtcblx0XHR9XG5cdFx0ZmlsZSA9ICh7bmFtZTogZmlsZW5hbWUobmFtZSksIHR5cGU6IDJ9Lyo6YW55Ki8pO1xuXHRcdGNmYi5GaWxlSW5kZXgucHVzaChmaWxlKTtcblx0XHRjZmIuRnVsbFBhdGhzLnB1c2goZnBhdGgpO1xuXHRcdGlmKCF1bnNhZmUpIENGQi51dGlscy5jZmJfZ2MoY2ZiKTtcblx0fVxuXHQvKjo6IGlmKCFmaWxlKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi9cblx0ZmlsZS5jb250ZW50ID0gKGNvbnRlbnQvKjphbnkqLyk7XG5cdGZpbGUuc2l6ZSA9IGNvbnRlbnQgPyBjb250ZW50Lmxlbmd0aCA6IDA7XG5cdGlmKG9wdHMpIHtcblx0XHRpZihvcHRzLkNMU0lEKSBmaWxlLmNsc2lkID0gb3B0cy5DTFNJRDtcblx0XHRpZihvcHRzLm10KSBmaWxlLm10ID0gb3B0cy5tdDtcblx0XHRpZihvcHRzLmN0KSBmaWxlLmN0ID0gb3B0cy5jdDtcblx0fVxuXHRyZXR1cm4gZmlsZTtcbn1cblxuZnVuY3Rpb24gY2ZiX2RlbChjZmIvKjpDRkJDb250YWluZXIqLywgbmFtZS8qOnN0cmluZyovKS8qOmJvb2xlYW4qLyB7XG5cdGluaXRfY2ZiKGNmYik7XG5cdHZhciBmaWxlID0gQ0ZCLmZpbmQoY2ZiLCBuYW1lKTtcblx0aWYoZmlsZSkgZm9yKHZhciBqID0gMDsgaiA8IGNmYi5GaWxlSW5kZXgubGVuZ3RoOyArK2opIGlmKGNmYi5GaWxlSW5kZXhbal0gPT0gZmlsZSkge1xuXHRcdGNmYi5GaWxlSW5kZXguc3BsaWNlKGosIDEpO1xuXHRcdGNmYi5GdWxsUGF0aHMuc3BsaWNlKGosIDEpO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gY2ZiX21vdihjZmIvKjpDRkJDb250YWluZXIqLywgb2xkX25hbWUvKjpzdHJpbmcqLywgbmV3X25hbWUvKjpzdHJpbmcqLykvKjpib29sZWFuKi8ge1xuXHRpbml0X2NmYihjZmIpO1xuXHR2YXIgZmlsZSA9IENGQi5maW5kKGNmYiwgb2xkX25hbWUpO1xuXHRpZihmaWxlKSBmb3IodmFyIGogPSAwOyBqIDwgY2ZiLkZpbGVJbmRleC5sZW5ndGg7ICsraikgaWYoY2ZiLkZpbGVJbmRleFtqXSA9PSBmaWxlKSB7XG5cdFx0Y2ZiLkZpbGVJbmRleFtqXS5uYW1lID0gZmlsZW5hbWUobmV3X25hbWUpO1xuXHRcdGNmYi5GdWxsUGF0aHNbal0gPSBuZXdfbmFtZTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXHRyZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGNmYl9nYyhjZmIvKjpDRkJDb250YWluZXIqLykvKjp2b2lkKi8geyByZWJ1aWxkX2NmYihjZmIsIHRydWUpOyB9XG5cbmV4cG9ydHMuZmluZCA9IGZpbmQ7XG5leHBvcnRzLnJlYWQgPSByZWFkO1xuZXhwb3J0cy5wYXJzZSA9IHBhcnNlO1xuZXhwb3J0cy53cml0ZSA9IHdyaXRlO1xuZXhwb3J0cy53cml0ZUZpbGUgPSB3cml0ZV9maWxlO1xuZXhwb3J0cy51dGlscyA9IHtcblx0Y2ZiX25ldzogY2ZiX25ldyxcblx0Y2ZiX2FkZDogY2ZiX2FkZCxcblx0Y2ZiX2RlbDogY2ZiX2RlbCxcblx0Y2ZiX21vdjogY2ZiX21vdixcblx0Y2ZiX2djOiBjZmJfZ2MsXG5cdFJlYWRTaGlmdDogUmVhZFNoaWZ0LFxuXHRDaGVja0ZpZWxkOiBDaGVja0ZpZWxkLFxuXHRwcmVwX2Jsb2I6IHByZXBfYmxvYixcblx0YmNvbmNhdDogYmNvbmNhdCxcblx0dXNlX3psaWI6IHVzZV96bGliLFxuXHRfZGVmbGF0ZVJhdzogX2RlZmxhdGUsXG5cdF9pbmZsYXRlUmF3OiBfaW5mbGF0ZSxcblx0Y29uc3RzOiBjb25zdHNcbn07XG5cbnJldHVybiBleHBvcnRzO1xufSkoKTtcblxubGV0IF9mcyA9IHZvaWQgMDtcbmZ1bmN0aW9uIHNldF9mcyhmcykgeyBfZnMgPSBmczsgfVxuZXhwb3J0IHsgc2V0X2ZzIH07XG5cbi8qIG5vcm1hbGl6ZSBkYXRhIGZvciBibG9iIGN0b3IgKi9cbmZ1bmN0aW9uIGJsb2JpZnkoZGF0YSkge1xuXHRpZih0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIHMyYWIoZGF0YSk7XG5cdGlmKEFycmF5LmlzQXJyYXkoZGF0YSkpIHJldHVybiBhMnUoZGF0YSk7XG5cdHJldHVybiBkYXRhO1xufVxuLyogd3JpdGUgb3IgZG93bmxvYWQgZmlsZSAqL1xuZnVuY3Rpb24gd3JpdGVfZGwoZm5hbWUvKjpzdHJpbmcqLywgcGF5bG9hZC8qOmFueSovLCBlbmMvKjo/c3RyaW5nKi8pIHtcblx0LypnbG9iYWwgSUVfU2F2ZUZpbGUsIEJsb2IsIG5hdmlnYXRvciwgc2F2ZUFzLCBkb2N1bWVudCwgRmlsZSwgY2hyb21lICovXG5cdGlmKHR5cGVvZiBfZnMgIT09ICd1bmRlZmluZWQnICYmIF9mcy53cml0ZUZpbGVTeW5jKSByZXR1cm4gZW5jID8gX2ZzLndyaXRlRmlsZVN5bmMoZm5hbWUsIHBheWxvYWQsIGVuYykgOiBfZnMud3JpdGVGaWxlU3luYyhmbmFtZSwgcGF5bG9hZCk7XG5cdGlmKHR5cGVvZiBEZW5vICE9PSAndW5kZWZpbmVkJykge1xuXHRcdC8qIGluIHRoaXMgc3BvdCwgaXQncyBzYWZlIHRvIGFzc3VtZSB0eXBlZCBhcnJheXMgYW5kIFRleHRFbmNvZGVyL1RleHREZWNvZGVyIGV4aXN0ICovXG5cdFx0aWYoZW5jICYmIHR5cGVvZiBwYXlsb2FkID09IFwic3RyaW5nXCIpIHN3aXRjaChlbmMpIHtcblx0XHRcdGNhc2UgXCJ1dGY4XCI6IHBheWxvYWQgPSBuZXcgVGV4dEVuY29kZXIoZW5jKS5lbmNvZGUocGF5bG9hZCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSBcImJpbmFyeVwiOiBwYXlsb2FkID0gczJhYihwYXlsb2FkKTsgYnJlYWs7XG5cdFx0XHQvKiBUT0RPOiBiaW5hcnkgZXF1aXZhbGVudCAqL1xuXHRcdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgZW5jb2RpbmcgXCIgKyBlbmMpO1xuXHRcdH1cblx0XHRyZXR1cm4gRGVuby53cml0ZUZpbGVTeW5jKGZuYW1lLCBwYXlsb2FkKTtcblx0fVxuXHR2YXIgZGF0YSA9IChlbmMgPT0gXCJ1dGY4XCIpID8gdXRmOHdyaXRlKHBheWxvYWQpIDogcGF5bG9hZDtcblx0Lyo6OiBkZWNsYXJlIHZhciBJRV9TYXZlRmlsZTogYW55OyAqL1xuXHRpZih0eXBlb2YgSUVfU2F2ZUZpbGUgIT09ICd1bmRlZmluZWQnKSByZXR1cm4gSUVfU2F2ZUZpbGUoZGF0YSwgZm5hbWUpO1xuXHRpZih0eXBlb2YgQmxvYiAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0XHR2YXIgYmxvYiA9IG5ldyBCbG9iKFtibG9iaWZ5KGRhdGEpXSwge3R5cGU6XCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIn0pO1xuXHRcdC8qOjogZGVjbGFyZSB2YXIgbmF2aWdhdG9yOiBhbnk7ICovXG5cdFx0aWYodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgbmF2aWdhdG9yLm1zU2F2ZUJsb2IpIHJldHVybiBuYXZpZ2F0b3IubXNTYXZlQmxvYihibG9iLCBmbmFtZSk7XG5cdFx0Lyo6OiBkZWNsYXJlIHZhciBzYXZlQXM6IGFueTsgKi9cblx0XHRpZih0eXBlb2Ygc2F2ZUFzICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIHNhdmVBcyhibG9iLCBmbmFtZSk7XG5cdFx0aWYodHlwZW9mIFVSTCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBkb2N1bWVudC5jcmVhdGVFbGVtZW50ICYmIFVSTC5jcmVhdGVPYmplY3RVUkwpIHtcblx0XHRcdHZhciB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuXHRcdFx0Lyo6OiBkZWNsYXJlIHZhciBjaHJvbWU6IGFueTsgKi9cblx0XHRcdGlmKHR5cGVvZiBjaHJvbWUgPT09ICdvYmplY3QnICYmIHR5cGVvZiAoY2hyb21lLmRvd25sb2Fkc3x8e30pLmRvd25sb2FkID09IFwiZnVuY3Rpb25cIikge1xuXHRcdFx0XHRpZihVUkwucmV2b2tlT2JqZWN0VVJMICYmIHR5cGVvZiBzZXRUaW1lb3V0ICE9PSAndW5kZWZpbmVkJykgc2V0VGltZW91dChmdW5jdGlvbigpIHsgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpOyB9LCA2MDAwMCk7XG5cdFx0XHRcdHJldHVybiBjaHJvbWUuZG93bmxvYWRzLmRvd25sb2FkKHsgdXJsOiB1cmwsIGZpbGVuYW1lOiBmbmFtZSwgc2F2ZUFzOiB0cnVlfSk7XG5cdFx0XHR9XG5cdFx0XHR2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuXHRcdFx0aWYoYS5kb3dubG9hZCAhPSBudWxsKSB7XG5cdFx0XHRcdC8qOjogaWYoZG9jdW1lbnQuYm9keSA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi9cblx0XHRcdFx0YS5kb3dubG9hZCA9IGZuYW1lOyBhLmhyZWYgPSB1cmw7IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7IGEuY2xpY2soKTtcblx0XHRcdFx0Lyo6OiBpZihkb2N1bWVudC5ib2R5ID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqLyBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpO1xuXHRcdFx0XHRpZihVUkwucmV2b2tlT2JqZWN0VVJMICYmIHR5cGVvZiBzZXRUaW1lb3V0ICE9PSAndW5kZWZpbmVkJykgc2V0VGltZW91dChmdW5jdGlvbigpIHsgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpOyB9LCA2MDAwMCk7XG5cdFx0XHRcdHJldHVybiB1cmw7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdC8vICRGbG93SWdub3JlXG5cdGlmKHR5cGVvZiAkICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgRmlsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIEZvbGRlciAhPT0gJ3VuZGVmaW5lZCcpIHRyeSB7IC8vIGV4dGVuZHNjcmlwdFxuXHRcdC8vICRGbG93SWdub3JlXG5cdFx0dmFyIG91dCA9IEZpbGUoZm5hbWUpOyBvdXQub3BlbihcIndcIik7IG91dC5lbmNvZGluZyA9IFwiYmluYXJ5XCI7XG5cdFx0aWYoQXJyYXkuaXNBcnJheShwYXlsb2FkKSkgcGF5bG9hZCA9IGEycyhwYXlsb2FkKTtcblx0XHRvdXQud3JpdGUocGF5bG9hZCk7IG91dC5jbG9zZSgpOyByZXR1cm4gcGF5bG9hZDtcblx0fSBjYXRjaChlKSB7IGlmKCFlLm1lc3NhZ2UgfHwgIWUubWVzc2FnZS5tYXRjaCgvb25zdHJ1Y3QvKSkgdGhyb3cgZTsgfVxuXHR0aHJvdyBuZXcgRXJyb3IoXCJjYW5ub3Qgc2F2ZSBmaWxlIFwiICsgZm5hbWUpO1xufVxuXG4vKiByZWFkIGJpbmFyeSBkYXRhIGZyb20gZmlsZSAqL1xuZnVuY3Rpb24gcmVhZF9iaW5hcnkocGF0aC8qOnN0cmluZyovKSB7XG5cdGlmKHR5cGVvZiBfZnMgIT09ICd1bmRlZmluZWQnKSByZXR1cm4gX2ZzLnJlYWRGaWxlU3luYyhwYXRoKTtcblx0aWYodHlwZW9mIERlbm8gIT09ICd1bmRlZmluZWQnKSByZXR1cm4gRGVuby5yZWFkRmlsZVN5bmMocGF0aCk7XG5cdC8vICRGbG93SWdub3JlXG5cdGlmKHR5cGVvZiAkICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgRmlsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIEZvbGRlciAhPT0gJ3VuZGVmaW5lZCcpIHRyeSB7IC8vIGV4dGVuZHNjcmlwdFxuXHRcdC8vICRGbG93SWdub3JlXG5cdFx0dmFyIGluZmlsZSA9IEZpbGUocGF0aCk7IGluZmlsZS5vcGVuKFwiclwiKTsgaW5maWxlLmVuY29kaW5nID0gXCJiaW5hcnlcIjtcblx0XHR2YXIgZGF0YSA9IGluZmlsZS5yZWFkKCk7IGluZmlsZS5jbG9zZSgpO1xuXHRcdHJldHVybiBkYXRhO1xuXHR9IGNhdGNoKGUpIHsgaWYoIWUubWVzc2FnZSB8fCAhZS5tZXNzYWdlLm1hdGNoKC9vbnN0cnVjdC8pKSB0aHJvdyBlOyB9XG5cdHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBhY2Nlc3MgZmlsZSBcIiArIHBhdGgpO1xufVxuZnVuY3Rpb24ga2V5cyhvLyo6YW55Ki8pLyo6QXJyYXk8YW55PiovIHtcblx0dmFyIGtzID0gT2JqZWN0LmtleXMobyksIG8yID0gW107XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBrcy5sZW5ndGg7ICsraSkgaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIGtzW2ldKSkgbzIucHVzaChrc1tpXSk7XG5cdHJldHVybiBvMjtcbn1cblxuZnVuY3Rpb24gZXZlcnRfa2V5KG9iai8qOmFueSovLCBrZXkvKjpzdHJpbmcqLykvKjpFdmVydFR5cGUqLyB7XG5cdHZhciBvID0gKFtdLyo6YW55Ki8pLCBLID0ga2V5cyhvYmopO1xuXHRmb3IodmFyIGkgPSAwOyBpICE9PSBLLmxlbmd0aDsgKytpKSBpZihvW29ialtLW2ldXVtrZXldXSA9PSBudWxsKSBvW29ialtLW2ldXVtrZXldXSA9IEtbaV07XG5cdHJldHVybiBvO1xufVxuXG5mdW5jdGlvbiBldmVydChvYmovKjphbnkqLykvKjpFdmVydFR5cGUqLyB7XG5cdHZhciBvID0gKFtdLyo6YW55Ki8pLCBLID0ga2V5cyhvYmopO1xuXHRmb3IodmFyIGkgPSAwOyBpICE9PSBLLmxlbmd0aDsgKytpKSBvW29ialtLW2ldXV0gPSBLW2ldO1xuXHRyZXR1cm4gbztcbn1cblxuZnVuY3Rpb24gZXZlcnRfbnVtKG9iai8qOmFueSovKS8qOkV2ZXJ0TnVtVHlwZSovIHtcblx0dmFyIG8gPSAoW10vKjphbnkqLyksIEsgPSBrZXlzKG9iaik7XG5cdGZvcih2YXIgaSA9IDA7IGkgIT09IEsubGVuZ3RoOyArK2kpIG9bb2JqW0tbaV1dXSA9IHBhcnNlSW50KEtbaV0sMTApO1xuXHRyZXR1cm4gbztcbn1cblxuZnVuY3Rpb24gZXZlcnRfYXJyKG9iai8qOmFueSovKS8qOkV2ZXJ0QXJyVHlwZSovIHtcblx0dmFyIG8vKjpFdmVydEFyclR5cGUqLyA9IChbXS8qOmFueSovKSwgSyA9IGtleXMob2JqKTtcblx0Zm9yKHZhciBpID0gMDsgaSAhPT0gSy5sZW5ndGg7ICsraSkge1xuXHRcdGlmKG9bb2JqW0tbaV1dXSA9PSBudWxsKSBvW29ialtLW2ldXV0gPSBbXTtcblx0XHRvW29ialtLW2ldXV0ucHVzaChLW2ldKTtcblx0fVxuXHRyZXR1cm4gbztcbn1cblxudmFyIGJhc2VkYXRlID0gLyojX19QVVJFX18qL25ldyBEYXRlKDE4OTksIDExLCAzMCwgMCwgMCwgMCk7IC8vIDIyMDkxNjE2MDAwMDBcbmZ1bmN0aW9uIGRhdGVudW0odi8qOkRhdGUqLywgZGF0ZTE5MDQvKjo/Ym9vbGVhbiovKS8qOm51bWJlciovIHtcblx0dmFyIGVwb2NoID0gLyojX19QVVJFX18qL3YuZ2V0VGltZSgpO1xuXHRpZihkYXRlMTkwNCkgZXBvY2ggLT0gMTQ2MioyNCo2MCo2MCoxMDAwO1xuXHR2YXIgZG50aHJlc2ggPSAvKiNfX1BVUkVfXyovYmFzZWRhdGUuZ2V0VGltZSgpICsgKC8qI19fUFVSRV9fKi92LmdldFRpbWV6b25lT2Zmc2V0KCkgLSAvKiNfX1BVUkVfXyovYmFzZWRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSkgKiA2MDAwMDtcblx0cmV0dXJuIChlcG9jaCAtIGRudGhyZXNoKSAvICgyNCAqIDYwICogNjAgKiAxMDAwKTtcbn1cbnZhciByZWZkYXRlID0gLyojX19QVVJFX18qL25ldyBEYXRlKCk7XG52YXIgZG50aHJlc2ggPSAvKiNfX1BVUkVfXyovYmFzZWRhdGUuZ2V0VGltZSgpICsgKC8qI19fUFVSRV9fKi9yZWZkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkgLSAvKiNfX1BVUkVfXyovYmFzZWRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSkgKiA2MDAwMDtcbnZhciByZWZvZmZzZXQgPSAvKiNfX1BVUkVfXyovcmVmZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpO1xuZnVuY3Rpb24gbnVtZGF0ZSh2Lyo6bnVtYmVyKi8pLyo6RGF0ZSovIHtcblx0dmFyIG91dCA9IG5ldyBEYXRlKCk7XG5cdG91dC5zZXRUaW1lKHYgKiAyNCAqIDYwICogNjAgKiAxMDAwICsgZG50aHJlc2gpO1xuXHRpZiAob3V0LmdldFRpbWV6b25lT2Zmc2V0KCkgIT09IHJlZm9mZnNldCkge1xuXHRcdG91dC5zZXRUaW1lKG91dC5nZXRUaW1lKCkgKyAob3V0LmdldFRpbWV6b25lT2Zmc2V0KCkgLSByZWZvZmZzZXQpICogNjAwMDApO1xuXHR9XG5cdHJldHVybiBvdXQ7XG59XG5cbi8qIElTTyA4NjAxIER1cmF0aW9uICovXG5mdW5jdGlvbiBwYXJzZV9pc29kdXIocykge1xuXHR2YXIgc2VjID0gMCwgbXQgPSAwLCB0aW1lID0gZmFsc2U7XG5cdHZhciBtID0gcy5tYXRjaCgvUChbMC05XFwuXStZKT8oWzAtOVxcLl0rTSk/KFswLTlcXC5dK0QpP1QoWzAtOVxcLl0rSCk/KFswLTlcXC5dK00pPyhbMC05XFwuXStTKT8vKTtcblx0aWYoIW0pIHRocm93IG5ldyBFcnJvcihcInxcIiArIHMgKyBcInwgaXMgbm90IGFuIElTTzg2MDEgRHVyYXRpb25cIik7XG5cdGZvcih2YXIgaSA9IDE7IGkgIT0gbS5sZW5ndGg7ICsraSkge1xuXHRcdGlmKCFtW2ldKSBjb250aW51ZTtcblx0XHRtdCA9IDE7XG5cdFx0aWYoaSA+IDMpIHRpbWUgPSB0cnVlO1xuXHRcdHN3aXRjaChtW2ldLnNsaWNlKG1baV0ubGVuZ3RoLTEpKSB7XG5cdFx0XHRjYXNlICdZJzpcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgSVNPIER1cmF0aW9uIEZpZWxkOiBcIiArIG1baV0uc2xpY2UobVtpXS5sZW5ndGgtMSkpO1xuXHRcdFx0Y2FzZSAnRCc6IG10ICo9IDI0O1xuXHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICdIJzogbXQgKj0gNjA7XG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJ00nOlxuXHRcdFx0XHRpZighdGltZSkgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgSVNPIER1cmF0aW9uIEZpZWxkOiBNXCIpO1xuXHRcdFx0XHRlbHNlIG10ICo9IDYwO1xuXHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICdTJzogYnJlYWs7XG5cdFx0fVxuXHRcdHNlYyArPSBtdCAqIHBhcnNlSW50KG1baV0sIDEwKTtcblx0fVxuXHRyZXR1cm4gc2VjO1xufVxuXG52YXIgZ29vZF9wZF9kYXRlXzEgPSAvKiNfX1BVUkVfXyovbmV3IERhdGUoJzIwMTctMDItMTlUMTk6MDY6MDkuMDAwWicpO1xudmFyIGdvb2RfcGRfZGF0ZSA9IC8qI19fUFVSRV9fKi9pc05hTigvKiNfX1BVUkVfXyovZ29vZF9wZF9kYXRlXzEuZ2V0RnVsbFllYXIoKSkgPyAvKiNfX1BVUkVfXyovbmV3IERhdGUoJzIvMTkvMTcnKSA6IGdvb2RfcGRfZGF0ZV8xO1xudmFyIGdvb2RfcGQgPSAvKiNfX1BVUkVfXyovZ29vZF9wZF9kYXRlLmdldEZ1bGxZZWFyKCkgPT0gMjAxNztcbi8qIHBhcnNlcyBhIGRhdGUgYXMgYSBsb2NhbCBkYXRlICovXG5mdW5jdGlvbiBwYXJzZURhdGUoc3RyLyo6c3RyaW5nfERhdGUqLywgZml4ZGF0ZS8qOj9udW1iZXIqLykvKjpEYXRlKi8ge1xuXHR2YXIgZCA9IG5ldyBEYXRlKHN0cik7XG5cdGlmKGdvb2RfcGQpIHtcblx0XHQvKjo6IGlmKGZpeGRhdGUgPT0gbnVsbCkgZml4ZGF0ZSA9IDA7ICovXG5cdFx0aWYoZml4ZGF0ZSA+IDApIGQuc2V0VGltZShkLmdldFRpbWUoKSArIGQuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwICogMTAwMCk7XG5cdFx0ZWxzZSBpZihmaXhkYXRlIDwgMCkgZC5zZXRUaW1lKGQuZ2V0VGltZSgpIC0gZC5nZXRUaW1lem9uZU9mZnNldCgpICogNjAgKiAxMDAwKTtcblx0XHRyZXR1cm4gZDtcblx0fVxuXHRpZihzdHIgaW5zdGFuY2VvZiBEYXRlKSByZXR1cm4gc3RyO1xuXHRpZihnb29kX3BkX2RhdGUuZ2V0RnVsbFllYXIoKSA9PSAxOTE3ICYmICFpc05hTihkLmdldEZ1bGxZZWFyKCkpKSB7XG5cdFx0dmFyIHMgPSBkLmdldEZ1bGxZZWFyKCk7XG5cdFx0aWYoc3RyLmluZGV4T2YoXCJcIiArIHMpID4gLTEpIHJldHVybiBkO1xuXHRcdGQuc2V0RnVsbFllYXIoZC5nZXRGdWxsWWVhcigpICsgMTAwKTsgcmV0dXJuIGQ7XG5cdH1cblx0dmFyIG4gPSBzdHIubWF0Y2goL1xcZCsvZyl8fFtcIjIwMTdcIixcIjJcIixcIjE5XCIsXCIwXCIsXCIwXCIsXCIwXCJdO1xuXHR2YXIgb3V0ID0gbmV3IERhdGUoK25bMF0sICtuWzFdIC0gMSwgK25bMl0sICgrblszXXx8MCksICgrbls0XXx8MCksICgrbls1XXx8MCkpO1xuXHRpZihzdHIuaW5kZXhPZihcIlpcIikgPiAtMSkgb3V0ID0gbmV3IERhdGUob3V0LmdldFRpbWUoKSAtIG91dC5nZXRUaW1lem9uZU9mZnNldCgpICogNjAgKiAxMDAwKTtcblx0cmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gY2Myc3RyKGFyci8qOkFycmF5PG51bWJlcj4qLywgZGVib21pdCkvKjpzdHJpbmcqLyB7XG5cdGlmKGhhc19idWYgJiYgQnVmZmVyLmlzQnVmZmVyKGFycikpIHtcblx0XHRpZihkZWJvbWl0KSB7XG5cdFx0XHRpZihhcnJbMF0gPT0gMHhGRiAmJiBhcnJbMV0gPT0gMHhGRSkgcmV0dXJuIHV0Zjh3cml0ZShhcnIuc2xpY2UoMikudG9TdHJpbmcoXCJ1dGYxNmxlXCIpKTtcblx0XHRcdGlmKGFyclsxXSA9PSAweEZFICYmIGFyclsyXSA9PSAweEZGKSByZXR1cm4gdXRmOHdyaXRlKHV0ZjE2YmVyZWFkKGFyci5zbGljZSgyKS50b1N0cmluZyhcImJpbmFyeVwiKSkpO1xuXHRcdH1cblx0XHRyZXR1cm4gYXJyLnRvU3RyaW5nKFwiYmluYXJ5XCIpO1xuXHR9XG5cblx0aWYodHlwZW9mIFRleHREZWNvZGVyICE9PSBcInVuZGVmaW5lZFwiKSB0cnkge1xuXHRcdGlmKGRlYm9taXQpIHtcblx0XHRcdGlmKGFyclswXSA9PSAweEZGICYmIGFyclsxXSA9PSAweEZFKSByZXR1cm4gdXRmOHdyaXRlKG5ldyBUZXh0RGVjb2RlcihcInV0Zi0xNmxlXCIpLmRlY29kZShhcnIuc2xpY2UoMikpKTtcblx0XHRcdGlmKGFyclswXSA9PSAweEZFICYmIGFyclsxXSA9PSAweEZGKSByZXR1cm4gdXRmOHdyaXRlKG5ldyBUZXh0RGVjb2RlcihcInV0Zi0xNmJlXCIpLmRlY29kZShhcnIuc2xpY2UoMikpKTtcblx0XHR9XG5cdFx0dmFyIHJldiA9IHtcblx0XHRcdFwiXFx1MjBhY1wiOiBcIlxceDgwXCIsIFwiXFx1MjAxYVwiOiBcIlxceDgyXCIsIFwiXFx1MDE5MlwiOiBcIlxceDgzXCIsIFwiXFx1MjAxZVwiOiBcIlxceDg0XCIsXG5cdFx0XHRcIlxcdTIwMjZcIjogXCJcXHg4NVwiLCBcIlxcdTIwMjBcIjogXCJcXHg4NlwiLCBcIlxcdTIwMjFcIjogXCJcXHg4N1wiLCBcIlxcdTAyYzZcIjogXCJcXHg4OFwiLFxuXHRcdFx0XCJcXHUyMDMwXCI6IFwiXFx4ODlcIiwgXCJcXHUwMTYwXCI6IFwiXFx4OGFcIiwgXCJcXHUyMDM5XCI6IFwiXFx4OGJcIiwgXCJcXHUwMTUyXCI6IFwiXFx4OGNcIixcblx0XHRcdFwiXFx1MDE3ZFwiOiBcIlxceDhlXCIsIFwiXFx1MjAxOFwiOiBcIlxceDkxXCIsIFwiXFx1MjAxOVwiOiBcIlxceDkyXCIsIFwiXFx1MjAxY1wiOiBcIlxceDkzXCIsXG5cdFx0XHRcIlxcdTIwMWRcIjogXCJcXHg5NFwiLCBcIlxcdTIwMjJcIjogXCJcXHg5NVwiLCBcIlxcdTIwMTNcIjogXCJcXHg5NlwiLCBcIlxcdTIwMTRcIjogXCJcXHg5N1wiLFxuXHRcdFx0XCJcXHUwMmRjXCI6IFwiXFx4OThcIiwgXCJcXHUyMTIyXCI6IFwiXFx4OTlcIiwgXCJcXHUwMTYxXCI6IFwiXFx4OWFcIiwgXCJcXHUyMDNhXCI6IFwiXFx4OWJcIixcblx0XHRcdFwiXFx1MDE1M1wiOiBcIlxceDljXCIsIFwiXFx1MDE3ZVwiOiBcIlxceDllXCIsIFwiXFx1MDE3OFwiOiBcIlxceDlmXCJcblx0XHR9O1xuXHRcdGlmKEFycmF5LmlzQXJyYXkoYXJyKSkgYXJyID0gbmV3IFVpbnQ4QXJyYXkoYXJyKTtcblx0XHRyZXR1cm4gbmV3IFRleHREZWNvZGVyKFwibGF0aW4xXCIpLmRlY29kZShhcnIpLnJlcGxhY2UoL1vigqzigJrGkuKAnuKApuKAoOKAocuG4oCwxaDigLnFksW94oCY4oCZ4oCc4oCd4oCi4oCT4oCUy5zihKLFoeKAusWTxb7FuF0vZywgZnVuY3Rpb24oYykgeyByZXR1cm4gcmV2W2NdIHx8IGM7IH0pO1xuXHR9IGNhdGNoKGUpIHt9XG5cblx0dmFyIG8gPSBbXTtcblx0Zm9yKHZhciBpID0gMDsgaSAhPSBhcnIubGVuZ3RoOyArK2kpIG8ucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGFycltpXSkpO1xuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuXG5mdW5jdGlvbiBkdXAoby8qOmFueSovKS8qOmFueSovIHtcblx0aWYodHlwZW9mIEpTT04gIT0gJ3VuZGVmaW5lZCcgJiYgIUFycmF5LmlzQXJyYXkobykpIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG8pKTtcblx0aWYodHlwZW9mIG8gIT0gJ29iamVjdCcgfHwgbyA9PSBudWxsKSByZXR1cm4gbztcblx0aWYobyBpbnN0YW5jZW9mIERhdGUpIHJldHVybiBuZXcgRGF0ZShvLmdldFRpbWUoKSk7XG5cdHZhciBvdXQgPSB7fTtcblx0Zm9yKHZhciBrIGluIG8pIGlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBrKSkgb3V0W2tdID0gZHVwKG9ba10pO1xuXHRyZXR1cm4gb3V0O1xufVxuXG5mdW5jdGlvbiBmaWxsKGMvKjpzdHJpbmcqLyxsLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi8geyB2YXIgbyA9IFwiXCI7IHdoaWxlKG8ubGVuZ3RoIDwgbCkgbys9YzsgcmV0dXJuIG87IH1cblxuLyogVE9ETzogc3RyZXNzIHRlc3QgKi9cbmZ1bmN0aW9uIGZ1enp5bnVtKHMvKjpzdHJpbmcqLykvKjpudW1iZXIqLyB7XG5cdHZhciB2Lyo6bnVtYmVyKi8gPSBOdW1iZXIocyk7XG5cdGlmKCFpc05hTih2KSkgcmV0dXJuIGlzRmluaXRlKHYpID8gdiA6IE5hTjtcblx0aWYoIS9cXGQvLnRlc3QocykpIHJldHVybiB2O1xuXHR2YXIgd3QgPSAxO1xuXHR2YXIgc3MgPSBzLnJlcGxhY2UoLyhbXFxkXSksKFtcXGRdKS9nLFwiJDEkMlwiKS5yZXBsYWNlKC9bJF0vZyxcIlwiKS5yZXBsYWNlKC9bJV0vZywgZnVuY3Rpb24oKSB7IHd0ICo9IDEwMDsgcmV0dXJuIFwiXCI7fSk7XG5cdGlmKCFpc05hTih2ID0gTnVtYmVyKHNzKSkpIHJldHVybiB2IC8gd3Q7XG5cdHNzID0gc3MucmVwbGFjZSgvWyhdKC4qKVspXS8sZnVuY3Rpb24oJCQsICQxKSB7IHd0ID0gLXd0OyByZXR1cm4gJDE7fSk7XG5cdGlmKCFpc05hTih2ID0gTnVtYmVyKHNzKSkpIHJldHVybiB2IC8gd3Q7XG5cdHJldHVybiB2O1xufVxudmFyIGxvd2VyX21vbnRocyA9IFsnamFudWFyeScsICdmZWJydWFyeScsICdtYXJjaCcsICdhcHJpbCcsICdtYXknLCAnanVuZScsICdqdWx5JywgJ2F1Z3VzdCcsICdzZXB0ZW1iZXInLCAnb2N0b2JlcicsICdub3ZlbWJlcicsICdkZWNlbWJlciddO1xuZnVuY3Rpb24gZnV6enlkYXRlKHMvKjpzdHJpbmcqLykvKjpEYXRlKi8ge1xuXHR2YXIgbyA9IG5ldyBEYXRlKHMpLCBuID0gbmV3IERhdGUoTmFOKTtcblx0dmFyIHkgPSBvLmdldFllYXIoKSwgbSA9IG8uZ2V0TW9udGgoKSwgZCA9IG8uZ2V0RGF0ZSgpO1xuXHRpZihpc05hTihkKSkgcmV0dXJuIG47XG5cdHZhciBsb3dlciA9IHMudG9Mb3dlckNhc2UoKTtcblx0aWYobG93ZXIubWF0Y2goL2phbnxmZWJ8bWFyfGFwcnxtYXl8anVufGp1bHxhdWd8c2VwfG9jdHxub3Z8ZGVjLykpIHtcblx0XHRsb3dlciA9IGxvd2VyLnJlcGxhY2UoL1teYS16XS9nLFwiXCIpLnJlcGxhY2UoLyhbXmEtel18XilbYXBdbT8oW15hLXpdfCQpLyxcIlwiKTtcblx0XHRpZihsb3dlci5sZW5ndGggPiAzICYmIGxvd2VyX21vbnRocy5pbmRleE9mKGxvd2VyKSA9PSAtMSkgcmV0dXJuIG47XG5cdH0gZWxzZSBpZihsb3dlci5tYXRjaCgvW2Etel0vKSkgcmV0dXJuIG47XG5cdGlmKHkgPCAwIHx8IHkgPiA4MDk5KSByZXR1cm4gbjtcblx0aWYoKG0gPiAwIHx8IGQgPiAxKSAmJiB5ICE9IDEwMSkgcmV0dXJuIG87XG5cdGlmKHMubWF0Y2goL1teLTAtOTosXFwvXFxcXF0vKSkgcmV0dXJuIG47XG5cdHJldHVybiBvO1xufVxuXG52YXIgc3BsaXRfcmVnZXggPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCkge1xuXHR2YXIgc2FmZV9zcGxpdF9yZWdleCA9IFwiYWJhY2FiYVwiLnNwbGl0KC8oOj9iKS9pKS5sZW5ndGggPT0gNTtcblx0cmV0dXJuIGZ1bmN0aW9uIHNwbGl0X3JlZ2V4KHN0ci8qOnN0cmluZyovLCByZSwgZGVmLyo6c3RyaW5nKi8pLyo6QXJyYXk8c3RyaW5nPiovIHtcblx0XHRpZihzYWZlX3NwbGl0X3JlZ2V4IHx8IHR5cGVvZiByZSA9PSBcInN0cmluZ1wiKSByZXR1cm4gc3RyLnNwbGl0KHJlKTtcblx0XHR2YXIgcCA9IHN0ci5zcGxpdChyZSksIG8gPSBbcFswXV07XG5cdFx0Zm9yKHZhciBpID0gMTsgaSA8IHAubGVuZ3RoOyArK2kpIHsgby5wdXNoKGRlZik7IG8ucHVzaChwW2ldKTsgfVxuXHRcdHJldHVybiBvO1xuXHR9O1xufSkoKTtcbmZ1bmN0aW9uIGdldGRhdGFzdHIoZGF0YSkvKjo/c3RyaW5nKi8ge1xuXHRpZighZGF0YSkgcmV0dXJuIG51bGw7XG5cdGlmKGRhdGEuY29udGVudCAmJiBkYXRhLnR5cGUpIHJldHVybiBjYzJzdHIoZGF0YS5jb250ZW50LCB0cnVlKTtcblx0aWYoZGF0YS5kYXRhKSByZXR1cm4gZGVib20oZGF0YS5kYXRhKTtcblx0aWYoZGF0YS5hc05vZGVCdWZmZXIgJiYgaGFzX2J1ZikgcmV0dXJuIGRlYm9tKGRhdGEuYXNOb2RlQnVmZmVyKCkudG9TdHJpbmcoJ2JpbmFyeScpKTtcblx0aWYoZGF0YS5hc0JpbmFyeSkgcmV0dXJuIGRlYm9tKGRhdGEuYXNCaW5hcnkoKSk7XG5cdGlmKGRhdGEuX2RhdGEgJiYgZGF0YS5fZGF0YS5nZXRDb250ZW50KSByZXR1cm4gZGVib20oY2Myc3RyKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGRhdGEuX2RhdGEuZ2V0Q29udGVudCgpLDApKSk7XG5cdHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBnZXRkYXRhYmluKGRhdGEpIHtcblx0aWYoIWRhdGEpIHJldHVybiBudWxsO1xuXHRpZihkYXRhLmRhdGEpIHJldHVybiBjaGFyX2NvZGVzKGRhdGEuZGF0YSk7XG5cdGlmKGRhdGEuYXNOb2RlQnVmZmVyICYmIGhhc19idWYpIHJldHVybiBkYXRhLmFzTm9kZUJ1ZmZlcigpO1xuXHRpZihkYXRhLl9kYXRhICYmIGRhdGEuX2RhdGEuZ2V0Q29udGVudCkge1xuXHRcdHZhciBvID0gZGF0YS5fZGF0YS5nZXRDb250ZW50KCk7XG5cdFx0aWYodHlwZW9mIG8gPT0gXCJzdHJpbmdcIikgcmV0dXJuIGNoYXJfY29kZXMobyk7XG5cdFx0cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG8pO1xuXHR9XG5cdGlmKGRhdGEuY29udGVudCAmJiBkYXRhLnR5cGUpIHJldHVybiBkYXRhLmNvbnRlbnQ7XG5cdHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBnZXRkYXRhKGRhdGEpIHsgcmV0dXJuIChkYXRhICYmIGRhdGEubmFtZS5zbGljZSgtNCkgPT09IFwiLmJpblwiKSA/IGdldGRhdGFiaW4oZGF0YSkgOiBnZXRkYXRhc3RyKGRhdGEpOyB9XG5cbi8qIFBhcnQgMiBTZWN0aW9uIDEwLjEuMiBcIk1hcHBpbmcgQ29udGVudCBUeXBlc1wiIE5hbWVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlICovXG4vKiBPQVNJUyBkb2VzIG5vdCBjb21tZW50IG9uIGZpbGVuYW1lIGNhc2Ugc2Vuc2l0aXZpdHkgKi9cbmZ1bmN0aW9uIHNhZmVnZXR6aXBmaWxlKHppcCwgZmlsZS8qOnN0cmluZyovKSB7XG5cdHZhciBrID0gemlwLkZ1bGxQYXRocyB8fCBrZXlzKHppcC5maWxlcyk7XG5cdHZhciBmID0gZmlsZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1tcXC9dL2csICdcXFxcJyksIGcgPSBmLnJlcGxhY2UoL1xcXFwvZywnXFwvJyk7XG5cdGZvcih2YXIgaT0wOyBpPGsubGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgbiA9IGtbaV0ucmVwbGFjZSgvXlJvb3QgRW50cnlbXFwvXS8sXCJcIikudG9Mb3dlckNhc2UoKTtcblx0XHRpZihmID09IG4gfHwgZyA9PSBuKSByZXR1cm4gemlwLmZpbGVzID8gemlwLmZpbGVzW2tbaV1dIDogemlwLkZpbGVJbmRleFtpXTtcblx0fVxuXHRyZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZ2V0emlwZmlsZSh6aXAsIGZpbGUvKjpzdHJpbmcqLykge1xuXHR2YXIgbyA9IHNhZmVnZXR6aXBmaWxlKHppcCwgZmlsZSk7XG5cdGlmKG8gPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgZmlsZSBcIiArIGZpbGUgKyBcIiBpbiB6aXBcIik7XG5cdHJldHVybiBvO1xufVxuXG5mdW5jdGlvbiBnZXR6aXBkYXRhKHppcCwgZmlsZS8qOnN0cmluZyovLCBzYWZlLyo6P2Jvb2xlYW4qLykvKjphbnkqLyB7XG5cdGlmKCFzYWZlKSByZXR1cm4gZ2V0ZGF0YShnZXR6aXBmaWxlKHppcCwgZmlsZSkpO1xuXHRpZighZmlsZSkgcmV0dXJuIG51bGw7XG5cdHRyeSB7IHJldHVybiBnZXR6aXBkYXRhKHppcCwgZmlsZSk7IH0gY2F0Y2goZSkgeyByZXR1cm4gbnVsbDsgfVxufVxuXG5mdW5jdGlvbiBnZXR6aXBzdHIoemlwLCBmaWxlLyo6c3RyaW5nKi8sIHNhZmUvKjo/Ym9vbGVhbiovKS8qOj9zdHJpbmcqLyB7XG5cdGlmKCFzYWZlKSByZXR1cm4gZ2V0ZGF0YXN0cihnZXR6aXBmaWxlKHppcCwgZmlsZSkpO1xuXHRpZighZmlsZSkgcmV0dXJuIG51bGw7XG5cdHRyeSB7IHJldHVybiBnZXR6aXBzdHIoemlwLCBmaWxlKTsgfSBjYXRjaChlKSB7IHJldHVybiBudWxsOyB9XG59XG5cbmZ1bmN0aW9uIGdldHppcGJpbih6aXAsIGZpbGUvKjpzdHJpbmcqLywgc2FmZS8qOj9ib29sZWFuKi8pLyo6YW55Ki8ge1xuXHRpZighc2FmZSkgcmV0dXJuIGdldGRhdGFiaW4oZ2V0emlwZmlsZSh6aXAsIGZpbGUpKTtcblx0aWYoIWZpbGUpIHJldHVybiBudWxsO1xuXHR0cnkgeyByZXR1cm4gZ2V0emlwYmluKHppcCwgZmlsZSk7IH0gY2F0Y2goZSkgeyByZXR1cm4gbnVsbDsgfVxufVxuXG5mdW5jdGlvbiB6aXBlbnRyaWVzKHppcCkge1xuXHR2YXIgayA9IHppcC5GdWxsUGF0aHMgfHwga2V5cyh6aXAuZmlsZXMpLCBvID0gW107XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBrLmxlbmd0aDsgKytpKSBpZihrW2ldLnNsaWNlKC0xKSAhPSAnLycpIG8ucHVzaChrW2ldLnJlcGxhY2UoL15Sb290IEVudHJ5W1xcL10vLCBcIlwiKSk7XG5cdHJldHVybiBvLnNvcnQoKTtcbn1cblxuZnVuY3Rpb24gemlwX2FkZF9maWxlKHppcCwgcGF0aCwgY29udGVudCkge1xuXHRpZih6aXAuRnVsbFBhdGhzKSB7XG5cdFx0aWYodHlwZW9mIGNvbnRlbnQgPT0gXCJzdHJpbmdcIikge1xuXHRcdFx0dmFyIHJlcztcblx0XHRcdGlmKGhhc19idWYpIHJlcyA9IEJ1ZmZlcl9mcm9tKGNvbnRlbnQpO1xuXHRcdFx0LyogVE9ETzogaW52ZXN0aWdhdGUgcGVyZm9ybWFuY2UgaW4gRWRnZSAxMyAqL1xuXHRcdFx0Ly9lbHNlIGlmKHR5cGVvZiBUZXh0RW5jb2RlciAhPT0gXCJ1bmRlZmluZWRcIikgcmVzID0gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKGNvbnRlbnQpO1xuXHRcdFx0ZWxzZSByZXMgPSB1dGY4ZGVjb2RlKGNvbnRlbnQpO1xuXHRcdFx0cmV0dXJuIENGQi51dGlscy5jZmJfYWRkKHppcCwgcGF0aCwgcmVzKTtcblx0XHR9XG5cdFx0Q0ZCLnV0aWxzLmNmYl9hZGQoemlwLCBwYXRoLCBjb250ZW50KTtcblx0fVxuXHRlbHNlIHppcC5maWxlKHBhdGgsIGNvbnRlbnQpO1xufVxuXG5mdW5jdGlvbiB6aXBfbmV3KCkgeyByZXR1cm4gQ0ZCLnV0aWxzLmNmYl9uZXcoKTsgfVxuXG5mdW5jdGlvbiB6aXBfcmVhZChkLCBvKSB7XG5cdHN3aXRjaChvLnR5cGUpIHtcblx0XHRjYXNlIFwiYmFzZTY0XCI6IHJldHVybiBDRkIucmVhZChkLCB7IHR5cGU6IFwiYmFzZTY0XCIgfSk7XG5cdFx0Y2FzZSBcImJpbmFyeVwiOiByZXR1cm4gQ0ZCLnJlYWQoZCwgeyB0eXBlOiBcImJpbmFyeVwiIH0pO1xuXHRcdGNhc2UgXCJidWZmZXJcIjogY2FzZSBcImFycmF5XCI6IHJldHVybiBDRkIucmVhZChkLCB7IHR5cGU6IFwiYnVmZmVyXCIgfSk7XG5cdH1cblx0dGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIHR5cGUgXCIgKyBvLnR5cGUpO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlX3BhdGgocGF0aC8qOnN0cmluZyovLCBiYXNlLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHRpZihwYXRoLmNoYXJBdCgwKSA9PSBcIi9cIikgcmV0dXJuIHBhdGguc2xpY2UoMSk7XG5cdHZhciByZXN1bHQgPSBiYXNlLnNwbGl0KCcvJyk7XG5cdGlmKGJhc2Uuc2xpY2UoLTEpICE9IFwiL1wiKSByZXN1bHQucG9wKCk7IC8vIGZvbGRlciBwYXRoXG5cdHZhciB0YXJnZXQgPSBwYXRoLnNwbGl0KCcvJyk7XG5cdHdoaWxlICh0YXJnZXQubGVuZ3RoICE9PSAwKSB7XG5cdFx0dmFyIHN0ZXAgPSB0YXJnZXQuc2hpZnQoKTtcblx0XHRpZiAoc3RlcCA9PT0gJy4uJykgcmVzdWx0LnBvcCgpO1xuXHRcdGVsc2UgaWYgKHN0ZXAgIT09ICcuJykgcmVzdWx0LnB1c2goc3RlcCk7XG5cdH1cblx0cmV0dXJuIHJlc3VsdC5qb2luKCcvJyk7XG59XG52YXIgWE1MX0hFQURFUiA9ICc8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwiIHN0YW5kYWxvbmU9XCJ5ZXNcIj8+XFxyXFxuJztcbnZhciBhdHRyZWdleGc9LyhbXlwiXFxzPz5cXC9dKylcXHMqPVxccyooKD86XCIpKFteXCJdKikoPzpcIil8KD86JykoW14nXSopKD86Jyl8KFteJ1wiPlxcc10rKSkvZztcbnZhciB0YWdyZWdleDE9LzxbXFwvXFw/XT9bYS16QS1aMC05Ol8tXSsoPzpcXHMrW15cIlxccz8+XFwvXStcXHMqPVxccyooPzpcIlteXCJdKlwifCdbXiddKid8W14nXCI+XFxzPV0rKSkqXFxzKltcXC9cXD9dPz4vbWcsIHRhZ3JlZ2V4MiA9IC88W14+XSo+L2c7XG52YXIgdGFncmVnZXggPSAvKiNfX1BVUkVfXyovWE1MX0hFQURFUi5tYXRjaCh0YWdyZWdleDEpID8gdGFncmVnZXgxIDogdGFncmVnZXgyO1xudmFyIG5zcmVnZXg9LzxcXHcqOi8sIG5zcmVnZXgyID0gLzwoXFwvPylcXHcrOi87XG5mdW5jdGlvbiBwYXJzZXhtbHRhZyh0YWcvKjpzdHJpbmcqLywgc2tpcF9yb290Lyo6P2Jvb2xlYW4qLywgc2tpcF9MQy8qOj9ib29sZWFuKi8pLyo6YW55Ki8ge1xuXHR2YXIgeiA9ICh7fS8qOmFueSovKTtcblx0dmFyIGVxID0gMCwgYyA9IDA7XG5cdGZvcig7IGVxICE9PSB0YWcubGVuZ3RoOyArK2VxKSBpZigoYyA9IHRhZy5jaGFyQ29kZUF0KGVxKSkgPT09IDMyIHx8IGMgPT09IDEwIHx8IGMgPT09IDEzKSBicmVhaztcblx0aWYoIXNraXBfcm9vdCkgelswXSA9IHRhZy5zbGljZSgwLCBlcSk7XG5cdGlmKGVxID09PSB0YWcubGVuZ3RoKSByZXR1cm4gejtcblx0dmFyIG0gPSB0YWcubWF0Y2goYXR0cmVnZXhnKSwgaj0wLCB2PVwiXCIsIGk9MCwgcT1cIlwiLCBjYz1cIlwiLCBxdW90ID0gMTtcblx0aWYobSkgZm9yKGkgPSAwOyBpICE9IG0ubGVuZ3RoOyArK2kpIHtcblx0XHRjYyA9IG1baV07XG5cdFx0Zm9yKGM9MDsgYyAhPSBjYy5sZW5ndGg7ICsrYykgaWYoY2MuY2hhckNvZGVBdChjKSA9PT0gNjEpIGJyZWFrO1xuXHRcdHEgPSBjYy5zbGljZSgwLGMpLnRyaW0oKTtcblx0XHR3aGlsZShjYy5jaGFyQ29kZUF0KGMrMSkgPT0gMzIpICsrYztcblx0XHRxdW90ID0gKChlcT1jYy5jaGFyQ29kZUF0KGMrMSkpID09IDM0IHx8IGVxID09IDM5KSA/IDEgOiAwO1xuXHRcdHYgPSBjYy5zbGljZShjKzErcXVvdCwgY2MubGVuZ3RoLXF1b3QpO1xuXHRcdGZvcihqPTA7aiE9cS5sZW5ndGg7KytqKSBpZihxLmNoYXJDb2RlQXQoaikgPT09IDU4KSBicmVhaztcblx0XHRpZihqPT09cS5sZW5ndGgpIHtcblx0XHRcdGlmKHEuaW5kZXhPZihcIl9cIikgPiAwKSBxID0gcS5zbGljZSgwLCBxLmluZGV4T2YoXCJfXCIpKTsgLy8gZnJvbSBvZHNcblx0XHRcdHpbcV0gPSB2O1xuXHRcdFx0aWYoIXNraXBfTEMpIHpbcS50b0xvd2VyQ2FzZSgpXSA9IHY7XG5cdFx0fVxuXHRcdGVsc2Uge1xuXHRcdFx0dmFyIGsgPSAoaj09PTUgJiYgcS5zbGljZSgwLDUpPT09XCJ4bWxuc1wiP1wieG1sbnNcIjpcIlwiKStxLnNsaWNlKGorMSk7XG5cdFx0XHRpZih6W2tdICYmIHEuc2xpY2Uoai0zLGopID09IFwiZXh0XCIpIGNvbnRpbnVlOyAvLyBmcm9tIG9kc1xuXHRcdFx0eltrXSA9IHY7XG5cdFx0XHRpZighc2tpcF9MQykgeltrLnRvTG93ZXJDYXNlKCldID0gdjtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHo7XG59XG5mdW5jdGlvbiBzdHJpcF9ucyh4Lyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8geyByZXR1cm4geC5yZXBsYWNlKG5zcmVnZXgyLCBcIjwkMVwiKTsgfVxuXG52YXIgZW5jb2RpbmdzID0ge1xuXHQnJnF1b3Q7JzogJ1wiJyxcblx0JyZhcG9zOyc6IFwiJ1wiLFxuXHQnJmd0Oyc6ICc+Jyxcblx0JyZsdDsnOiAnPCcsXG5cdCcmYW1wOyc6ICcmJ1xufTtcbnZhciByZW5jb2RpbmcgPSAvKiNfX1BVUkVfXyovZXZlcnQoZW5jb2RpbmdzKTtcbi8vdmFyIHJlbmNzdHIgPSBcIiY8PidcXFwiXCIuc3BsaXQoXCJcIik7XG5cbi8vIFRPRE86IENQIHJlbWFwIChuZWVkIHRvIHJlYWQgZmlsZSB2ZXJzaW9uIHRvIGRldGVybWluZSBPUylcbnZhciB1bmVzY2FwZXhtbC8qOlN0cmluZ0NvbnYqLyA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG5cdC8qIDIyLjQuMi40IGJzdHIgKEJhc2ljIFN0cmluZykgKi9cblx0dmFyIGVuY3JlZ2V4ID0gLyYoPzpxdW90fGFwb3N8Z3R8bHR8YW1wfCN4PyhbXFxkYS1mQS1GXSspKTsvaWcsIGNvZGVyZWdleCA9IC9feChbXFxkYS1mQS1GXXs0fSlfL2lnO1xuXHRyZXR1cm4gZnVuY3Rpb24gdW5lc2NhcGV4bWwodGV4dC8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0XHR2YXIgcyA9IHRleHQgKyAnJywgaSA9IHMuaW5kZXhPZihcIjwhW0NEQVRBW1wiKTtcblx0XHRpZihpID09IC0xKSByZXR1cm4gcy5yZXBsYWNlKGVuY3JlZ2V4LCBmdW5jdGlvbigkJCwgJDEpIHsgcmV0dXJuIGVuY29kaW5nc1skJF18fFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoJDEsJCQuaW5kZXhPZihcInhcIik+LTE/MTY6MTApKXx8JCQ7IH0pLnJlcGxhY2UoY29kZXJlZ2V4LGZ1bmN0aW9uKG0sYykge3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGMsMTYpKTt9KTtcblx0XHR2YXIgaiA9IHMuaW5kZXhPZihcIl1dPlwiKTtcblx0XHRyZXR1cm4gdW5lc2NhcGV4bWwocy5zbGljZSgwLCBpKSkgKyBzLnNsaWNlKGkrOSxqKSArIHVuZXNjYXBleG1sKHMuc2xpY2UoaiszKSk7XG5cdH07XG59KSgpO1xuXG52YXIgZGVjcmVnZXg9L1smPD4nXCJdL2csIGNoYXJlZ2V4ID0gL1tcXHUwMDAwLVxcdTAwMDhcXHUwMDBiLVxcdTAwMWZdL2c7XG5mdW5jdGlvbiBlc2NhcGV4bWwodGV4dC8qOnN0cmluZyovKS8qOnN0cmluZyove1xuXHR2YXIgcyA9IHRleHQgKyAnJztcblx0cmV0dXJuIHMucmVwbGFjZShkZWNyZWdleCwgZnVuY3Rpb24oeSkgeyByZXR1cm4gcmVuY29kaW5nW3ldOyB9KS5yZXBsYWNlKGNoYXJlZ2V4LGZ1bmN0aW9uKHMpIHsgcmV0dXJuIFwiX3hcIiArIChcIjAwMFwiK3MuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KSArIFwiX1wiO30pO1xufVxuZnVuY3Rpb24gZXNjYXBleG1sdGFnKHRleHQvKjpzdHJpbmcqLykvKjpzdHJpbmcqL3sgcmV0dXJuIGVzY2FwZXhtbCh0ZXh0KS5yZXBsYWNlKC8gL2csXCJfeDAwMjBfXCIpOyB9XG5cbnZhciBodG1sY2hhcmVnZXggPSAvW1xcdTAwMDAtXFx1MDAxZl0vZztcbmZ1bmN0aW9uIGVzY2FwZWh0bWwodGV4dC8qOnN0cmluZyovKS8qOnN0cmluZyove1xuXHR2YXIgcyA9IHRleHQgKyAnJztcblx0cmV0dXJuIHMucmVwbGFjZShkZWNyZWdleCwgZnVuY3Rpb24oeSkgeyByZXR1cm4gcmVuY29kaW5nW3ldOyB9KS5yZXBsYWNlKC9cXG4vZywgXCI8YnIvPlwiKS5yZXBsYWNlKGh0bWxjaGFyZWdleCxmdW5jdGlvbihzKSB7IHJldHVybiBcIiYjeFwiICsgKFwiMDAwXCIrcy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpICsgXCI7XCI7IH0pO1xufVxuXG5mdW5jdGlvbiBlc2NhcGV4bG1sKHRleHQvKjpzdHJpbmcqLykvKjpzdHJpbmcqL3tcblx0dmFyIHMgPSB0ZXh0ICsgJyc7XG5cdHJldHVybiBzLnJlcGxhY2UoZGVjcmVnZXgsIGZ1bmN0aW9uKHkpIHsgcmV0dXJuIHJlbmNvZGluZ1t5XTsgfSkucmVwbGFjZShodG1sY2hhcmVnZXgsZnVuY3Rpb24ocykgeyByZXR1cm4gXCImI3hcIiArIChzLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS50b1VwcGVyQ2FzZSgpICsgXCI7XCI7IH0pO1xufVxuXG4vKiBUT0RPOiBoYW5kbGUgY29kZXBhZ2VzICovXG52YXIgeGxtbF9maXhzdHIvKjpTdHJpbmdDb252Ki8gPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCkge1xuXHR2YXIgZW50cmVnZXggPSAvJiMoXFxkKyk7L2c7XG5cdGZ1bmN0aW9uIGVudHJlcGwoJCQvKjpzdHJpbmcqLywkMS8qOnN0cmluZyovKS8qOnN0cmluZyovIHsgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoJDEsMTApKTsgfVxuXHRyZXR1cm4gZnVuY3Rpb24geGxtbF9maXhzdHIoc3RyLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8geyByZXR1cm4gc3RyLnJlcGxhY2UoZW50cmVnZXgsZW50cmVwbCk7IH07XG59KSgpO1xuZnVuY3Rpb24geGxtbF91bmZpeHN0cihzdHIvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7IHJldHVybiBzdHIucmVwbGFjZSgvKFxcclxcbnxbXFxyXFxuXSkvZyxcIlxcJiMxMDtcIik7IH1cblxuZnVuY3Rpb24gcGFyc2V4bWxib29sKHZhbHVlLyo6YW55Ki8pLyo6Ym9vbGVhbiovIHtcblx0c3dpdGNoKHZhbHVlKSB7XG5cdFx0Y2FzZSAxOiBjYXNlIHRydWU6IGNhc2UgJzEnOiBjYXNlICd0cnVlJzogY2FzZSAnVFJVRSc6IHJldHVybiB0cnVlO1xuXHRcdC8qIGNhc2UgJzAnOiBjYXNlICdmYWxzZSc6IGNhc2UgJ0ZBTFNFJzoqL1xuXHRcdGRlZmF1bHQ6IHJldHVybiBmYWxzZTtcblx0fVxufVxuXG5mdW5jdGlvbiB1dGY4cmVhZGEob3JpZy8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0dmFyIG91dCA9IFwiXCIsIGkgPSAwLCBjID0gMCwgZCA9IDAsIGUgPSAwLCBmID0gMCwgdyA9IDA7XG5cdHdoaWxlIChpIDwgb3JpZy5sZW5ndGgpIHtcblx0XHRjID0gb3JpZy5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0aWYgKGMgPCAxMjgpIHsgb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYyk7IGNvbnRpbnVlOyB9XG5cdFx0ZCA9IG9yaWcuY2hhckNvZGVBdChpKyspO1xuXHRcdGlmIChjPjE5MSAmJiBjPDIyNCkgeyBmID0gKChjICYgMzEpIDw8IDYpOyBmIHw9IChkICYgNjMpOyBvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShmKTsgY29udGludWU7IH1cblx0XHRlID0gb3JpZy5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0aWYgKGMgPCAyNDApIHsgb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKChjICYgMTUpIDw8IDEyKSB8ICgoZCAmIDYzKSA8PCA2KSB8IChlICYgNjMpKTsgY29udGludWU7IH1cblx0XHRmID0gb3JpZy5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0dyA9ICgoKGMgJiA3KSA8PCAxOCkgfCAoKGQgJiA2MykgPDwgMTIpIHwgKChlICYgNjMpIDw8IDYpIHwgKGYgJiA2MykpLTY1NTM2O1xuXHRcdG91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgwMCArICgodz4+PjEwKSYxMDIzKSk7XG5cdFx0b3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEQzAwICsgKHcmMTAyMykpO1xuXHR9XG5cdHJldHVybiBvdXQ7XG59XG5cbmZ1bmN0aW9uIHV0ZjhyZWFkYihkYXRhKSB7XG5cdHZhciBvdXQgPSBuZXdfcmF3X2J1ZigyKmRhdGEubGVuZ3RoKSwgdywgaSwgaiA9IDEsIGsgPSAwLCB3dz0wLCBjO1xuXHRmb3IoaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSs9aikge1xuXHRcdGogPSAxO1xuXHRcdGlmKChjPWRhdGEuY2hhckNvZGVBdChpKSkgPCAxMjgpIHcgPSBjO1xuXHRcdGVsc2UgaWYoYyA8IDIyNCkgeyB3ID0gKGMmMzEpKjY0KyhkYXRhLmNoYXJDb2RlQXQoaSsxKSY2Myk7IGo9MjsgfVxuXHRcdGVsc2UgaWYoYyA8IDI0MCkgeyB3PShjJjE1KSo0MDk2KyhkYXRhLmNoYXJDb2RlQXQoaSsxKSY2MykqNjQrKGRhdGEuY2hhckNvZGVBdChpKzIpJjYzKTsgaj0zOyB9XG5cdFx0ZWxzZSB7IGogPSA0O1xuXHRcdFx0dyA9IChjICYgNykqMjYyMTQ0KyhkYXRhLmNoYXJDb2RlQXQoaSsxKSY2MykqNDA5NisoZGF0YS5jaGFyQ29kZUF0KGkrMikmNjMpKjY0KyhkYXRhLmNoYXJDb2RlQXQoaSszKSY2Myk7XG5cdFx0XHR3IC09IDY1NTM2OyB3dyA9IDB4RDgwMCArICgodz4+PjEwKSYxMDIzKTsgdyA9IDB4REMwMCArICh3JjEwMjMpO1xuXHRcdH1cblx0XHRpZih3dyAhPT0gMCkgeyBvdXRbaysrXSA9IHd3JjI1NTsgb3V0W2srK10gPSB3dz4+Pjg7IHd3ID0gMDsgfVxuXHRcdG91dFtrKytdID0gdyUyNTY7IG91dFtrKytdID0gdz4+Pjg7XG5cdH1cblx0cmV0dXJuIG91dC5zbGljZSgwLGspLnRvU3RyaW5nKCd1Y3MyJyk7XG59XG5cbmZ1bmN0aW9uIHV0ZjhyZWFkYyhkYXRhKSB7IHJldHVybiBCdWZmZXJfZnJvbShkYXRhLCAnYmluYXJ5JykudG9TdHJpbmcoJ3V0ZjgnKTsgfVxuXG52YXIgdXRmOGNvcnB1cyA9IFwiZm9vIGJhciBiYXpcXHUwMGUyXFx1MDA5OFxcdTAwODNcXHUwMGYwXFx1MDA5ZlxcdTAwOGRcXHUwMGEzXCI7XG52YXIgdXRmOHJlYWQgPSBoYXNfYnVmICYmICgvKiNfX1BVUkVfXyovdXRmOHJlYWRjKHV0Zjhjb3JwdXMpID09IC8qI19fUFVSRV9fKi91dGY4cmVhZGEodXRmOGNvcnB1cykgJiYgdXRmOHJlYWRjIHx8IC8qI19fUFVSRV9fKi91dGY4cmVhZGIodXRmOGNvcnB1cykgPT0gLyojX19QVVJFX18qL3V0ZjhyZWFkYSh1dGY4Y29ycHVzKSAmJiB1dGY4cmVhZGIpIHx8IHV0ZjhyZWFkYTtcblxudmFyIHV0Zjh3cml0ZS8qOlN0cmluZ0NvbnYqLyA9IGhhc19idWYgPyBmdW5jdGlvbihkYXRhKSB7IHJldHVybiBCdWZmZXJfZnJvbShkYXRhLCAndXRmOCcpLnRvU3RyaW5nKFwiYmluYXJ5XCIpOyB9IDogZnVuY3Rpb24ob3JpZy8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0dmFyIG91dC8qOkFycmF5PHN0cmluZz4qLyA9IFtdLCBpID0gMCwgYyA9IDAsIGQgPSAwO1xuXHR3aGlsZShpIDwgb3JpZy5sZW5ndGgpIHtcblx0XHRjID0gb3JpZy5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0c3dpdGNoKHRydWUpIHtcblx0XHRcdGNhc2UgYyA8IDEyODogb3V0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7IGJyZWFrO1xuXHRcdFx0Y2FzZSBjIDwgMjA0ODpcblx0XHRcdFx0b3V0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxOTIgKyAoYyA+PiA2KSkpO1xuXHRcdFx0XHRvdXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCArIChjICYgNjMpKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBjID49IDU1Mjk2ICYmIGMgPCA1NzM0NDpcblx0XHRcdFx0YyAtPSA1NTI5NjsgZCA9IG9yaWcuY2hhckNvZGVBdChpKyspIC0gNTYzMjAgKyAoYzw8MTApO1xuXHRcdFx0XHRvdXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDI0MCArICgoZCA+PjE4KSAmIDcpKSk7XG5cdFx0XHRcdG91dC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMTQ0ICsgKChkID4+MTIpICYgNjMpKSk7XG5cdFx0XHRcdG91dC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMTI4ICsgKChkID4+IDYpICYgNjMpKSk7XG5cdFx0XHRcdG91dC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMTI4ICsgKGQgJiA2MykpKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRvdXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDIyNCArIChjID4+IDEyKSkpO1xuXHRcdFx0XHRvdXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCArICgoYyA+PiA2KSAmIDYzKSkpO1xuXHRcdFx0XHRvdXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCArIChjICYgNjMpKSk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBvdXQuam9pbihcIlwiKTtcbn07XG5cbi8vIG1hdGNoZXMgPGZvbz4uLi48L2Zvbz4gZXh0cmFjdHMgY29udGVudFxudmFyIG1hdGNodGFnID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpIHtcblx0dmFyIG10Y2FjaGUvKjp7W2s6c3RyaW5nXTpSZWdFeHB9Ki8gPSAoe30vKjphbnkqLyk7XG5cdHJldHVybiBmdW5jdGlvbiBtYXRjaHRhZyhmLyo6c3RyaW5nKi8sZy8qOj9zdHJpbmcqLykvKjpSZWdFeHAqLyB7XG5cdFx0dmFyIHQgPSBmK1wifFwiKyhnfHxcIlwiKTtcblx0XHRpZihtdGNhY2hlW3RdKSByZXR1cm4gbXRjYWNoZVt0XTtcblx0XHRyZXR1cm4gKG10Y2FjaGVbdF0gPSBuZXcgUmVnRXhwKCc8KD86XFxcXHcrOik/JytmKycoPzogeG1sOnNwYWNlPVwicHJlc2VydmVcIik/KD86W14+XSopPihbXFxcXHNcXFxcU10qPyk8Lyg/OlxcXFx3KzopPycrZisnPicsKChnfHxcIlwiKS8qOmFueSovKSkpO1xuXHR9O1xufSkoKTtcblxudmFyIGh0bWxkZWNvZGUvKjp7KHM6c3RyaW5nKTpzdHJpbmd9Ki8gPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCkge1xuXHR2YXIgZW50aXRpZXMvKjpBcnJheTxbUmVnRXhwLCBzdHJpbmddPiovID0gW1xuXHRcdFsnbmJzcCcsICcgJ10sIFsnbWlkZG90JywgJ8K3J10sXG5cdFx0WydxdW90JywgJ1wiJ10sIFsnYXBvcycsIFwiJ1wiXSwgWydndCcsICAgJz4nXSwgWydsdCcsICAgJzwnXSwgWydhbXAnLCAgJyYnXVxuXHRdLm1hcChmdW5jdGlvbih4Lyo6W3N0cmluZywgc3RyaW5nXSovKSB7IHJldHVybiBbbmV3IFJlZ0V4cCgnJicgKyB4WzBdICsgJzsnLCBcImlnXCIpLCB4WzFdXTsgfSk7XG5cdHJldHVybiBmdW5jdGlvbiBodG1sZGVjb2RlKHN0ci8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0XHR2YXIgbyA9IHN0clxuXHRcdFx0XHQvLyBSZW1vdmUgbmV3IGxpbmVzIGFuZCBzcGFjZXMgZnJvbSBzdGFydCBvZiBjb250ZW50XG5cdFx0XHRcdC5yZXBsYWNlKC9eW1xcdFxcblxcciBdKy8sIFwiXCIpXG5cdFx0XHRcdC8vIFJlbW92ZSBuZXcgbGluZXMgYW5kIHNwYWNlcyBmcm9tIGVuZCBvZiBjb250ZW50XG5cdFx0XHRcdC5yZXBsYWNlKC9bXFx0XFxuXFxyIF0rJC8sXCJcIilcblx0XHRcdFx0Ly8gQWRkZWQgbGluZSB3aGljaCByZW1vdmVzIGFueSB3aGl0ZSBzcGFjZSBjaGFyYWN0ZXJzIGFmdGVyIGFuZCBiZWZvcmUgaHRtbCB0YWdzXG5cdFx0XHRcdC5yZXBsYWNlKC8+XFxzKy9nLFwiPlwiKS5yZXBsYWNlKC9cXHMrPC9nLFwiPFwiKVxuXHRcdFx0XHQvLyBSZXBsYWNlIHJlbWFpbmluZyBuZXcgbGluZXMgYW5kIHNwYWNlcyB3aXRoIHNwYWNlXG5cdFx0XHRcdC5yZXBsYWNlKC9bXFx0XFxuXFxyIF0rL2csIFwiIFwiKVxuXHRcdFx0XHQvLyBSZXBsYWNlIDxicj4gdGFncyB3aXRoIG5ldyBsaW5lc1xuXHRcdFx0XHQucmVwbGFjZSgvPFxccypbYkJdW3JSXVxccypcXC8/Pi9nLFwiXFxuXCIpXG5cdFx0XHRcdC8vIFN0cmlwIEhUTUwgZWxlbWVudHNcblx0XHRcdFx0LnJlcGxhY2UoLzxbXj5dKj4vZyxcIlwiKTtcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgZW50aXRpZXMubGVuZ3RoOyArK2kpIG8gPSBvLnJlcGxhY2UoZW50aXRpZXNbaV1bMF0sIGVudGl0aWVzW2ldWzFdKTtcblx0XHRyZXR1cm4gbztcblx0fTtcbn0pKCk7XG5cbnZhciB2dHJlZ2V4ID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpeyB2YXIgdnRfY2FjaGUgPSB7fTtcblx0cmV0dXJuIGZ1bmN0aW9uIHZ0X3JlZ2V4KGJ0KSB7XG5cdFx0aWYodnRfY2FjaGVbYnRdICE9PSB1bmRlZmluZWQpIHJldHVybiB2dF9jYWNoZVtidF07XG5cdFx0cmV0dXJuICh2dF9jYWNoZVtidF0gPSBuZXcgUmVnRXhwKFwiPCg/OnZ0Oik/XCIgKyBidCArIFwiPihbXFxcXHNcXFxcU10qPyk8Lyg/OnZ0Oik/XCIgKyBidCArIFwiPlwiLCAnZycpICk7XG59O30pKCk7XG52YXIgdnR2cmVnZXggPSAvPFxcLz8oPzp2dDopP3ZhcmlhbnQ+L2csIHZ0bXJlZ2V4ID0gLzwoPzp2dDopKFtePl0qKT4oW1xcc1xcU10qKTwvO1xuZnVuY3Rpb24gcGFyc2VWZWN0b3IoZGF0YS8qOnN0cmluZyovLCBvcHRzKS8qOkFycmF5PHt2OnN0cmluZyx0OnN0cmluZ30+Ki8ge1xuXHR2YXIgaCA9IHBhcnNleG1sdGFnKGRhdGEpO1xuXG5cdHZhciBtYXRjaGVzLyo6QXJyYXk8c3RyaW5nPiovID0gZGF0YS5tYXRjaCh2dHJlZ2V4KGguYmFzZVR5cGUpKXx8W107XG5cdHZhciByZXMvKjpBcnJheTxhbnk+Ki8gPSBbXTtcblx0aWYobWF0Y2hlcy5sZW5ndGggIT0gaC5zaXplKSB7XG5cdFx0aWYob3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcihcInVuZXhwZWN0ZWQgdmVjdG9yIGxlbmd0aCBcIiArIG1hdGNoZXMubGVuZ3RoICsgXCIgIT0gXCIgKyBoLnNpemUpO1xuXHRcdHJldHVybiByZXM7XG5cdH1cblx0bWF0Y2hlcy5mb3JFYWNoKGZ1bmN0aW9uKHgvKjpzdHJpbmcqLykge1xuXHRcdHZhciB2ID0geC5yZXBsYWNlKHZ0dnJlZ2V4LFwiXCIpLm1hdGNoKHZ0bXJlZ2V4KTtcblx0XHRpZih2KSByZXMucHVzaCh7djp1dGY4cmVhZCh2WzJdKSwgdDp2WzFdfSk7XG5cdH0pO1xuXHRyZXR1cm4gcmVzO1xufVxuXG52YXIgd3RyZWdleCA9IC8oXlxcc3xcXHMkfFxcbikvO1xuZnVuY3Rpb24gd3JpdGV0YWcoZi8qOnN0cmluZyovLGcvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7IHJldHVybiAnPCcgKyBmICsgKGcubWF0Y2god3RyZWdleCk/JyB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiJyA6IFwiXCIpICsgJz4nICsgZyArICc8LycgKyBmICsgJz4nOyB9XG5cbmZ1bmN0aW9uIHd4dF9oZWxwZXIoaCkvKjpzdHJpbmcqLyB7IHJldHVybiBrZXlzKGgpLm1hcChmdW5jdGlvbihrKSB7IHJldHVybiBcIiBcIiArIGsgKyAnPVwiJyArIGhba10gKyAnXCInO30pLmpvaW4oXCJcIik7IH1cbmZ1bmN0aW9uIHdyaXRleHRhZyhmLyo6c3RyaW5nKi8sZy8qOj9zdHJpbmcqLyxoKSB7IHJldHVybiAnPCcgKyBmICsgKChoICE9IG51bGwpID8gd3h0X2hlbHBlcihoKSA6IFwiXCIpICsgKChnICE9IG51bGwpID8gKGcubWF0Y2god3RyZWdleCk/JyB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiJyA6IFwiXCIpICsgJz4nICsgZyArICc8LycgKyBmIDogXCIvXCIpICsgJz4nO31cblxuZnVuY3Rpb24gd3JpdGVfdzNjZHRmKGQvKjpEYXRlKi8sIHQvKjo/Ym9vbGVhbiovKS8qOnN0cmluZyovIHsgdHJ5IHsgcmV0dXJuIGQudG9JU09TdHJpbmcoKS5yZXBsYWNlKC9cXC5cXGQqLyxcIlwiKTsgfSBjYXRjaChlKSB7IGlmKHQpIHRocm93IGU7IH0gcmV0dXJuIFwiXCI7IH1cblxuZnVuY3Rpb24gd3JpdGVfdnQocywgeGxzeC8qOj9ib29sZWFuKi8pLyo6c3RyaW5nKi8ge1xuXHRzd2l0Y2godHlwZW9mIHMpIHtcblx0XHRjYXNlICdzdHJpbmcnOlxuXHRcdFx0dmFyIG8gPSB3cml0ZXh0YWcoJ3Z0Omxwd3N0cicsIGVzY2FwZXhtbChzKSk7XG5cdFx0XHRpZih4bHN4KSBvID0gby5yZXBsYWNlKC8mcXVvdDsvZywgXCJfeDAwMjJfXCIpO1xuXHRcdFx0cmV0dXJuIG87XG5cdFx0Y2FzZSAnbnVtYmVyJzogcmV0dXJuIHdyaXRleHRhZygoc3wwKT09cz8ndnQ6aTQnOid2dDpyOCcsIGVzY2FwZXhtbChTdHJpbmcocykpKTtcblx0XHRjYXNlICdib29sZWFuJzogcmV0dXJuIHdyaXRleHRhZygndnQ6Ym9vbCcscz8ndHJ1ZSc6J2ZhbHNlJyk7XG5cdH1cblx0aWYocyBpbnN0YW5jZW9mIERhdGUpIHJldHVybiB3cml0ZXh0YWcoJ3Z0OmZpbGV0aW1lJywgd3JpdGVfdzNjZHRmKHMpKTtcblx0dGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIHNlcmlhbGl6ZSBcIiArIHMpO1xufVxuXG5mdW5jdGlvbiB4bG1sX25vcm1hbGl6ZShkKS8qOnN0cmluZyovIHtcblx0aWYoaGFzX2J1ZiAmJi8qOjp0eXBlb2YgQnVmZmVyICE9PSBcInVuZGVmaW5lZFwiICYmIGQgIT0gbnVsbCAmJiBkIGluc3RhbmNlb2YgQnVmZmVyICYmKi8gQnVmZmVyLmlzQnVmZmVyKGQpKSByZXR1cm4gZC50b1N0cmluZygndXRmOCcpO1xuXHRpZih0eXBlb2YgZCA9PT0gJ3N0cmluZycpIHJldHVybiBkO1xuXHQvKiBkdWt0YXBlICovXG5cdGlmKHR5cGVvZiBVaW50OEFycmF5ICE9PSAndW5kZWZpbmVkJyAmJiBkIGluc3RhbmNlb2YgVWludDhBcnJheSkgcmV0dXJuIHV0ZjhyZWFkKGEycyhhYjJhKGQpKSk7XG5cdHRocm93IG5ldyBFcnJvcihcIkJhZCBpbnB1dCBmb3JtYXQ6IGV4cGVjdGVkIEJ1ZmZlciBvciBzdHJpbmdcIik7XG59XG4vKiBVT1MgdXNlcyBDSksgaW4gdGFncyAqL1xudmFyIHhsbWxyZWdleCA9IC88KFxcLz8pKFteXFxzPz48IVxcLzpdKjp8KShbXlxccz88PjpcXC9dKykoPzpbXFxzPzpcXC9dW14+XSopPz4vbWc7XG4vL3ZhciB4bG1scmVnZXggPSAvPChcXC8/KShbYS16MC05XSo6fCkoXFx3KylbXj5dKj4vbWc7XG5cbnZhciBYTUxOUyA9ICh7XG5cdENPUkVfUFJPUFM6ICdodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L21ldGFkYXRhL2NvcmUtcHJvcGVydGllcycsXG5cdENVU1RfUFJPUFM6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvY3VzdG9tLXByb3BlcnRpZXNcIixcblx0RVhUX1BST1BTOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2V4dGVuZGVkLXByb3BlcnRpZXNcIixcblx0Q1Q6ICdodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L2NvbnRlbnQtdHlwZXMnLFxuXHRSRUxTOiAnaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9yZWxhdGlvbnNoaXBzJyxcblx0VENNTlQ6ICdodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTgvdGhyZWFkZWRjb21tZW50cycsXG5cdCdkYyc6ICdodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLycsXG5cdCdkY3Rlcm1zJzogJ2h0dHA6Ly9wdXJsLm9yZy9kYy90ZXJtcy8nLFxuXHQnZGNtaXR5cGUnOiAnaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlLycsXG5cdCdteCc6ICdodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9tYWMvZXhjZWwvMjAwOC9tYWluJyxcblx0J3InOiAnaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcycsXG5cdCdzanMnOiAnaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9zaGVldGpzL2NvcmUtcHJvcGVydGllcycsXG5cdCd2dCc6ICdodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9kb2NQcm9wc1ZUeXBlcycsXG5cdCd4c2knOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UnLFxuXHQneHNkJzogJ2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hJ1xufS8qOmFueSovKTtcblxudmFyIFhNTE5TX21haW4gPSBbXG5cdCdodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvc3ByZWFkc2hlZXRtbC8yMDA2L21haW4nLFxuXHQnaHR0cDovL3B1cmwub2NsYy5vcmcvb294bWwvc3ByZWFkc2hlZXRtbC9tYWluJyxcblx0J2h0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL2V4Y2VsLzIwMDYvbWFpbicsXG5cdCdodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9leGNlbC8yMDA2LzInXG5dO1xuXG52YXIgWExNTE5TID0gKHtcblx0J28nOiAgICAndXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlJyxcblx0J3gnOiAgICAndXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6ZXhjZWwnLFxuXHQnc3MnOiAgICd1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpzcHJlYWRzaGVldCcsXG5cdCdkdCc6ICAgJ3V1aWQ6QzJGNDEwMTAtNjVCMy0xMWQxLUEyOUYtMDBBQTAwQzE0ODgyJyxcblx0J212JzogICAnaHR0cDovL21hY1ZtbFNjaGVtYVVyaScsXG5cdCd2JzogICAgJ3VybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206dm1sJyxcblx0J2h0bWwnOiAnaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MCdcbn0vKjphbnkqLyk7XG5mdW5jdGlvbiByZWFkX2RvdWJsZV9sZShiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8sIGlkeC8qOm51bWJlciovKS8qOm51bWJlciovIHtcblx0dmFyIHMgPSAxIC0gMiAqIChiW2lkeCArIDddID4+PiA3KTtcblx0dmFyIGUgPSAoKGJbaWR4ICsgN10gJiAweDdmKSA8PCA0KSArICgoYltpZHggKyA2XSA+Pj4gNCkgJiAweDBmKTtcblx0dmFyIG0gPSAoYltpZHgrNl0mMHgwZik7XG5cdGZvcih2YXIgaSA9IDU7IGkgPj0gMDsgLS1pKSBtID0gbSAqIDI1NiArIGJbaWR4ICsgaV07XG5cdGlmKGUgPT0gMHg3ZmYpIHJldHVybiBtID09IDAgPyAocyAqIEluZmluaXR5KSA6IE5hTjtcblx0aWYoZSA9PSAwKSBlID0gLTEwMjI7XG5cdGVsc2UgeyBlIC09IDEwMjM7IG0gKz0gTWF0aC5wb3coMiw1Mik7IH1cblx0cmV0dXJuIHMgKiBNYXRoLnBvdygyLCBlIC0gNTIpICogbTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfZG91YmxlX2xlKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgdi8qOm51bWJlciovLCBpZHgvKjpudW1iZXIqLykge1xuXHR2YXIgYnMgPSAoKCgodiA8IDApIHx8ICgxL3YgPT0gLUluZmluaXR5KSkgPyAxIDogMCkgPDwgNyksIGUgPSAwLCBtID0gMDtcblx0dmFyIGF2ID0gYnMgPyAoLXYpIDogdjtcblx0aWYoIWlzRmluaXRlKGF2KSkgeyBlID0gMHg3ZmY7IG0gPSBpc05hTih2KSA/IDB4Njk2OSA6IDA7IH1cblx0ZWxzZSBpZihhdiA9PSAwKSBlID0gbSA9IDA7XG5cdGVsc2Uge1xuXHRcdGUgPSBNYXRoLmZsb29yKE1hdGgubG9nKGF2KSAvIE1hdGguTE4yKTtcblx0XHRtID0gYXYgKiBNYXRoLnBvdygyLCA1MiAtIGUpO1xuXHRcdGlmKChlIDw9IC0xMDIzKSAmJiAoIWlzRmluaXRlKG0pIHx8IChtIDwgTWF0aC5wb3coMiw1MikpKSkgeyBlID0gLTEwMjI7IH1cblx0XHRlbHNlIHsgbSAtPSBNYXRoLnBvdygyLDUyKTsgZSs9MTAyMzsgfVxuXHR9XG5cdGZvcih2YXIgaSA9IDA7IGkgPD0gNTsgKytpLCBtLz0yNTYpIGJbaWR4ICsgaV0gPSBtICYgMHhmZjtcblx0YltpZHggKyA2XSA9ICgoZSAmIDB4MGYpIDw8IDQpIHwgKG0gJiAweGYpO1xuXHRiW2lkeCArIDddID0gKGUgPj4gNCkgfCBicztcbn1cblxudmFyIF9fX3RvQnVmZmVyID0gZnVuY3Rpb24oYnVmcy8qOkFycmF5PEFycmF5PFJhd0J5dGVzPiA+Ki8pLyo6UmF3Qnl0ZXMqLyB7IHZhciB4PVtdLHc9MTAyNDA7IGZvcih2YXIgaT0wO2k8YnVmc1swXS5sZW5ndGg7KytpKSBpZihidWZzWzBdW2ldKSBmb3IodmFyIGo9MCxMPWJ1ZnNbMF1baV0ubGVuZ3RoO2o8TDtqKz13KSB4LnB1c2guYXBwbHkoeCwgYnVmc1swXVtpXS5zbGljZShqLGordykpOyByZXR1cm4geDsgfTtcbnZhciBfX3RvQnVmZmVyID0gaGFzX2J1ZiA/IGZ1bmN0aW9uKGJ1ZnMpIHsgcmV0dXJuIChidWZzWzBdLmxlbmd0aCA+IDAgJiYgQnVmZmVyLmlzQnVmZmVyKGJ1ZnNbMF1bMF0pKSA/IEJ1ZmZlci5jb25jYXQoYnVmc1swXS5tYXAoZnVuY3Rpb24oeCkgeyByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKHgpID8geCA6IEJ1ZmZlcl9mcm9tKHgpOyB9KSkgOiBfX190b0J1ZmZlcihidWZzKTt9IDogX19fdG9CdWZmZXI7XG5cbnZhciBfX191dGYxNmxlID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLHMvKjpudW1iZXIqLyxlLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi8geyB2YXIgc3MvKjpBcnJheTxzdHJpbmc+Ki89W107IGZvcih2YXIgaT1zOyBpPGU7IGkrPTIpIHNzLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShfX3JlYWRVSW50MTZMRShiLGkpKSk7IHJldHVybiBzcy5qb2luKFwiXCIpLnJlcGxhY2UoY2hyMCwnJyk7IH07XG52YXIgX191dGYxNmxlID0gaGFzX2J1ZiA/IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLyxzLyo6bnVtYmVyKi8sZS8qOm51bWJlciovKS8qOnN0cmluZyovIHsgaWYoIUJ1ZmZlci5pc0J1ZmZlcihiKS8qOjogfHwgIShiIGluc3RhbmNlb2YgQnVmZmVyKSovKSByZXR1cm4gX19fdXRmMTZsZShiLHMsZSk7IHJldHVybiBiLnRvU3RyaW5nKCd1dGYxNmxlJyxzLGUpLnJlcGxhY2UoY2hyMCwnJykvKi5yZXBsYWNlKGNocjEsJyEnKSovOyB9IDogX19fdXRmMTZsZTtcblxudmFyIF9fX2hleGxpZnkgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8scy8qOm51bWJlciovLGwvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7IHZhciBzcy8qOkFycmF5PHN0cmluZz4qLz1bXTsgZm9yKHZhciBpPXM7IGk8cytsOyArK2kpIHNzLnB1c2goKFwiMFwiICsgYltpXS50b1N0cmluZygxNikpLnNsaWNlKC0yKSk7IHJldHVybiBzcy5qb2luKFwiXCIpOyB9O1xudmFyIF9faGV4bGlmeSA9IGhhc19idWYgPyBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8scy8qOm51bWJlciovLGwvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7IHJldHVybiBCdWZmZXIuaXNCdWZmZXIoYikvKjo6ICYmIGIgaW5zdGFuY2VvZiBCdWZmZXIqLyA/IGIudG9TdHJpbmcoJ2hleCcscyxzK2wpIDogX19faGV4bGlmeShiLHMsbCk7IH0gOiBfX19oZXhsaWZ5O1xuXG52YXIgX19fdXRmOCA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLyxzLyo6bnVtYmVyKi8sZS8qOm51bWJlciovKSB7IHZhciBzcz1bXTsgZm9yKHZhciBpPXM7IGk8ZTsgaSsrKSBzcy5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoX19yZWFkVUludDgoYixpKSkpOyByZXR1cm4gc3Muam9pbihcIlwiKTsgfTtcbnZhciBfX3V0ZjggPSBoYXNfYnVmID8gZnVuY3Rpb24gdXRmOF9iKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgcy8qOm51bWJlciovLCBlLyo6bnVtYmVyKi8pIHsgcmV0dXJuIChCdWZmZXIuaXNCdWZmZXIoYikvKjo6ICYmIChiIGluc3RhbmNlb2YgQnVmZmVyKSovKSA/IGIudG9TdHJpbmcoJ3V0ZjgnLHMsZSkgOiBfX191dGY4KGIscyxlKTsgfSA6IF9fX3V0Zjg7XG5cbnZhciBfX19scHN0ciA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLyxpLyo6bnVtYmVyKi8pIHsgdmFyIGxlbiA9IF9fcmVhZFVJbnQzMkxFKGIsaSk7IHJldHVybiBsZW4gPiAwID8gX191dGY4KGIsIGkrNCxpKzQrbGVuLTEpIDogXCJcIjt9O1xudmFyIF9fbHBzdHIgPSBfX19scHN0cjtcblxudmFyIF9fX2Nwc3RyID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLGkvKjpudW1iZXIqLykgeyB2YXIgbGVuID0gX19yZWFkVUludDMyTEUoYixpKTsgcmV0dXJuIGxlbiA+IDAgPyBfX3V0ZjgoYiwgaSs0LGkrNCtsZW4tMSkgOiBcIlwiO307XG52YXIgX19jcHN0ciA9IF9fX2Nwc3RyO1xuXG52YXIgX19fbHB3c3RyID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLGkvKjpudW1iZXIqLykgeyB2YXIgbGVuID0gMipfX3JlYWRVSW50MzJMRShiLGkpOyByZXR1cm4gbGVuID4gMCA/IF9fdXRmOChiLCBpKzQsaSs0K2xlbi0xKSA6IFwiXCI7fTtcbnZhciBfX2xwd3N0ciA9IF9fX2xwd3N0cjtcblxudmFyIF9fX2xwcDQgPSBmdW5jdGlvbiBscHA0XyhiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8saS8qOm51bWJlciovKSB7IHZhciBsZW4gPSBfX3JlYWRVSW50MzJMRShiLGkpOyByZXR1cm4gbGVuID4gMCA/IF9fdXRmMTZsZShiLCBpKzQsaSs0K2xlbikgOiBcIlwiO307XG52YXIgX19scHA0ID0gX19fbHBwNDtcblxudmFyIF9fXzhscHA0ID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLGkvKjpudW1iZXIqLykgeyB2YXIgbGVuID0gX19yZWFkVUludDMyTEUoYixpKTsgcmV0dXJuIGxlbiA+IDAgPyBfX3V0ZjgoYiwgaSs0LGkrNCtsZW4pIDogXCJcIjt9O1xudmFyIF9fOGxwcDQgPSBfX184bHBwNDtcblxudmFyIF9fX2RvdWJsZSA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgaWR4Lyo6bnVtYmVyKi8pIHsgcmV0dXJuIHJlYWRfZG91YmxlX2xlKGIsIGlkeCk7fTtcbnZhciBfX2RvdWJsZSA9IF9fX2RvdWJsZTtcblxudmFyIGlzX2J1ZiA9IGZ1bmN0aW9uIGlzX2J1Zl9hKGEpIHsgcmV0dXJuIEFycmF5LmlzQXJyYXkoYSkgfHwgKHR5cGVvZiBVaW50OEFycmF5ICE9PSBcInVuZGVmaW5lZFwiICYmIGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KTsgfTtcblxuaWYoaGFzX2J1Zi8qOjogJiYgdHlwZW9mIEJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcqLykge1xuXHRfX2xwc3RyID0gZnVuY3Rpb24gbHBzdHJfYihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8sIGkvKjpudW1iZXIqLykgeyBpZighQnVmZmVyLmlzQnVmZmVyKGIpLyo6OiB8fCAhKGIgaW5zdGFuY2VvZiBCdWZmZXIpKi8pIHJldHVybiBfX19scHN0cihiLCBpKTsgdmFyIGxlbiA9IGIucmVhZFVJbnQzMkxFKGkpOyByZXR1cm4gbGVuID4gMCA/IGIudG9TdHJpbmcoJ3V0ZjgnLGkrNCxpKzQrbGVuLTEpIDogXCJcIjt9O1xuXHRfX2Nwc3RyID0gZnVuY3Rpb24gY3BzdHJfYihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8sIGkvKjpudW1iZXIqLykgeyBpZighQnVmZmVyLmlzQnVmZmVyKGIpLyo6OiB8fCAhKGIgaW5zdGFuY2VvZiBCdWZmZXIpKi8pIHJldHVybiBfX19jcHN0cihiLCBpKTsgdmFyIGxlbiA9IGIucmVhZFVJbnQzMkxFKGkpOyByZXR1cm4gbGVuID4gMCA/IGIudG9TdHJpbmcoJ3V0ZjgnLGkrNCxpKzQrbGVuLTEpIDogXCJcIjt9O1xuXHRfX2xwd3N0ciA9IGZ1bmN0aW9uIGxwd3N0cl9iKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgaS8qOm51bWJlciovKSB7IGlmKCFCdWZmZXIuaXNCdWZmZXIoYikvKjo6IHx8ICEoYiBpbnN0YW5jZW9mIEJ1ZmZlcikqLykgcmV0dXJuIF9fX2xwd3N0cihiLCBpKTsgdmFyIGxlbiA9IDIqYi5yZWFkVUludDMyTEUoaSk7IHJldHVybiBiLnRvU3RyaW5nKCd1dGYxNmxlJyxpKzQsaSs0K2xlbi0xKTt9O1xuXHRfX2xwcDQgPSBmdW5jdGlvbiBscHA0X2IoYi8qOlJhd0J5dGVzfENGQmxvYiovLCBpLyo6bnVtYmVyKi8pIHsgaWYoIUJ1ZmZlci5pc0J1ZmZlcihiKS8qOjogfHwgIShiIGluc3RhbmNlb2YgQnVmZmVyKSovKSByZXR1cm4gX19fbHBwNChiLCBpKTsgdmFyIGxlbiA9IGIucmVhZFVJbnQzMkxFKGkpOyByZXR1cm4gYi50b1N0cmluZygndXRmMTZsZScsaSs0LGkrNCtsZW4pO307XG5cdF9fOGxwcDQgPSBmdW5jdGlvbiBscHA0XzhiKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgaS8qOm51bWJlciovKSB7IGlmKCFCdWZmZXIuaXNCdWZmZXIoYikvKjo6IHx8ICEoYiBpbnN0YW5jZW9mIEJ1ZmZlcikqLykgcmV0dXJuIF9fXzhscHA0KGIsIGkpOyB2YXIgbGVuID0gYi5yZWFkVUludDMyTEUoaSk7IHJldHVybiBiLnRvU3RyaW5nKCd1dGY4JyxpKzQsaSs0K2xlbik7fTtcblx0X19kb3VibGUgPSBmdW5jdGlvbiBkb3VibGVfKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgaS8qOm51bWJlciovKSB7IGlmKEJ1ZmZlci5pc0J1ZmZlcihiKS8qOjomJiBiIGluc3RhbmNlb2YgQnVmZmVyKi8pIHJldHVybiBiLnJlYWREb3VibGVMRShpKTsgcmV0dXJuIF9fX2RvdWJsZShiLGkpOyB9O1xuXHRpc19idWYgPSBmdW5jdGlvbiBpc19idWZfYihhKSB7IHJldHVybiBCdWZmZXIuaXNCdWZmZXIoYSkgfHwgQXJyYXkuaXNBcnJheShhKSB8fCAodHlwZW9mIFVpbnQ4QXJyYXkgIT09IFwidW5kZWZpbmVkXCIgJiYgYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpOyB9O1xufVxuXG4vKiBmcm9tIGpzLXhscyAqL1xuZnVuY3Rpb24gY3Bkb2l0KCkge1xuXHRfX3V0ZjE2bGUgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8scy8qOm51bWJlciovLGUvKjpudW1iZXIqLykgeyByZXR1cm4gJGNwdGFibGUudXRpbHMuZGVjb2RlKDEyMDAsIGIuc2xpY2UocyxlKSkucmVwbGFjZShjaHIwLCAnJyk7IH07XG5cdF9fdXRmOCA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLyxzLyo6bnVtYmVyKi8sZS8qOm51bWJlciovKSB7IHJldHVybiAkY3B0YWJsZS51dGlscy5kZWNvZGUoNjUwMDEsIGIuc2xpY2UocyxlKSk7IH07XG5cdF9fbHBzdHIgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8saS8qOm51bWJlciovKSB7IHZhciBsZW4gPSBfX3JlYWRVSW50MzJMRShiLGkpOyByZXR1cm4gbGVuID4gMCA/ICRjcHRhYmxlLnV0aWxzLmRlY29kZShjdXJyZW50X2Fuc2ksIGIuc2xpY2UoaSs0LCBpKzQrbGVuLTEpKSA6IFwiXCI7fTtcblx0X19jcHN0ciA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLyxpLyo6bnVtYmVyKi8pIHsgdmFyIGxlbiA9IF9fcmVhZFVJbnQzMkxFKGIsaSk7IHJldHVybiBsZW4gPiAwID8gJGNwdGFibGUudXRpbHMuZGVjb2RlKGN1cnJlbnRfY29kZXBhZ2UsIGIuc2xpY2UoaSs0LCBpKzQrbGVuLTEpKSA6IFwiXCI7fTtcblx0X19scHdzdHIgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8saS8qOm51bWJlciovKSB7IHZhciBsZW4gPSAyKl9fcmVhZFVJbnQzMkxFKGIsaSk7IHJldHVybiBsZW4gPiAwID8gJGNwdGFibGUudXRpbHMuZGVjb2RlKDEyMDAsIGIuc2xpY2UoaSs0LGkrNCtsZW4tMSkpIDogXCJcIjt9O1xuXHRfX2xwcDQgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8saS8qOm51bWJlciovKSB7IHZhciBsZW4gPSBfX3JlYWRVSW50MzJMRShiLGkpOyByZXR1cm4gbGVuID4gMCA/ICRjcHRhYmxlLnV0aWxzLmRlY29kZSgxMjAwLCBiLnNsaWNlKGkrNCxpKzQrbGVuKSkgOiBcIlwiO307XG5cdF9fOGxwcDQgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8saS8qOm51bWJlciovKSB7IHZhciBsZW4gPSBfX3JlYWRVSW50MzJMRShiLGkpOyByZXR1cm4gbGVuID4gMCA/ICRjcHRhYmxlLnV0aWxzLmRlY29kZSg2NTAwMSwgYi5zbGljZShpKzQsaSs0K2xlbikpIDogXCJcIjt9O1xufVxuaWYodHlwZW9mICRjcHRhYmxlICE9PSAndW5kZWZpbmVkJykgY3Bkb2l0KCk7XG5cbnZhciBfX3JlYWRVSW50OCA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgaWR4Lyo6bnVtYmVyKi8pLyo6bnVtYmVyKi8geyByZXR1cm4gYltpZHhdOyB9O1xudmFyIF9fcmVhZFVJbnQxNkxFID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLCBpZHgvKjpudW1iZXIqLykvKjpudW1iZXIqLyB7IHJldHVybiAoYltpZHgrMV0qKDE8PDgpKStiW2lkeF07IH07XG52YXIgX19yZWFkSW50MTZMRSA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgaWR4Lyo6bnVtYmVyKi8pLyo6bnVtYmVyKi8geyB2YXIgdSA9IChiW2lkeCsxXSooMTw8OCkpK2JbaWR4XTsgcmV0dXJuICh1IDwgMHg4MDAwKSA/IHUgOiAoKDB4ZmZmZiAtIHUgKyAxKSAqIC0xKTsgfTtcbnZhciBfX3JlYWRVSW50MzJMRSA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgaWR4Lyo6bnVtYmVyKi8pLyo6bnVtYmVyKi8geyByZXR1cm4gYltpZHgrM10qKDE8PDI0KSsoYltpZHgrMl08PDE2KSsoYltpZHgrMV08PDgpK2JbaWR4XTsgfTtcbnZhciBfX3JlYWRJbnQzMkxFID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLCBpZHgvKjpudW1iZXIqLykvKjpudW1iZXIqLyB7IHJldHVybiAoYltpZHgrM108PDI0KXwoYltpZHgrMl08PDE2KXwoYltpZHgrMV08PDgpfGJbaWR4XTsgfTtcbnZhciBfX3JlYWRJbnQzMkJFID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLCBpZHgvKjpudW1iZXIqLykvKjpudW1iZXIqLyB7IHJldHVybiAoYltpZHhdPDwyNCl8KGJbaWR4KzFdPDwxNil8KGJbaWR4KzJdPDw4KXxiW2lkeCszXTsgfTtcblxuZnVuY3Rpb24gUmVhZFNoaWZ0KHNpemUvKjpudW1iZXIqLywgdC8qOj9zdHJpbmcqLykvKjpudW1iZXJ8c3RyaW5nKi8ge1xuXHR2YXIgbz1cIlwiLCBvSS8qOjogOm51bWJlciA9IDAqLywgb1IsIG9vPVtdLCB3LCB2diwgaSwgbG9jO1xuXHRzd2l0Y2godCkge1xuXHRcdGNhc2UgJ2RiY3MnOlxuXHRcdFx0bG9jID0gdGhpcy5sO1xuXHRcdFx0aWYoaGFzX2J1ZiAmJiBCdWZmZXIuaXNCdWZmZXIodGhpcykpIG8gPSB0aGlzLnNsaWNlKHRoaXMubCwgdGhpcy5sKzIqc2l6ZSkudG9TdHJpbmcoXCJ1dGYxNmxlXCIpO1xuXHRcdFx0ZWxzZSBmb3IoaSA9IDA7IGkgPCBzaXplOyArK2kpIHsgbys9U3RyaW5nLmZyb21DaGFyQ29kZShfX3JlYWRVSW50MTZMRSh0aGlzLCBsb2MpKTsgbG9jKz0yOyB9XG5cdFx0XHRzaXplICo9IDI7XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgJ3V0ZjgnOiBvID0gX191dGY4KHRoaXMsIHRoaXMubCwgdGhpcy5sICsgc2l6ZSk7IGJyZWFrO1xuXHRcdGNhc2UgJ3V0ZjE2bGUnOiBzaXplICo9IDI7IG8gPSBfX3V0ZjE2bGUodGhpcywgdGhpcy5sLCB0aGlzLmwgKyBzaXplKTsgYnJlYWs7XG5cblx0XHRjYXNlICd3c3RyJzpcblx0XHRcdGlmKHR5cGVvZiAkY3B0YWJsZSAhPT0gJ3VuZGVmaW5lZCcpIG8gPSAkY3B0YWJsZS51dGlscy5kZWNvZGUoY3VycmVudF9jb2RlcGFnZSwgdGhpcy5zbGljZSh0aGlzLmwsIHRoaXMubCsyKnNpemUpKTtcblx0XHRcdGVsc2UgcmV0dXJuIFJlYWRTaGlmdC5jYWxsKHRoaXMsIHNpemUsICdkYmNzJyk7XG5cdFx0XHRzaXplID0gMiAqIHNpemU7IGJyZWFrO1xuXG5cdFx0LyogW01TLU9MRURTXSAyLjEuNCBMZW5ndGhQcmVmaXhlZEFuc2lTdHJpbmcgKi9cblx0XHRjYXNlICdscHN0ci1hbnNpJzogbyA9IF9fbHBzdHIodGhpcywgdGhpcy5sKTsgc2l6ZSA9IDQgKyBfX3JlYWRVSW50MzJMRSh0aGlzLCB0aGlzLmwpOyBicmVhaztcblx0XHRjYXNlICdscHN0ci1jcCc6IG8gPSBfX2Nwc3RyKHRoaXMsIHRoaXMubCk7IHNpemUgPSA0ICsgX19yZWFkVUludDMyTEUodGhpcywgdGhpcy5sKTsgYnJlYWs7XG5cdFx0LyogW01TLU9MRURTXSAyLjEuNSBMZW5ndGhQcmVmaXhlZFVuaWNvZGVTdHJpbmcgKi9cblx0XHRjYXNlICdscHdzdHInOiBvID0gX19scHdzdHIodGhpcywgdGhpcy5sKTsgc2l6ZSA9IDQgKyAyICogX19yZWFkVUludDMyTEUodGhpcywgdGhpcy5sKTsgYnJlYWs7XG5cdFx0LyogW01TLU9GRkNSWVBUT10gMi4xLjIgTGVuZ3RoLVByZWZpeGVkIFBhZGRlZCBVbmljb2RlIFN0cmluZyAoVU5JQ09ERS1MUC1QNCkgKi9cblx0XHRjYXNlICdscHA0Jzogc2l6ZSA9IDQgKyAgX19yZWFkVUludDMyTEUodGhpcywgdGhpcy5sKTsgbyA9IF9fbHBwNCh0aGlzLCB0aGlzLmwpOyBpZihzaXplICYgMHgwMikgc2l6ZSArPSAyOyBicmVhaztcblx0XHQvKiBbTVMtT0ZGQ1JZUFRPXSAyLjEuMyBMZW5ndGgtUHJlZml4ZWQgVVRGLTggU3RyaW5nIChVVEYtOC1MUC1QNCkgKi9cblx0XHRjYXNlICc4bHBwNCc6IHNpemUgPSA0ICsgIF9fcmVhZFVJbnQzMkxFKHRoaXMsIHRoaXMubCk7IG8gPSBfXzhscHA0KHRoaXMsIHRoaXMubCk7IGlmKHNpemUgJiAweDAzKSBzaXplICs9IDQgLSAoc2l6ZSAmIDB4MDMpOyBicmVhaztcblxuXHRcdGNhc2UgJ2NzdHInOiBzaXplID0gMDsgbyA9IFwiXCI7XG5cdFx0XHR3aGlsZSgodz1fX3JlYWRVSW50OCh0aGlzLCB0aGlzLmwgKyBzaXplKyspKSE9PTApIG9vLnB1c2goX2dldGNoYXIodykpO1xuXHRcdFx0byA9IG9vLmpvaW4oXCJcIik7IGJyZWFrO1xuXHRcdGNhc2UgJ193c3RyJzogc2l6ZSA9IDA7IG8gPSBcIlwiO1xuXHRcdFx0d2hpbGUoKHc9X19yZWFkVUludDE2TEUodGhpcyx0aGlzLmwgK3NpemUpKSE9PTApe29vLnB1c2goX2dldGNoYXIodykpO3NpemUrPTI7fVxuXHRcdFx0c2l6ZSs9MjsgbyA9IG9vLmpvaW4oXCJcIik7IGJyZWFrO1xuXG5cdFx0Lyogc2JjcyBhbmQgZGJjcyBzdXBwb3J0IGNvbnRpbnVlIHJlY29yZHMgaW4gdGhlIFNTVCB3YXkgVE9ETyBjb2RlcGFnZXMgKi9cblx0XHRjYXNlICdkYmNzLWNvbnQnOiBvID0gXCJcIjsgbG9jID0gdGhpcy5sO1xuXHRcdFx0Zm9yKGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7XG5cdFx0XHRcdGlmKHRoaXMubGVucyAmJiB0aGlzLmxlbnMuaW5kZXhPZihsb2MpICE9PSAtMSkge1xuXHRcdFx0XHRcdHcgPSBfX3JlYWRVSW50OCh0aGlzLCBsb2MpO1xuXHRcdFx0XHRcdHRoaXMubCA9IGxvYyArIDE7XG5cdFx0XHRcdFx0dnYgPSBSZWFkU2hpZnQuY2FsbCh0aGlzLCBzaXplLWksIHcgPyAnZGJjcy1jb250JyA6ICdzYmNzLWNvbnQnKTtcblx0XHRcdFx0XHRyZXR1cm4gb28uam9pbihcIlwiKSArIHZ2O1xuXHRcdFx0XHR9XG5cdFx0XHRcdG9vLnB1c2goX2dldGNoYXIoX19yZWFkVUludDE2TEUodGhpcywgbG9jKSkpO1xuXHRcdFx0XHRsb2MrPTI7XG5cdFx0XHR9IG8gPSBvby5qb2luKFwiXCIpOyBzaXplICo9IDI7IGJyZWFrO1xuXG5cdFx0Y2FzZSAnY3BzdHInOlxuXHRcdFx0aWYodHlwZW9mICRjcHRhYmxlICE9PSAndW5kZWZpbmVkJykge1xuXHRcdFx0XHRvID0gJGNwdGFibGUudXRpbHMuZGVjb2RlKGN1cnJlbnRfY29kZXBhZ2UsIHRoaXMuc2xpY2UodGhpcy5sLCB0aGlzLmwgKyBzaXplKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRjYXNlICdzYmNzLWNvbnQnOiBvID0gXCJcIjsgbG9jID0gdGhpcy5sO1xuXHRcdFx0Zm9yKGkgPSAwOyBpICE9IHNpemU7ICsraSkge1xuXHRcdFx0XHRpZih0aGlzLmxlbnMgJiYgdGhpcy5sZW5zLmluZGV4T2YobG9jKSAhPT0gLTEpIHtcblx0XHRcdFx0XHR3ID0gX19yZWFkVUludDgodGhpcywgbG9jKTtcblx0XHRcdFx0XHR0aGlzLmwgPSBsb2MgKyAxO1xuXHRcdFx0XHRcdHZ2ID0gUmVhZFNoaWZ0LmNhbGwodGhpcywgc2l6ZS1pLCB3ID8gJ2RiY3MtY29udCcgOiAnc2Jjcy1jb250Jyk7XG5cdFx0XHRcdFx0cmV0dXJuIG9vLmpvaW4oXCJcIikgKyB2djtcblx0XHRcdFx0fVxuXHRcdFx0XHRvby5wdXNoKF9nZXRjaGFyKF9fcmVhZFVJbnQ4KHRoaXMsIGxvYykpKTtcblx0XHRcdFx0bG9jKz0xO1xuXHRcdFx0fSBvID0gb28uam9pbihcIlwiKTsgYnJlYWs7XG5cblx0XHRkZWZhdWx0OlxuXHRzd2l0Y2goc2l6ZSkge1xuXHRcdGNhc2UgMTogb0kgPSBfX3JlYWRVSW50OCh0aGlzLCB0aGlzLmwpOyB0aGlzLmwrKzsgcmV0dXJuIG9JO1xuXHRcdGNhc2UgMjogb0kgPSAodCA9PT0gJ2knID8gX19yZWFkSW50MTZMRSA6IF9fcmVhZFVJbnQxNkxFKSh0aGlzLCB0aGlzLmwpOyB0aGlzLmwgKz0gMjsgcmV0dXJuIG9JO1xuXHRcdGNhc2UgNDogY2FzZSAtNDpcblx0XHRcdGlmKHQgPT09ICdpJyB8fCAoKHRoaXNbdGhpcy5sKzNdICYgMHg4MCk9PT0wKSkgeyBvSSA9ICgoc2l6ZSA+IDApID8gX19yZWFkSW50MzJMRSA6IF9fcmVhZEludDMyQkUpKHRoaXMsIHRoaXMubCk7IHRoaXMubCArPSA0OyByZXR1cm4gb0k7IH1cblx0XHRcdGVsc2UgeyBvUiA9IF9fcmVhZFVJbnQzMkxFKHRoaXMsIHRoaXMubCk7IHRoaXMubCArPSA0OyB9IHJldHVybiBvUjtcblx0XHRjYXNlIDg6IGNhc2UgLTg6XG5cdFx0XHRpZih0ID09PSAnZicpIHtcblx0XHRcdFx0aWYoc2l6ZSA9PSA4KSBvUiA9IF9fZG91YmxlKHRoaXMsIHRoaXMubCk7XG5cdFx0XHRcdGVsc2Ugb1IgPSBfX2RvdWJsZShbdGhpc1t0aGlzLmwrN10sdGhpc1t0aGlzLmwrNl0sdGhpc1t0aGlzLmwrNV0sdGhpc1t0aGlzLmwrNF0sdGhpc1t0aGlzLmwrM10sdGhpc1t0aGlzLmwrMl0sdGhpc1t0aGlzLmwrMV0sdGhpc1t0aGlzLmwrMF1dLCAwKTtcblx0XHRcdFx0dGhpcy5sICs9IDg7IHJldHVybiBvUjtcblx0XHRcdH0gZWxzZSBzaXplID0gODtcblx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0Y2FzZSAxNjogbyA9IF9faGV4bGlmeSh0aGlzLCB0aGlzLmwsIHNpemUpOyBicmVhaztcblx0fX1cblx0dGhpcy5sKz1zaXplOyByZXR1cm4gbztcbn1cblxudmFyIF9fd3JpdGVVSW50MzJMRSA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgdmFsLyo6bnVtYmVyKi8sIGlkeC8qOm51bWJlciovKS8qOnZvaWQqLyB7IGJbaWR4XSA9ICh2YWwgJiAweEZGKTsgYltpZHgrMV0gPSAoKHZhbCA+Pj4gOCkgJiAweEZGKTsgYltpZHgrMl0gPSAoKHZhbCA+Pj4gMTYpICYgMHhGRik7IGJbaWR4KzNdID0gKCh2YWwgPj4+IDI0KSAmIDB4RkYpOyB9O1xudmFyIF9fd3JpdGVJbnQzMkxFICA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgdmFsLyo6bnVtYmVyKi8sIGlkeC8qOm51bWJlciovKS8qOnZvaWQqLyB7IGJbaWR4XSA9ICh2YWwgJiAweEZGKTsgYltpZHgrMV0gPSAoKHZhbCA+PiA4KSAmIDB4RkYpOyBiW2lkeCsyXSA9ICgodmFsID4+IDE2KSAmIDB4RkYpOyBiW2lkeCszXSA9ICgodmFsID4+IDI0KSAmIDB4RkYpOyB9O1xudmFyIF9fd3JpdGVVSW50MTZMRSA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgdmFsLyo6bnVtYmVyKi8sIGlkeC8qOm51bWJlciovKS8qOnZvaWQqLyB7IGJbaWR4XSA9ICh2YWwgJiAweEZGKTsgYltpZHgrMV0gPSAoKHZhbCA+Pj4gOCkgJiAweEZGKTsgfTtcblxuZnVuY3Rpb24gV3JpdGVTaGlmdCh0Lyo6bnVtYmVyKi8sIHZhbC8qOnN0cmluZ3xudW1iZXIqLywgZi8qOj9zdHJpbmcqLykvKjphbnkqLyB7XG5cdHZhciBzaXplID0gMCwgaSA9IDA7XG5cdGlmKGYgPT09ICdkYmNzJykge1xuXHRcdC8qOjogaWYodHlwZW9mIHZhbCAhPT0gJ3N0cmluZycpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHRcdGZvcihpID0gMDsgaSAhPSB2YWwubGVuZ3RoOyArK2kpIF9fd3JpdGVVSW50MTZMRSh0aGlzLCB2YWwuY2hhckNvZGVBdChpKSwgdGhpcy5sICsgMiAqIGkpO1xuXHRcdHNpemUgPSAyICogdmFsLmxlbmd0aDtcblx0fSBlbHNlIGlmKGYgPT09ICdzYmNzJykge1xuXHRcdGlmKHR5cGVvZiAkY3B0YWJsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgY3VycmVudF9hbnNpID09IDg3NCkge1xuXHRcdFx0LyogVE9ETzogdXNlIHRhYmxlcyBkaXJlY3RseSwgZG9uJ3QgZW5jb2RlICovXG5cdFx0XHQvKjo6IGlmKHR5cGVvZiB2YWwgIT09IFwic3RyaW5nXCIpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHRcdFx0Zm9yKGkgPSAwOyBpICE9IHZhbC5sZW5ndGg7ICsraSkge1xuXHRcdFx0XHR2YXIgY3BwYXlsb2FkID0gJGNwdGFibGUudXRpbHMuZW5jb2RlKGN1cnJlbnRfYW5zaSwgdmFsLmNoYXJBdChpKSk7XG5cdFx0XHRcdHRoaXNbdGhpcy5sICsgaV0gPSBjcHBheWxvYWRbMF07XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8qOjogaWYodHlwZW9mIHZhbCAhPT0gJ3N0cmluZycpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHRcdFx0dmFsID0gdmFsLnJlcGxhY2UoL1teXFx4MDAtXFx4N0ZdL2csIFwiX1wiKTtcblx0XHRcdC8qOjogaWYodHlwZW9mIHZhbCAhPT0gJ3N0cmluZycpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHRcdFx0Zm9yKGkgPSAwOyBpICE9IHZhbC5sZW5ndGg7ICsraSkgdGhpc1t0aGlzLmwgKyBpXSA9ICh2YWwuY2hhckNvZGVBdChpKSAmIDB4RkYpO1xuXHRcdH1cblx0XHRzaXplID0gdmFsLmxlbmd0aDtcblx0fSBlbHNlIGlmKGYgPT09ICdoZXgnKSB7XG5cdFx0Zm9yKDsgaSA8IHQ7ICsraSkge1xuXHRcdFx0Lyo6OiBpZih0eXBlb2YgdmFsICE9PSBcInN0cmluZ1wiKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi9cblx0XHRcdHRoaXNbdGhpcy5sKytdID0gKHBhcnNlSW50KHZhbC5zbGljZSgyKmksIDIqaSsyKSwgMTYpfHwwKTtcblx0XHR9IHJldHVybiB0aGlzO1xuXHR9IGVsc2UgaWYoZiA9PT0gJ3V0ZjE2bGUnKSB7XG5cdFx0XHQvKjo6IGlmKHR5cGVvZiB2YWwgIT09IFwic3RyaW5nXCIpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHRcdFx0dmFyIGVuZC8qOm51bWJlciovID0gTWF0aC5taW4odGhpcy5sICsgdCwgdGhpcy5sZW5ndGgpO1xuXHRcdFx0Zm9yKGkgPSAwOyBpIDwgTWF0aC5taW4odmFsLmxlbmd0aCwgdCk7ICsraSkge1xuXHRcdFx0XHR2YXIgY2MgPSB2YWwuY2hhckNvZGVBdChpKTtcblx0XHRcdFx0dGhpc1t0aGlzLmwrK10gPSAoY2MgJiAweGZmKTtcblx0XHRcdFx0dGhpc1t0aGlzLmwrK10gPSAoY2MgPj4gOCk7XG5cdFx0XHR9XG5cdFx0XHR3aGlsZSh0aGlzLmwgPCBlbmQpIHRoaXNbdGhpcy5sKytdID0gMDtcblx0XHRcdHJldHVybiB0aGlzO1xuXHR9IGVsc2UgLyo6OiBpZih0eXBlb2YgdmFsID09PSAnbnVtYmVyJykgKi8gc3dpdGNoKHQpIHtcblx0XHRjYXNlICAxOiBzaXplID0gMTsgdGhpc1t0aGlzLmxdID0gdmFsJjB4RkY7IGJyZWFrO1xuXHRcdGNhc2UgIDI6IHNpemUgPSAyOyB0aGlzW3RoaXMubF0gPSB2YWwmMHhGRjsgdmFsID4+Pj0gODsgdGhpc1t0aGlzLmwrMV0gPSB2YWwmMHhGRjsgYnJlYWs7XG5cdFx0Y2FzZSAgMzogc2l6ZSA9IDM7IHRoaXNbdGhpcy5sXSA9IHZhbCYweEZGOyB2YWwgPj4+PSA4OyB0aGlzW3RoaXMubCsxXSA9IHZhbCYweEZGOyB2YWwgPj4+PSA4OyB0aGlzW3RoaXMubCsyXSA9IHZhbCYweEZGOyBicmVhaztcblx0XHRjYXNlICA0OiBzaXplID0gNDsgX193cml0ZVVJbnQzMkxFKHRoaXMsIHZhbCwgdGhpcy5sKTsgYnJlYWs7XG5cdFx0Y2FzZSAgODogc2l6ZSA9IDg7IGlmKGYgPT09ICdmJykgeyB3cml0ZV9kb3VibGVfbGUodGhpcywgdmFsLCB0aGlzLmwpOyBicmVhazsgfVxuXHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRjYXNlIDE2OiBicmVhaztcblx0XHRjYXNlIC00OiBzaXplID0gNDsgX193cml0ZUludDMyTEUodGhpcywgdmFsLCB0aGlzLmwpOyBicmVhaztcblx0fVxuXHR0aGlzLmwgKz0gc2l6ZTsgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIENoZWNrRmllbGQoaGV4c3RyLyo6c3RyaW5nKi8sIGZsZC8qOnN0cmluZyovKS8qOnZvaWQqLyB7XG5cdHZhciBtID0gX19oZXhsaWZ5KHRoaXMsdGhpcy5sLGhleHN0ci5sZW5ndGg+PjEpO1xuXHRpZihtICE9PSBoZXhzdHIpIHRocm93IG5ldyBFcnJvcihmbGQgKyAnRXhwZWN0ZWQgJyArIGhleHN0ciArICcgc2F3ICcgKyBtKTtcblx0dGhpcy5sICs9IGhleHN0ci5sZW5ndGg+PjE7XG59XG5cbmZ1bmN0aW9uIHByZXBfYmxvYihibG9iLCBwb3MvKjpudW1iZXIqLykvKjp2b2lkKi8ge1xuXHRibG9iLmwgPSBwb3M7XG5cdGJsb2IucmVhZF9zaGlmdCA9IC8qOjooKi9SZWFkU2hpZnQvKjo6IDphbnkpKi87XG5cdGJsb2IuY2hrID0gQ2hlY2tGaWVsZDtcblx0YmxvYi53cml0ZV9zaGlmdCA9IFdyaXRlU2hpZnQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlbm9vcChibG9iLCBsZW5ndGgvKjo6IDpudW1iZXIsIG9wdHM/OmFueSAqLykgeyBibG9iLmwgKz0gbGVuZ3RoOyB9XG5cbmZ1bmN0aW9uIG5ld19idWYoc3ovKjpudW1iZXIqLykvKjpCbG9jayovIHtcblx0dmFyIG8gPSBuZXdfcmF3X2J1Zihzeik7XG5cdHByZXBfYmxvYihvLCAwKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjEuNCBSZWNvcmQgKi9cbmZ1bmN0aW9uIHJlY29yZGhvcHBlcihkYXRhLCBjYi8qOlJlY29yZEhvcHBlckNCKi8sIG9wdHMvKjo/YW55Ki8pIHtcblx0aWYoIWRhdGEpIHJldHVybjtcblx0dmFyIHRtcGJ5dGUsIGNudGJ5dGUsIGxlbmd0aDtcblx0cHJlcF9ibG9iKGRhdGEsIGRhdGEubCB8fCAwKTtcblx0dmFyIEwgPSBkYXRhLmxlbmd0aCwgUlQgPSAwLCB0Z3QgPSAwO1xuXHR3aGlsZShkYXRhLmwgPCBMKSB7XG5cdFx0UlQgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdFx0aWYoUlQgJiAweDgwKSBSVCA9IChSVCAmIDB4N0YpICsgKChkYXRhLnJlYWRfc2hpZnQoMSkgJiAweDdGKTw8Nyk7XG5cdFx0dmFyIFIgPSBYTFNCUmVjb3JkRW51bVtSVF0gfHwgWExTQlJlY29yZEVudW1bMHhGRkZGXTtcblx0XHR0bXBieXRlID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHRcdGxlbmd0aCA9IHRtcGJ5dGUgJiAweDdGO1xuXHRcdGZvcihjbnRieXRlID0gMTsgY250Ynl0ZSA8NCAmJiAodG1wYnl0ZSAmIDB4ODApOyArK2NudGJ5dGUpIGxlbmd0aCArPSAoKHRtcGJ5dGUgPSBkYXRhLnJlYWRfc2hpZnQoMSkpICYgMHg3Rik8PCg3KmNudGJ5dGUpO1xuXHRcdHRndCA9IGRhdGEubCArIGxlbmd0aDtcblx0XHR2YXIgZCA9IFIuZiAmJiBSLmYoZGF0YSwgbGVuZ3RoLCBvcHRzKTtcblx0XHRkYXRhLmwgPSB0Z3Q7XG5cdFx0aWYoY2IoZCwgUiwgUlQpKSByZXR1cm47XG5cdH1cbn1cblxuLyogY29udHJvbCBidWZmZXIgdXNhZ2UgZm9yIGZpeGVkLWxlbmd0aCBidWZmZXJzICovXG5mdW5jdGlvbiBidWZfYXJyYXkoKS8qOkJ1ZkFycmF5Ki8ge1xuXHR2YXIgYnVmcy8qOkFycmF5PEJsb2NrPiovID0gW10sIGJsa3N6ID0gaGFzX2J1ZiA/IDI1NiA6IDIwNDg7XG5cdHZhciBuZXdibGsgPSBmdW5jdGlvbiBiYV9uZXdibGsoc3ovKjpudW1iZXIqLykvKjpCbG9jayovIHtcblx0XHR2YXIgby8qOkJsb2NrKi8gPSAobmV3X2J1ZihzeikvKjphbnkqLyk7XG5cdFx0cHJlcF9ibG9iKG8sIDApO1xuXHRcdHJldHVybiBvO1xuXHR9O1xuXG5cdHZhciBjdXJidWYvKjpCbG9jayovID0gbmV3YmxrKGJsa3N6KTtcblxuXHR2YXIgZW5kYnVmID0gZnVuY3Rpb24gYmFfZW5kYnVmKCkge1xuXHRcdGlmKCFjdXJidWYpIHJldHVybjtcblx0XHRpZihjdXJidWYubGVuZ3RoID4gY3VyYnVmLmwpIHsgY3VyYnVmID0gY3VyYnVmLnNsaWNlKDAsIGN1cmJ1Zi5sKTsgY3VyYnVmLmwgPSBjdXJidWYubGVuZ3RoOyB9XG5cdFx0aWYoY3VyYnVmLmxlbmd0aCA+IDApIGJ1ZnMucHVzaChjdXJidWYpO1xuXHRcdGN1cmJ1ZiA9IG51bGw7XG5cdH07XG5cblx0dmFyIG5leHQgPSBmdW5jdGlvbiBiYV9uZXh0KHN6Lyo6bnVtYmVyKi8pLyo6QmxvY2sqLyB7XG5cdFx0aWYoY3VyYnVmICYmIChzeiA8IChjdXJidWYubGVuZ3RoIC0gY3VyYnVmLmwpKSkgcmV0dXJuIGN1cmJ1Zjtcblx0XHRlbmRidWYoKTtcblx0XHRyZXR1cm4gKGN1cmJ1ZiA9IG5ld2JsayhNYXRoLm1heChzeisxLCBibGtzeikpKTtcblx0fTtcblxuXHR2YXIgZW5kID0gZnVuY3Rpb24gYmFfZW5kKCkge1xuXHRcdGVuZGJ1ZigpO1xuXHRcdHJldHVybiBiY29uY2F0KGJ1ZnMpO1xuXHR9O1xuXG5cdHZhciBwdXNoID0gZnVuY3Rpb24gYmFfcHVzaChidWYpIHsgZW5kYnVmKCk7IGN1cmJ1ZiA9IGJ1ZjsgaWYoY3VyYnVmLmwgPT0gbnVsbCkgY3VyYnVmLmwgPSBjdXJidWYubGVuZ3RoOyBuZXh0KGJsa3N6KTsgfTtcblxuXHRyZXR1cm4gKHsgbmV4dDpuZXh0LCBwdXNoOnB1c2gsIGVuZDplbmQsIF9idWZzOmJ1ZnMgfS8qOmFueSovKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfcmVjb3JkKGJhLyo6QnVmQXJyYXkqLywgdHlwZS8qOm51bWJlciovLCBwYXlsb2FkLCBsZW5ndGgvKjo/bnVtYmVyKi8pIHtcblx0dmFyIHQvKjpudW1iZXIqLyA9ICt0eXBlLCBsO1xuXHRpZihpc05hTih0KSkgcmV0dXJuOyAvLyBUT0RPOiB0aHJvdyBzb21ldGhpbmcgaGVyZT9cblx0aWYoIWxlbmd0aCkgbGVuZ3RoID0gWExTQlJlY29yZEVudW1bdF0ucCB8fCAocGF5bG9hZHx8W10pLmxlbmd0aCB8fCAwO1xuXHRsID0gMSArICh0ID49IDB4ODAgPyAxIDogMCkgKyAxLyogKyBsZW5ndGgqLztcblx0aWYobGVuZ3RoID49IDB4ODApICsrbDsgaWYobGVuZ3RoID49IDB4NDAwMCkgKytsOyBpZihsZW5ndGggPj0gMHgyMDAwMDApICsrbDtcblx0dmFyIG8gPSBiYS5uZXh0KGwpO1xuXHRpZih0IDw9IDB4N0YpIG8ud3JpdGVfc2hpZnQoMSwgdCk7XG5cdGVsc2Uge1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgKHQgJiAweDdGKSArIDB4ODApO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgKHQgPj4gNykpO1xuXHR9XG5cdGZvcih2YXIgaSA9IDA7IGkgIT0gNDsgKytpKSB7XG5cdFx0aWYobGVuZ3RoID49IDB4ODApIHsgby53cml0ZV9zaGlmdCgxLCAobGVuZ3RoICYgMHg3RikrMHg4MCk7IGxlbmd0aCA+Pj0gNzsgfVxuXHRcdGVsc2UgeyBvLndyaXRlX3NoaWZ0KDEsIGxlbmd0aCk7IGJyZWFrOyB9XG5cdH1cblx0aWYoLyo6OiBsZW5ndGggIT0gbnVsbCAmJiovbGVuZ3RoID4gMCAmJiBpc19idWYocGF5bG9hZCkpIGJhLnB1c2gocGF5bG9hZCk7XG59XG4vKiBYTFMgcmFuZ2VzIGVuZm9yY2VkICovXG5mdW5jdGlvbiBzaGlmdF9jZWxsX3hscyhjZWxsLyo6Q2VsbEFkZHJlc3MqLywgdGd0Lyo6YW55Ki8sIG9wdHMvKjo/YW55Ki8pLyo6Q2VsbEFkZHJlc3MqLyB7XG5cdHZhciBvdXQgPSBkdXAoY2VsbCk7XG5cdGlmKHRndC5zKSB7XG5cdFx0aWYob3V0LmNSZWwpIG91dC5jICs9IHRndC5zLmM7XG5cdFx0aWYob3V0LnJSZWwpIG91dC5yICs9IHRndC5zLnI7XG5cdH0gZWxzZSB7XG5cdFx0aWYob3V0LmNSZWwpIG91dC5jICs9IHRndC5jO1xuXHRcdGlmKG91dC5yUmVsKSBvdXQuciArPSB0Z3Qucjtcblx0fVxuXHRpZighb3B0cyB8fCBvcHRzLmJpZmYgPCAxMikge1xuXHRcdHdoaWxlKG91dC5jID49IDB4MTAwKSBvdXQuYyAtPSAweDEwMDtcblx0XHR3aGlsZShvdXQuciA+PSAweDEwMDAwKSBvdXQuciAtPSAweDEwMDAwO1xuXHR9XG5cdHJldHVybiBvdXQ7XG59XG5cbmZ1bmN0aW9uIHNoaWZ0X3JhbmdlX3hscyhjZWxsLCByYW5nZSwgb3B0cykge1xuXHR2YXIgb3V0ID0gZHVwKGNlbGwpO1xuXHRvdXQucyA9IHNoaWZ0X2NlbGxfeGxzKG91dC5zLCByYW5nZS5zLCBvcHRzKTtcblx0b3V0LmUgPSBzaGlmdF9jZWxsX3hscyhvdXQuZSwgcmFuZ2Uucywgb3B0cyk7XG5cdHJldHVybiBvdXQ7XG59XG5cbmZ1bmN0aW9uIGVuY29kZV9jZWxsX3hscyhjLyo6Q2VsbEFkZHJlc3MqLywgYmlmZi8qOm51bWJlciovKS8qOnN0cmluZyovIHtcblx0aWYoYy5jUmVsICYmIGMuYyA8IDApIHsgYyA9IGR1cChjKTsgd2hpbGUoYy5jIDwgMCkgYy5jICs9IChiaWZmID4gOCkgPyAweDQwMDAgOiAweDEwMDsgfVxuXHRpZihjLnJSZWwgJiYgYy5yIDwgMCkgeyBjID0gZHVwKGMpOyB3aGlsZShjLnIgPCAwKSBjLnIgKz0gKGJpZmYgPiA4KSA/IDB4MTAwMDAwIDogKChiaWZmID4gNSkgPyAweDEwMDAwIDogMHg0MDAwKTsgfVxuXHR2YXIgcyA9IGVuY29kZV9jZWxsKGMpO1xuXHRpZighYy5jUmVsICYmIGMuY1JlbCAhPSBudWxsKSBzID0gZml4X2NvbChzKTtcblx0aWYoIWMuclJlbCAmJiBjLnJSZWwgIT0gbnVsbCkgcyA9IGZpeF9yb3cocyk7XG5cdHJldHVybiBzO1xufVxuXG5mdW5jdGlvbiBlbmNvZGVfcmFuZ2VfeGxzKHIsIG9wdHMpLyo6c3RyaW5nKi8ge1xuXHRpZihyLnMuciA9PSAwICYmICFyLnMuclJlbCkge1xuXHRcdGlmKHIuZS5yID09IChvcHRzLmJpZmYgPj0gMTIgPyAweEZGRkZGIDogKG9wdHMuYmlmZiA+PSA4ID8gMHgxMDAwMCA6IDB4NDAwMCkpICYmICFyLmUuclJlbCkge1xuXHRcdFx0cmV0dXJuIChyLnMuY1JlbCA/IFwiXCIgOiBcIiRcIikgKyBlbmNvZGVfY29sKHIucy5jKSArIFwiOlwiICsgKHIuZS5jUmVsID8gXCJcIiA6IFwiJFwiKSArIGVuY29kZV9jb2woci5lLmMpO1xuXHRcdH1cblx0fVxuXHRpZihyLnMuYyA9PSAwICYmICFyLnMuY1JlbCkge1xuXHRcdGlmKHIuZS5jID09IChvcHRzLmJpZmYgPj0gMTIgPyAweDNGRkYgOiAweEZGKSAmJiAhci5lLmNSZWwpIHtcblx0XHRcdHJldHVybiAoci5zLnJSZWwgPyBcIlwiIDogXCIkXCIpICsgZW5jb2RlX3JvdyhyLnMucikgKyBcIjpcIiArIChyLmUuclJlbCA/IFwiXCIgOiBcIiRcIikgKyBlbmNvZGVfcm93KHIuZS5yKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGVuY29kZV9jZWxsX3hscyhyLnMsIG9wdHMuYmlmZikgKyBcIjpcIiArIGVuY29kZV9jZWxsX3hscyhyLmUsIG9wdHMuYmlmZik7XG59XG5mdW5jdGlvbiBkZWNvZGVfcm93KHJvd3N0ci8qOnN0cmluZyovKS8qOm51bWJlciovIHsgcmV0dXJuIHBhcnNlSW50KHVuZml4X3Jvdyhyb3dzdHIpLDEwKSAtIDE7IH1cbmZ1bmN0aW9uIGVuY29kZV9yb3cocm93Lyo6bnVtYmVyKi8pLyo6c3RyaW5nKi8geyByZXR1cm4gXCJcIiArIChyb3cgKyAxKTsgfVxuZnVuY3Rpb24gZml4X3Jvdyhjc3RyLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8geyByZXR1cm4gY3N0ci5yZXBsYWNlKC8oW0EtWl18XikoXFxkKykkLyxcIiQxJCQkMlwiKTsgfVxuZnVuY3Rpb24gdW5maXhfcm93KGNzdHIvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7IHJldHVybiBjc3RyLnJlcGxhY2UoL1xcJChcXGQrKSQvLFwiJDFcIik7IH1cblxuZnVuY3Rpb24gZGVjb2RlX2NvbChjb2xzdHIvKjpzdHJpbmcqLykvKjpudW1iZXIqLyB7IHZhciBjID0gdW5maXhfY29sKGNvbHN0ciksIGQgPSAwLCBpID0gMDsgZm9yKDsgaSAhPT0gYy5sZW5ndGg7ICsraSkgZCA9IDI2KmQgKyBjLmNoYXJDb2RlQXQoaSkgLSA2NDsgcmV0dXJuIGQgLSAxOyB9XG5mdW5jdGlvbiBlbmNvZGVfY29sKGNvbC8qOm51bWJlciovKS8qOnN0cmluZyovIHsgaWYoY29sIDwgMCkgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBjb2x1bW4gXCIgKyBjb2wpOyB2YXIgcz1cIlwiOyBmb3IoKytjb2w7IGNvbDsgY29sPU1hdGguZmxvb3IoKGNvbC0xKS8yNikpIHMgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgoY29sLTEpJTI2KSArIDY1KSArIHM7IHJldHVybiBzOyB9XG5mdW5jdGlvbiBmaXhfY29sKGNzdHIvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7IHJldHVybiBjc3RyLnJlcGxhY2UoL14oW0EtWl0pLyxcIiQkJDFcIik7IH1cbmZ1bmN0aW9uIHVuZml4X2NvbChjc3RyLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8geyByZXR1cm4gY3N0ci5yZXBsYWNlKC9eXFwkKFtBLVpdKS8sXCIkMVwiKTsgfVxuXG5mdW5jdGlvbiBzcGxpdF9jZWxsKGNzdHIvKjpzdHJpbmcqLykvKjpBcnJheTxzdHJpbmc+Ki8geyByZXR1cm4gY3N0ci5yZXBsYWNlKC8oXFwkP1tBLVpdKikoXFwkP1xcZCopLyxcIiQxLCQyXCIpLnNwbGl0KFwiLFwiKTsgfVxuLy9mdW5jdGlvbiBkZWNvZGVfY2VsbChjc3RyLyo6c3RyaW5nKi8pLyo6Q2VsbEFkZHJlc3MqLyB7IHZhciBzcGx0ID0gc3BsaXRfY2VsbChjc3RyKTsgcmV0dXJuIHsgYzpkZWNvZGVfY29sKHNwbHRbMF0pLCByOmRlY29kZV9yb3coc3BsdFsxXSkgfTsgfVxuZnVuY3Rpb24gZGVjb2RlX2NlbGwoY3N0ci8qOnN0cmluZyovKS8qOkNlbGxBZGRyZXNzKi8ge1xuXHR2YXIgUiA9IDAsIEMgPSAwO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgY3N0ci5sZW5ndGg7ICsraSkge1xuXHRcdHZhciBjYyA9IGNzdHIuY2hhckNvZGVBdChpKTtcblx0XHRpZihjYyA+PSA0OCAmJiBjYyA8PSA1NykgUiA9IDEwICogUiArIChjYyAtIDQ4KTtcblx0XHRlbHNlIGlmKGNjID49IDY1ICYmIGNjIDw9IDkwKSBDID0gMjYgKiBDICsgKGNjIC0gNjQpO1xuXHR9XG5cdHJldHVybiB7IGM6IEMgLSAxLCByOlIgLSAxIH07XG59XG4vL2Z1bmN0aW9uIGVuY29kZV9jZWxsKGNlbGwvKjpDZWxsQWRkcmVzcyovKS8qOnN0cmluZyovIHsgcmV0dXJuIGVuY29kZV9jb2woY2VsbC5jKSArIGVuY29kZV9yb3coY2VsbC5yKTsgfVxuZnVuY3Rpb24gZW5jb2RlX2NlbGwoY2VsbC8qOkNlbGxBZGRyZXNzKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgY29sID0gY2VsbC5jICsgMTtcblx0dmFyIHM9XCJcIjtcblx0Zm9yKDsgY29sOyBjb2w9KChjb2wtMSkvMjYpfDApIHMgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgoY29sLTEpJTI2KSArIDY1KSArIHM7XG5cdHJldHVybiBzICsgKGNlbGwuciArIDEpO1xufVxuZnVuY3Rpb24gZGVjb2RlX3JhbmdlKHJhbmdlLyo6c3RyaW5nKi8pLyo6UmFuZ2UqLyB7XG5cdHZhciBpZHggPSByYW5nZS5pbmRleE9mKFwiOlwiKTtcblx0aWYoaWR4ID09IC0xKSByZXR1cm4geyBzOiBkZWNvZGVfY2VsbChyYW5nZSksIGU6IGRlY29kZV9jZWxsKHJhbmdlKSB9O1xuXHRyZXR1cm4geyBzOiBkZWNvZGVfY2VsbChyYW5nZS5zbGljZSgwLCBpZHgpKSwgZTogZGVjb2RlX2NlbGwocmFuZ2Uuc2xpY2UoaWR4ICsgMSkpIH07XG59XG4vKiMgaWYgb25seSBvbmUgYXJnLCBpdCBpcyBhc3N1bWVkIHRvIGJlIGEgUmFuZ2UuICBJZiAyIGFyZ3MsIGJvdGggYXJlIGNlbGwgYWRkcmVzc2VzICovXG5mdW5jdGlvbiBlbmNvZGVfcmFuZ2UoY3MvKjpDZWxsQWRkclNwZWN8UmFuZ2UqLyxjZS8qOj9DZWxsQWRkclNwZWMqLykvKjpzdHJpbmcqLyB7XG5cdGlmKHR5cGVvZiBjZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIGNlID09PSAnbnVtYmVyJykge1xuLyo6OiBpZighKGNzIGluc3RhbmNlb2YgUmFuZ2UpKSB0aHJvdyBcInVucmVhY2hhYmxlXCI7ICovXG5cdFx0cmV0dXJuIGVuY29kZV9yYW5nZShjcy5zLCBjcy5lKTtcblx0fVxuLyo6OiBpZigoY3MgaW5zdGFuY2VvZiBSYW5nZSkpIHRocm93IFwidW5yZWFjaGFibGVcIjsgKi9cblx0aWYodHlwZW9mIGNzICE9PSAnc3RyaW5nJykgY3MgPSBlbmNvZGVfY2VsbCgoY3MvKjphbnkqLykpO1xuXHRpZih0eXBlb2YgY2UgIT09ICdzdHJpbmcnKSBjZSA9IGVuY29kZV9jZWxsKChjZS8qOmFueSovKSk7XG4vKjo6IGlmKHR5cGVvZiBjcyAhPT0gJ3N0cmluZycpIHRocm93IFwidW5yZWFjaGFibGVcIjsgKi9cbi8qOjogaWYodHlwZW9mIGNlICE9PSAnc3RyaW5nJykgdGhyb3cgXCJ1bnJlYWNoYWJsZVwiOyAqL1xuXHRyZXR1cm4gY3MgPT0gY2UgPyBjcyA6IGNzICsgXCI6XCIgKyBjZTtcbn1cblxuZnVuY3Rpb24gc2FmZV9kZWNvZGVfcmFuZ2UocmFuZ2UvKjpzdHJpbmcqLykvKjpSYW5nZSovIHtcblx0dmFyIG8gPSB7czp7YzowLHI6MH0sZTp7YzowLHI6MH19O1xuXHR2YXIgaWR4ID0gMCwgaSA9IDAsIGNjID0gMDtcblx0dmFyIGxlbiA9IHJhbmdlLmxlbmd0aDtcblx0Zm9yKGlkeCA9IDA7IGkgPCBsZW47ICsraSkge1xuXHRcdGlmKChjYz1yYW5nZS5jaGFyQ29kZUF0KGkpLTY0KSA8IDEgfHwgY2MgPiAyNikgYnJlYWs7XG5cdFx0aWR4ID0gMjYqaWR4ICsgY2M7XG5cdH1cblx0by5zLmMgPSAtLWlkeDtcblxuXHRmb3IoaWR4ID0gMDsgaSA8IGxlbjsgKytpKSB7XG5cdFx0aWYoKGNjPXJhbmdlLmNoYXJDb2RlQXQoaSktNDgpIDwgMCB8fCBjYyA+IDkpIGJyZWFrO1xuXHRcdGlkeCA9IDEwKmlkeCArIGNjO1xuXHR9XG5cdG8ucy5yID0gLS1pZHg7XG5cblx0aWYoaSA9PT0gbGVuIHx8IGNjICE9IDEwKSB7IG8uZS5jPW8ucy5jOyBvLmUucj1vLnMucjsgcmV0dXJuIG87IH1cblx0KytpO1xuXG5cdGZvcihpZHggPSAwOyBpICE9IGxlbjsgKytpKSB7XG5cdFx0aWYoKGNjPXJhbmdlLmNoYXJDb2RlQXQoaSktNjQpIDwgMSB8fCBjYyA+IDI2KSBicmVhaztcblx0XHRpZHggPSAyNippZHggKyBjYztcblx0fVxuXHRvLmUuYyA9IC0taWR4O1xuXG5cdGZvcihpZHggPSAwOyBpICE9IGxlbjsgKytpKSB7XG5cdFx0aWYoKGNjPXJhbmdlLmNoYXJDb2RlQXQoaSktNDgpIDwgMCB8fCBjYyA+IDkpIGJyZWFrO1xuXHRcdGlkeCA9IDEwKmlkeCArIGNjO1xuXHR9XG5cdG8uZS5yID0gLS1pZHg7XG5cdHJldHVybiBvO1xufVxuXG5mdW5jdGlvbiBzYWZlX2Zvcm1hdF9jZWxsKGNlbGwvKjpDZWxsKi8sIHYvKjphbnkqLykge1xuXHR2YXIgcSA9IChjZWxsLnQgPT0gJ2QnICYmIHYgaW5zdGFuY2VvZiBEYXRlKTtcblx0aWYoY2VsbC56ICE9IG51bGwpIHRyeSB7IHJldHVybiAoY2VsbC53ID0gU1NGX2Zvcm1hdChjZWxsLnosIHEgPyBkYXRlbnVtKHYpIDogdikpOyB9IGNhdGNoKGUpIHsgfVxuXHR0cnkgeyByZXR1cm4gKGNlbGwudyA9IFNTRl9mb3JtYXQoKGNlbGwuWEZ8fHt9KS5udW1GbXRJZHx8KHEgPyAxNCA6IDApLCAgcSA/IGRhdGVudW0odikgOiB2KSk7IH0gY2F0Y2goZSkgeyByZXR1cm4gJycrdjsgfVxufVxuXG5mdW5jdGlvbiBmb3JtYXRfY2VsbChjZWxsLyo6Q2VsbCovLCB2Lyo6YW55Ki8sIG8vKjphbnkqLykge1xuXHRpZihjZWxsID09IG51bGwgfHwgY2VsbC50ID09IG51bGwgfHwgY2VsbC50ID09ICd6JykgcmV0dXJuIFwiXCI7XG5cdGlmKGNlbGwudyAhPT0gdW5kZWZpbmVkKSByZXR1cm4gY2VsbC53O1xuXHRpZihjZWxsLnQgPT0gJ2QnICYmICFjZWxsLnogJiYgbyAmJiBvLmRhdGVORikgY2VsbC56ID0gby5kYXRlTkY7XG5cdGlmKGNlbGwudCA9PSBcImVcIikgcmV0dXJuIEJFcnJbY2VsbC52XSB8fCBjZWxsLnY7XG5cdGlmKHYgPT0gdW5kZWZpbmVkKSByZXR1cm4gc2FmZV9mb3JtYXRfY2VsbChjZWxsLCBjZWxsLnYpO1xuXHRyZXR1cm4gc2FmZV9mb3JtYXRfY2VsbChjZWxsLCB2KTtcbn1cblxuZnVuY3Rpb24gc2hlZXRfdG9fd29ya2Jvb2soc2hlZXQvKjpXb3Jrc2hlZXQqLywgb3B0cykvKjpXb3JrYm9vayovIHtcblx0dmFyIG4gPSBvcHRzICYmIG9wdHMuc2hlZXQgPyBvcHRzLnNoZWV0IDogXCJTaGVldDFcIjtcblx0dmFyIHNoZWV0cyA9IHt9OyBzaGVldHNbbl0gPSBzaGVldDtcblx0cmV0dXJuIHsgU2hlZXROYW1lczogW25dLCBTaGVldHM6IHNoZWV0cyB9O1xufVxuXG5mdW5jdGlvbiBzaGVldF9hZGRfYW9hKF93cy8qOj9Xb3Jrc2hlZXQqLywgZGF0YS8qOkFPQSovLCBvcHRzLyo6P2FueSovKS8qOldvcmtzaGVldCovIHtcblx0dmFyIG8gPSBvcHRzIHx8IHt9O1xuXHR2YXIgZGVuc2UgPSBfd3MgPyBBcnJheS5pc0FycmF5KF93cykgOiBvLmRlbnNlO1xuXHRpZihERU5TRSAhPSBudWxsICYmIGRlbnNlID09IG51bGwpIGRlbnNlID0gREVOU0U7XG5cdHZhciB3cy8qOldvcmtzaGVldCovID0gX3dzIHx8IChkZW5zZSA/IChbXS8qOmFueSovKSA6ICh7fS8qOmFueSovKSk7XG5cdHZhciBfUiA9IDAsIF9DID0gMDtcblx0aWYod3MgJiYgby5vcmlnaW4gIT0gbnVsbCkge1xuXHRcdGlmKHR5cGVvZiBvLm9yaWdpbiA9PSAnbnVtYmVyJykgX1IgPSBvLm9yaWdpbjtcblx0XHRlbHNlIHtcblx0XHRcdHZhciBfb3JpZ2luLyo6Q2VsbEFkZHJlc3MqLyA9IHR5cGVvZiBvLm9yaWdpbiA9PSBcInN0cmluZ1wiID8gZGVjb2RlX2NlbGwoby5vcmlnaW4pIDogby5vcmlnaW47XG5cdFx0XHRfUiA9IF9vcmlnaW4ucjsgX0MgPSBfb3JpZ2luLmM7XG5cdFx0fVxuXHRcdGlmKCF3c1tcIiFyZWZcIl0pIHdzW1wiIXJlZlwiXSA9IFwiQTE6QTFcIjtcblx0fVxuXHR2YXIgcmFuZ2UvKjpSYW5nZSovID0gKHtzOiB7YzoxMDAwMDAwMCwgcjoxMDAwMDAwMH0sIGU6IHtjOjAsIHI6MH19Lyo6YW55Ki8pO1xuXHRpZih3c1snIXJlZiddKSB7XG5cdFx0dmFyIF9yYW5nZSA9IHNhZmVfZGVjb2RlX3JhbmdlKHdzWychcmVmJ10pO1xuXHRcdHJhbmdlLnMuYyA9IF9yYW5nZS5zLmM7XG5cdFx0cmFuZ2Uucy5yID0gX3JhbmdlLnMucjtcblx0XHRyYW5nZS5lLmMgPSBNYXRoLm1heChyYW5nZS5lLmMsIF9yYW5nZS5lLmMpO1xuXHRcdHJhbmdlLmUuciA9IE1hdGgubWF4KHJhbmdlLmUuciwgX3JhbmdlLmUucik7XG5cdFx0aWYoX1IgPT0gLTEpIHJhbmdlLmUuciA9IF9SID0gX3JhbmdlLmUuciArIDE7XG5cdH1cblx0Zm9yKHZhciBSID0gMDsgUiAhPSBkYXRhLmxlbmd0aDsgKytSKSB7XG5cdFx0aWYoIWRhdGFbUl0pIGNvbnRpbnVlO1xuXHRcdGlmKCFBcnJheS5pc0FycmF5KGRhdGFbUl0pKSB0aHJvdyBuZXcgRXJyb3IoXCJhb2FfdG9fc2hlZXQgZXhwZWN0cyBhbiBhcnJheSBvZiBhcnJheXNcIik7XG5cdFx0Zm9yKHZhciBDID0gMDsgQyAhPSBkYXRhW1JdLmxlbmd0aDsgKytDKSB7XG5cdFx0XHRpZih0eXBlb2YgZGF0YVtSXVtDXSA9PT0gJ3VuZGVmaW5lZCcpIGNvbnRpbnVlO1xuXHRcdFx0dmFyIGNlbGwvKjpDZWxsKi8gPSAoe3Y6IGRhdGFbUl1bQ10gfS8qOmFueSovKTtcblx0XHRcdHZhciBfX1IgPSBfUiArIFIsIF9fQyA9IF9DICsgQztcblx0XHRcdGlmKHJhbmdlLnMuciA+IF9fUikgcmFuZ2Uucy5yID0gX19SO1xuXHRcdFx0aWYocmFuZ2Uucy5jID4gX19DKSByYW5nZS5zLmMgPSBfX0M7XG5cdFx0XHRpZihyYW5nZS5lLnIgPCBfX1IpIHJhbmdlLmUuciA9IF9fUjtcblx0XHRcdGlmKHJhbmdlLmUuYyA8IF9fQykgcmFuZ2UuZS5jID0gX19DO1xuXHRcdFx0aWYoZGF0YVtSXVtDXSAmJiB0eXBlb2YgZGF0YVtSXVtDXSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoZGF0YVtSXVtDXSkgJiYgIShkYXRhW1JdW0NdIGluc3RhbmNlb2YgRGF0ZSkpIGNlbGwgPSBkYXRhW1JdW0NdO1xuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdGlmKEFycmF5LmlzQXJyYXkoY2VsbC52KSkgeyBjZWxsLmYgPSBkYXRhW1JdW0NdWzFdOyBjZWxsLnYgPSBjZWxsLnZbMF07IH1cblx0XHRcdFx0aWYoY2VsbC52ID09PSBudWxsKSB7XG5cdFx0XHRcdFx0aWYoY2VsbC5mKSBjZWxsLnQgPSAnbic7XG5cdFx0XHRcdFx0ZWxzZSBpZihvLm51bGxFcnJvcikgeyBjZWxsLnQgPSAnZSc7IGNlbGwudiA9IDA7IH1cblx0XHRcdFx0XHRlbHNlIGlmKCFvLnNoZWV0U3R1YnMpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdGVsc2UgY2VsbC50ID0gJ3onO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgaWYodHlwZW9mIGNlbGwudiA9PT0gJ251bWJlcicpIGNlbGwudCA9ICduJztcblx0XHRcdFx0ZWxzZSBpZih0eXBlb2YgY2VsbC52ID09PSAnYm9vbGVhbicpIGNlbGwudCA9ICdiJztcblx0XHRcdFx0ZWxzZSBpZihjZWxsLnYgaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0XHRcdFx0Y2VsbC56ID0gby5kYXRlTkYgfHwgdGFibGVfZm10WzE0XTtcblx0XHRcdFx0XHRpZihvLmNlbGxEYXRlcykgeyBjZWxsLnQgPSAnZCc7IGNlbGwudyA9IFNTRl9mb3JtYXQoY2VsbC56LCBkYXRlbnVtKGNlbGwudikpOyB9XG5cdFx0XHRcdFx0ZWxzZSB7IGNlbGwudCA9ICduJzsgY2VsbC52ID0gZGF0ZW51bShjZWxsLnYpOyBjZWxsLncgPSBTU0ZfZm9ybWF0KGNlbGwueiwgY2VsbC52KTsgfVxuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgY2VsbC50ID0gJ3MnO1xuXHRcdFx0fVxuXHRcdFx0aWYoZGVuc2UpIHtcblx0XHRcdFx0aWYoIXdzW19fUl0pIHdzW19fUl0gPSBbXTtcblx0XHRcdFx0aWYod3NbX19SXVtfX0NdICYmIHdzW19fUl1bX19DXS56KSBjZWxsLnogPSB3c1tfX1JdW19fQ10uejtcblx0XHRcdFx0d3NbX19SXVtfX0NdID0gY2VsbDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHZhciBjZWxsX3JlZiA9IGVuY29kZV9jZWxsKCh7YzpfX0MscjpfX1J9Lyo6YW55Ki8pKTtcblx0XHRcdFx0aWYod3NbY2VsbF9yZWZdICYmIHdzW2NlbGxfcmVmXS56KSBjZWxsLnogPSB3c1tjZWxsX3JlZl0uejtcblx0XHRcdFx0d3NbY2VsbF9yZWZdID0gY2VsbDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0aWYocmFuZ2Uucy5jIDwgMTAwMDAwMDApIHdzWychcmVmJ10gPSBlbmNvZGVfcmFuZ2UocmFuZ2UpO1xuXHRyZXR1cm4gd3M7XG59XG5mdW5jdGlvbiBhb2FfdG9fc2hlZXQoZGF0YS8qOkFPQSovLCBvcHRzLyo6P2FueSovKS8qOldvcmtzaGVldCovIHsgcmV0dXJuIHNoZWV0X2FkZF9hb2EobnVsbCwgZGF0YSwgb3B0cyk7IH1cblxuZnVuY3Rpb24gcGFyc2VfSW50MzJMRShkYXRhKSB7XG5cdHJldHVybiBkYXRhLnJlYWRfc2hpZnQoNCwgJ2knKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX1VJbnQzMkxFKHgvKjpudW1iZXIqLywgbykge1xuXHRpZiAoIW8pIG8gPSBuZXdfYnVmKDQpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIHgpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNS4xNjggKi9cbmZ1bmN0aW9uIHBhcnNlX1hMV2lkZVN0cmluZyhkYXRhLyo6OiwgbGVuZ3RoKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgY2NoQ2hhcmFjdGVycyA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0cmV0dXJuIGNjaENoYXJhY3RlcnMgPT09IDAgPyBcIlwiIDogZGF0YS5yZWFkX3NoaWZ0KGNjaENoYXJhY3RlcnMsICdkYmNzJyk7XG59XG5mdW5jdGlvbiB3cml0ZV9YTFdpZGVTdHJpbmcoZGF0YS8qOnN0cmluZyovLCBvKSB7XG5cdHZhciBfbnVsbCA9IGZhbHNlOyBpZiAobyA9PSBudWxsKSB7IF9udWxsID0gdHJ1ZTsgbyA9IG5ld19idWYoNCArIDIgKiBkYXRhLmxlbmd0aCk7IH1cblx0by53cml0ZV9zaGlmdCg0LCBkYXRhLmxlbmd0aCk7XG5cdGlmIChkYXRhLmxlbmd0aCA+IDApIG8ud3JpdGVfc2hpZnQoMCwgZGF0YSwgJ2RiY3MnKTtcblx0cmV0dXJuIF9udWxsID8gby5zbGljZSgwLCBvLmwpIDogbztcbn1cblxuLyogW01TLVhMU0JdIDIuNS45MSAqL1xuLy9mdW5jdGlvbiBwYXJzZV9MUFdpZGVTdHJpbmcoZGF0YS8qOjosIGxlbmd0aCovKS8qOnN0cmluZyovIHtcbi8vXHR2YXIgY2NoQ2hhcmFjdGVycyA9IGRhdGEucmVhZF9zaGlmdCgyKTtcbi8vXHRyZXR1cm4gY2NoQ2hhcmFjdGVycyA9PT0gMCA/IFwiXCIgOiBkYXRhLnJlYWRfc2hpZnQoY2NoQ2hhcmFjdGVycywgXCJ1dGYxNmxlXCIpO1xuLy99XG5cbi8qIFtNUy1YTFNCXSAyLjUuMTQzICovXG5mdW5jdGlvbiBwYXJzZV9TdHJSdW4oZGF0YSkge1xuXHRyZXR1cm4geyBpY2g6IGRhdGEucmVhZF9zaGlmdCgyKSwgaWZudDogZGF0YS5yZWFkX3NoaWZ0KDIpIH07XG59XG5mdW5jdGlvbiB3cml0ZV9TdHJSdW4ocnVuLCBvKSB7XG5cdGlmICghbykgbyA9IG5ld19idWYoNCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgcnVuLmljaCB8fCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCBydW4uaWZudCB8fCAwKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjUuMTIxICovXG5mdW5jdGlvbiBwYXJzZV9SaWNoU3RyKGRhdGEsIGxlbmd0aC8qOm51bWJlciovKS8qOlhMU3RyaW5nKi8ge1xuXHR2YXIgc3RhcnQgPSBkYXRhLmw7XG5cdHZhciBmbGFncyA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0dmFyIHN0ciA9IHBhcnNlX1hMV2lkZVN0cmluZyhkYXRhKTtcblx0dmFyIHJnc1N0clJ1biA9IFtdO1xuXHR2YXIgeiA9ICh7IHQ6IHN0ciwgaDogc3RyIH0vKjphbnkqLyk7XG5cdGlmICgoZmxhZ3MgJiAxKSAhPT0gMCkgeyAvKiBmUmljaFN0ciAqL1xuXHRcdC8qIFRPRE86IGZvcm1hdHRlZCBzdHJpbmcgKi9cblx0XHR2YXIgZHdTaXplU3RyUnVuID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHRcdGZvciAodmFyIGkgPSAwOyBpICE9IGR3U2l6ZVN0clJ1bjsgKytpKSByZ3NTdHJSdW4ucHVzaChwYXJzZV9TdHJSdW4oZGF0YSkpO1xuXHRcdHouciA9IHJnc1N0clJ1bjtcblx0fVxuXHRlbHNlIHouciA9IFt7IGljaDogMCwgaWZudDogMCB9XTtcblx0Ly9pZigoZmxhZ3MgJiAyKSAhPT0gMCkgeyAvKiBmRXh0U3RyICovXG5cdC8vXHQvKiBUT0RPOiBwaG9uZXRpYyBzdHJpbmcgKi9cblx0Ly99XG5cdGRhdGEubCA9IHN0YXJ0ICsgbGVuZ3RoO1xuXHRyZXR1cm4gejtcbn1cbmZ1bmN0aW9uIHdyaXRlX1JpY2hTdHIoc3RyLyo6WExTdHJpbmcqLywgby8qOj9CbG9jayovKS8qOkJsb2NrKi8ge1xuXHQvKiBUT0RPOiBmb3JtYXR0ZWQgc3RyaW5nICovXG5cdHZhciBfbnVsbCA9IGZhbHNlOyBpZiAobyA9PSBudWxsKSB7IF9udWxsID0gdHJ1ZTsgbyA9IG5ld19idWYoMTUgKyA0ICogc3RyLnQubGVuZ3RoKTsgfVxuXHRvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHR3cml0ZV9YTFdpZGVTdHJpbmcoc3RyLnQsIG8pO1xuXHRyZXR1cm4gX251bGwgPyBvLnNsaWNlKDAsIG8ubCkgOiBvO1xufVxuLyogW01TLVhMU0JdIDIuNC4zMjggQnJ0Q29tbWVudFRleHQgKFJpY2hTdHIgdy8xIHJ1bikgKi9cbnZhciBwYXJzZV9CcnRDb21tZW50VGV4dCA9IHBhcnNlX1JpY2hTdHI7XG5mdW5jdGlvbiB3cml0ZV9CcnRDb21tZW50VGV4dChzdHIvKjpYTFN0cmluZyovLCBvLyo6P0Jsb2NrKi8pLyo6QmxvY2sqLyB7XG5cdC8qIFRPRE86IGZvcm1hdHRlZCBzdHJpbmcgKi9cblx0dmFyIF9udWxsID0gZmFsc2U7IGlmIChvID09IG51bGwpIHsgX251bGwgPSB0cnVlOyBvID0gbmV3X2J1ZigyMyArIDQgKiBzdHIudC5sZW5ndGgpOyB9XG5cdG8ud3JpdGVfc2hpZnQoMSwgMSk7XG5cdHdyaXRlX1hMV2lkZVN0cmluZyhzdHIudCwgbyk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMSk7XG5cdHdyaXRlX1N0clJ1bih7IGljaDogMCwgaWZudDogMCB9LCBvKTtcblx0cmV0dXJuIF9udWxsID8gby5zbGljZSgwLCBvLmwpIDogbztcbn1cblxuLyogW01TLVhMU0JdIDIuNS45ICovXG5mdW5jdGlvbiBwYXJzZV9YTFNCQ2VsbChkYXRhKS8qOmFueSovIHtcblx0dmFyIGNvbCA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0dmFyIGlTdHlsZVJlZiA9IGRhdGEucmVhZF9zaGlmdCgyKTtcblx0aVN0eWxlUmVmICs9IGRhdGEucmVhZF9zaGlmdCgxKSA8PCAxNjtcblx0ZGF0YS5sKys7IC8vdmFyIGZQaFNob3cgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdHJldHVybiB7IGM6IGNvbCwgaVN0eWxlUmVmOiBpU3R5bGVSZWYgfTtcbn1cbmZ1bmN0aW9uIHdyaXRlX1hMU0JDZWxsKGNlbGwvKjphbnkqLywgby8qOj9CbG9jayovKSB7XG5cdGlmIChvID09IG51bGwpIG8gPSBuZXdfYnVmKDgpO1xuXHRvLndyaXRlX3NoaWZ0KC00LCBjZWxsLmMpO1xuXHRvLndyaXRlX3NoaWZ0KDMsIGNlbGwuaVN0eWxlUmVmIHx8IGNlbGwucyk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgMCk7IC8qIGZQaFNob3cgKi9cblx0cmV0dXJuIG87XG59XG5cbi8qIFNob3J0IFhMU0IgQ2VsbCBkb2VzIG5vdCBpbmNsdWRlIGNvbHVtbiAqL1xuZnVuY3Rpb24gcGFyc2VfWExTQlNob3J0Q2VsbChkYXRhKS8qOmFueSovIHtcblx0dmFyIGlTdHlsZVJlZiA9IGRhdGEucmVhZF9zaGlmdCgyKTtcblx0aVN0eWxlUmVmICs9IGRhdGEucmVhZF9zaGlmdCgxKSA8PDE2O1xuXHRkYXRhLmwrKzsgLy92YXIgZlBoU2hvdyA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0cmV0dXJuIHsgYzotMSwgaVN0eWxlUmVmOiBpU3R5bGVSZWYgfTtcbn1cbmZ1bmN0aW9uIHdyaXRlX1hMU0JTaG9ydENlbGwoY2VsbC8qOmFueSovLCBvLyo6P0Jsb2NrKi8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1Zig0KTtcblx0by53cml0ZV9zaGlmdCgzLCBjZWxsLmlTdHlsZVJlZiB8fCBjZWxsLnMpO1xuXHRvLndyaXRlX3NoaWZ0KDEsIDApOyAvKiBmUGhTaG93ICovXG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi41LjIxICovXG52YXIgcGFyc2VfWExTQkNvZGVOYW1lID0gcGFyc2VfWExXaWRlU3RyaW5nO1xudmFyIHdyaXRlX1hMU0JDb2RlTmFtZSA9IHdyaXRlX1hMV2lkZVN0cmluZztcblxuLyogW01TLVhMU0JdIDIuNS4xNjYgKi9cbmZ1bmN0aW9uIHBhcnNlX1hMTnVsbGFibGVXaWRlU3RyaW5nKGRhdGEvKjo6LCBsZW5ndGgqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBjY2hDaGFyYWN0ZXJzID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHRyZXR1cm4gY2NoQ2hhcmFjdGVycyA9PT0gMCB8fCBjY2hDaGFyYWN0ZXJzID09PSAweEZGRkZGRkZGID8gXCJcIiA6IGRhdGEucmVhZF9zaGlmdChjY2hDaGFyYWN0ZXJzLCAnZGJjcycpO1xufVxuZnVuY3Rpb24gd3JpdGVfWExOdWxsYWJsZVdpZGVTdHJpbmcoZGF0YS8qOnN0cmluZyovLCBvKSB7XG5cdHZhciBfbnVsbCA9IGZhbHNlOyBpZiAobyA9PSBudWxsKSB7IF9udWxsID0gdHJ1ZTsgbyA9IG5ld19idWYoMTI3KTsgfVxuXHRvLndyaXRlX3NoaWZ0KDQsIGRhdGEubGVuZ3RoID4gMCA/IGRhdGEubGVuZ3RoIDogMHhGRkZGRkZGRik7XG5cdGlmIChkYXRhLmxlbmd0aCA+IDApIG8ud3JpdGVfc2hpZnQoMCwgZGF0YSwgJ2RiY3MnKTtcblx0cmV0dXJuIF9udWxsID8gby5zbGljZSgwLCBvLmwpIDogbztcbn1cblxuLyogW01TLVhMU0JdIDIuNS4xNjUgKi9cbnZhciBwYXJzZV9YTE5hbWVXaWRlU3RyaW5nID0gcGFyc2VfWExXaWRlU3RyaW5nO1xuLy92YXIgd3JpdGVfWExOYW1lV2lkZVN0cmluZyA9IHdyaXRlX1hMV2lkZVN0cmluZztcblxuLyogW01TLVhMU0JdIDIuNS4xMTQgKi9cbnZhciBwYXJzZV9SZWxJRCA9IHBhcnNlX1hMTnVsbGFibGVXaWRlU3RyaW5nO1xudmFyIHdyaXRlX1JlbElEID0gd3JpdGVfWExOdWxsYWJsZVdpZGVTdHJpbmc7XG5cblxuLyogW01TLVhMU10gMi41LjIxNyA7IFtNUy1YTFNCXSAyLjUuMTIyICovXG5mdW5jdGlvbiBwYXJzZV9Sa051bWJlcihkYXRhKS8qOm51bWJlciovIHtcblx0dmFyIGIgPSBkYXRhLnNsaWNlKGRhdGEubCwgZGF0YS5sICsgNCk7XG5cdHZhciBmWDEwMCA9IChiWzBdICYgMSksIGZJbnQgPSAoYlswXSAmIDIpO1xuXHRkYXRhLmwgKz0gNDtcblx0dmFyIFJLID0gZkludCA9PT0gMCA/IF9fZG91YmxlKFswLCAwLCAwLCAwLCAoYlswXSAmIDB4RkMpLCBiWzFdLCBiWzJdLCBiWzNdXSwgMCkgOiBfX3JlYWRJbnQzMkxFKGIsIDApID4+IDI7XG5cdHJldHVybiBmWDEwMCA/IChSSyAvIDEwMCkgOiBSSztcbn1cbmZ1bmN0aW9uIHdyaXRlX1JrTnVtYmVyKGRhdGEvKjpudW1iZXIqLywgbykge1xuXHRpZiAobyA9PSBudWxsKSBvID0gbmV3X2J1Zig0KTtcblx0dmFyIGZYMTAwID0gMCwgZkludCA9IDAsIGQxMDAgPSBkYXRhICogMTAwO1xuXHRpZiAoKGRhdGEgPT0gKGRhdGEgfCAwKSkgJiYgKGRhdGEgPj0gLSgxIDw8IDI5KSkgJiYgKGRhdGEgPCAoMSA8PCAyOSkpKSB7IGZJbnQgPSAxOyB9XG5cdGVsc2UgaWYgKChkMTAwID09IChkMTAwIHwgMCkpICYmIChkMTAwID49IC0oMSA8PCAyOSkpICYmIChkMTAwIDwgKDEgPDwgMjkpKSkgeyBmSW50ID0gMTsgZlgxMDAgPSAxOyB9XG5cdGlmIChmSW50KSBvLndyaXRlX3NoaWZ0KC00LCAoKGZYMTAwID8gZDEwMCA6IGRhdGEpIDw8IDIpICsgKGZYMTAwICsgMikpO1xuXHRlbHNlIHRocm93IG5ldyBFcnJvcihcInVuc3VwcG9ydGVkIFJrTnVtYmVyIFwiICsgZGF0YSk7IC8vIFRPRE9cbn1cblxuXG4vKiBbTVMtWExTQl0gMi41LjExNyBSZlggKi9cbmZ1bmN0aW9uIHBhcnNlX1JmWChkYXRhIC8qOjosIGxlbmd0aCovKS8qOlJhbmdlKi8ge1xuXHR2YXIgY2VsbC8qOlJhbmdlKi8gPSAoeyBzOiB7fSwgZToge30gfS8qOmFueSovKTtcblx0Y2VsbC5zLnIgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdGNlbGwuZS5yID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHRjZWxsLnMuYyA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0Y2VsbC5lLmMgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdHJldHVybiBjZWxsO1xufVxuZnVuY3Rpb24gd3JpdGVfUmZYKHIvKjpSYW5nZSovLCBvKSB7XG5cdGlmICghbykgbyA9IG5ld19idWYoMTYpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIHIucy5yKTtcblx0by53cml0ZV9zaGlmdCg0LCByLmUucik7XG5cdG8ud3JpdGVfc2hpZnQoNCwgci5zLmMpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIHIuZS5jKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjUuMTUzIFVuY2hlY2tlZFJmWCAqL1xudmFyIHBhcnNlX1VuY2hlY2tlZFJmWCA9IHBhcnNlX1JmWDtcbnZhciB3cml0ZV9VbmNoZWNrZWRSZlggPSB3cml0ZV9SZlg7XG5cbi8qIFtNUy1YTFNCXSAyLjUuMTU1IFVuY2hlY2tlZFNxUmZYICovXG4vL2Z1bmN0aW9uIHBhcnNlX1VuY2hlY2tlZFNxUmZYKGRhdGEpIHtcbi8vXHR2YXIgY250ID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuLy9cdHZhciBvdXQgPSBbXTtcbi8vXHRmb3IodmFyIGkgPSAwOyBpIDwgY250OyArK2kpIHtcbi8vXHRcdHZhciBybmcgPSBwYXJzZV9VbmNoZWNrZWRSZlgoZGF0YSk7XG4vL1x0XHRvdXQucHVzaChlbmNvZGVfcmFuZ2Uocm5nKSk7XG4vL1x0fVxuLy9cdHJldHVybiBvdXQuam9pbihcIixcIik7XG4vL31cbi8vZnVuY3Rpb24gd3JpdGVfVW5jaGVja2VkU3FSZlgoc3FyZngvKjpzdHJpbmcqLykge1xuLy9cdHZhciBwYXJ0cyA9IHNxcmZ4LnNwbGl0KC9cXHMqLFxccyovKTtcbi8vXHR2YXIgbyA9IG5ld19idWYoNCk7IG8ud3JpdGVfc2hpZnQoNCwgcGFydHMubGVuZ3RoKTtcbi8vXHR2YXIgb3V0ID0gW29dO1xuLy9cdHBhcnRzLmZvckVhY2goZnVuY3Rpb24ocm5nKSB7XG4vL1x0XHRvdXQucHVzaCh3cml0ZV9VbmNoZWNrZWRSZlgoc2FmZV9kZWNvZGVfcmFuZ2Uocm5nKSkpO1xuLy9cdH0pO1xuLy9cdHJldHVybiBiY29uY2F0KG91dCk7XG4vL31cblxuLyogW01TLVhMU10gMi41LjM0MiA7IFtNUy1YTFNCXSAyLjUuMTcxICovXG4vKiBUT0RPOiBlcnJvciBjaGVja2luZywgTmFOIGFuZCBJbmZpbml0eSB2YWx1ZXMgYXJlIG5vdCB2YWxpZCBYbnVtICovXG5mdW5jdGlvbiBwYXJzZV9YbnVtKGRhdGEvKjo6LCBsZW5ndGgqLykge1xuXHRpZihkYXRhLmxlbmd0aCAtIGRhdGEubCA8IDgpIHRocm93IFwiWExTIFhudW0gQnVmZmVyIHVuZGVyZmxvd1wiO1xuXHRyZXR1cm4gZGF0YS5yZWFkX3NoaWZ0KDgsICdmJyk7XG59XG5mdW5jdGlvbiB3cml0ZV9YbnVtKGRhdGEsIG8pIHsgcmV0dXJuIChvIHx8IG5ld19idWYoOCkpLndyaXRlX3NoaWZ0KDgsIGRhdGEsICdmJyk7IH1cblxuLyogW01TLVhMU0JdIDIuNC4zMjQgQnJ0Q29sb3IgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydENvbG9yKGRhdGEvKjo6LCBsZW5ndGgqLykge1xuXHR2YXIgb3V0ID0ge307XG5cdHZhciBkID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXG5cdC8vdmFyIGZWYWxpZFJHQiA9IGQgJiAxO1xuXHR2YXIgeENvbG9yVHlwZSA9IGQgPj4+IDE7XG5cblx0dmFyIGluZGV4ID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHR2YXIgblRTID0gZGF0YS5yZWFkX3NoaWZ0KDIsICdpJyk7XG5cdHZhciBiUiA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0dmFyIGJHID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHR2YXIgYkIgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdGRhdGEubCsrOyAvL3ZhciBiQWxwaGEgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cblx0c3dpdGNoICh4Q29sb3JUeXBlKSB7XG5cdFx0Y2FzZSAwOiBvdXQuYXV0byA9IDE7IGJyZWFrO1xuXHRcdGNhc2UgMTpcblx0XHRcdG91dC5pbmRleCA9IGluZGV4O1xuXHRcdFx0dmFyIGljdiA9IFhMU0ljdltpbmRleF07XG5cdFx0XHQvKiBhdXRvbWF0aWMgcHNldWRvIGluZGV4IDgxICovXG5cdFx0XHRpZiAoaWN2KSBvdXQucmdiID0gcmdiMkhleChpY3YpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAyOlxuXHRcdFx0LyogaWYoIWZWYWxpZFJHQikgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZFwiKTsgKi9cblx0XHRcdG91dC5yZ2IgPSByZ2IySGV4KFtiUiwgYkcsIGJCXSk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIDM6IG91dC50aGVtZSA9IGluZGV4OyBicmVhaztcblx0fVxuXHRpZiAoblRTICE9IDApIG91dC50aW50ID0gblRTID4gMCA/IG5UUyAvIDMyNzY3IDogblRTIC8gMzI3Njg7XG5cblx0cmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydENvbG9yKGNvbG9yLCBvKSB7XG5cdGlmICghbykgbyA9IG5ld19idWYoOCk7XG5cdGlmICghY29sb3IgfHwgY29sb3IuYXV0bykgeyBvLndyaXRlX3NoaWZ0KDQsIDApOyBvLndyaXRlX3NoaWZ0KDQsIDApOyByZXR1cm4gbzsgfVxuXHRpZiAoY29sb3IuaW5kZXggIT0gbnVsbCkge1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgMHgwMik7XG5cdFx0by53cml0ZV9zaGlmdCgxLCBjb2xvci5pbmRleCk7XG5cdH0gZWxzZSBpZiAoY29sb3IudGhlbWUgIT0gbnVsbCkge1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgMHgwNik7XG5cdFx0by53cml0ZV9zaGlmdCgxLCBjb2xvci50aGVtZSk7XG5cdH0gZWxzZSB7XG5cdFx0by53cml0ZV9zaGlmdCgxLCAweDA1KTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHR9XG5cdHZhciBuVFMgPSBjb2xvci50aW50IHx8IDA7XG5cdGlmIChuVFMgPiAwKSBuVFMgKj0gMzI3Njc7XG5cdGVsc2UgaWYgKG5UUyA8IDApIG5UUyAqPSAzMjc2ODtcblx0by53cml0ZV9zaGlmdCgyLCBuVFMpO1xuXHRpZiAoIWNvbG9yLnJnYiB8fCBjb2xvci50aGVtZSAhPSBudWxsKSB7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgMCk7XG5cdH0gZWxzZSB7XG5cdFx0dmFyIHJnYiA9IChjb2xvci5yZ2IgfHwgJ0ZGRkZGRicpO1xuXHRcdGlmICh0eXBlb2YgcmdiID09ICdudW1iZXInKSByZ2IgPSAoXCIwMDAwMDBcIiArIHJnYi50b1N0cmluZygxNikpLnNsaWNlKC02KTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIHBhcnNlSW50KHJnYi5zbGljZSgwLCAyKSwgMTYpKTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIHBhcnNlSW50KHJnYi5zbGljZSgyLCA0KSwgMTYpKTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIHBhcnNlSW50KHJnYi5zbGljZSg0LCA2KSwgMTYpKTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIDB4RkYpO1xuXHR9XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi41LjUyICovXG5mdW5jdGlvbiBwYXJzZV9Gb250RmxhZ3MoZGF0YS8qOjosIGxlbmd0aCwgb3B0cyovKSB7XG5cdHZhciBkID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHRkYXRhLmwrKztcblx0dmFyIG91dCA9IHtcblx0XHRmQm9sZDogZCAmIDB4MDEsXG5cdFx0Zkl0YWxpYzogZCAmIDB4MDIsXG5cdFx0ZlVuZGVybGluZTogZCAmIDB4MDQsXG5cdFx0ZlN0cmlrZW91dDogZCAmIDB4MDgsXG5cdFx0Zk91dGxpbmU6IGQgJiAweDEwLFxuXHRcdGZTaGFkb3c6IGQgJiAweDIwLFxuXHRcdGZDb25kZW5zZTogZCAmIDB4NDAsXG5cdFx0ZkV4dGVuZDogZCAmIDB4ODBcblx0fTtcblx0cmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIHdyaXRlX0ZvbnRGbGFncyhmb250LCBvKSB7XG5cdGlmICghbykgbyA9IG5ld19idWYoMik7XG5cdHZhciBncmJpdCA9XG5cdFx0KGZvbnQuaXRhbGljID8gMHgwMiA6IDApIHxcblx0XHQoZm9udC5zdHJpa2UgPyAweDA4IDogMCkgfFxuXHRcdChmb250Lm91dGxpbmUgPyAweDEwIDogMCkgfFxuXHRcdChmb250LnNoYWRvdyA/IDB4MjAgOiAwKSB8XG5cdFx0KGZvbnQuY29uZGVuc2UgPyAweDQwIDogMCkgfFxuXHRcdChmb250LmV4dGVuZCA/IDB4ODAgOiAwKTtcblx0by53cml0ZV9zaGlmdCgxLCBncmJpdCk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgMCk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtT0xFRFNdIDIuMy4xIGFuZCAyLjMuMiAqL1xuZnVuY3Rpb24gcGFyc2VfQ2xpcGJvYXJkRm9ybWF0T3JTdHJpbmcobywgdy8qOm51bWJlciovKS8qOnN0cmluZyovIHtcblx0Ly8gJEZsb3dJZ25vcmVcblx0dmFyIENsaXBGbXQgPSB7IDI6IFwiQklUTUFQXCIsIDM6IFwiTUVUQUZJTEVQSUNUXCIsIDg6IFwiRElCXCIsIDE0OiBcIkVOSE1FVEFGSUxFXCIgfTtcblx0dmFyIG0vKjpudW1iZXIqLyA9IG8ucmVhZF9zaGlmdCg0KTtcblx0c3dpdGNoIChtKSB7XG5cdFx0Y2FzZSAweDAwMDAwMDAwOiByZXR1cm4gXCJcIjtcblx0XHRjYXNlIDB4ZmZmZmZmZmY6IGNhc2UgMHhmZmZmZmZmZTogcmV0dXJuIENsaXBGbXRbby5yZWFkX3NoaWZ0KDQpXSB8fCBcIlwiO1xuXHR9XG5cdGlmIChtID4gMHgxOTApIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIENsaXBib2FyZDogXCIgKyBtLnRvU3RyaW5nKDE2KSk7XG5cdG8ubCAtPSA0O1xuXHRyZXR1cm4gby5yZWFkX3NoaWZ0KDAsIHcgPT0gMSA/IFwibHBzdHJcIiA6IFwibHB3c3RyXCIpO1xufVxuZnVuY3Rpb24gcGFyc2VfQ2xpcGJvYXJkRm9ybWF0T3JBbnNpU3RyaW5nKG8pIHsgcmV0dXJuIHBhcnNlX0NsaXBib2FyZEZvcm1hdE9yU3RyaW5nKG8sIDEpOyB9XG5mdW5jdGlvbiBwYXJzZV9DbGlwYm9hcmRGb3JtYXRPclVuaWNvZGVTdHJpbmcobykgeyByZXR1cm4gcGFyc2VfQ2xpcGJvYXJkRm9ybWF0T3JTdHJpbmcobywgMik7IH1cblxuLyogW01TLU9MRVBTXSAyLjIgUHJvcGVydHlUeXBlICovXG4vLyBOb3RlOiBzb21lIHRyZWUgc2hha2VycyBjYW5ub3QgaGFuZGxlIFZUX1ZFQ1RPUiB8ICRDT05TVCwgaGVuY2UgZXh0cmEgdmFyc1xuLy92YXIgVlRfRU1QVFkgICAgPSAweDAwMDA7XG4vL3ZhciBWVF9OVUxMICAgICA9IDB4MDAwMTtcbnZhciBWVF9JMiAgICAgICA9IDB4MDAwMjtcbnZhciBWVF9JNCAgICAgICA9IDB4MDAwMztcbi8vdmFyIFZUX1I0ICAgICAgID0gMHgwMDA0O1xuLy92YXIgVlRfUjggICAgICAgPSAweDAwMDU7XG4vL3ZhciBWVF9DWSAgICAgICA9IDB4MDAwNjtcbi8vdmFyIFZUX0RBVEUgICAgID0gMHgwMDA3O1xuLy92YXIgVlRfQlNUUiAgICAgPSAweDAwMDg7XG4vL3ZhciBWVF9FUlJPUiAgICA9IDB4MDAwQTtcbnZhciBWVF9CT09MICAgICA9IDB4MDAwQjtcbnZhciBWVF9WQVJJQU5UICA9IDB4MDAwQztcbi8vdmFyIFZUX0RFQ0lNQUwgID0gMHgwMDBFO1xuLy92YXIgVlRfSTEgICAgICAgPSAweDAwMTA7XG4vL3ZhciBWVF9VSTEgICAgICA9IDB4MDAxMTtcbi8vdmFyIFZUX1VJMiAgICAgID0gMHgwMDEyO1xudmFyIFZUX1VJNCAgICAgID0gMHgwMDEzO1xuLy92YXIgVlRfSTggICAgICAgPSAweDAwMTQ7XG4vL3ZhciBWVF9VSTggICAgICA9IDB4MDAxNTtcbi8vdmFyIFZUX0lOVCAgICAgID0gMHgwMDE2O1xuLy92YXIgVlRfVUlOVCAgICAgPSAweDAwMTc7XG52YXIgVlRfTFBTVFIgICAgPSAweDAwMUU7XG4vL3ZhciBWVF9MUFdTVFIgICA9IDB4MDAxRjtcbnZhciBWVF9GSUxFVElNRSA9IDB4MDA0MDtcbnZhciBWVF9CTE9CICAgICA9IDB4MDA0MTtcbi8vdmFyIFZUX1NUUkVBTSAgID0gMHgwMDQyO1xuLy92YXIgVlRfU1RPUkFHRSAgPSAweDAwNDM7XG4vL3ZhciBWVF9TVFJFQU1FRF9PYmplY3QgID0gMHgwMDQ0O1xuLy92YXIgVlRfU1RPUkVEX09iamVjdCAgICA9IDB4MDA0NTtcbi8vdmFyIFZUX0JMT0JfT2JqZWN0ICAgICAgPSAweDAwNDY7XG52YXIgVlRfQ0YgICAgICAgPSAweDAwNDc7XG4vL3ZhciBWVF9DTFNJRCAgICA9IDB4MDA0ODtcbi8vdmFyIFZUX1ZFUlNJT05FRF9TVFJFQU0gPSAweDAwNDk7XG52YXIgVlRfVkVDVE9SICAgPSAweDEwMDA7XG52YXIgVlRfVkVDVE9SX1ZBUklBTlQgPSAweDEwMEM7XG52YXIgVlRfVkVDVE9SX0xQU1RSICAgPSAweDEwMUU7XG4vL3ZhciBWVF9BUlJBWSAgICA9IDB4MjAwMDtcblxudmFyIFZUX1NUUklORyAgID0gMHgwMDUwOyAvLyAyLjMuMy4xLjExIFZ0U3RyaW5nXG52YXIgVlRfVVNUUiAgICAgPSAweDAwNTE7IC8vIDIuMy4zLjEuMTIgVnRVbmFsaWduZWRTdHJpbmdcbnZhciBWVF9DVVNUT00gICA9IFtWVF9TVFJJTkcsIFZUX1VTVFJdO1xuXG4vKiBbTVMtT1NIQVJFRF0gMi4zLjMuMi4yLjEgRG9jdW1lbnQgU3VtbWFyeSBJbmZvcm1hdGlvbiBQSUREU0kgKi9cbnZhciBEb2NTdW1tYXJ5UElERFNJID0ge1xuXHQvKjo6WyovMHgwMS8qOjpdKi86IHsgbjogJ0NvZGVQYWdlJywgdDogVlRfSTIgfSxcblx0Lyo6OlsqLzB4MDIvKjo6XSovOiB7IG46ICdDYXRlZ29yeScsIHQ6IFZUX1NUUklORyB9LFxuXHQvKjo6WyovMHgwMy8qOjpdKi86IHsgbjogJ1ByZXNlbnRhdGlvbkZvcm1hdCcsIHQ6IFZUX1NUUklORyB9LFxuXHQvKjo6WyovMHgwNC8qOjpdKi86IHsgbjogJ0J5dGVDb3VudCcsIHQ6IFZUX0k0IH0sXG5cdC8qOjpbKi8weDA1Lyo6Ol0qLzogeyBuOiAnTGluZUNvdW50JywgdDogVlRfSTQgfSxcblx0Lyo6OlsqLzB4MDYvKjo6XSovOiB7IG46ICdQYXJhZ3JhcGhDb3VudCcsIHQ6IFZUX0k0IH0sXG5cdC8qOjpbKi8weDA3Lyo6Ol0qLzogeyBuOiAnU2xpZGVDb3VudCcsIHQ6IFZUX0k0IH0sXG5cdC8qOjpbKi8weDA4Lyo6Ol0qLzogeyBuOiAnTm90ZUNvdW50JywgdDogVlRfSTQgfSxcblx0Lyo6OlsqLzB4MDkvKjo6XSovOiB7IG46ICdIaWRkZW5Db3VudCcsIHQ6IFZUX0k0IH0sXG5cdC8qOjpbKi8weDBhLyo6Ol0qLzogeyBuOiAnTXVsdGltZWRpYUNsaXBDb3VudCcsIHQ6IFZUX0k0IH0sXG5cdC8qOjpbKi8weDBiLyo6Ol0qLzogeyBuOiAnU2NhbGVDcm9wJywgdDogVlRfQk9PTCB9LFxuXHQvKjo6WyovMHgwYy8qOjpdKi86IHsgbjogJ0hlYWRpbmdQYWlycycsIHQ6IFZUX1ZFQ1RPUl9WQVJJQU5UIC8qIFZUX1ZFQ1RPUiB8IFZUX1ZBUklBTlQgKi8gfSxcblx0Lyo6OlsqLzB4MGQvKjo6XSovOiB7IG46ICdUaXRsZXNPZlBhcnRzJywgdDogVlRfVkVDVE9SX0xQU1RSIC8qIFZUX1ZFQ1RPUiB8IFZUX0xQU1RSICovIH0sXG5cdC8qOjpbKi8weDBlLyo6Ol0qLzogeyBuOiAnTWFuYWdlcicsIHQ6IFZUX1NUUklORyB9LFxuXHQvKjo6WyovMHgwZi8qOjpdKi86IHsgbjogJ0NvbXBhbnknLCB0OiBWVF9TVFJJTkcgfSxcblx0Lyo6OlsqLzB4MTAvKjo6XSovOiB7IG46ICdMaW5rc1VwVG9EYXRlJywgdDogVlRfQk9PTCB9LFxuXHQvKjo6WyovMHgxMS8qOjpdKi86IHsgbjogJ0NoYXJhY3RlckNvdW50JywgdDogVlRfSTQgfSxcblx0Lyo6OlsqLzB4MTMvKjo6XSovOiB7IG46ICdTaGFyZWREb2MnLCB0OiBWVF9CT09MIH0sXG5cdC8qOjpbKi8weDE2Lyo6Ol0qLzogeyBuOiAnSHlwZXJsaW5rc0NoYW5nZWQnLCB0OiBWVF9CT09MIH0sXG5cdC8qOjpbKi8weDE3Lyo6Ol0qLzogeyBuOiAnQXBwVmVyc2lvbicsIHQ6IFZUX0k0LCBwOiAndmVyc2lvbicgfSxcblx0Lyo6OlsqLzB4MTgvKjo6XSovOiB7IG46ICdEaWdTaWcnLCB0OiBWVF9CTE9CIH0sXG5cdC8qOjpbKi8weDFBLyo6Ol0qLzogeyBuOiAnQ29udGVudFR5cGUnLCB0OiBWVF9TVFJJTkcgfSxcblx0Lyo6OlsqLzB4MUIvKjo6XSovOiB7IG46ICdDb250ZW50U3RhdHVzJywgdDogVlRfU1RSSU5HIH0sXG5cdC8qOjpbKi8weDFDLyo6Ol0qLzogeyBuOiAnTGFuZ3VhZ2UnLCB0OiBWVF9TVFJJTkcgfSxcblx0Lyo6OlsqLzB4MUQvKjo6XSovOiB7IG46ICdWZXJzaW9uJywgdDogVlRfU1RSSU5HIH0sXG5cdC8qOjpbKi8weEZGLyo6Ol0qLzoge30sXG5cdC8qIFtNUy1PTEVQU10gMi4xOCAqL1xuXHQvKjo6WyovMHg4MDAwMDAwMC8qOjpdKi86IHsgbjogJ0xvY2FsZScsIHQ6IFZUX1VJNCB9LFxuXHQvKjo6WyovMHg4MDAwMDAwMy8qOjpdKi86IHsgbjogJ0JlaGF2aW9yJywgdDogVlRfVUk0IH0sXG5cdC8qOjpbKi8weDcyNjI3MjYyLyo6Ol0qLzoge31cbn07XG5cbi8qIFtNUy1PU0hBUkVEXSAyLjMuMy4yLjEuMSBTdW1tYXJ5IEluZm9ybWF0aW9uIFByb3BlcnR5IFNldCBQSURTSSAqL1xudmFyIFN1bW1hcnlQSURTSSA9IHtcblx0Lyo6OlsqLzB4MDEvKjo6XSovOiB7IG46ICdDb2RlUGFnZScsIHQ6IFZUX0kyIH0sXG5cdC8qOjpbKi8weDAyLyo6Ol0qLzogeyBuOiAnVGl0bGUnLCB0OiBWVF9TVFJJTkcgfSxcblx0Lyo6OlsqLzB4MDMvKjo6XSovOiB7IG46ICdTdWJqZWN0JywgdDogVlRfU1RSSU5HIH0sXG5cdC8qOjpbKi8weDA0Lyo6Ol0qLzogeyBuOiAnQXV0aG9yJywgdDogVlRfU1RSSU5HIH0sXG5cdC8qOjpbKi8weDA1Lyo6Ol0qLzogeyBuOiAnS2V5d29yZHMnLCB0OiBWVF9TVFJJTkcgfSxcblx0Lyo6OlsqLzB4MDYvKjo6XSovOiB7IG46ICdDb21tZW50cycsIHQ6IFZUX1NUUklORyB9LFxuXHQvKjo6WyovMHgwNy8qOjpdKi86IHsgbjogJ1RlbXBsYXRlJywgdDogVlRfU1RSSU5HIH0sXG5cdC8qOjpbKi8weDA4Lyo6Ol0qLzogeyBuOiAnTGFzdEF1dGhvcicsIHQ6IFZUX1NUUklORyB9LFxuXHQvKjo6WyovMHgwOS8qOjpdKi86IHsgbjogJ1Jldk51bWJlcicsIHQ6IFZUX1NUUklORyB9LFxuXHQvKjo6WyovMHgwQS8qOjpdKi86IHsgbjogJ0VkaXRUaW1lJywgdDogVlRfRklMRVRJTUUgfSxcblx0Lyo6OlsqLzB4MEIvKjo6XSovOiB7IG46ICdMYXN0UHJpbnRlZCcsIHQ6IFZUX0ZJTEVUSU1FIH0sXG5cdC8qOjpbKi8weDBDLyo6Ol0qLzogeyBuOiAnQ3JlYXRlZERhdGUnLCB0OiBWVF9GSUxFVElNRSB9LFxuXHQvKjo6WyovMHgwRC8qOjpdKi86IHsgbjogJ01vZGlmaWVkRGF0ZScsIHQ6IFZUX0ZJTEVUSU1FIH0sXG5cdC8qOjpbKi8weDBFLyo6Ol0qLzogeyBuOiAnUGFnZUNvdW50JywgdDogVlRfSTQgfSxcblx0Lyo6OlsqLzB4MEYvKjo6XSovOiB7IG46ICdXb3JkQ291bnQnLCB0OiBWVF9JNCB9LFxuXHQvKjo6WyovMHgxMC8qOjpdKi86IHsgbjogJ0NoYXJDb3VudCcsIHQ6IFZUX0k0IH0sXG5cdC8qOjpbKi8weDExLyo6Ol0qLzogeyBuOiAnVGh1bWJuYWlsJywgdDogVlRfQ0YgfSxcblx0Lyo6OlsqLzB4MTIvKjo6XSovOiB7IG46ICdBcHBsaWNhdGlvbicsIHQ6IFZUX1NUUklORyB9LFxuXHQvKjo6WyovMHgxMy8qOjpdKi86IHsgbjogJ0RvY1NlY3VyaXR5JywgdDogVlRfSTQgfSxcblx0Lyo6OlsqLzB4RkYvKjo6XSovOiB7fSxcblx0LyogW01TLU9MRVBTXSAyLjE4ICovXG5cdC8qOjpbKi8weDgwMDAwMDAwLyo6Ol0qLzogeyBuOiAnTG9jYWxlJywgdDogVlRfVUk0IH0sXG5cdC8qOjpbKi8weDgwMDAwMDAzLyo6Ol0qLzogeyBuOiAnQmVoYXZpb3InLCB0OiBWVF9VSTQgfSxcblx0Lyo6OlsqLzB4NzI2MjcyNjIvKjo6XSovOiB7fVxufTtcblxuLyogW01TLVhMU10gMi40LjYzIENvdW50cnkvUmVnaW9uIGNvZGVzICovXG52YXIgQ291bnRyeUVudW0gPSB7XG5cdC8qOjpbKi8weDAwMDEvKjo6XSovOiBcIlVTXCIsIC8vIFVuaXRlZCBTdGF0ZXNcblx0Lyo6OlsqLzB4MDAwMi8qOjpdKi86IFwiQ0FcIiwgLy8gQ2FuYWRhXG5cdC8qOjpbKi8weDAwMDMvKjo6XSovOiBcIlwiLCAvLyBMYXRpbiBBbWVyaWNhIChleGNlcHQgQnJhemlsKVxuXHQvKjo6WyovMHgwMDA3Lyo6Ol0qLzogXCJSVVwiLCAvLyBSdXNzaWFcblx0Lyo6OlsqLzB4MDAxNC8qOjpdKi86IFwiRUdcIiwgLy8gRWd5cHRcblx0Lyo6OlsqLzB4MDAxRS8qOjpdKi86IFwiR1JcIiwgLy8gR3JlZWNlXG5cdC8qOjpbKi8weDAwMUYvKjo6XSovOiBcIk5MXCIsIC8vIE5ldGhlcmxhbmRzXG5cdC8qOjpbKi8weDAwMjAvKjo6XSovOiBcIkJFXCIsIC8vIEJlbGdpdW1cblx0Lyo6OlsqLzB4MDAyMS8qOjpdKi86IFwiRlJcIiwgLy8gRnJhbmNlXG5cdC8qOjpbKi8weDAwMjIvKjo6XSovOiBcIkVTXCIsIC8vIFNwYWluXG5cdC8qOjpbKi8weDAwMjQvKjo6XSovOiBcIkhVXCIsIC8vIEh1bmdhcnlcblx0Lyo6OlsqLzB4MDAyNy8qOjpdKi86IFwiSVRcIiwgLy8gSXRhbHlcblx0Lyo6OlsqLzB4MDAyOS8qOjpdKi86IFwiQ0hcIiwgLy8gU3dpdHplcmxhbmRcblx0Lyo6OlsqLzB4MDAyQi8qOjpdKi86IFwiQVRcIiwgLy8gQXVzdHJpYVxuXHQvKjo6WyovMHgwMDJDLyo6Ol0qLzogXCJHQlwiLCAvLyBVbml0ZWQgS2luZ2RvbVxuXHQvKjo6WyovMHgwMDJELyo6Ol0qLzogXCJES1wiLCAvLyBEZW5tYXJrXG5cdC8qOjpbKi8weDAwMkUvKjo6XSovOiBcIlNFXCIsIC8vIFN3ZWRlblxuXHQvKjo6WyovMHgwMDJGLyo6Ol0qLzogXCJOT1wiLCAvLyBOb3J3YXlcblx0Lyo6OlsqLzB4MDAzMC8qOjpdKi86IFwiUExcIiwgLy8gUG9sYW5kXG5cdC8qOjpbKi8weDAwMzEvKjo6XSovOiBcIkRFXCIsIC8vIEdlcm1hbnlcblx0Lyo6OlsqLzB4MDAzNC8qOjpdKi86IFwiTVhcIiwgLy8gTWV4aWNvXG5cdC8qOjpbKi8weDAwMzcvKjo6XSovOiBcIkJSXCIsIC8vIEJyYXppbFxuXHQvKjo6WyovMHgwMDNkLyo6Ol0qLzogXCJBVVwiLCAvLyBBdXN0cmFsaWFcblx0Lyo6OlsqLzB4MDA0MC8qOjpdKi86IFwiTlpcIiwgLy8gTmV3IFplYWxhbmRcblx0Lyo6OlsqLzB4MDA0Mi8qOjpdKi86IFwiVEhcIiwgLy8gVGhhaWxhbmRcblx0Lyo6OlsqLzB4MDA1MS8qOjpdKi86IFwiSlBcIiwgLy8gSmFwYW5cblx0Lyo6OlsqLzB4MDA1Mi8qOjpdKi86IFwiS1JcIiwgLy8gS29yZWFcblx0Lyo6OlsqLzB4MDA1NC8qOjpdKi86IFwiVk5cIiwgLy8gVmlldCBOYW1cblx0Lyo6OlsqLzB4MDA1Ni8qOjpdKi86IFwiQ05cIiwgLy8gQ2hpbmFcblx0Lyo6OlsqLzB4MDA1QS8qOjpdKi86IFwiVFJcIiwgLy8gVHVya2V5XG5cdC8qOjpbKi8weDAwNjkvKjo6XSovOiBcIkpTXCIsIC8vIFJhbWFzdGFuXG5cdC8qOjpbKi8weDAwRDUvKjo6XSovOiBcIkRaXCIsIC8vIEFsZ2VyaWFcblx0Lyo6OlsqLzB4MDBEOC8qOjpdKi86IFwiTUFcIiwgLy8gTW9yb2Njb1xuXHQvKjo6WyovMHgwMERBLyo6Ol0qLzogXCJMWVwiLCAvLyBMaWJ5YVxuXHQvKjo6WyovMHgwMTVGLyo6Ol0qLzogXCJQVFwiLCAvLyBQb3J0dWdhbFxuXHQvKjo6WyovMHgwMTYyLyo6Ol0qLzogXCJJU1wiLCAvLyBJY2VsYW5kXG5cdC8qOjpbKi8weDAxNjYvKjo6XSovOiBcIkZJXCIsIC8vIEZpbmxhbmRcblx0Lyo6OlsqLzB4MDFBNC8qOjpdKi86IFwiQ1pcIiwgLy8gQ3plY2ggUmVwdWJsaWNcblx0Lyo6OlsqLzB4MDM3Ni8qOjpdKi86IFwiVFdcIiwgLy8gVGFpd2FuXG5cdC8qOjpbKi8weDAzQzEvKjo6XSovOiBcIkxCXCIsIC8vIExlYmFub25cblx0Lyo6OlsqLzB4MDNDMi8qOjpdKi86IFwiSk9cIiwgLy8gSm9yZGFuXG5cdC8qOjpbKi8weDAzQzMvKjo6XSovOiBcIlNZXCIsIC8vIFN5cmlhXG5cdC8qOjpbKi8weDAzQzQvKjo6XSovOiBcIklRXCIsIC8vIElyYXFcblx0Lyo6OlsqLzB4MDNDNS8qOjpdKi86IFwiS1dcIiwgLy8gS3V3YWl0XG5cdC8qOjpbKi8weDAzQzYvKjo6XSovOiBcIlNBXCIsIC8vIFNhdWRpIEFyYWJpYVxuXHQvKjo6WyovMHgwM0NCLyo6Ol0qLzogXCJBRVwiLCAvLyBVbml0ZWQgQXJhYiBFbWlyYXRlc1xuXHQvKjo6WyovMHgwM0NDLyo6Ol0qLzogXCJJTFwiLCAvLyBJc3JhZWxcblx0Lyo6OlsqLzB4MDNDRS8qOjpdKi86IFwiUUFcIiwgLy8gUWF0YXJcblx0Lyo6OlsqLzB4MDNENS8qOjpdKi86IFwiSVJcIiwgLy8gSXJhblxuXHQvKjo6WyovMHhGRkZGLyo6Ol0qLzogXCJVU1wiICAvLyBVbml0ZWQgU3RhdGVzXG59O1xuXG4vKiBbTVMtWExTXSAyLjUuMTI3ICovXG52YXIgWExTRmlsbFBhdHRlcm4gPSBbXG5cdG51bGwsXG5cdCdzb2xpZCcsXG5cdCdtZWRpdW1HcmF5Jyxcblx0J2RhcmtHcmF5Jyxcblx0J2xpZ2h0R3JheScsXG5cdCdkYXJrSG9yaXpvbnRhbCcsXG5cdCdkYXJrVmVydGljYWwnLFxuXHQnZGFya0Rvd24nLFxuXHQnZGFya1VwJyxcblx0J2RhcmtHcmlkJyxcblx0J2RhcmtUcmVsbGlzJyxcblx0J2xpZ2h0SG9yaXpvbnRhbCcsXG5cdCdsaWdodFZlcnRpY2FsJyxcblx0J2xpZ2h0RG93bicsXG5cdCdsaWdodFVwJyxcblx0J2xpZ2h0R3JpZCcsXG5cdCdsaWdodFRyZWxsaXMnLFxuXHQnZ3JheTEyNScsXG5cdCdncmF5MDYyNSdcbl07XG5cbmZ1bmN0aW9uIHJnYmlmeShhcnIvKjpBcnJheTxudW1iZXI+Ki8pLyo6QXJyYXk8W251bWJlciwgbnVtYmVyLCBudW1iZXJdPiovIHsgcmV0dXJuIGFyci5tYXAoZnVuY3Rpb24oeCkgeyByZXR1cm4gWyh4Pj4xNikmMjU1LCh4Pj44KSYyNTUseCYyNTVdOyB9KTsgfVxuXG4vKiBbTVMtWExTXSAyLjUuMTYxICovXG4vKiBbTVMtWExTQl0gMi41Ljc1IEljdiAqL1xudmFyIF9YTFNJY3YgPSAvKiNfX1BVUkVfXyovIHJnYmlmeShbXG5cdC8qIENvbG9yIENvbnN0YW50cyAqL1xuXHQweDAwMDAwMCxcblx0MHhGRkZGRkYsXG5cdDB4RkYwMDAwLFxuXHQweDAwRkYwMCxcblx0MHgwMDAwRkYsXG5cdDB4RkZGRjAwLFxuXHQweEZGMDBGRixcblx0MHgwMEZGRkYsXG5cblx0LyogT3ZlcnJpZGFibGUgRGVmYXVsdHMgKi9cblx0MHgwMDAwMDAsXG5cdDB4RkZGRkZGLFxuXHQweEZGMDAwMCxcblx0MHgwMEZGMDAsXG5cdDB4MDAwMEZGLFxuXHQweEZGRkYwMCxcblx0MHhGRjAwRkYsXG5cdDB4MDBGRkZGLFxuXG5cdDB4ODAwMDAwLFxuXHQweDAwODAwMCxcblx0MHgwMDAwODAsXG5cdDB4ODA4MDAwLFxuXHQweDgwMDA4MCxcblx0MHgwMDgwODAsXG5cdDB4QzBDMEMwLFxuXHQweDgwODA4MCxcblx0MHg5OTk5RkYsXG5cdDB4OTkzMzY2LFxuXHQweEZGRkZDQyxcblx0MHhDQ0ZGRkYsXG5cdDB4NjYwMDY2LFxuXHQweEZGODA4MCxcblx0MHgwMDY2Q0MsXG5cdDB4Q0NDQ0ZGLFxuXG5cdDB4MDAwMDgwLFxuXHQweEZGMDBGRixcblx0MHhGRkZGMDAsXG5cdDB4MDBGRkZGLFxuXHQweDgwMDA4MCxcblx0MHg4MDAwMDAsXG5cdDB4MDA4MDgwLFxuXHQweDAwMDBGRixcblx0MHgwMENDRkYsXG5cdDB4Q0NGRkZGLFxuXHQweENDRkZDQyxcblx0MHhGRkZGOTksXG5cdDB4OTlDQ0ZGLFxuXHQweEZGOTlDQyxcblx0MHhDQzk5RkYsXG5cdDB4RkZDQzk5LFxuXG5cdDB4MzM2NkZGLFxuXHQweDMzQ0NDQyxcblx0MHg5OUNDMDAsXG5cdDB4RkZDQzAwLFxuXHQweEZGOTkwMCxcblx0MHhGRjY2MDAsXG5cdDB4NjY2Njk5LFxuXHQweDk2OTY5Nixcblx0MHgwMDMzNjYsXG5cdDB4MzM5OTY2LFxuXHQweDAwMzMwMCxcblx0MHgzMzMzMDAsXG5cdDB4OTkzMzAwLFxuXHQweDk5MzM2Nixcblx0MHgzMzMzOTksXG5cdDB4MzMzMzMzLFxuXG5cdC8qIE90aGVyIGVudHJpZXMgdG8gYXBwZWFzZSBCSUZGOC8xMiAqL1xuXHQweEZGRkZGRiwgLyogMHg0MCBpY3ZGb3JlZ3JvdW5kID8/ICovXG5cdDB4MDAwMDAwLCAvKiAweDQxIGljdkJhY2tncm91bmQgPz8gKi9cblx0MHgwMDAwMDAsIC8qIDB4NDIgaWN2RnJhbWUgPz8gKi9cblx0MHgwMDAwMDAsIC8qIDB4NDMgaWN2M0QgPz8gKi9cblx0MHgwMDAwMDAsIC8qIDB4NDQgaWN2M0RUZXh0ID8/ICovXG5cdDB4MDAwMDAwLCAvKiAweDQ1IGljdjNESGlsaXRlID8/ICovXG5cdDB4MDAwMDAwLCAvKiAweDQ2IGljdjNEU2hhZG93ID8/ICovXG5cdDB4MDAwMDAwLCAvKiAweDQ3IGljdkhpbGl0ZSA/PyAqL1xuXHQweDAwMDAwMCwgLyogMHg0OCBpY3ZDdGxUZXh0ID8/ICovXG5cdDB4MDAwMDAwLCAvKiAweDQ5IGljdkN0bFNjcmwgPz8gKi9cblx0MHgwMDAwMDAsIC8qIDB4NEEgaWN2Q3RsSW52ID8/ICovXG5cdDB4MDAwMDAwLCAvKiAweDRCIGljdkN0bEJvZHkgPz8gKi9cblx0MHgwMDAwMDAsIC8qIDB4NEMgaWN2Q3RsRnJhbWUgPz8gKi9cblx0MHgwMDAwMDAsIC8qIDB4NEQgaWN2Q3RsRm9yZSA/PyAqL1xuXHQweDAwMDAwMCwgLyogMHg0RSBpY3ZDdGxCYWNrID8/ICovXG5cdDB4MDAwMDAwLCAvKiAweDRGIGljdkN0bE5ldXRyYWwgKi9cblx0MHgwMDAwMDAsIC8qIDB4NTAgaWN2SW5mb0JrID8/ICovXG5cdDB4MDAwMDAwIC8qIDB4NTEgaWN2SW5mb1RleHQgPz8gKi9cbl0pO1xudmFyIFhMU0ljdiA9IC8qI19fUFVSRV9fKi9kdXAoX1hMU0ljdik7XG5cbi8qIFtNUy1YTFNCXSAyLjUuOTcuMiAqL1xudmFyIEJFcnIgPSB7XG5cdC8qOjpbKi8weDAwLyo6Ol0qLzogXCIjTlVMTCFcIixcblx0Lyo6OlsqLzB4MDcvKjo6XSovOiBcIiNESVYvMCFcIixcblx0Lyo6OlsqLzB4MEYvKjo6XSovOiBcIiNWQUxVRSFcIixcblx0Lyo6OlsqLzB4MTcvKjo6XSovOiBcIiNSRUYhXCIsXG5cdC8qOjpbKi8weDFELyo6Ol0qLzogXCIjTkFNRT9cIixcblx0Lyo6OlsqLzB4MjQvKjo6XSovOiBcIiNOVU0hXCIsXG5cdC8qOjpbKi8weDJBLyo6Ol0qLzogXCIjTi9BXCIsXG5cdC8qOjpbKi8weDJCLyo6Ol0qLzogXCIjR0VUVElOR19EQVRBXCIsXG5cdC8qOjpbKi8weEZGLyo6Ol0qLzogXCIjV1RGP1wiXG59O1xuLy92YXIgUkJFcnIgPSBldmVydF9udW0oQkVycik7XG52YXIgUkJFcnIgPSB7XG5cdFwiI05VTEwhXCI6ICAgICAgICAweDAwLFxuXHRcIiNESVYvMCFcIjogICAgICAgMHgwNyxcblx0XCIjVkFMVUUhXCI6ICAgICAgIDB4MEYsXG5cdFwiI1JFRiFcIjogICAgICAgICAweDE3LFxuXHRcIiNOQU1FP1wiOiAgICAgICAgMHgxRCxcblx0XCIjTlVNIVwiOiAgICAgICAgIDB4MjQsXG5cdFwiI04vQVwiOiAgICAgICAgICAweDJBLFxuXHRcIiNHRVRUSU5HX0RBVEFcIjogMHgyQixcblx0XCIjV1RGP1wiOiAgICAgICAgIDB4RkZcbn07XG5cbi8qIFBhcnRzIGVudW1lcmF0ZWQgaW4gT1BDIHNwZWMsIE1TLVhMU0IgYW5kIE1TLVhMU1ggKi9cbi8qIDEyLjMgUGFydCBTdW1tYXJ5IDxTcHJlYWRzaGVldE1MPiAqL1xuLyogMTQuMiBQYXJ0IFN1bW1hcnkgPERyYXdpbmdNTD4gKi9cbi8qIFtNUy1YTFNYXSAyLjEgUGFydCBFbnVtZXJhdGlvbnMgOyBbTVMtWExTQl0gMi4xLjcgUGFydCBFbnVtZXJhdGlvbiAqL1xudmFyIGN0MnR5cGUvKntbc3RyaW5nXTpzdHJpbmd9Ki8gPSAoe1xuXHQvKiBXb3JrYm9vayAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0Lm1haW4reG1sXCI6IFwid29ya2Jvb2tzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0Lm1hY3JvRW5hYmxlZC5tYWluK3htbFwiOiBcIndvcmtib29rc1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5iaW5hcnkubWFjcm9FbmFibGVkLm1haW5cIjogXCJ3b3JrYm9va3NcIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuYWRkaW4ubWFjcm9FbmFibGVkLm1haW4reG1sXCI6IFwid29ya2Jvb2tzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGVtcGxhdGUubWFpbit4bWxcIjogXCJ3b3JrYm9va3NcIixcblxuXHQvKiBXb3Jrc2hlZXQgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC53b3Jrc2hlZXQreG1sXCI6IFwic2hlZXRzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLndvcmtzaGVldFwiOiBcInNoZWV0c1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5iaW5JbmRleFdzXCI6IFwiVE9ET1wiLCAvKiBCaW5hcnkgSW5kZXggKi9cblxuXHQvKiBDaGFydHNoZWV0ICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY2hhcnRzaGVldCt4bWxcIjogXCJjaGFydHNcIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY2hhcnRzaGVldFwiOiBcImNoYXJ0c1wiLFxuXG5cdC8qIE1hY3Jvc2hlZXQgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwubWFjcm9zaGVldCt4bWxcIjogXCJtYWNyb3NcIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwubWFjcm9zaGVldFwiOiBcIm1hY3Jvc1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5pbnRsbWFjcm9zaGVldFwiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuYmluSW5kZXhNc1wiOiBcIlRPRE9cIiwgLyogQmluYXJ5IEluZGV4ICovXG5cblx0LyogRGlhbG9nc2hlZXQgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5kaWFsb2dzaGVldCt4bWxcIjogXCJkaWFsb2dzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmRpYWxvZ3NoZWV0XCI6IFwiZGlhbG9nc1wiLFxuXG5cdC8qIFNoYXJlZCBTdHJpbmdzICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hhcmVkU3RyaW5ncyt4bWxcIjogXCJzdHJzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoYXJlZFN0cmluZ3NcIjogXCJzdHJzXCIsXG5cblx0LyogU3R5bGVzICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc3R5bGVzK3htbFwiOiBcInN0eWxlc1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zdHlsZXNcIjogXCJzdHlsZXNcIixcblxuXHQvKiBGaWxlIFByb3BlcnRpZXMgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5jb3JlLXByb3BlcnRpZXMreG1sXCI6IFwiY29yZXByb3BzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmN1c3RvbS1wcm9wZXJ0aWVzK3htbFwiOiBcImN1c3Rwcm9wc1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5leHRlbmRlZC1wcm9wZXJ0aWVzK3htbFwiOiBcImV4dHByb3BzXCIsXG5cblx0LyogQ3VzdG9tIERhdGEgUHJvcGVydGllcyAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5jdXN0b21YbWxQcm9wZXJ0aWVzK3htbFwiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jdXN0b21Qcm9wZXJ0eVwiOiBcIlRPRE9cIixcblxuXHQvKiBDb21tZW50cyAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNvbW1lbnRzK3htbFwiOiBcImNvbW1lbnRzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNvbW1lbnRzXCI6IFwiY29tbWVudHNcIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudGhyZWFkZWRjb21tZW50cyt4bWxcIjogXCJ0aHJlYWRlZGNvbW1lbnRzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnBlcnNvbit4bWxcIjogXCJwZW9wbGVcIixcblxuXHQvKiBNZXRhZGF0YSAoU3RvY2svR2VvZ3JhcGh5IGFuZCBEeW5hbWljIEFycmF5KSAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0TWV0YWRhdGEreG1sXCI6IFwibWV0YWRhdGFcIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXRNZXRhZGF0YVwiOiBcIm1ldGFkYXRhXCIsXG5cblx0LyogUGl2b3RUYWJsZSAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5waXZvdFRhYmxlXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnBpdm90VGFibGUreG1sXCI6IFwiVE9ET1wiLFxuXG5cdC8qIENoYXJ0IE9iamVjdHMgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmNoYXJ0K3htbFwiOiBcIlRPRE9cIixcblxuXHQvKiBDaGFydCBDb2xvcnMgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmNoYXJ0Y29sb3JzdHlsZSt4bWxcIjogXCJUT0RPXCIsXG5cblx0LyogQ2hhcnQgU3R5bGUgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmNoYXJ0c3R5bGUreG1sXCI6IFwiVE9ET1wiLFxuXG5cdC8qIENoYXJ0IEFkdmFuY2VkICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS5jaGFydGV4K3htbFwiOiBcIlRPRE9cIixcblxuXHQvKiBDYWxjdWxhdGlvbiBDaGFpbiAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5jYWxjQ2hhaW5cIjogXCJjYWxjY2hhaW5zXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY2FsY0NoYWluK3htbFwiOiBcImNhbGNjaGFpbnNcIixcblxuXHQvKiBQcmludGVyIFNldHRpbmdzICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucHJpbnRlclNldHRpbmdzXCI6IFwiVE9ET1wiLFxuXG5cdC8qIEFjdGl2ZVggKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmFjdGl2ZVhcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS5hY3RpdmVYK3htbFwiOiBcIlRPRE9cIixcblxuXHQvKiBDdXN0b20gVG9vbGJhcnMgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuYXR0YWNoZWRUb29sYmFyc1wiOiBcIlRPRE9cIixcblxuXHQvKiBFeHRlcm5hbCBEYXRhIENvbm5lY3Rpb25zICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNvbm5lY3Rpb25zXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNvbm5lY3Rpb25zK3htbFwiOiBcIlRPRE9cIixcblxuXHQvKiBFeHRlcm5hbCBMaW5rcyAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5leHRlcm5hbExpbmtcIjogXCJsaW5rc1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmV4dGVybmFsTGluayt4bWxcIjogXCJsaW5rc1wiLFxuXG5cdC8qIFBpdm90Q2FjaGUgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucGl2b3RDYWNoZURlZmluaXRpb25cIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnBpdm90Q2FjaGVSZWNvcmRzXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnBpdm90Q2FjaGVEZWZpbml0aW9uK3htbFwiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5waXZvdENhY2hlUmVjb3Jkcyt4bWxcIjogXCJUT0RPXCIsXG5cblx0LyogUXVlcnkgVGFibGUgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucXVlcnlUYWJsZVwiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5xdWVyeVRhYmxlK3htbFwiOiBcIlRPRE9cIixcblxuXHQvKiBTaGFyZWQgV29ya2Jvb2sgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudXNlck5hbWVzXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5yZXZpc2lvbkhlYWRlcnNcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnJldmlzaW9uTG9nXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnJldmlzaW9uSGVhZGVycyt4bWxcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucmV2aXNpb25Mb2creG1sXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnVzZXJOYW1lcyt4bWxcIjogXCJUT0RPXCIsXG5cblx0LyogU2luZ2xlIENlbGwgVGFibGUgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudGFibGVTaW5nbGVDZWxsc1wiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50YWJsZVNpbmdsZUNlbGxzK3htbFwiOiBcIlRPRE9cIixcblxuXHQvKiBTbGljZXIgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2xpY2VyXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zbGljZXJDYWNoZVwiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2xpY2VyK3htbFwiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2xpY2VyQ2FjaGUreG1sXCI6IFwiVE9ET1wiLFxuXG5cdC8qIFNvcnQgTWFwICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLndzU29ydE1hcFwiOiBcIlRPRE9cIixcblxuXHQvKiBUYWJsZSAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC50YWJsZVwiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50YWJsZSt4bWxcIjogXCJUT0RPXCIsXG5cblx0LyogVGhlbWVzICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnRoZW1lK3htbFwiOiBcInRoZW1lc1wiLFxuXG5cdC8qIFRoZW1lIE92ZXJyaWRlICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnRoZW1lT3ZlcnJpZGUreG1sXCI6IFwiVE9ET1wiLFxuXG5cdC8qIFRpbWVsaW5lICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLlRpbWVsaW5lK3htbFwiOiBcIlRPRE9cIiwgLyogdmVyaWZ5ICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLlRpbWVsaW5lQ2FjaGUreG1sXCI6IFwiVE9ET1wiLCAvKiB2ZXJpZnkgKi9cblxuXHQvKiBWQkEgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLnZiYVByb2plY3RcIjogXCJ2YmFcIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLnZiYVByb2plY3RTaWduYXR1cmVcIjogXCJUT0RPXCIsXG5cblx0LyogVm9sYXRpbGUgRGVwZW5kZW5jaWVzICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS52b2xhdGlsZURlcGVuZGVuY2llc1wiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC52b2xhdGlsZURlcGVuZGVuY2llcyt4bWxcIjogXCJUT0RPXCIsXG5cblx0LyogQ29udHJvbCBQcm9wZXJ0aWVzICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNvbnRyb2xwcm9wZXJ0aWVzK3htbFwiOiBcIlRPRE9cIixcblxuXHQvKiBEYXRhIE1vZGVsICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50Lm1vZGVsK2RhdGFcIjogXCJUT0RPXCIsXG5cblx0LyogU3VydmV5ICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLlN1cnZleSt4bWxcIjogXCJUT0RPXCIsXG5cblx0LyogRHJhd2luZyAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nK3htbFwiOiBcImRyYXdpbmdzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5jaGFydHNoYXBlcyt4bWxcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFncmFtQ29sb3JzK3htbFwiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1EYXRhK3htbFwiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1MYXlvdXQreG1sXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbVN0eWxlK3htbFwiOiBcIlRPRE9cIixcblxuXHQvKiBWTUwgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQudm1sRHJhd2luZ1wiOiBcIlRPRE9cIixcblxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLnJlbGF0aW9uc2hpcHMreG1sXCI6IFwicmVsc1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5vbGVPYmplY3RcIjogXCJUT0RPXCIsXG5cblx0LyogSW1hZ2UgKi9cblx0XCJpbWFnZS9wbmdcIjogXCJUT0RPXCIsXG5cblx0XCJzaGVldFwiOiBcImpzXCJcbn0vKjphbnkqLyk7XG5cbnZhciBDVF9MSVNUID0ge1xuXHRcdHdvcmtib29rczoge1xuXHRcdFx0eGxzeDogXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldC5tYWluK3htbFwiLFxuXHRcdFx0eGxzbTogXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQubWFjcm9FbmFibGVkLm1haW4reG1sXCIsXG5cdFx0XHR4bHNiOiBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5iaW5hcnkubWFjcm9FbmFibGVkLm1haW5cIixcblx0XHRcdHhsYW06IFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmFkZGluLm1hY3JvRW5hYmxlZC5tYWluK3htbFwiLFxuXHRcdFx0eGx0eDogXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50ZW1wbGF0ZS5tYWluK3htbFwiXG5cdFx0fSxcblx0XHRzdHJzOiB7IC8qIFNoYXJlZCBTdHJpbmdzICovXG5cdFx0XHR4bHN4OiBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoYXJlZFN0cmluZ3MreG1sXCIsXG5cdFx0XHR4bHNiOiBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGFyZWRTdHJpbmdzXCJcblx0XHR9LFxuXHRcdGNvbW1lbnRzOiB7IC8qIENvbW1lbnRzICovXG5cdFx0XHR4bHN4OiBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNvbW1lbnRzK3htbFwiLFxuXHRcdFx0eGxzYjogXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY29tbWVudHNcIlxuXHRcdH0sXG5cdFx0c2hlZXRzOiB7IC8qIFdvcmtzaGVldCAqL1xuXHRcdFx0eGxzeDogXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC53b3Jrc2hlZXQreG1sXCIsXG5cdFx0XHR4bHNiOiBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC53b3Jrc2hlZXRcIlxuXHRcdH0sXG5cdFx0Y2hhcnRzOiB7IC8qIENoYXJ0c2hlZXQgKi9cblx0XHRcdHhsc3g6IFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY2hhcnRzaGVldCt4bWxcIixcblx0XHRcdHhsc2I6IFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNoYXJ0c2hlZXRcIlxuXHRcdH0sXG5cdFx0ZGlhbG9nczogeyAvKiBEaWFsb2dzaGVldCAqL1xuXHRcdFx0eGxzeDogXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5kaWFsb2dzaGVldCt4bWxcIixcblx0XHRcdHhsc2I6IFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmRpYWxvZ3NoZWV0XCJcblx0XHR9LFxuXHRcdG1hY3JvczogeyAvKiBNYWNyb3NoZWV0IChFeGNlbCA0LjAgTWFjcm9zKSAqL1xuXHRcdFx0eGxzeDogXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwubWFjcm9zaGVldCt4bWxcIixcblx0XHRcdHhsc2I6IFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLm1hY3Jvc2hlZXRcIlxuXHRcdH0sXG5cdFx0bWV0YWRhdGE6IHsgLyogTWV0YWRhdGEgKFN0b2NrL0dlb2dyYXBoeSBhbmQgRHluYW1pYyBBcnJheSkgKi9cblx0XHRcdHhsc3g6IFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXRNZXRhZGF0YSt4bWxcIixcblx0XHRcdHhsc2I6IFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0TWV0YWRhdGFcIlxuXHRcdH0sXG5cdFx0c3R5bGVzOiB7IC8qIFN0eWxlcyAqL1xuXHRcdFx0eGxzeDogXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zdHlsZXMreG1sXCIsXG5cdFx0XHR4bHNiOiBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zdHlsZXNcIlxuXHRcdH1cbn07XG5cbmZ1bmN0aW9uIG5ld19jdCgpLyo6YW55Ki8ge1xuXHRyZXR1cm4gKHtcblx0XHR3b3JrYm9va3M6W10sIHNoZWV0czpbXSwgY2hhcnRzOltdLCBkaWFsb2dzOltdLCBtYWNyb3M6W10sXG5cdFx0cmVsczpbXSwgc3RyczpbXSwgY29tbWVudHM6W10sIHRocmVhZGVkY29tbWVudHM6W10sIGxpbmtzOltdLFxuXHRcdGNvcmVwcm9wczpbXSwgZXh0cHJvcHM6W10sIGN1c3Rwcm9wczpbXSwgdGhlbWVzOltdLCBzdHlsZXM6W10sXG5cdFx0Y2FsY2NoYWluczpbXSwgdmJhOiBbXSwgZHJhd2luZ3M6IFtdLCBtZXRhZGF0YTogW10sIHBlb3BsZTpbXSxcblx0XHRUT0RPOltdLCB4bWxuczogXCJcIiB9Lyo6YW55Ki8pO1xufVxuXG5mdW5jdGlvbiBwYXJzZV9jdChkYXRhLyo6P3N0cmluZyovKSB7XG5cdHZhciBjdCA9IG5ld19jdCgpO1xuXHRpZighZGF0YSB8fCAhZGF0YS5tYXRjaCkgcmV0dXJuIGN0O1xuXHR2YXIgY3RleHQgPSB7fTtcblx0KGRhdGEubWF0Y2godGFncmVnZXgpfHxbXSkuZm9yRWFjaChmdW5jdGlvbih4KSB7XG5cdFx0dmFyIHkgPSBwYXJzZXhtbHRhZyh4KTtcblx0XHRzd2l0Y2goeVswXS5yZXBsYWNlKG5zcmVnZXgsXCI8XCIpKSB7XG5cdFx0XHRjYXNlICc8P3htbCc6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPFR5cGVzJzogY3QueG1sbnMgPSB5Wyd4bWxucycgKyAoeVswXS5tYXRjaCgvPChcXHcrKTovKXx8W1wiXCIsXCJcIl0pWzFdIF07IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPERlZmF1bHQnOiBjdGV4dFt5LkV4dGVuc2lvbl0gPSB5LkNvbnRlbnRUeXBlOyBicmVhaztcblx0XHRcdGNhc2UgJzxPdmVycmlkZSc6XG5cdFx0XHRcdGlmKGN0W2N0MnR5cGVbeS5Db250ZW50VHlwZV1dICE9PSB1bmRlZmluZWQpIGN0W2N0MnR5cGVbeS5Db250ZW50VHlwZV1dLnB1c2goeS5QYXJ0TmFtZSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fSk7XG5cdGlmKGN0LnhtbG5zICE9PSBYTUxOUy5DVCkgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBOYW1lc3BhY2U6IFwiICsgY3QueG1sbnMpO1xuXHRjdC5jYWxjY2hhaW4gPSBjdC5jYWxjY2hhaW5zLmxlbmd0aCA+IDAgPyBjdC5jYWxjY2hhaW5zWzBdIDogXCJcIjtcblx0Y3Quc3N0ID0gY3Quc3Rycy5sZW5ndGggPiAwID8gY3Quc3Ryc1swXSA6IFwiXCI7XG5cdGN0LnN0eWxlID0gY3Quc3R5bGVzLmxlbmd0aCA+IDAgPyBjdC5zdHlsZXNbMF0gOiBcIlwiO1xuXHRjdC5kZWZhdWx0cyA9IGN0ZXh0O1xuXHRkZWxldGUgY3QuY2FsY2NoYWlucztcblx0cmV0dXJuIGN0O1xufVxuXG5mdW5jdGlvbiB3cml0ZV9jdChjdCwgb3B0cykvKjpzdHJpbmcqLyB7XG5cdHZhciB0eXBlMmN0Lyp7W3N0cmluZ106QXJyYXk8c3RyaW5nPn0qLyA9IGV2ZXJ0X2FycihjdDJ0eXBlKTtcblxuXHR2YXIgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdLCB2O1xuXHRvW28ubGVuZ3RoXSA9IChYTUxfSEVBREVSKTtcblx0b1tvLmxlbmd0aF0gPSB3cml0ZXh0YWcoJ1R5cGVzJywgbnVsbCwge1xuXHRcdCd4bWxucyc6IFhNTE5TLkNULFxuXHRcdCd4bWxuczp4c2QnOiBYTUxOUy54c2QsXG5cdFx0J3htbG5zOnhzaSc6IFhNTE5TLnhzaVxuXHR9KTtcblxuXHRvID0gby5jb25jYXQoW1xuXHRcdFsneG1sJywgJ2FwcGxpY2F0aW9uL3htbCddLFxuXHRcdFsnYmluJywgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5iaW5hcnkubWFjcm9FbmFibGVkLm1haW4nXSxcblx0XHRbJ3ZtbCcsICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQudm1sRHJhd2luZyddLFxuXHRcdFsnZGF0YScsICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQubW9kZWwrZGF0YSddLFxuXHRcdC8qIGZyb20gdGVzdCBmaWxlcyAqL1xuXHRcdFsnYm1wJywgJ2ltYWdlL2JtcCddLFxuXHRcdFsncG5nJywgJ2ltYWdlL3BuZyddLFxuXHRcdFsnZ2lmJywgJ2ltYWdlL2dpZiddLFxuXHRcdFsnZW1mJywgJ2ltYWdlL3gtZW1mJ10sXG5cdFx0Wyd3bWYnLCAnaW1hZ2UveC13bWYnXSxcblx0XHRbJ2pwZycsICdpbWFnZS9qcGVnJ10sIFsnanBlZycsICdpbWFnZS9qcGVnJ10sXG5cdFx0Wyd0aWYnLCAnaW1hZ2UvdGlmZiddLCBbJ3RpZmYnLCAnaW1hZ2UvdGlmZiddLFxuXHRcdFsncGRmJywgJ2FwcGxpY2F0aW9uL3BkZiddLFxuXHRcdFsncmVscycsICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5yZWxhdGlvbnNoaXBzK3htbCddXG5cdF0ubWFwKGZ1bmN0aW9uKHgpIHtcblx0XHRyZXR1cm4gd3JpdGV4dGFnKCdEZWZhdWx0JywgbnVsbCwgeydFeHRlbnNpb24nOnhbMF0sICdDb250ZW50VHlwZSc6IHhbMV19KTtcblx0fSkpO1xuXG5cdC8qIG9ubHkgd3JpdGUgZmlyc3QgaW5zdGFuY2UgKi9cblx0dmFyIGYxID0gZnVuY3Rpb24odykge1xuXHRcdGlmKGN0W3ddICYmIGN0W3ddLmxlbmd0aCA+IDApIHtcblx0XHRcdHYgPSBjdFt3XVswXTtcblx0XHRcdG9bby5sZW5ndGhdID0gKHdyaXRleHRhZygnT3ZlcnJpZGUnLCBudWxsLCB7XG5cdFx0XHRcdCdQYXJ0TmFtZSc6ICh2WzBdID09ICcvJyA/IFwiXCI6XCIvXCIpICsgdixcblx0XHRcdFx0J0NvbnRlbnRUeXBlJzogQ1RfTElTVFt3XVtvcHRzLmJvb2tUeXBlXSB8fCBDVF9MSVNUW3ddWyd4bHN4J11cblx0XHRcdH0pKTtcblx0XHR9XG5cdH07XG5cblx0LyogYm9vayB0eXBlLXNwZWNpZmljICovXG5cdHZhciBmMiA9IGZ1bmN0aW9uKHcpIHtcblx0XHQoY3Rbd118fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHYpIHtcblx0XHRcdG9bby5sZW5ndGhdID0gKHdyaXRleHRhZygnT3ZlcnJpZGUnLCBudWxsLCB7XG5cdFx0XHRcdCdQYXJ0TmFtZSc6ICh2WzBdID09ICcvJyA/IFwiXCI6XCIvXCIpICsgdixcblx0XHRcdFx0J0NvbnRlbnRUeXBlJzogQ1RfTElTVFt3XVtvcHRzLmJvb2tUeXBlXSB8fCBDVF9MSVNUW3ddWyd4bHN4J11cblx0XHRcdH0pKTtcblx0XHR9KTtcblx0fTtcblxuXHQvKiBzdGFuZGFyZCB0eXBlICovXG5cdHZhciBmMyA9IGZ1bmN0aW9uKHQpIHtcblx0XHQoY3RbdF18fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHYpIHtcblx0XHRcdG9bby5sZW5ndGhdID0gKHdyaXRleHRhZygnT3ZlcnJpZGUnLCBudWxsLCB7XG5cdFx0XHRcdCdQYXJ0TmFtZSc6ICh2WzBdID09ICcvJyA/IFwiXCI6XCIvXCIpICsgdixcblx0XHRcdFx0J0NvbnRlbnRUeXBlJzogdHlwZTJjdFt0XVswXVxuXHRcdFx0fSkpO1xuXHRcdH0pO1xuXHR9O1xuXG5cdGYxKCd3b3JrYm9va3MnKTtcblx0ZjIoJ3NoZWV0cycpO1xuXHRmMignY2hhcnRzJyk7XG5cdGYzKCd0aGVtZXMnKTtcblx0WydzdHJzJywgJ3N0eWxlcyddLmZvckVhY2goZjEpO1xuXHRbJ2NvcmVwcm9wcycsICdleHRwcm9wcycsICdjdXN0cHJvcHMnXS5mb3JFYWNoKGYzKTtcblx0ZjMoJ3ZiYScpO1xuXHRmMygnY29tbWVudHMnKTtcblx0ZjMoJ3RocmVhZGVkY29tbWVudHMnKTtcblx0ZjMoJ2RyYXdpbmdzJyk7XG5cdGYyKCdtZXRhZGF0YScpO1xuXHRmMygncGVvcGxlJyk7XG5cdGlmKG8ubGVuZ3RoPjIpeyBvW28ubGVuZ3RoXSA9ICgnPC9UeXBlcz4nKTsgb1sxXT1vWzFdLnJlcGxhY2UoXCIvPlwiLFwiPlwiKTsgfVxuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuLyogOS4zIFJlbGF0aW9uc2hpcHMgKi9cbnZhciBSRUxTID0gKHtcblx0V0I6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9vZmZpY2VEb2N1bWVudFwiLFxuXHRTSEVFVDogXCJodHRwOi8vc2hlZXRqcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL29mZmljZURvY3VtZW50XCIsXG5cdEhMSU5LOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvaHlwZXJsaW5rXCIsXG5cdFZNTDogXCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3ZtbERyYXdpbmdcIixcblx0WFBBVEg6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9leHRlcm5hbExpbmtQYXRoXCIsXG5cdFhNSVNTOiBcImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMDYvcmVsYXRpb25zaGlwcy94bEV4dGVybmFsTGlua1BhdGgveGxQYXRoTWlzc2luZ1wiLFxuXHRYTElOSzogXCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2V4dGVybmFsTGlua1wiLFxuXHRDWE1MOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvY3VzdG9tWG1sXCIsXG5cdENYTUxQOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvY3VzdG9tWG1sUHJvcHNcIixcblx0Q01OVDogXCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2NvbW1lbnRzXCIsXG5cdENPUkVfUFJPUFM6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9yZWxhdGlvbnNoaXBzL21ldGFkYXRhL2NvcmUtcHJvcGVydGllc1wiLFxuXHRFWFRfUFJPUFM6ICdodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2V4dGVuZGVkLXByb3BlcnRpZXMnLFxuXHRDVVNUX1BST1BTOiAnaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jdXN0b20tcHJvcGVydGllcycsXG5cdFNTVDogXCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3NoYXJlZFN0cmluZ3NcIixcblx0U1RZOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvc3R5bGVzXCIsXG5cdFRIRU1FOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvdGhlbWVcIixcblx0Q0hBUlQ6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jaGFydFwiLFxuXHRDSEFSVEVYOiBcImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMTQvcmVsYXRpb25zaGlwcy9jaGFydEV4XCIsXG5cdENTOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvY2hhcnRzaGVldFwiLFxuXHRXUzogW1xuXHRcdFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy93b3Jrc2hlZXRcIixcblx0XHRcImh0dHA6Ly9wdXJsLm9jbGMub3JnL29veG1sL29mZmljZURvY3VtZW50L3JlbGF0aW9uc2hpcHMvd29ya3NoZWV0XCJcblx0XSxcblx0RFM6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9kaWFsb2dzaGVldFwiLFxuXHRNUzogXCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA2L3JlbGF0aW9uc2hpcHMveGxNYWNyb3NoZWV0XCIsXG5cdElNRzogXCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2ltYWdlXCIsXG5cdERSQVc6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9kcmF3aW5nXCIsXG5cdFhMTUVUQTogXCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3NoZWV0TWV0YWRhdGFcIixcblx0VENNTlQ6IFwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAxNy8xMC9yZWxhdGlvbnNoaXBzL3RocmVhZGVkQ29tbWVudFwiLFxuXHRQRU9QTEU6IFwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAxNy8xMC9yZWxhdGlvbnNoaXBzL3BlcnNvblwiLFxuXHRWQkE6IFwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAwNi9yZWxhdGlvbnNoaXBzL3ZiYVByb2plY3RcIlxufS8qOmFueSovKTtcblxuXG4vKiA5LjMuMyBSZXByZXNlbnRpbmcgUmVsYXRpb25zaGlwcyAqL1xuZnVuY3Rpb24gZ2V0X3JlbHNfcGF0aChmaWxlLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgbiA9IGZpbGUubGFzdEluZGV4T2YoXCIvXCIpO1xuXHRyZXR1cm4gZmlsZS5zbGljZSgwLG4rMSkgKyAnX3JlbHMvJyArIGZpbGUuc2xpY2UobisxKSArIFwiLnJlbHNcIjtcbn1cblxuZnVuY3Rpb24gcGFyc2VfcmVscyhkYXRhLyo6P3N0cmluZyovLCBjdXJyZW50RmlsZVBhdGgvKjpzdHJpbmcqLykge1xuXHR2YXIgcmVscyA9IHtcIiFpZFwiOnt9fTtcblx0aWYgKCFkYXRhKSByZXR1cm4gcmVscztcblx0aWYgKGN1cnJlbnRGaWxlUGF0aC5jaGFyQXQoMCkgIT09ICcvJykge1xuXHRcdGN1cnJlbnRGaWxlUGF0aCA9ICcvJytjdXJyZW50RmlsZVBhdGg7XG5cdH1cblx0dmFyIGhhc2ggPSB7fTtcblxuXHQoZGF0YS5tYXRjaCh0YWdyZWdleCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHgpIHtcblx0XHR2YXIgeSA9IHBhcnNleG1sdGFnKHgpO1xuXHRcdC8qIDkuMy4yLjIgT1BDX1JlbGF0aW9uc2hpcHMgKi9cblx0XHRpZiAoeVswXSA9PT0gJzxSZWxhdGlvbnNoaXAnKSB7XG5cdFx0XHR2YXIgcmVsID0ge307IHJlbC5UeXBlID0geS5UeXBlOyByZWwuVGFyZ2V0ID0geS5UYXJnZXQ7IHJlbC5JZCA9IHkuSWQ7IGlmKHkuVGFyZ2V0TW9kZSkgcmVsLlRhcmdldE1vZGUgPSB5LlRhcmdldE1vZGU7XG5cdFx0XHR2YXIgY2Fub25pY3RhcmdldCA9IHkuVGFyZ2V0TW9kZSA9PT0gJ0V4dGVybmFsJyA/IHkuVGFyZ2V0IDogcmVzb2x2ZV9wYXRoKHkuVGFyZ2V0LCBjdXJyZW50RmlsZVBhdGgpO1xuXHRcdFx0cmVsc1tjYW5vbmljdGFyZ2V0XSA9IHJlbDtcblx0XHRcdGhhc2hbeS5JZF0gPSByZWw7XG5cdFx0fVxuXHR9KTtcblx0cmVsc1tcIiFpZFwiXSA9IGhhc2g7XG5cdHJldHVybiByZWxzO1xufVxuXG5cbi8qIFRPRE8gKi9cbmZ1bmN0aW9uIHdyaXRlX3JlbHMocmVscykvKjpzdHJpbmcqLyB7XG5cdHZhciBvID0gW1hNTF9IRUFERVIsIHdyaXRleHRhZygnUmVsYXRpb25zaGlwcycsIG51bGwsIHtcblx0XHQvLyd4bWxuczpuczAnOiBYTUxOUy5SRUxTLFxuXHRcdCd4bWxucyc6IFhNTE5TLlJFTFNcblx0fSldO1xuXHRrZXlzKHJlbHNbJyFpZCddKS5mb3JFYWNoKGZ1bmN0aW9uKHJpZCkge1xuXHRcdG9bby5sZW5ndGhdID0gKHdyaXRleHRhZygnUmVsYXRpb25zaGlwJywgbnVsbCwgcmVsc1snIWlkJ11bcmlkXSkpO1xuXHR9KTtcblx0aWYoby5sZW5ndGg+Mil7IG9bby5sZW5ndGhdID0gKCc8L1JlbGF0aW9uc2hpcHM+Jyk7IG9bMV09b1sxXS5yZXBsYWNlKFwiLz5cIixcIj5cIik7IH1cblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cblxuZnVuY3Rpb24gYWRkX3JlbHMocmVscywgcklkLyo6bnVtYmVyKi8sIGYsIHR5cGUsIHJlbG9iaiwgdGFyZ2V0bW9kZS8qOj9zdHJpbmcqLykvKjpudW1iZXIqLyB7XG5cdGlmKCFyZWxvYmopIHJlbG9iaiA9IHt9O1xuXHRpZighcmVsc1snIWlkJ10pIHJlbHNbJyFpZCddID0ge307XG5cdGlmKCFyZWxzWychaWR4J10pIHJlbHNbJyFpZHgnXSA9IDE7XG5cdGlmKHJJZCA8IDApIGZvcihySWQgPSByZWxzWychaWR4J107IHJlbHNbJyFpZCddWydySWQnICsgcklkXTsgKytySWQpey8qIGVtcHR5ICovfVxuXHRyZWxzWychaWR4J10gPSBySWQgKyAxO1xuXHRyZWxvYmouSWQgPSAncklkJyArIHJJZDtcblx0cmVsb2JqLlR5cGUgPSB0eXBlO1xuXHRyZWxvYmouVGFyZ2V0ID0gZjtcblx0aWYodGFyZ2V0bW9kZSkgcmVsb2JqLlRhcmdldE1vZGUgPSB0YXJnZXRtb2RlO1xuXHRlbHNlIGlmKFtSRUxTLkhMSU5LLCBSRUxTLlhQQVRILCBSRUxTLlhNSVNTXS5pbmRleE9mKHJlbG9iai5UeXBlKSA+IC0xKSByZWxvYmouVGFyZ2V0TW9kZSA9IFwiRXh0ZXJuYWxcIjtcblx0aWYocmVsc1snIWlkJ11bcmVsb2JqLklkXSkgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHJld3JpdGUgcklkIFwiICsgcklkKTtcblx0cmVsc1snIWlkJ11bcmVsb2JqLklkXSA9IHJlbG9iajtcblx0cmVsc1soJy8nICsgcmVsb2JqLlRhcmdldCkucmVwbGFjZShcIi8vXCIsXCIvXCIpXSA9IHJlbG9iajtcblx0cmV0dXJuIHJJZDtcbn1cbi8qIE9wZW4gRG9jdW1lbnQgRm9ybWF0IGZvciBPZmZpY2UgQXBwbGljYXRpb25zIChPcGVuRG9jdW1lbnQpIFZlcnNpb24gMS4yICovXG4vKiBQYXJ0IDMgU2VjdGlvbiA0IE1hbmlmZXN0IEZpbGUgKi9cbnZhciBDVF9PRFMgPSBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3ByZWFkc2hlZXRcIjtcbmZ1bmN0aW9uIHBhcnNlX21hbmlmZXN0KGQsIG9wdHMpIHtcblx0dmFyIHN0ciA9IHhsbWxfbm9ybWFsaXplKGQpO1xuXHR2YXIgUm47XG5cdHZhciBGRXRhZztcblx0d2hpbGUoKFJuID0geGxtbHJlZ2V4LmV4ZWMoc3RyKSkpIHN3aXRjaChSblszXSkge1xuXHRcdGNhc2UgJ21hbmlmZXN0JzogYnJlYWs7IC8vIDQuMiA8bWFuaWZlc3Q6bWFuaWZlc3Q+XG5cdFx0Y2FzZSAnZmlsZS1lbnRyeSc6IC8vIDQuMyA8bWFuaWZlc3Q6ZmlsZS1lbnRyeT5cblx0XHRcdEZFdGFnID0gcGFyc2V4bWx0YWcoUm5bMF0sIGZhbHNlKTtcblx0XHRcdGlmKEZFdGFnLnBhdGggPT0gJy8nICYmIEZFdGFnLnR5cGUgIT09IENUX09EUykgdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBPcGVuRG9jdW1lbnQgaXMgbm90IGEgc3ByZWFkc2hlZXRcIik7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICdlbmNyeXB0aW9uLWRhdGEnOiAvLyA0LjQgPG1hbmlmZXN0OmVuY3J5cHRpb24tZGF0YT5cblx0XHRjYXNlICdhbGdvcml0aG0nOiAvLyA0LjUgPG1hbmlmZXN0OmFsZ29yaXRobT5cblx0XHRjYXNlICdzdGFydC1rZXktZ2VuZXJhdGlvbic6IC8vIDQuNiA8bWFuaWZlc3Q6c3RhcnQta2V5LWdlbmVyYXRpb24+XG5cdFx0Y2FzZSAna2V5LWRlcml2YXRpb24nOiAvLyA0LjcgPG1hbmlmZXN0OmtleS1kZXJpdmF0aW9uPlxuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgT0RTIEVuY3J5cHRpb25cIik7XG5cdFx0ZGVmYXVsdDogaWYob3B0cyAmJiBvcHRzLldURikgdGhyb3cgUm47XG5cdH1cbn1cblxuZnVuY3Rpb24gd3JpdGVfbWFuaWZlc3QobWFuaWZlc3QvKjpBcnJheTxBcnJheTxzdHJpbmc+ID4qLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvID0gW1hNTF9IRUFERVJdO1xuXHRvLnB1c2goJzxtYW5pZmVzdDptYW5pZmVzdCB4bWxuczptYW5pZmVzdD1cInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6bWFuaWZlc3Q6MS4wXCIgbWFuaWZlc3Q6dmVyc2lvbj1cIjEuMlwiPlxcbicpO1xuXHRvLnB1c2goJyAgPG1hbmlmZXN0OmZpbGUtZW50cnkgbWFuaWZlc3Q6ZnVsbC1wYXRoPVwiL1wiIG1hbmlmZXN0OnZlcnNpb249XCIxLjJcIiBtYW5pZmVzdDptZWRpYS10eXBlPVwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldFwiLz5cXG4nKTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IG1hbmlmZXN0Lmxlbmd0aDsgKytpKSBvLnB1c2goJyAgPG1hbmlmZXN0OmZpbGUtZW50cnkgbWFuaWZlc3Q6ZnVsbC1wYXRoPVwiJyArIG1hbmlmZXN0W2ldWzBdICsgJ1wiIG1hbmlmZXN0Om1lZGlhLXR5cGU9XCInICsgbWFuaWZlc3RbaV1bMV0gKyAnXCIvPlxcbicpO1xuXHRvLnB1c2goJzwvbWFuaWZlc3Q6bWFuaWZlc3Q+Jyk7XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG5cbi8qIFBhcnQgMyBTZWN0aW9uIDYgTWV0YWRhdGEgTWFuaWZlc3QgRmlsZSAqL1xuZnVuY3Rpb24gd3JpdGVfcmRmX3R5cGUoZmlsZS8qOnN0cmluZyovLCByZXMvKjpzdHJpbmcqLywgdGFnLyo6P3N0cmluZyovKSB7XG5cdHJldHVybiBbXG5cdFx0JyAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9XCInICsgZmlsZSArICdcIj5cXG4nLFxuXHRcdCcgICAgPHJkZjp0eXBlIHJkZjpyZXNvdXJjZT1cImh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL25zL29mZmljZS8xLjIvbWV0YS8nICsgKHRhZyB8fCBcIm9kZlwiKSArICcjJyArIHJlcyArICdcIi8+XFxuJyxcblx0XHQnICA8L3JkZjpEZXNjcmlwdGlvbj5cXG4nXG5cdF0uam9pbihcIlwiKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX3JkZl9oYXMoYmFzZS8qOnN0cmluZyovLCBmaWxlLyo6c3RyaW5nKi8pIHtcblx0cmV0dXJuIFtcblx0XHQnICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD1cIicgKyBiYXNlICsgJ1wiPlxcbicsXG5cdFx0JyAgICA8bnMwOmhhc1BhcnQgeG1sbnM6bnMwPVwiaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvbnMvb2ZmaWNlLzEuMi9tZXRhL3BrZyNcIiByZGY6cmVzb3VyY2U9XCInICsgZmlsZSArICdcIi8+XFxuJyxcblx0XHQnICA8L3JkZjpEZXNjcmlwdGlvbj5cXG4nXG5cdF0uam9pbihcIlwiKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX3JkZihyZGYpIHtcblx0dmFyIG8gPSBbWE1MX0hFQURFUl07XG5cdG8ucHVzaCgnPHJkZjpSREYgeG1sbnM6cmRmPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zI1wiPlxcbicpO1xuXHRmb3IodmFyIGkgPSAwOyBpICE9IHJkZi5sZW5ndGg7ICsraSkge1xuXHRcdG8ucHVzaCh3cml0ZV9yZGZfdHlwZShyZGZbaV1bMF0sIHJkZltpXVsxXSkpO1xuXHRcdG8ucHVzaCh3cml0ZV9yZGZfaGFzKFwiXCIscmRmW2ldWzBdKSk7XG5cdH1cblx0by5wdXNoKHdyaXRlX3JkZl90eXBlKFwiXCIsXCJEb2N1bWVudFwiLCBcInBrZ1wiKSk7XG5cdG8ucHVzaCgnPC9yZGY6UkRGPicpO1xuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuLyogVE9ETzogcHVsbCBwcm9wZXJ0aWVzICovXG5mdW5jdGlvbiB3cml0ZV9tZXRhX29kcygvKjo6IHdiOiBXb3JrYm9vaywgb3B0czogYW55Ki8pLyo6c3RyaW5nKi8ge1xuXHRyZXR1cm4gJzxvZmZpY2U6ZG9jdW1lbnQtbWV0YSB4bWxuczpvZmZpY2U9XCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmljZToxLjBcIiB4bWxuczptZXRhPVwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczptZXRhOjEuMFwiIHhtbG5zOmRjPVwiaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS9cIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiBvZmZpY2U6dmVyc2lvbj1cIjEuMlwiPjxvZmZpY2U6bWV0YT48bWV0YTpnZW5lcmF0b3I+U2hlZXQnICsgJ0pTICcgKyBYTFNYLnZlcnNpb24gKyAnPC9tZXRhOmdlbmVyYXRvcj48L29mZmljZTptZXRhPjwvb2ZmaWNlOmRvY3VtZW50LW1ldGE+Jztcbn1cblxuLyogRUNNQS0zNzYgUGFydCBJSSAxMS4xIENvcmUgUHJvcGVydGllcyBQYXJ0ICovXG4vKiBbTVMtT1NIQVJFRF0gMi4zLjMuMi5bMS0yXS4xIChQSURTSS9QSUREU0kpICovXG52YXIgQ09SRV9QUk9QUy8qOkFycmF5PEFycmF5PHN0cmluZz4gPiovID0gW1xuXHRbXCJjcDpjYXRlZ29yeVwiLCBcIkNhdGVnb3J5XCJdLFxuXHRbXCJjcDpjb250ZW50U3RhdHVzXCIsIFwiQ29udGVudFN0YXR1c1wiXSxcblx0W1wiY3A6a2V5d29yZHNcIiwgXCJLZXl3b3Jkc1wiXSxcblx0W1wiY3A6bGFzdE1vZGlmaWVkQnlcIiwgXCJMYXN0QXV0aG9yXCJdLFxuXHRbXCJjcDpsYXN0UHJpbnRlZFwiLCBcIkxhc3RQcmludGVkXCJdLFxuXHRbXCJjcDpyZXZpc2lvblwiLCBcIlJldk51bWJlclwiXSxcblx0W1wiY3A6dmVyc2lvblwiLCBcIlZlcnNpb25cIl0sXG5cdFtcImRjOmNyZWF0b3JcIiwgXCJBdXRob3JcIl0sXG5cdFtcImRjOmRlc2NyaXB0aW9uXCIsIFwiQ29tbWVudHNcIl0sXG5cdFtcImRjOmlkZW50aWZpZXJcIiwgXCJJZGVudGlmaWVyXCJdLFxuXHRbXCJkYzpsYW5ndWFnZVwiLCBcIkxhbmd1YWdlXCJdLFxuXHRbXCJkYzpzdWJqZWN0XCIsIFwiU3ViamVjdFwiXSxcblx0W1wiZGM6dGl0bGVcIiwgXCJUaXRsZVwiXSxcblx0W1wiZGN0ZXJtczpjcmVhdGVkXCIsIFwiQ3JlYXRlZERhdGVcIiwgJ2RhdGUnXSxcblx0W1wiZGN0ZXJtczptb2RpZmllZFwiLCBcIk1vZGlmaWVkRGF0ZVwiLCAnZGF0ZSddXG5dO1xuXG52YXIgQ09SRV9QUk9QU19SRUdFWC8qOkFycmF5PFJlZ0V4cD4qLyA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG5cdHZhciByID0gbmV3IEFycmF5KENPUkVfUFJPUFMubGVuZ3RoKTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IENPUkVfUFJPUFMubGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgZiA9IENPUkVfUFJPUFNbaV07XG5cdFx0dmFyIGcgPSBcIig/OlwiKyBmWzBdLnNsaWNlKDAsZlswXS5pbmRleE9mKFwiOlwiKSkgK1wiOilcIisgZlswXS5zbGljZShmWzBdLmluZGV4T2YoXCI6XCIpKzEpO1xuXHRcdHJbaV0gPSBuZXcgUmVnRXhwKFwiPFwiICsgZyArIFwiW14+XSo+KFtcXFxcc1xcXFxTXSo/KTxcXC9cIiArIGcgKyBcIj5cIik7XG5cdH1cblx0cmV0dXJuIHI7XG59KSgpO1xuXG5mdW5jdGlvbiBwYXJzZV9jb3JlX3Byb3BzKGRhdGEpIHtcblx0dmFyIHAgPSB7fTtcblx0ZGF0YSA9IHV0ZjhyZWFkKGRhdGEpO1xuXG5cdGZvcih2YXIgaSA9IDA7IGkgPCBDT1JFX1BST1BTLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIGYgPSBDT1JFX1BST1BTW2ldLCBjdXIgPSBkYXRhLm1hdGNoKENPUkVfUFJPUFNfUkVHRVhbaV0pO1xuXHRcdGlmKGN1ciAhPSBudWxsICYmIGN1ci5sZW5ndGggPiAwKSBwW2ZbMV1dID0gdW5lc2NhcGV4bWwoY3VyWzFdKTtcblx0XHRpZihmWzJdID09PSAnZGF0ZScgJiYgcFtmWzFdXSkgcFtmWzFdXSA9IHBhcnNlRGF0ZShwW2ZbMV1dKTtcblx0fVxuXG5cdHJldHVybiBwO1xufVxuXG5mdW5jdGlvbiBjcF9kb2l0KGYsIGcsIGgsIG8sIHApIHtcblx0aWYocFtmXSAhPSBudWxsIHx8IGcgPT0gbnVsbCB8fCBnID09PSBcIlwiKSByZXR1cm47XG5cdHBbZl0gPSBnO1xuXHRnID0gZXNjYXBleG1sKGcpO1xuXHRvW28ubGVuZ3RoXSA9IChoID8gd3JpdGV4dGFnKGYsZyxoKSA6IHdyaXRldGFnKGYsZykpO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9jb3JlX3Byb3BzKGNwLCBfb3B0cykge1xuXHR2YXIgb3B0cyA9IF9vcHRzIHx8IHt9O1xuXHR2YXIgbyA9IFtYTUxfSEVBREVSLCB3cml0ZXh0YWcoJ2NwOmNvcmVQcm9wZXJ0aWVzJywgbnVsbCwge1xuXHRcdC8vJ3htbG5zJzogWE1MTlMuQ09SRV9QUk9QUyxcblx0XHQneG1sbnM6Y3AnOiBYTUxOUy5DT1JFX1BST1BTLFxuXHRcdCd4bWxuczpkYyc6IFhNTE5TLmRjLFxuXHRcdCd4bWxuczpkY3Rlcm1zJzogWE1MTlMuZGN0ZXJtcyxcblx0XHQneG1sbnM6ZGNtaXR5cGUnOiBYTUxOUy5kY21pdHlwZSxcblx0XHQneG1sbnM6eHNpJzogWE1MTlMueHNpXG5cdH0pXSwgcCA9IHt9O1xuXHRpZighY3AgJiYgIW9wdHMuUHJvcHMpIHJldHVybiBvLmpvaW4oXCJcIik7XG5cblx0aWYoY3ApIHtcblx0XHRpZihjcC5DcmVhdGVkRGF0ZSAhPSBudWxsKSBjcF9kb2l0KFwiZGN0ZXJtczpjcmVhdGVkXCIsIHR5cGVvZiBjcC5DcmVhdGVkRGF0ZSA9PT0gXCJzdHJpbmdcIiA/IGNwLkNyZWF0ZWREYXRlIDogd3JpdGVfdzNjZHRmKGNwLkNyZWF0ZWREYXRlLCBvcHRzLldURiksIHtcInhzaTp0eXBlXCI6XCJkY3Rlcm1zOlczQ0RURlwifSwgbywgcCk7XG5cdFx0aWYoY3AuTW9kaWZpZWREYXRlICE9IG51bGwpIGNwX2RvaXQoXCJkY3Rlcm1zOm1vZGlmaWVkXCIsIHR5cGVvZiBjcC5Nb2RpZmllZERhdGUgPT09IFwic3RyaW5nXCIgPyBjcC5Nb2RpZmllZERhdGUgOiB3cml0ZV93M2NkdGYoY3AuTW9kaWZpZWREYXRlLCBvcHRzLldURiksIHtcInhzaTp0eXBlXCI6XCJkY3Rlcm1zOlczQ0RURlwifSwgbywgcCk7XG5cdH1cblxuXHRmb3IodmFyIGkgPSAwOyBpICE9IENPUkVfUFJPUFMubGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgZiA9IENPUkVfUFJPUFNbaV07XG5cdFx0dmFyIHYgPSBvcHRzLlByb3BzICYmIG9wdHMuUHJvcHNbZlsxXV0gIT0gbnVsbCA/IG9wdHMuUHJvcHNbZlsxXV0gOiBjcCA/IGNwW2ZbMV1dIDogbnVsbDtcblx0XHRpZih2ID09PSB0cnVlKSB2ID0gXCIxXCI7XG5cdFx0ZWxzZSBpZih2ID09PSBmYWxzZSkgdiA9IFwiMFwiO1xuXHRcdGVsc2UgaWYodHlwZW9mIHYgPT0gXCJudW1iZXJcIikgdiA9IFN0cmluZyh2KTtcblx0XHRpZih2ICE9IG51bGwpIGNwX2RvaXQoZlswXSwgdiwgbnVsbCwgbywgcCk7XG5cdH1cblx0aWYoby5sZW5ndGg+Mil7IG9bby5sZW5ndGhdID0gKCc8L2NwOmNvcmVQcm9wZXJ0aWVzPicpOyBvWzFdPW9bMV0ucmVwbGFjZShcIi8+XCIsXCI+XCIpOyB9XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG4vKiAxNS4yLjEyLjMgRXh0ZW5kZWQgRmlsZSBQcm9wZXJ0aWVzIFBhcnQgKi9cbi8qIFtNUy1PU0hBUkVEXSAyLjMuMy4yLlsxLTJdLjEgKFBJRFNJL1BJRERTSSkgKi9cbnZhciBFWFRfUFJPUFMvKjpBcnJheTxBcnJheTxzdHJpbmc+ID4qLyA9IFtcblx0W1wiQXBwbGljYXRpb25cIiwgXCJBcHBsaWNhdGlvblwiLCBcInN0cmluZ1wiXSxcblx0W1wiQXBwVmVyc2lvblwiLCBcIkFwcFZlcnNpb25cIiwgXCJzdHJpbmdcIl0sXG5cdFtcIkNvbXBhbnlcIiwgXCJDb21wYW55XCIsIFwic3RyaW5nXCJdLFxuXHRbXCJEb2NTZWN1cml0eVwiLCBcIkRvY1NlY3VyaXR5XCIsIFwic3RyaW5nXCJdLFxuXHRbXCJNYW5hZ2VyXCIsIFwiTWFuYWdlclwiLCBcInN0cmluZ1wiXSxcblx0W1wiSHlwZXJsaW5rc0NoYW5nZWRcIiwgXCJIeXBlcmxpbmtzQ2hhbmdlZFwiLCBcImJvb2xcIl0sXG5cdFtcIlNoYXJlZERvY1wiLCBcIlNoYXJlZERvY1wiLCBcImJvb2xcIl0sXG5cdFtcIkxpbmtzVXBUb0RhdGVcIiwgXCJMaW5rc1VwVG9EYXRlXCIsIFwiYm9vbFwiXSxcblx0W1wiU2NhbGVDcm9wXCIsIFwiU2NhbGVDcm9wXCIsIFwiYm9vbFwiXSxcblx0W1wiSGVhZGluZ1BhaXJzXCIsIFwiSGVhZGluZ1BhaXJzXCIsIFwicmF3XCJdLFxuXHRbXCJUaXRsZXNPZlBhcnRzXCIsIFwiVGl0bGVzT2ZQYXJ0c1wiLCBcInJhd1wiXVxuXTtcblxudmFyIFBzZXVkb1Byb3BzUGFpcnMgPSBbXG5cdFwiV29ya3NoZWV0c1wiLCAgXCJTaGVldE5hbWVzXCIsXG5cdFwiTmFtZWRSYW5nZXNcIiwgXCJEZWZpbmVkTmFtZXNcIixcblx0XCJDaGFydHNoZWV0c1wiLCBcIkNoYXJ0TmFtZXNcIlxuXTtcbmZ1bmN0aW9uIGxvYWRfcHJvcHNfcGFpcnMoSFAvKjpzdHJpbmd8QXJyYXk8QXJyYXk8YW55Pj4qLywgVE9QLCBwcm9wcywgb3B0cykge1xuXHR2YXIgdiA9IFtdO1xuXHRpZih0eXBlb2YgSFAgPT0gXCJzdHJpbmdcIikgdiA9IHBhcnNlVmVjdG9yKEhQLCBvcHRzKTtcblx0ZWxzZSBmb3IodmFyIGogPSAwOyBqIDwgSFAubGVuZ3RoOyArK2opIHYgPSB2LmNvbmNhdChIUFtqXS5tYXAoZnVuY3Rpb24oaHApIHsgcmV0dXJuIHt2OmhwfTsgfSkpO1xuXHR2YXIgcGFydHMgPSAodHlwZW9mIFRPUCA9PSBcInN0cmluZ1wiKSA/IHBhcnNlVmVjdG9yKFRPUCwgb3B0cykubWFwKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4LnY7IH0pIDogVE9QO1xuXHR2YXIgaWR4ID0gMCwgbGVuID0gMDtcblx0aWYocGFydHMubGVuZ3RoID4gMCkgZm9yKHZhciBpID0gMDsgaSAhPT0gdi5sZW5ndGg7IGkgKz0gMikge1xuXHRcdGxlbiA9ICsodltpKzFdLnYpO1xuXHRcdHN3aXRjaCh2W2ldLnYpIHtcblx0XHRcdGNhc2UgXCJXb3Jrc2hlZXRzXCI6XG5cdFx0XHRjYXNlIFwi5bel5L2c6KGoXCI6XG5cdFx0XHRjYXNlIFwi0JvQuNGB0YLRi1wiOlxuXHRcdFx0Y2FzZSBcItij2YjYsdin2YIg2KfZhNi52YXZhFwiOlxuXHRcdFx0Y2FzZSBcIuODr+ODvOOCr+OCt+ODvOODiFwiOlxuXHRcdFx0Y2FzZSBcIteS15zXmdeV16DXldeqINei15HXldeT15RcIjpcblx0XHRcdGNhc2UgXCJBcmJlaXRzYmzDpHR0ZXJcIjpcblx0XHRcdGNhc2UgXCLDh2FsxLHFn21hIFNheWZhbGFyxLFcIjpcblx0XHRcdGNhc2UgXCJGZXVpbGxlcyBkZSBjYWxjdWxcIjpcblx0XHRcdGNhc2UgXCJGb2dsaSBkaSBsYXZvcm9cIjpcblx0XHRcdGNhc2UgXCJGb2xoYXMgZGUgY8OhbGN1bG9cIjpcblx0XHRcdGNhc2UgXCJQbGFuaWxoYXNcIjpcblx0XHRcdGNhc2UgXCJSZWduZWFya1wiOlxuXHRcdFx0Y2FzZSBcIkhvamFzIGRlIGPDoWxjdWxvXCI6XG5cdFx0XHRjYXNlIFwiV2Vya2JsYWRlblwiOlxuXHRcdFx0XHRwcm9wcy5Xb3Jrc2hlZXRzID0gbGVuO1xuXHRcdFx0XHRwcm9wcy5TaGVldE5hbWVzID0gcGFydHMuc2xpY2UoaWR4LCBpZHggKyBsZW4pO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIk5hbWVkIFJhbmdlc1wiOlxuXHRcdFx0Y2FzZSBcIlJhbmdvcyBjb24gbm9tYnJlXCI6XG5cdFx0XHRjYXNlIFwi5ZCN5YmN5LuY44GN5LiA6KanXCI6XG5cdFx0XHRjYXNlIFwiQmVuYW5udGUgQmVyZWljaGVcIjpcblx0XHRcdGNhc2UgXCJOYXZuZ2l2bmUgb21yw6VkZXJcIjpcblx0XHRcdFx0cHJvcHMuTmFtZWRSYW5nZXMgPSBsZW47XG5cdFx0XHRcdHByb3BzLkRlZmluZWROYW1lcyA9IHBhcnRzLnNsaWNlKGlkeCwgaWR4ICsgbGVuKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJDaGFydHNcIjpcblx0XHRcdGNhc2UgXCJEaWFncmFtbWVcIjpcblx0XHRcdFx0cHJvcHMuQ2hhcnRzaGVldHMgPSBsZW47XG5cdFx0XHRcdHByb3BzLkNoYXJ0TmFtZXMgPSBwYXJ0cy5zbGljZShpZHgsIGlkeCArIGxlbik7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRpZHggKz0gbGVuO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHBhcnNlX2V4dF9wcm9wcyhkYXRhLCBwLCBvcHRzKSB7XG5cdHZhciBxID0ge307IGlmKCFwKSBwID0ge307XG5cdGRhdGEgPSB1dGY4cmVhZChkYXRhKTtcblxuXHRFWFRfUFJPUFMuZm9yRWFjaChmdW5jdGlvbihmKSB7XG5cdFx0dmFyIHhtbCA9IChkYXRhLm1hdGNoKG1hdGNodGFnKGZbMF0pKXx8W10pWzFdO1xuXHRcdHN3aXRjaChmWzJdKSB7XG5cdFx0XHRjYXNlIFwic3RyaW5nXCI6IGlmKHhtbCkgcFtmWzFdXSA9IHVuZXNjYXBleG1sKHhtbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSBcImJvb2xcIjogcFtmWzFdXSA9IHhtbCA9PT0gXCJ0cnVlXCI7IGJyZWFrO1xuXHRcdFx0Y2FzZSBcInJhd1wiOlxuXHRcdFx0XHR2YXIgY3VyID0gZGF0YS5tYXRjaChuZXcgUmVnRXhwKFwiPFwiICsgZlswXSArIFwiW14+XSo+KFtcXFxcc1xcXFxTXSo/KTxcXC9cIiArIGZbMF0gKyBcIj5cIikpO1xuXHRcdFx0XHRpZihjdXIgJiYgY3VyLmxlbmd0aCA+IDApIHFbZlsxXV0gPSBjdXJbMV07XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fSk7XG5cblx0aWYocS5IZWFkaW5nUGFpcnMgJiYgcS5UaXRsZXNPZlBhcnRzKSBsb2FkX3Byb3BzX3BhaXJzKHEuSGVhZGluZ1BhaXJzLCBxLlRpdGxlc09mUGFydHMsIHAsIG9wdHMpO1xuXG5cdHJldHVybiBwO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9leHRfcHJvcHMoY3AvKjo6LCBvcHRzKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdLCBXID0gd3JpdGV4dGFnO1xuXHRpZighY3ApIGNwID0ge307XG5cdGNwLkFwcGxpY2F0aW9uID0gXCJTaGVldEpTXCI7XG5cdG9bby5sZW5ndGhdID0gKFhNTF9IRUFERVIpO1xuXHRvW28ubGVuZ3RoXSA9ICh3cml0ZXh0YWcoJ1Byb3BlcnRpZXMnLCBudWxsLCB7XG5cdFx0J3htbG5zJzogWE1MTlMuRVhUX1BST1BTLFxuXHRcdCd4bWxuczp2dCc6IFhNTE5TLnZ0XG5cdH0pKTtcblxuXHRFWFRfUFJPUFMuZm9yRWFjaChmdW5jdGlvbihmKSB7XG5cdFx0aWYoY3BbZlsxXV0gPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuXHRcdHZhciB2O1xuXHRcdHN3aXRjaChmWzJdKSB7XG5cdFx0XHRjYXNlICdzdHJpbmcnOiB2ID0gZXNjYXBleG1sKFN0cmluZyhjcFtmWzFdXSkpOyBicmVhaztcblx0XHRcdGNhc2UgJ2Jvb2wnOiB2ID0gY3BbZlsxXV0gPyAndHJ1ZScgOiAnZmFsc2UnOyBicmVhaztcblx0XHR9XG5cdFx0aWYodiAhPT0gdW5kZWZpbmVkKSBvW28ubGVuZ3RoXSA9IChXKGZbMF0sIHYpKTtcblx0fSk7XG5cblx0LyogVE9ETzogSGVhZGluZ1BhaXJzLCBUaXRsZXNPZlBhcnRzICovXG5cdG9bby5sZW5ndGhdID0gKFcoJ0hlYWRpbmdQYWlycycsIFcoJ3Z0OnZlY3RvcicsIFcoJ3Z0OnZhcmlhbnQnLCAnPHZ0Omxwc3RyPldvcmtzaGVldHM8L3Z0Omxwc3RyPicpK1coJ3Z0OnZhcmlhbnQnLCBXKCd2dDppNCcsIFN0cmluZyhjcC5Xb3Jrc2hlZXRzKSkpLCB7c2l6ZToyLCBiYXNlVHlwZTpcInZhcmlhbnRcIn0pKSk7XG5cdG9bby5sZW5ndGhdID0gKFcoJ1RpdGxlc09mUGFydHMnLCBXKCd2dDp2ZWN0b3InLCBjcC5TaGVldE5hbWVzLm1hcChmdW5jdGlvbihzKSB7IHJldHVybiBcIjx2dDpscHN0cj5cIiArIGVzY2FwZXhtbChzKSArIFwiPC92dDpscHN0cj5cIjsgfSkuam9pbihcIlwiKSwge3NpemU6IGNwLldvcmtzaGVldHMsIGJhc2VUeXBlOlwibHBzdHJcIn0pKSk7XG5cdGlmKG8ubGVuZ3RoPjIpeyBvW28ubGVuZ3RoXSA9ICgnPC9Qcm9wZXJ0aWVzPicpOyBvWzFdPW9bMV0ucmVwbGFjZShcIi8+XCIsXCI+XCIpOyB9XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG4vKiAxNS4yLjEyLjIgQ3VzdG9tIEZpbGUgUHJvcGVydGllcyBQYXJ0ICovXG52YXIgY3VzdHJlZ2V4ID0gLzxbXj5dKz5bXjxdKi9nO1xuZnVuY3Rpb24gcGFyc2VfY3VzdF9wcm9wcyhkYXRhLyo6c3RyaW5nKi8sIG9wdHMpIHtcblx0dmFyIHAgPSB7fSwgbmFtZSA9IFwiXCI7XG5cdHZhciBtID0gZGF0YS5tYXRjaChjdXN0cmVnZXgpO1xuXHRpZihtKSBmb3IodmFyIGkgPSAwOyBpICE9IG0ubGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgeCA9IG1baV0sIHkgPSBwYXJzZXhtbHRhZyh4KTtcblx0XHRzd2l0Y2goeVswXSkge1xuXHRcdFx0Y2FzZSAnPD94bWwnOiBicmVhaztcblx0XHRcdGNhc2UgJzxQcm9wZXJ0aWVzJzogYnJlYWs7XG5cdFx0XHRjYXNlICc8cHJvcGVydHknOiBuYW1lID0gdW5lc2NhcGV4bWwoeS5uYW1lKTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L3Byb3BlcnR5Pic6IG5hbWUgPSBudWxsOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6IGlmICh4LmluZGV4T2YoJzx2dDonKSA9PT0gMCkge1xuXHRcdFx0XHR2YXIgdG9rcyA9IHguc3BsaXQoJz4nKTtcblx0XHRcdFx0dmFyIHR5cGUgPSB0b2tzWzBdLnNsaWNlKDQpLCB0ZXh0ID0gdG9rc1sxXTtcblx0XHRcdFx0LyogMjIuNC4yLjMyIChDVF9WYXJpYW50KS4gT21pdCB0aGUgYmluYXJ5IHR5cGVzIGZyb20gMjIuNCAoVmFyaWFudCBUeXBlcykgKi9cblx0XHRcdFx0c3dpdGNoKHR5cGUpIHtcblx0XHRcdFx0XHRjYXNlICdscHN0cic6IGNhc2UgJ2JzdHInOiBjYXNlICdscHdzdHInOlxuXHRcdFx0XHRcdFx0cFtuYW1lXSA9IHVuZXNjYXBleG1sKHRleHQpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYm9vbCc6XG5cdFx0XHRcdFx0XHRwW25hbWVdID0gcGFyc2V4bWxib29sKHRleHQpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnaTEnOiBjYXNlICdpMic6IGNhc2UgJ2k0JzogY2FzZSAnaTgnOiBjYXNlICdpbnQnOiBjYXNlICd1aW50Jzpcblx0XHRcdFx0XHRcdHBbbmFtZV0gPSBwYXJzZUludCh0ZXh0LCAxMCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdyNCc6IGNhc2UgJ3I4JzogY2FzZSAnZGVjaW1hbCc6XG5cdFx0XHRcdFx0XHRwW25hbWVdID0gcGFyc2VGbG9hdCh0ZXh0KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2ZpbGV0aW1lJzogY2FzZSAnZGF0ZSc6XG5cdFx0XHRcdFx0XHRwW25hbWVdID0gcGFyc2VEYXRlKHRleHQpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY3knOiBjYXNlICdlcnJvcic6XG5cdFx0XHRcdFx0XHRwW25hbWVdID0gdW5lc2NhcGV4bWwodGV4dCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0aWYodHlwZS5zbGljZSgtMSkgPT0gJy8nKSBicmVhaztcblx0XHRcdFx0XHRcdGlmKG9wdHMuV1RGICYmIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykgY29uc29sZS53YXJuKCdVbmV4cGVjdGVkJywgeCwgdHlwZSwgdG9rcyk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZih4LnNsaWNlKDAsMikgPT09IFwiPC9cIikgey8qIGVtcHR5ICovXG5cdFx0XHR9IGVsc2UgaWYob3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcih4KTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHA7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX2N1c3RfcHJvcHMoY3AvKjo6LCBvcHRzKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgbyA9IFtYTUxfSEVBREVSLCB3cml0ZXh0YWcoJ1Byb3BlcnRpZXMnLCBudWxsLCB7XG5cdFx0J3htbG5zJzogWE1MTlMuQ1VTVF9QUk9QUyxcblx0XHQneG1sbnM6dnQnOiBYTUxOUy52dFxuXHR9KV07XG5cdGlmKCFjcCkgcmV0dXJuIG8uam9pbihcIlwiKTtcblx0dmFyIHBpZCA9IDE7XG5cdGtleXMoY3ApLmZvckVhY2goZnVuY3Rpb24gY3VzdHByb3AoaykgeyArK3BpZDtcblx0XHRvW28ubGVuZ3RoXSA9ICh3cml0ZXh0YWcoJ3Byb3BlcnR5Jywgd3JpdGVfdnQoY3Bba10sIHRydWUpLCB7XG5cdFx0XHQnZm10aWQnOiAne0Q1Q0RENTA1LTJFOUMtMTAxQi05Mzk3LTA4MDAyQjJDRjlBRX0nLFxuXHRcdFx0J3BpZCc6IHBpZCxcblx0XHRcdCduYW1lJzogZXNjYXBleG1sKGspXG5cdFx0fSkpO1xuXHR9KTtcblx0aWYoby5sZW5ndGg+Mil7IG9bby5sZW5ndGhdID0gJzwvUHJvcGVydGllcz4nOyBvWzFdPW9bMV0ucmVwbGFjZShcIi8+XCIsXCI+XCIpOyB9XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG4vKiBDb21tb24gTmFtZSAtPiBYTE1MIE5hbWUgKi9cbnZhciBYTE1MRG9jUHJvcHNNYXAgPSB7XG5cdFRpdGxlOiAnVGl0bGUnLFxuXHRTdWJqZWN0OiAnU3ViamVjdCcsXG5cdEF1dGhvcjogJ0F1dGhvcicsXG5cdEtleXdvcmRzOiAnS2V5d29yZHMnLFxuXHRDb21tZW50czogJ0Rlc2NyaXB0aW9uJyxcblx0TGFzdEF1dGhvcjogJ0xhc3RBdXRob3InLFxuXHRSZXZOdW1iZXI6ICdSZXZpc2lvbicsXG5cdEFwcGxpY2F0aW9uOiAnQXBwTmFtZScsXG5cdC8qIFRvdGFsVGltZTogJ1RvdGFsVGltZScsICovXG5cdExhc3RQcmludGVkOiAnTGFzdFByaW50ZWQnLFxuXHRDcmVhdGVkRGF0ZTogJ0NyZWF0ZWQnLFxuXHRNb2RpZmllZERhdGU6ICdMYXN0U2F2ZWQnLFxuXHQvKiBQYWdlcyAqL1xuXHQvKiBXb3JkcyAqL1xuXHQvKiBDaGFyYWN0ZXJzICovXG5cdENhdGVnb3J5OiAnQ2F0ZWdvcnknLFxuXHQvKiBQcmVzZW50YXRpb25Gb3JtYXQgKi9cblx0TWFuYWdlcjogJ01hbmFnZXInLFxuXHRDb21wYW55OiAnQ29tcGFueScsXG5cdC8qIEd1aWQgKi9cblx0LyogSHlwZXJsaW5rQmFzZSAqL1xuXHQvKiBCeXRlcyAqL1xuXHQvKiBMaW5lcyAqL1xuXHQvKiBQYXJhZ3JhcGhzICovXG5cdC8qIENoYXJhY3RlcnNXaXRoU3BhY2VzICovXG5cdEFwcFZlcnNpb246ICdWZXJzaW9uJyxcblxuXHRDb250ZW50U3RhdHVzOiAnQ29udGVudFN0YXR1cycsIC8qIE5PVEU6IG1pc3NpbmcgZnJvbSBzY2hlbWEgKi9cblx0SWRlbnRpZmllcjogJ0lkZW50aWZpZXInLCAvKiBOT1RFOiBtaXNzaW5nIGZyb20gc2NoZW1hICovXG5cdExhbmd1YWdlOiAnTGFuZ3VhZ2UnIC8qIE5PVEU6IG1pc3NpbmcgZnJvbSBzY2hlbWEgKi9cbn07XG52YXIgZXZlcnRfWExNTERQTTtcblxuZnVuY3Rpb24geGxtbF9zZXRfcHJvcChQcm9wcywgdGFnLyo6c3RyaW5nKi8sIHZhbCkge1xuXHRpZighZXZlcnRfWExNTERQTSkgZXZlcnRfWExNTERQTSA9IGV2ZXJ0KFhMTUxEb2NQcm9wc01hcCk7XG5cdHRhZyA9IGV2ZXJ0X1hMTUxEUE1bdGFnXSB8fCB0YWc7XG5cdFByb3BzW3RhZ10gPSB2YWw7XG59XG5cbmZ1bmN0aW9uIHhsbWxfd3JpdGVfZG9jcHJvcHMoUHJvcHMsIG9wdHMpIHtcblx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0a2V5cyhYTE1MRG9jUHJvcHNNYXApLm1hcChmdW5jdGlvbihtKSB7XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IENPUkVfUFJPUFMubGVuZ3RoOyArK2kpIGlmKENPUkVfUFJPUFNbaV1bMV0gPT0gbSkgcmV0dXJuIENPUkVfUFJPUFNbaV07XG5cdFx0Zm9yKGkgPSAwOyBpIDwgRVhUX1BST1BTLmxlbmd0aDsgKytpKSBpZihFWFRfUFJPUFNbaV1bMV0gPT0gbSkgcmV0dXJuIEVYVF9QUk9QU1tpXTtcblx0XHR0aHJvdyBtO1xuXHR9KS5mb3JFYWNoKGZ1bmN0aW9uKHApIHtcblx0XHRpZihQcm9wc1twWzFdXSA9PSBudWxsKSByZXR1cm47XG5cdFx0dmFyIG0gPSBvcHRzICYmIG9wdHMuUHJvcHMgJiYgb3B0cy5Qcm9wc1twWzFdXSAhPSBudWxsID8gb3B0cy5Qcm9wc1twWzFdXSA6IFByb3BzW3BbMV1dO1xuXHRcdHN3aXRjaChwWzJdKSB7XG5cdFx0XHRjYXNlICdkYXRlJzogbSA9IG5ldyBEYXRlKG0pLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvXFwuXFxkKlovLFwiWlwiKTsgYnJlYWs7XG5cdFx0fVxuXHRcdGlmKHR5cGVvZiBtID09ICdudW1iZXInKSBtID0gU3RyaW5nKG0pO1xuXHRcdGVsc2UgaWYobSA9PT0gdHJ1ZSB8fCBtID09PSBmYWxzZSkgeyBtID0gbSA/IFwiMVwiIDogXCIwXCI7IH1cblx0XHRlbHNlIGlmKG0gaW5zdGFuY2VvZiBEYXRlKSBtID0gbmV3IERhdGUobSkudG9JU09TdHJpbmcoKS5yZXBsYWNlKC9cXC5cXGQqWi8sXCJcIik7XG5cdFx0by5wdXNoKHdyaXRldGFnKFhMTUxEb2NQcm9wc01hcFtwWzFdXSB8fCBwWzFdLCBtKSk7XG5cdH0pO1xuXHRyZXR1cm4gd3JpdGV4dGFnKCdEb2N1bWVudFByb3BlcnRpZXMnLCBvLmpvaW4oXCJcIiksIHt4bWxuczpYTE1MTlMubyB9KTtcbn1cbmZ1bmN0aW9uIHhsbWxfd3JpdGVfY3VzdHByb3BzKFByb3BzLCBDdXN0cHJvcHMvKjo6LCBvcHRzKi8pIHtcblx0dmFyIEJMQUNLTElTVCA9IFtcIldvcmtzaGVldHNcIixcIlNoZWV0TmFtZXNcIl07XG5cdHZhciBUID0gJ0N1c3RvbURvY3VtZW50UHJvcGVydGllcyc7XG5cdHZhciBvLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdGlmKFByb3BzKSBrZXlzKFByb3BzKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHtcblx0XHQvKjo6IGlmKCFQcm9wcykgcmV0dXJuOyAqL1xuXHRcdGlmKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoUHJvcHMsIGspKSByZXR1cm47XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IENPUkVfUFJPUFMubGVuZ3RoOyArK2kpIGlmKGsgPT0gQ09SRV9QUk9QU1tpXVsxXSkgcmV0dXJuO1xuXHRcdGZvcihpID0gMDsgaSA8IEVYVF9QUk9QUy5sZW5ndGg7ICsraSkgaWYoayA9PSBFWFRfUFJPUFNbaV1bMV0pIHJldHVybjtcblx0XHRmb3IoaSA9IDA7IGkgPCBCTEFDS0xJU1QubGVuZ3RoOyArK2kpIGlmKGsgPT0gQkxBQ0tMSVNUW2ldKSByZXR1cm47XG5cblx0XHR2YXIgbSA9IFByb3BzW2tdO1xuXHRcdHZhciB0ID0gXCJzdHJpbmdcIjtcblx0XHRpZih0eXBlb2YgbSA9PSAnbnVtYmVyJykgeyB0ID0gXCJmbG9hdFwiOyBtID0gU3RyaW5nKG0pOyB9XG5cdFx0ZWxzZSBpZihtID09PSB0cnVlIHx8IG0gPT09IGZhbHNlKSB7IHQgPSBcImJvb2xlYW5cIjsgbSA9IG0gPyBcIjFcIiA6IFwiMFwiOyB9XG5cdFx0ZWxzZSBtID0gU3RyaW5nKG0pO1xuXHRcdG8ucHVzaCh3cml0ZXh0YWcoZXNjYXBleG1sdGFnKGspLCBtLCB7XCJkdDpkdFwiOnR9KSk7XG5cdH0pO1xuXHRpZihDdXN0cHJvcHMpIGtleXMoQ3VzdHByb3BzKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHtcblx0XHQvKjo6IGlmKCFDdXN0cHJvcHMpIHJldHVybjsgKi9cblx0XHRpZighT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEN1c3Rwcm9wcywgaykpIHJldHVybjtcblx0XHRpZihQcm9wcyAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoUHJvcHMsIGspKSByZXR1cm47XG5cdFx0dmFyIG0gPSBDdXN0cHJvcHNba107XG5cdFx0dmFyIHQgPSBcInN0cmluZ1wiO1xuXHRcdGlmKHR5cGVvZiBtID09ICdudW1iZXInKSB7IHQgPSBcImZsb2F0XCI7IG0gPSBTdHJpbmcobSk7IH1cblx0XHRlbHNlIGlmKG0gPT09IHRydWUgfHwgbSA9PT0gZmFsc2UpIHsgdCA9IFwiYm9vbGVhblwiOyBtID0gbSA/IFwiMVwiIDogXCIwXCI7IH1cblx0XHRlbHNlIGlmKG0gaW5zdGFuY2VvZiBEYXRlKSB7IHQgPSBcImRhdGVUaW1lLnR6XCI7IG0gPSBtLnRvSVNPU3RyaW5nKCk7IH1cblx0XHRlbHNlIG0gPSBTdHJpbmcobSk7XG5cdFx0by5wdXNoKHdyaXRleHRhZyhlc2NhcGV4bWx0YWcoayksIG0sIHtcImR0OmR0XCI6dH0pKTtcblx0fSk7XG5cdHJldHVybiAnPCcgKyBUICsgJyB4bWxucz1cIicgKyBYTE1MTlMubyArICdcIj4nICsgby5qb2luKFwiXCIpICsgJzwvJyArIFQgKyAnPic7XG59XG4vKiBbTVMtRFRZUF0gMi4zLjMgRklMRVRJTUUgKi9cbi8qIFtNUy1PTEVEU10gMi4xLjMgRklMRVRJTUUgKFBhY2tldCBWZXJzaW9uKSAqL1xuLyogW01TLU9MRVBTXSAyLjggRklMRVRJTUUgKFBhY2tldCBWZXJzaW9uKSAqL1xuZnVuY3Rpb24gcGFyc2VfRklMRVRJTUUoYmxvYikge1xuXHR2YXIgZHdMb3dEYXRlVGltZSA9IGJsb2IucmVhZF9zaGlmdCg0KSwgZHdIaWdoRGF0ZVRpbWUgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHJldHVybiBuZXcgRGF0ZSgoKGR3SGlnaERhdGVUaW1lLzFlNypNYXRoLnBvdygyLDMyKSArIGR3TG93RGF0ZVRpbWUvMWU3KSAtIDExNjQ0NDczNjAwKSoxMDAwKS50b0lTT1N0cmluZygpLnJlcGxhY2UoL1xcLjAwMC8sXCJcIik7XG59XG5mdW5jdGlvbiB3cml0ZV9GSUxFVElNRSh0aW1lLyo6c3RyaW5nfERhdGUqLykge1xuXHR2YXIgZGF0ZSA9ICh0eXBlb2YgdGltZSA9PSBcInN0cmluZ1wiKSA/IG5ldyBEYXRlKERhdGUucGFyc2UodGltZSkpIDogdGltZTtcblx0dmFyIHQgPSBkYXRlLmdldFRpbWUoKSAvIDEwMDAgKyAxMTY0NDQ3MzYwMDtcblx0dmFyIGwgPSB0ICUgTWF0aC5wb3coMiwzMiksIGggPSAodCAtIGwpIC8gTWF0aC5wb3coMiwzMik7XG5cdGwgKj0gMWU3OyBoICo9IDFlNztcblx0dmFyIHcgPSAobCAvIE1hdGgucG93KDIsMzIpKSB8IDA7XG5cdGlmKHcgPiAwKSB7IGwgPSBsICUgTWF0aC5wb3coMiwzMik7IGggKz0gdzsgfVxuXHR2YXIgbyA9IG5ld19idWYoOCk7IG8ud3JpdGVfc2hpZnQoNCwgbCk7IG8ud3JpdGVfc2hpZnQoNCwgaCk7IHJldHVybiBvO1xufVxuXG4vKiBbTVMtT1NIQVJFRF0gMi4zLjMuMS40IExwc3RyICovXG5mdW5jdGlvbiBwYXJzZV9scHN0cihibG9iLCB0eXBlLCBwYWQvKjo/bnVtYmVyKi8pIHtcblx0dmFyIHN0YXJ0ID0gYmxvYi5sO1xuXHR2YXIgc3RyID0gYmxvYi5yZWFkX3NoaWZ0KDAsICdscHN0ci1jcCcpO1xuXHRpZihwYWQpIHdoaWxlKChibG9iLmwgLSBzdGFydCkgJiAzKSArK2Jsb2IubDtcblx0cmV0dXJuIHN0cjtcbn1cblxuLyogW01TLU9TSEFSRURdIDIuMy4zLjEuNiBMcHdzdHIgKi9cbmZ1bmN0aW9uIHBhcnNlX2xwd3N0cihibG9iLCB0eXBlLCBwYWQpIHtcblx0dmFyIHN0ciA9IGJsb2IucmVhZF9zaGlmdCgwLCAnbHB3c3RyJyk7XG5cdGlmKHBhZCkgYmxvYi5sICs9ICg0IC0gKChzdHIubGVuZ3RoKzEpICYgMykpICYgMztcblx0cmV0dXJuIHN0cjtcbn1cblxuXG4vKiBbTVMtT1NIQVJFRF0gMi4zLjMuMS4xMSBWdFN0cmluZyAqL1xuLyogW01TLU9TSEFSRURdIDIuMy4zLjEuMTIgVnRVbmFsaWduZWRTdHJpbmcgKi9cbmZ1bmN0aW9uIHBhcnNlX1Z0U3RyaW5nQmFzZShibG9iLCBzdHJpbmdUeXBlLCBwYWQpIHtcblx0aWYoc3RyaW5nVHlwZSA9PT0gMHgxRiAvKlZUX0xQV1NUUiovKSByZXR1cm4gcGFyc2VfbHB3c3RyKGJsb2IpO1xuXHRyZXR1cm4gcGFyc2VfbHBzdHIoYmxvYiwgc3RyaW5nVHlwZSwgcGFkKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VfVnRTdHJpbmcoYmxvYiwgdC8qOm51bWJlciovLCBwYWQvKjo/Ym9vbGVhbiovKSB7IHJldHVybiBwYXJzZV9WdFN0cmluZ0Jhc2UoYmxvYiwgdCwgcGFkID09PSBmYWxzZSA/IDA6IDQpOyB9XG5mdW5jdGlvbiBwYXJzZV9WdFVuYWxpZ25lZFN0cmluZyhibG9iLCB0Lyo6bnVtYmVyKi8pIHsgaWYoIXQpIHRocm93IG5ldyBFcnJvcihcIlZ0VW5hbGlnbmVkU3RyaW5nIG11c3QgaGF2ZSBwb3NpdGl2ZSBsZW5ndGhcIik7IHJldHVybiBwYXJzZV9WdFN0cmluZ0Jhc2UoYmxvYiwgdCwgMCk7IH1cblxuLyogW01TLU9TSEFSRURdIDIuMy4zLjEuNyBWdFZlY0xwd3N0clZhbHVlICovXG5mdW5jdGlvbiBwYXJzZV9WdFZlY0xwd3N0clZhbHVlKGJsb2IpLyo6QXJyYXk8c3RyaW5nPiovIHtcblx0dmFyIGxlbmd0aCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIHJldC8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRmb3IodmFyIGkgPSAwOyBpICE9IGxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIHN0YXJ0ID0gYmxvYi5sO1xuXHRcdHJldFtpXSA9IGJsb2IucmVhZF9zaGlmdCgwLCAnbHB3c3RyJykucmVwbGFjZShjaHIwLCcnKTtcblx0XHRpZigoYmxvYi5sIC0gc3RhcnQpICYgMHgwMikgYmxvYi5sICs9IDI7XG5cdH1cblx0cmV0dXJuIHJldDtcbn1cblxuLyogW01TLU9TSEFSRURdIDIuMy4zLjEuOSBWdFZlY1VuYWxpZ25lZExwc3RyVmFsdWUgKi9cbmZ1bmN0aW9uIHBhcnNlX1Z0VmVjVW5hbGlnbmVkTHBzdHJWYWx1ZShibG9iKS8qOkFycmF5PHN0cmluZz4qLyB7XG5cdHZhciBsZW5ndGggPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciByZXQvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0Zm9yKHZhciBpID0gMDsgaSAhPSBsZW5ndGg7ICsraSkgcmV0W2ldID0gYmxvYi5yZWFkX3NoaWZ0KDAsICdscHN0ci1jcCcpLnJlcGxhY2UoY2hyMCwnJyk7XG5cdHJldHVybiByZXQ7XG59XG5cblxuLyogW01TLU9TSEFSRURdIDIuMy4zLjEuMTMgVnRIZWFkaW5nUGFpciAqL1xuZnVuY3Rpb24gcGFyc2VfVnRIZWFkaW5nUGFpcihibG9iKSB7XG5cdHZhciBzdGFydCA9IGJsb2IubDtcblx0dmFyIGhlYWRpbmdTdHJpbmcgPSBwYXJzZV9UeXBlZFByb3BlcnR5VmFsdWUoYmxvYiwgVlRfVVNUUik7XG5cdGlmKGJsb2JbYmxvYi5sXSA9PSAweDAwICYmIGJsb2JbYmxvYi5sKzFdID09IDB4MDAgJiYgKChibG9iLmwgLSBzdGFydCkgJiAweDAyKSkgYmxvYi5sICs9IDI7XG5cdHZhciBoZWFkZXJQYXJ0cyA9IHBhcnNlX1R5cGVkUHJvcGVydHlWYWx1ZShibG9iLCBWVF9JNCk7XG5cdHJldHVybiBbaGVhZGluZ1N0cmluZywgaGVhZGVyUGFydHNdO1xufVxuXG4vKiBbTVMtT1NIQVJFRF0gMi4zLjMuMS4xNCBWdFZlY0hlYWRpbmdQYWlyVmFsdWUgKi9cbmZ1bmN0aW9uIHBhcnNlX1Z0VmVjSGVhZGluZ1BhaXJWYWx1ZShibG9iKSB7XG5cdHZhciBjRWxlbWVudHMgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBvdXQgPSBbXTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IGNFbGVtZW50cyAvIDI7ICsraSkgb3V0LnB1c2gocGFyc2VfVnRIZWFkaW5nUGFpcihibG9iKSk7XG5cdHJldHVybiBvdXQ7XG59XG5cbi8qIFtNUy1PTEVQU10gMi4xOC4xIERpY3Rpb25hcnkgKHVzZXMgMi4xNywgMi4xNikgKi9cbmZ1bmN0aW9uIHBhcnNlX2RpY3Rpb25hcnkoYmxvYixDb2RlUGFnZSkge1xuXHR2YXIgY250ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgZGljdC8qOntbbnVtYmVyXTpzdHJpbmd9Ki8gPSAoe30vKjphbnkqLyk7XG5cdGZvcih2YXIgaiA9IDA7IGogIT0gY250OyArK2opIHtcblx0XHR2YXIgcGlkID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRcdHZhciBsZW4gPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdFx0ZGljdFtwaWRdID0gYmxvYi5yZWFkX3NoaWZ0KGxlbiwgKENvZGVQYWdlID09PSAweDRCMCA/J3V0ZjE2bGUnOid1dGY4JykpLnJlcGxhY2UoY2hyMCwnJykucmVwbGFjZShjaHIxLCchJyk7XG5cdFx0aWYoQ29kZVBhZ2UgPT09IDB4NEIwICYmIChsZW4gJSAyKSkgYmxvYi5sICs9IDI7XG5cdH1cblx0aWYoYmxvYi5sICYgMykgYmxvYi5sID0gKGJsb2IubD4+MisxKTw8Mjtcblx0cmV0dXJuIGRpY3Q7XG59XG5cbi8qIFtNUy1PTEVQU10gMi45IEJMT0IgKi9cbmZ1bmN0aW9uIHBhcnNlX0JMT0IoYmxvYikge1xuXHR2YXIgc2l6ZSA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIGJ5dGVzID0gYmxvYi5zbGljZShibG9iLmwsYmxvYi5sK3NpemUpO1xuXHRibG9iLmwgKz0gc2l6ZTtcblx0aWYoKHNpemUgJiAzKSA+IDApIGJsb2IubCArPSAoNCAtIChzaXplICYgMykpICYgMztcblx0cmV0dXJuIGJ5dGVzO1xufVxuXG4vKiBbTVMtT0xFUFNdIDIuMTEgQ2xpcGJvYXJkRGF0YSAqL1xuZnVuY3Rpb24gcGFyc2VfQ2xpcGJvYXJkRGF0YShibG9iKSB7XG5cdC8vIFRPRE9cblx0dmFyIG8gPSB7fTtcblx0by5TaXplID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHQvL28uRm9ybWF0ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRibG9iLmwgKz0gby5TaXplICsgMyAtIChvLlNpemUgLSAxKSAlIDQ7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtT0xFUFNdIDIuMTUgVHlwZWRQcm9wZXJ0eVZhbHVlICovXG5mdW5jdGlvbiBwYXJzZV9UeXBlZFByb3BlcnR5VmFsdWUoYmxvYiwgdHlwZS8qOm51bWJlciovLCBfb3B0cykvKjphbnkqLyB7XG5cdHZhciB0ID0gYmxvYi5yZWFkX3NoaWZ0KDIpLCByZXQsIG9wdHMgPSBfb3B0c3x8e307XG5cdGJsb2IubCArPSAyO1xuXHRpZih0eXBlICE9PSBWVF9WQVJJQU5UKVxuXHRpZih0ICE9PSB0eXBlICYmIFZUX0NVU1RPTS5pbmRleE9mKHR5cGUpPT09LTEgJiYgISgodHlwZSAmIDB4RkZGRSkgPT0gMHgxMDFFICYmICh0ICYgMHhGRkZFKSA9PSAweDEwMUUpKSB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIHR5cGUgJyArIHR5cGUgKyAnIHNhdyAnICsgdCk7XG5cdHN3aXRjaCh0eXBlID09PSBWVF9WQVJJQU5UID8gdCA6IHR5cGUpIHtcblx0XHRjYXNlIDB4MDIgLypWVF9JMiovOiByZXQgPSBibG9iLnJlYWRfc2hpZnQoMiwgJ2knKTsgaWYoIW9wdHMucmF3KSBibG9iLmwgKz0gMjsgcmV0dXJuIHJldDtcblx0XHRjYXNlIDB4MDMgLypWVF9JNCovOiByZXQgPSBibG9iLnJlYWRfc2hpZnQoNCwgJ2knKTsgcmV0dXJuIHJldDtcblx0XHRjYXNlIDB4MEIgLypWVF9CT09MKi86IHJldHVybiBibG9iLnJlYWRfc2hpZnQoNCkgIT09IDB4MDtcblx0XHRjYXNlIDB4MTMgLypWVF9VSTQqLzogcmV0ID0gYmxvYi5yZWFkX3NoaWZ0KDQpOyByZXR1cm4gcmV0O1xuXHRcdGNhc2UgMHgxRSAvKlZUX0xQU1RSKi86IHJldHVybiBwYXJzZV9scHN0cihibG9iLCB0LCA0KS5yZXBsYWNlKGNocjAsJycpO1xuXHRcdGNhc2UgMHgxRiAvKlZUX0xQV1NUUiovOiByZXR1cm4gcGFyc2VfbHB3c3RyKGJsb2IpO1xuXHRcdGNhc2UgMHg0MCAvKlZUX0ZJTEVUSU1FKi86IHJldHVybiBwYXJzZV9GSUxFVElNRShibG9iKTtcblx0XHRjYXNlIDB4NDEgLypWVF9CTE9CKi86IHJldHVybiBwYXJzZV9CTE9CKGJsb2IpO1xuXHRcdGNhc2UgMHg0NyAvKlZUX0NGKi86IHJldHVybiBwYXJzZV9DbGlwYm9hcmREYXRhKGJsb2IpO1xuXHRcdGNhc2UgMHg1MCAvKlZUX1NUUklORyovOiByZXR1cm4gcGFyc2VfVnRTdHJpbmcoYmxvYiwgdCwgIW9wdHMucmF3KS5yZXBsYWNlKGNocjAsJycpO1xuXHRcdGNhc2UgMHg1MSAvKlZUX1VTVFIqLzogcmV0dXJuIHBhcnNlX1Z0VW5hbGlnbmVkU3RyaW5nKGJsb2IsIHQvKiwgNCovKS5yZXBsYWNlKGNocjAsJycpO1xuXHRcdGNhc2UgMHgxMDBDIC8qVlRfVkVDVE9SfFZUX1ZBUklBTlQqLzogcmV0dXJuIHBhcnNlX1Z0VmVjSGVhZGluZ1BhaXJWYWx1ZShibG9iKTtcblx0XHRjYXNlIDB4MTAxRSAvKlZUX1ZFQ1RPUnxWVF9MUFNUUiovOlxuXHRcdGNhc2UgMHgxMDFGIC8qVlRfVkVDVE9SfFZUX0xQV1NUUiovOlxuXHRcdFx0cmV0dXJuIHQgPT0gMHgxMDFGID8gcGFyc2VfVnRWZWNMcHdzdHJWYWx1ZShibG9iKSA6IHBhcnNlX1Z0VmVjVW5hbGlnbmVkTHBzdHJWYWx1ZShibG9iKTtcblx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJUeXBlZFByb3BlcnR5VmFsdWUgdW5yZWNvZ25pemVkIHR5cGUgXCIgKyB0eXBlICsgXCIgXCIgKyB0KTtcblx0fVxufVxuZnVuY3Rpb24gd3JpdGVfVHlwZWRQcm9wZXJ0eVZhbHVlKHR5cGUvKjpudW1iZXIqLywgdmFsdWUpIHtcblx0dmFyIG8gPSBuZXdfYnVmKDQpLCBwID0gbmV3X2J1Zig0KTtcblx0by53cml0ZV9zaGlmdCg0LCB0eXBlID09IDB4NTAgPyAweDFGIDogdHlwZSk7XG5cdHN3aXRjaCh0eXBlKSB7XG5cdFx0Y2FzZSAweDAzIC8qVlRfSTQqLzogcC53cml0ZV9zaGlmdCgtNCwgdmFsdWUpOyBicmVhaztcblx0XHRjYXNlIDB4MDUgLypWVF9JNCovOiBwID0gbmV3X2J1Zig4KTsgcC53cml0ZV9zaGlmdCg4LCB2YWx1ZSwgJ2YnKTsgYnJlYWs7XG5cdFx0Y2FzZSAweDBCIC8qVlRfQk9PTCovOiBwLndyaXRlX3NoaWZ0KDQsIHZhbHVlID8gMHgwMSA6IDB4MDApOyBicmVhaztcblx0XHRjYXNlIDB4NDAgLypWVF9GSUxFVElNRSovOiAvKjo6IGlmKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIiAmJiAhKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkpIHRocm93IFwidW5yZWFjaGFibGVcIjsgKi8gcCA9IHdyaXRlX0ZJTEVUSU1FKHZhbHVlKTsgYnJlYWs7XG5cdFx0Y2FzZSAweDFGIC8qVlRfTFBXU1RSKi86XG5cdFx0Y2FzZSAweDUwIC8qVlRfU1RSSU5HKi86XG5cdFx0XHQvKjo6IGlmKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIikgdGhyb3cgXCJ1bnJlYWNoYWJsZVwiOyAqL1xuXHRcdFx0cCA9IG5ld19idWYoNCArIDIgKiAodmFsdWUubGVuZ3RoICsgMSkgKyAodmFsdWUubGVuZ3RoICUgMiA/IDAgOiAyKSk7XG5cdFx0XHRwLndyaXRlX3NoaWZ0KDQsIHZhbHVlLmxlbmd0aCArIDEpO1xuXHRcdFx0cC53cml0ZV9zaGlmdCgwLCB2YWx1ZSwgXCJkYmNzXCIpO1xuXHRcdFx0d2hpbGUocC5sICE9IHAubGVuZ3RoKSBwLndyaXRlX3NoaWZ0KDEsIDApO1xuXHRcdFx0YnJlYWs7XG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiVHlwZWRQcm9wZXJ0eVZhbHVlIHVucmVjb2duaXplZCB0eXBlIFwiICsgdHlwZSArIFwiIFwiICsgdmFsdWUpO1xuXHR9XG5cdHJldHVybiBiY29uY2F0KFtvLCBwXSk7XG59XG5cbi8qIFtNUy1PTEVQU10gMi4yMCBQcm9wZXJ0eVNldCAqL1xuZnVuY3Rpb24gcGFyc2VfUHJvcGVydHlTZXQoYmxvYiwgUElEU0kpIHtcblx0dmFyIHN0YXJ0X2FkZHIgPSBibG9iLmw7XG5cdHZhciBzaXplID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgTnVtUHJvcHMgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBQcm9wcyA9IFtdLCBpID0gMDtcblx0dmFyIENvZGVQYWdlID0gMDtcblx0dmFyIERpY3Rpb25hcnkgPSAtMSwgRGljdE9iai8qOntbbnVtYmVyXTpzdHJpbmd9Ki8gPSAoe30vKjphbnkqLyk7XG5cdGZvcihpID0gMDsgaSAhPSBOdW1Qcm9wczsgKytpKSB7XG5cdFx0dmFyIFByb3BJRCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0XHR2YXIgT2Zmc2V0ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRcdFByb3BzW2ldID0gW1Byb3BJRCwgT2Zmc2V0ICsgc3RhcnRfYWRkcl07XG5cdH1cblx0UHJvcHMuc29ydChmdW5jdGlvbih4LHkpIHsgcmV0dXJuIHhbMV0gLSB5WzFdOyB9KTtcblx0dmFyIFByb3BIID0ge307XG5cdGZvcihpID0gMDsgaSAhPSBOdW1Qcm9wczsgKytpKSB7XG5cdFx0aWYoYmxvYi5sICE9PSBQcm9wc1tpXVsxXSkge1xuXHRcdFx0dmFyIGZhaWwgPSB0cnVlO1xuXHRcdFx0aWYoaT4wICYmIFBJRFNJKSBzd2l0Y2goUElEU0lbUHJvcHNbaS0xXVswXV0udCkge1xuXHRcdFx0XHRjYXNlIDB4MDIgLypWVF9JMiovOiBpZihibG9iLmwrMiA9PT0gUHJvcHNbaV1bMV0pIHsgYmxvYi5sKz0yOyBmYWlsID0gZmFsc2U7IH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHg1MCAvKlZUX1NUUklORyovOiBpZihibG9iLmwgPD0gUHJvcHNbaV1bMV0pIHsgYmxvYi5sPVByb3BzW2ldWzFdOyBmYWlsID0gZmFsc2U7IH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgxMDBDIC8qVlRfVkVDVE9SfFZUX1ZBUklBTlQqLzogaWYoYmxvYi5sIDw9IFByb3BzW2ldWzFdKSB7IGJsb2IubD1Qcm9wc1tpXVsxXTsgZmFpbCA9IGZhbHNlOyB9IGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0aWYoKCFQSURTSXx8aT09MCkgJiYgYmxvYi5sIDw9IFByb3BzW2ldWzFdKSB7IGZhaWw9ZmFsc2U7IGJsb2IubCA9IFByb3BzW2ldWzFdOyB9XG5cdFx0XHRpZihmYWlsKSB0aHJvdyBuZXcgRXJyb3IoXCJSZWFkIEVycm9yOiBFeHBlY3RlZCBhZGRyZXNzIFwiICsgUHJvcHNbaV1bMV0gKyAnIGF0ICcgKyBibG9iLmwgKyAnIDonICsgaSk7XG5cdFx0fVxuXHRcdGlmKFBJRFNJKSB7XG5cdFx0XHR2YXIgcGlkZHNpID0gUElEU0lbUHJvcHNbaV1bMF1dO1xuXHRcdFx0UHJvcEhbcGlkZHNpLm5dID0gcGFyc2VfVHlwZWRQcm9wZXJ0eVZhbHVlKGJsb2IsIHBpZGRzaS50LCB7cmF3OnRydWV9KTtcblx0XHRcdGlmKHBpZGRzaS5wID09PSAndmVyc2lvbicpIFByb3BIW3BpZGRzaS5uXSA9IFN0cmluZyhQcm9wSFtwaWRkc2kubl0gPj4gMTYpICsgXCIuXCIgKyAoXCIwMDAwXCIgKyBTdHJpbmcoUHJvcEhbcGlkZHNpLm5dICYgMHhGRkZGKSkuc2xpY2UoLTQpO1xuXHRcdFx0aWYocGlkZHNpLm4gPT0gXCJDb2RlUGFnZVwiKSBzd2l0Y2goUHJvcEhbcGlkZHNpLm5dKSB7XG5cdFx0XHRcdGNhc2UgMDogUHJvcEhbcGlkZHNpLm5dID0gMTI1Mjtcblx0XHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRcdGNhc2UgODc0OlxuXHRcdFx0XHRjYXNlIDkzMjpcblx0XHRcdFx0Y2FzZSA5MzY6XG5cdFx0XHRcdGNhc2UgOTQ5OlxuXHRcdFx0XHRjYXNlIDk1MDpcblx0XHRcdFx0Y2FzZSAxMjUwOlxuXHRcdFx0XHRjYXNlIDEyNTE6XG5cdFx0XHRcdGNhc2UgMTI1Mzpcblx0XHRcdFx0Y2FzZSAxMjU0OlxuXHRcdFx0XHRjYXNlIDEyNTU6XG5cdFx0XHRcdGNhc2UgMTI1Njpcblx0XHRcdFx0Y2FzZSAxMjU3OlxuXHRcdFx0XHRjYXNlIDEyNTg6XG5cdFx0XHRcdGNhc2UgMTAwMDA6XG5cdFx0XHRcdGNhc2UgMTIwMDpcblx0XHRcdFx0Y2FzZSAxMjAxOlxuXHRcdFx0XHRjYXNlIDEyNTI6XG5cdFx0XHRcdGNhc2UgNjUwMDA6IGNhc2UgLTUzNjpcblx0XHRcdFx0Y2FzZSA2NTAwMTogY2FzZSAtNTM1OlxuXHRcdFx0XHRcdHNldF9jcChDb2RlUGFnZSA9IChQcm9wSFtwaWRkc2kubl0+Pj4wKSAmIDB4RkZGRik7IGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBDb2RlUGFnZTogXCIgKyBQcm9wSFtwaWRkc2kubl0pO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZihQcm9wc1tpXVswXSA9PT0gMHgxKSB7XG5cdFx0XHRcdENvZGVQYWdlID0gUHJvcEguQ29kZVBhZ2UgPSAocGFyc2VfVHlwZWRQcm9wZXJ0eVZhbHVlKGJsb2IsIFZUX0kyKS8qOm51bWJlciovKTtcblx0XHRcdFx0c2V0X2NwKENvZGVQYWdlKTtcblx0XHRcdFx0aWYoRGljdGlvbmFyeSAhPT0gLTEpIHtcblx0XHRcdFx0XHR2YXIgb2xkcG9zID0gYmxvYi5sO1xuXHRcdFx0XHRcdGJsb2IubCA9IFByb3BzW0RpY3Rpb25hcnldWzFdO1xuXHRcdFx0XHRcdERpY3RPYmogPSBwYXJzZV9kaWN0aW9uYXJ5KGJsb2IsQ29kZVBhZ2UpO1xuXHRcdFx0XHRcdGJsb2IubCA9IG9sZHBvcztcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmKFByb3BzW2ldWzBdID09PSAwKSB7XG5cdFx0XHRcdGlmKENvZGVQYWdlID09PSAwKSB7IERpY3Rpb25hcnkgPSBpOyBibG9iLmwgPSBQcm9wc1tpKzFdWzFdOyBjb250aW51ZTsgfVxuXHRcdFx0XHREaWN0T2JqID0gcGFyc2VfZGljdGlvbmFyeShibG9iLENvZGVQYWdlKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHZhciBuYW1lID0gRGljdE9ialtQcm9wc1tpXVswXV07XG5cdFx0XHRcdHZhciB2YWw7XG5cdFx0XHRcdC8qIFtNUy1PU0hBUkVEXSAyLjMuMy4yLjMuMS4yICsgUFJPUFZBUklBTlQgKi9cblx0XHRcdFx0c3dpdGNoKGJsb2JbYmxvYi5sXSkge1xuXHRcdFx0XHRcdGNhc2UgMHg0MSAvKlZUX0JMT0IqLzogYmxvYi5sICs9IDQ7IHZhbCA9IHBhcnNlX0JMT0IoYmxvYik7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgMHgxRSAvKlZUX0xQU1RSKi86IGJsb2IubCArPSA0OyB2YWwgPSBwYXJzZV9WdFN0cmluZyhibG9iLCBibG9iW2Jsb2IubC00XSkucmVwbGFjZSgvXFx1MDAwMCskLyxcIlwiKTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAweDFGIC8qVlRfTFBXU1RSKi86IGJsb2IubCArPSA0OyB2YWwgPSBwYXJzZV9WdFN0cmluZyhibG9iLCBibG9iW2Jsb2IubC00XSkucmVwbGFjZSgvXFx1MDAwMCskLyxcIlwiKTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAweDAzIC8qVlRfSTQqLzogYmxvYi5sICs9IDQ7IHZhbCA9IGJsb2IucmVhZF9zaGlmdCg0LCAnaScpOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIDB4MTMgLypWVF9VSTQqLzogYmxvYi5sICs9IDQ7IHZhbCA9IGJsb2IucmVhZF9zaGlmdCg0KTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAweDA1IC8qVlRfUjgqLzogYmxvYi5sICs9IDQ7IHZhbCA9IGJsb2IucmVhZF9zaGlmdCg4LCAnZicpOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIDB4MEIgLypWVF9CT09MKi86IGJsb2IubCArPSA0OyB2YWwgPSBwYXJzZWJvb2woYmxvYiwgNCk7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgMHg0MCAvKlZUX0ZJTEVUSU1FKi86IGJsb2IubCArPSA0OyB2YWwgPSBwYXJzZURhdGUocGFyc2VfRklMRVRJTUUoYmxvYikpOyBicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJ1bnBhcnNlZCB2YWx1ZTogXCIgKyBibG9iW2Jsb2IubF0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdFByb3BIW25hbWVdID0gdmFsO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRibG9iLmwgPSBzdGFydF9hZGRyICsgc2l6ZTsgLyogc3RlcCBhaGVhZCB0byBza2lwIHBhZGRpbmcgKi9cblx0cmV0dXJuIFByb3BIO1xufVxudmFyIFhMU1BTU2tpcCA9IFsgXCJDb2RlUGFnZVwiLCBcIlRodW1ibmFpbFwiLCBcIl9QSURfTElOS0JBU0VcIiwgXCJfUElEX0hMSU5LU1wiLCBcIlN5c3RlbUlkZW50aWZpZXJcIiwgXCJGTVRJRFwiIF07IC8vLmNvbmNhdChQc2V1ZG9Qcm9wc1BhaXJzKTtcbmZ1bmN0aW9uIGd1ZXNzX3Byb3BlcnR5X3R5cGUodmFsLyo6YW55Ki8pLyo6bnVtYmVyKi8ge1xuXHRzd2l0Y2godHlwZW9mIHZhbCkge1xuXHRcdGNhc2UgXCJib29sZWFuXCI6IHJldHVybiAweDBCO1xuXHRcdGNhc2UgXCJudW1iZXJcIjogcmV0dXJuICgodmFsfDApPT12YWwpID8gMHgwMyA6IDB4MDU7XG5cdFx0Y2FzZSBcInN0cmluZ1wiOiByZXR1cm4gMHgxRjtcblx0XHRjYXNlIFwib2JqZWN0XCI6IGlmKHZhbCBpbnN0YW5jZW9mIERhdGUpIHJldHVybiAweDQwOyBicmVhaztcblx0fVxuXHRyZXR1cm4gLTE7XG59XG5mdW5jdGlvbiB3cml0ZV9Qcm9wZXJ0eVNldChlbnRyaWVzLCBSRSwgUElEU0kpIHtcblx0dmFyIGhkciA9IG5ld19idWYoOCksIHBpYW8gPSBbXSwgcHJvcCA9IFtdO1xuXHR2YXIgc3ogPSA4LCBpID0gMDtcblxuXHR2YXIgcHIgPSBuZXdfYnVmKDgpLCBwaW8gPSBuZXdfYnVmKDgpO1xuXHRwci53cml0ZV9zaGlmdCg0LCAweDAwMDIpO1xuXHRwci53cml0ZV9zaGlmdCg0LCAweDA0QjApO1xuXHRwaW8ud3JpdGVfc2hpZnQoNCwgMHgwMDAxKTtcblx0cHJvcC5wdXNoKHByKTsgcGlhby5wdXNoKHBpbyk7XG5cdHN6ICs9IDggKyBwci5sZW5ndGg7XG5cblx0aWYoIVJFKSB7XG5cdFx0cGlvID0gbmV3X2J1Zig4KTtcblx0XHRwaW8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdFx0cGlhby51bnNoaWZ0KHBpbyk7XG5cblx0XHR2YXIgYnVmcyA9IFtuZXdfYnVmKDQpXTtcblx0XHRidWZzWzBdLndyaXRlX3NoaWZ0KDQsIGVudHJpZXMubGVuZ3RoKTtcblx0XHRmb3IoaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgKytpKSB7XG5cdFx0XHR2YXIgdmFsdWUgPSBlbnRyaWVzW2ldWzBdO1xuXHRcdFx0cHIgPSBuZXdfYnVmKDQgKyA0ICsgMiAqICh2YWx1ZS5sZW5ndGggKyAxKSArICh2YWx1ZS5sZW5ndGggJSAyID8gMCA6IDIpKTtcblx0XHRcdHByLndyaXRlX3NoaWZ0KDQsIGkrMik7XG5cdFx0XHRwci53cml0ZV9zaGlmdCg0LCB2YWx1ZS5sZW5ndGggKyAxKTtcblx0XHRcdHByLndyaXRlX3NoaWZ0KDAsIHZhbHVlLCBcImRiY3NcIik7XG5cdFx0XHR3aGlsZShwci5sICE9IHByLmxlbmd0aCkgcHIud3JpdGVfc2hpZnQoMSwgMCk7XG5cdFx0XHRidWZzLnB1c2gocHIpO1xuXHRcdH1cblx0XHRwciA9IGJjb25jYXQoYnVmcyk7XG5cdFx0cHJvcC51bnNoaWZ0KHByKTtcblx0XHRzeiArPSA4ICsgcHIubGVuZ3RoO1xuXHR9XG5cblx0Zm9yKGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7ICsraSkge1xuXHRcdGlmKFJFICYmICFSRVtlbnRyaWVzW2ldWzBdXSkgY29udGludWU7XG5cdFx0aWYoWExTUFNTa2lwLmluZGV4T2YoZW50cmllc1tpXVswXSkgPiAtMSB8fCBQc2V1ZG9Qcm9wc1BhaXJzLmluZGV4T2YoZW50cmllc1tpXVswXSkgPiAtMSkgY29udGludWU7XG5cdFx0aWYoZW50cmllc1tpXVsxXSA9PSBudWxsKSBjb250aW51ZTtcblxuXHRcdHZhciB2YWwgPSBlbnRyaWVzW2ldWzFdLCBpZHggPSAwO1xuXHRcdGlmKFJFKSB7XG5cdFx0XHRpZHggPSArUkVbZW50cmllc1tpXVswXV07XG5cdFx0XHR2YXIgcGluZm8gPSAoUElEU0kvKjo6IHx8IHt9Ki8pW2lkeF0vKjo6IHx8IHt9ICovO1xuXHRcdFx0aWYocGluZm8ucCA9PSBcInZlcnNpb25cIiAmJiB0eXBlb2YgdmFsID09IFwic3RyaW5nXCIpIHtcblx0XHRcdFx0Lyo6OiBpZih0eXBlb2YgdmFsICE9PSBcInN0cmluZ1wiKSB0aHJvdyBcInVucmVhY2hhYmxlXCI7ICovXG5cdFx0XHRcdHZhciBhcnIgPSB2YWwuc3BsaXQoXCIuXCIpO1xuXHRcdFx0XHR2YWwgPSAoKCthcnJbMF0pPDwxNikgKyAoKCthcnJbMV0pfHwwKTtcblx0XHRcdH1cblx0XHRcdHByID0gd3JpdGVfVHlwZWRQcm9wZXJ0eVZhbHVlKHBpbmZvLnQsIHZhbCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHZhciBUID0gZ3Vlc3NfcHJvcGVydHlfdHlwZSh2YWwpO1xuXHRcdFx0aWYoVCA9PSAtMSkgeyBUID0gMHgxRjsgdmFsID0gU3RyaW5nKHZhbCk7IH1cblx0XHRcdHByID0gd3JpdGVfVHlwZWRQcm9wZXJ0eVZhbHVlKFQsIHZhbCk7XG5cdFx0fVxuXHRcdHByb3AucHVzaChwcik7XG5cblx0XHRwaW8gPSBuZXdfYnVmKDgpO1xuXHRcdHBpby53cml0ZV9zaGlmdCg0LCAhUkUgPyAyK2kgOiBpZHgpO1xuXHRcdHBpYW8ucHVzaChwaW8pO1xuXG5cdFx0c3ogKz0gOCArIHByLmxlbmd0aDtcblx0fVxuXG5cdHZhciB3ID0gOCAqIChwcm9wLmxlbmd0aCArIDEpO1xuXHRmb3IoaSA9IDA7IGkgPCBwcm9wLmxlbmd0aDsgKytpKSB7IHBpYW9baV0ud3JpdGVfc2hpZnQoNCwgdyk7IHcgKz0gcHJvcFtpXS5sZW5ndGg7IH1cblx0aGRyLndyaXRlX3NoaWZ0KDQsIHN6KTtcblx0aGRyLndyaXRlX3NoaWZ0KDQsIHByb3AubGVuZ3RoKTtcblx0cmV0dXJuIGJjb25jYXQoW2hkcl0uY29uY2F0KHBpYW8pLmNvbmNhdChwcm9wKSk7XG59XG5cbi8qIFtNUy1PTEVQU10gMi4yMSBQcm9wZXJ0eVNldFN0cmVhbSAqL1xuZnVuY3Rpb24gcGFyc2VfUHJvcGVydHlTZXRTdHJlYW0oZmlsZSwgUElEU0ksIGNsc2lkKSB7XG5cdHZhciBibG9iID0gZmlsZS5jb250ZW50O1xuXHRpZighYmxvYikgcmV0dXJuICh7fS8qOmFueSovKTtcblx0cHJlcF9ibG9iKGJsb2IsIDApO1xuXG5cdHZhciBOdW1TZXRzLCBGTVRJRDAsIEZNVElEMSwgT2Zmc2V0MCwgT2Zmc2V0MSA9IDA7XG5cdGJsb2IuY2hrKCdmZWZmJywgJ0J5dGUgT3JkZXI6ICcpO1xuXG5cdC8qdmFyIHZlcnMgPSAqL2Jsb2IucmVhZF9zaGlmdCgyKTsgLy8gVE9ETzogY2hlY2sgdmVyc2lvblxuXHR2YXIgU3lzdGVtSWRlbnRpZmllciA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIENMU0lEID0gYmxvYi5yZWFkX3NoaWZ0KDE2KTtcblx0aWYoQ0xTSUQgIT09IENGQi51dGlscy5jb25zdHMuSEVBREVSX0NMU0lEICYmIENMU0lEICE9PSBjbHNpZCkgdGhyb3cgbmV3IEVycm9yKFwiQmFkIFByb3BlcnR5U2V0IENMU0lEIFwiICsgQ0xTSUQpO1xuXHROdW1TZXRzID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRpZihOdW1TZXRzICE9PSAxICYmIE51bVNldHMgIT09IDIpIHRocm93IG5ldyBFcnJvcihcIlVucmVjb2duaXplZCAjU2V0czogXCIgKyBOdW1TZXRzKTtcblx0Rk1USUQwID0gYmxvYi5yZWFkX3NoaWZ0KDE2KTsgT2Zmc2V0MCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblxuXHRpZihOdW1TZXRzID09PSAxICYmIE9mZnNldDAgIT09IGJsb2IubCkgdGhyb3cgbmV3IEVycm9yKFwiTGVuZ3RoIG1pc21hdGNoOiBcIiArIE9mZnNldDAgKyBcIiAhPT0gXCIgKyBibG9iLmwpO1xuXHRlbHNlIGlmKE51bVNldHMgPT09IDIpIHsgRk1USUQxID0gYmxvYi5yZWFkX3NoaWZ0KDE2KTsgT2Zmc2V0MSA9IGJsb2IucmVhZF9zaGlmdCg0KTsgfVxuXHR2YXIgUFNldDAgPSBwYXJzZV9Qcm9wZXJ0eVNldChibG9iLCBQSURTSSk7XG5cblx0dmFyIHJ2YWwgPSAoeyBTeXN0ZW1JZGVudGlmaWVyOiBTeXN0ZW1JZGVudGlmaWVyIH0vKjphbnkqLyk7XG5cdGZvcih2YXIgeSBpbiBQU2V0MCkgcnZhbFt5XSA9IFBTZXQwW3ldO1xuXHQvL3J2YWwuYmxvYiA9IGJsb2I7XG5cdHJ2YWwuRk1USUQgPSBGTVRJRDA7XG5cdC8vcnZhbC5QU2V0MCA9IFBTZXQwO1xuXHRpZihOdW1TZXRzID09PSAxKSByZXR1cm4gcnZhbDtcblx0aWYoT2Zmc2V0MSAtIGJsb2IubCA9PSAyKSBibG9iLmwgKz0gMjtcblx0aWYoYmxvYi5sICE9PSBPZmZzZXQxKSB0aHJvdyBuZXcgRXJyb3IoXCJMZW5ndGggbWlzbWF0Y2ggMjogXCIgKyBibG9iLmwgKyBcIiAhPT0gXCIgKyBPZmZzZXQxKTtcblx0dmFyIFBTZXQxO1xuXHR0cnkgeyBQU2V0MSA9IHBhcnNlX1Byb3BlcnR5U2V0KGJsb2IsIG51bGwpOyB9IGNhdGNoKGUpIHsvKiBlbXB0eSAqL31cblx0Zm9yKHkgaW4gUFNldDEpIHJ2YWxbeV0gPSBQU2V0MVt5XTtcblx0cnZhbC5GTVRJRCA9IFtGTVRJRDAsIEZNVElEMV07IC8vIFRPRE86IHZlcmlmeSBGTVRJRDAvMVxuXHRyZXR1cm4gcnZhbDtcbn1cbmZ1bmN0aW9uIHdyaXRlX1Byb3BlcnR5U2V0U3RyZWFtKGVudHJpZXMsIGNsc2lkLCBSRSwgUElEU0kvKjp7W2tleTpzdHJpbmd8bnVtYmVyXTphbnl9Ki8sIGVudHJpZXMyLyo6P2FueSovLCBjbHNpZDIvKjo/YW55Ki8pIHtcblx0dmFyIGhkciA9IG5ld19idWYoZW50cmllczIgPyA2OCA6IDQ4KTtcblx0dmFyIGJ1ZnMgPSBbaGRyXTtcblx0aGRyLndyaXRlX3NoaWZ0KDIsIDB4RkZGRSk7XG5cdGhkci53cml0ZV9zaGlmdCgyLCAweDAwMDApOyAvKiBUT0RPOiB0eXBlIDEgcHJvcHMgKi9cblx0aGRyLndyaXRlX3NoaWZ0KDQsIDB4MzIzNjMyMzcpO1xuXHRoZHIud3JpdGVfc2hpZnQoMTYsIENGQi51dGlscy5jb25zdHMuSEVBREVSX0NMU0lELCBcImhleFwiKTtcblx0aGRyLndyaXRlX3NoaWZ0KDQsIChlbnRyaWVzMiA/IDIgOiAxKSk7XG5cdGhkci53cml0ZV9zaGlmdCgxNiwgY2xzaWQsIFwiaGV4XCIpO1xuXHRoZHIud3JpdGVfc2hpZnQoNCwgKGVudHJpZXMyID8gNjggOiA0OCkpO1xuXHR2YXIgcHMwID0gd3JpdGVfUHJvcGVydHlTZXQoZW50cmllcywgUkUsIFBJRFNJKTtcblx0YnVmcy5wdXNoKHBzMCk7XG5cblx0aWYoZW50cmllczIpIHtcblx0XHR2YXIgcHMxID0gd3JpdGVfUHJvcGVydHlTZXQoZW50cmllczIsIG51bGwsIG51bGwpO1xuXHRcdGhkci53cml0ZV9zaGlmdCgxNiwgY2xzaWQyLCBcImhleFwiKTtcblx0XHRoZHIud3JpdGVfc2hpZnQoNCwgNjggKyBwczAubGVuZ3RoKTtcblx0XHRidWZzLnB1c2gocHMxKTtcblx0fVxuXHRyZXR1cm4gYmNvbmNhdChidWZzKTtcbn1cblxuZnVuY3Rpb24gcGFyc2Vub29wMihibG9iLCBsZW5ndGgpIHsgYmxvYi5yZWFkX3NoaWZ0KGxlbmd0aCk7IHJldHVybiBudWxsOyB9XG5mdW5jdGlvbiB3cml0ZXplcm9lcyhuLCBvKSB7IGlmKCFvKSBvPW5ld19idWYobik7IGZvcih2YXIgaj0wOyBqPG47ICsraikgby53cml0ZV9zaGlmdCgxLCAwKTsgcmV0dXJuIG87IH1cblxuZnVuY3Rpb24gcGFyc2x1cnAoYmxvYiwgbGVuZ3RoLCBjYikge1xuXHR2YXIgYXJyID0gW10sIHRhcmdldCA9IGJsb2IubCArIGxlbmd0aDtcblx0d2hpbGUoYmxvYi5sIDwgdGFyZ2V0KSBhcnIucHVzaChjYihibG9iLCB0YXJnZXQgLSBibG9iLmwpKTtcblx0aWYodGFyZ2V0ICE9PSBibG9iLmwpIHRocm93IG5ldyBFcnJvcihcIlNsdXJwIGVycm9yXCIpO1xuXHRyZXR1cm4gYXJyO1xufVxuXG5mdW5jdGlvbiBwYXJzZWJvb2woYmxvYiwgbGVuZ3RoLyo6bnVtYmVyKi8pIHsgcmV0dXJuIGJsb2IucmVhZF9zaGlmdChsZW5ndGgpID09PSAweDE7IH1cbmZ1bmN0aW9uIHdyaXRlYm9vbCh2Lyo6YW55Ki8sIG8pIHsgaWYoIW8pIG89bmV3X2J1ZigyKTsgby53cml0ZV9zaGlmdCgyLCArISF2KTsgcmV0dXJuIG87IH1cblxuZnVuY3Rpb24gcGFyc2V1aW50MTYoYmxvYi8qOjosIGxlbmd0aDo/bnVtYmVyLCBvcHRzOj9hbnkqLykgeyByZXR1cm4gYmxvYi5yZWFkX3NoaWZ0KDIsICd1Jyk7IH1cbmZ1bmN0aW9uIHdyaXRldWludDE2KHYvKjpudW1iZXIqLywgbykgeyBpZighbykgbz1uZXdfYnVmKDIpOyBvLndyaXRlX3NoaWZ0KDIsIHYpOyByZXR1cm4gbzsgfVxuZnVuY3Rpb24gcGFyc2V1aW50MTZhKGJsb2IsIGxlbmd0aC8qOjogOj9udW1iZXIsIG9wdHM6P2FueSovKSB7IHJldHVybiBwYXJzbHVycChibG9iLGxlbmd0aCxwYXJzZXVpbnQxNik7fVxuXG4vKiAtLS0gMi41IFN0cnVjdHVyZXMgLS0tICovXG5cbi8qIFtNUy1YTFNdIDIuNS4xMCBCZXMgKGJvb2xlYW4gb3IgZXJyb3IpICovXG5mdW5jdGlvbiBwYXJzZV9CZXMoYmxvYi8qOjosIGxlbmd0aCovKSB7XG5cdHZhciB2ID0gYmxvYi5yZWFkX3NoaWZ0KDEpLCB0ID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRyZXR1cm4gdCA9PT0gMHgwMSA/IHYgOiB2ID09PSAweDAxO1xufVxuZnVuY3Rpb24gd3JpdGVfQmVzKHYsIHQvKjpzdHJpbmcqLywgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoMik7XG5cdG8ud3JpdGVfc2hpZnQoMSwgKCh0ID09ICdlJykgPyArdiA6ICshIXYpKTtcblx0by53cml0ZV9zaGlmdCgxLCAoKHQgPT0gJ2UnKSA/IDEgOiAwKSk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMjQwIFNob3J0WExVbmljb2RlU3RyaW5nICovXG5mdW5jdGlvbiBwYXJzZV9TaG9ydFhMVW5pY29kZVN0cmluZyhibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGNjaCA9IGJsb2IucmVhZF9zaGlmdChvcHRzICYmIG9wdHMuYmlmZiA+PSAxMiA/IDIgOiAxKTtcblx0dmFyIGVuY29kaW5nID0gJ3NiY3MtY29udCc7XG5cdHZhciBjcCA9IGN1cnJlbnRfY29kZXBhZ2U7XG5cdGlmKG9wdHMgJiYgb3B0cy5iaWZmID49IDgpIGN1cnJlbnRfY29kZXBhZ2UgPSAxMjAwO1xuXHRpZighb3B0cyB8fCBvcHRzLmJpZmYgPT0gOCApIHtcblx0XHR2YXIgZkhpZ2hCeXRlID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRcdGlmKGZIaWdoQnl0ZSkgeyBlbmNvZGluZyA9ICdkYmNzLWNvbnQnOyB9XG5cdH0gZWxzZSBpZihvcHRzLmJpZmYgPT0gMTIpIHtcblx0XHRlbmNvZGluZyA9ICd3c3RyJztcblx0fVxuXHRpZihvcHRzLmJpZmYgPj0gMiAmJiBvcHRzLmJpZmYgPD0gNSkgZW5jb2RpbmcgPSAnY3BzdHInO1xuXHR2YXIgbyA9IGNjaCA/IGJsb2IucmVhZF9zaGlmdChjY2gsIGVuY29kaW5nKSA6IFwiXCI7XG5cdGN1cnJlbnRfY29kZXBhZ2UgPSBjcDtcblx0cmV0dXJuIG87XG59XG5cbi8qIDIuNS4yOTMgWExVbmljb2RlUmljaEV4dGVuZGVkU3RyaW5nICovXG5mdW5jdGlvbiBwYXJzZV9YTFVuaWNvZGVSaWNoRXh0ZW5kZWRTdHJpbmcoYmxvYikge1xuXHR2YXIgY3AgPSBjdXJyZW50X2NvZGVwYWdlO1xuXHRjdXJyZW50X2NvZGVwYWdlID0gMTIwMDtcblx0dmFyIGNjaCA9IGJsb2IucmVhZF9zaGlmdCgyKSwgZmxhZ3MgPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdHZhciAvKmZIaWdoQnl0ZSA9IGZsYWdzICYgMHgxLCovIGZFeHRTdCA9IGZsYWdzICYgMHg0LCBmUmljaFN0ID0gZmxhZ3MgJiAweDg7XG5cdHZhciB3aWR0aCA9IDEgKyAoZmxhZ3MgJiAweDEpOyAvLyAweDAgLT4gdXRmOCwgMHgxIC0+IGRiY3Ncblx0dmFyIGNSdW4gPSAwLCBjYkV4dFJzdDtcblx0dmFyIHogPSB7fTtcblx0aWYoZlJpY2hTdCkgY1J1biA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0aWYoZkV4dFN0KSBjYkV4dFJzdCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIGVuY29kaW5nID0gd2lkdGggPT0gMiA/ICdkYmNzLWNvbnQnIDogJ3NiY3MtY29udCc7XG5cdHZhciBtc2cgPSBjY2ggPT09IDAgPyBcIlwiIDogYmxvYi5yZWFkX3NoaWZ0KGNjaCwgZW5jb2RpbmcpO1xuXHRpZihmUmljaFN0KSBibG9iLmwgKz0gNCAqIGNSdW47IC8vVE9ETzogcGFyc2UgdGhpc1xuXHRpZihmRXh0U3QpIGJsb2IubCArPSBjYkV4dFJzdDsgLy9UT0RPOiBwYXJzZSB0aGlzXG5cdHoudCA9IG1zZztcblx0aWYoIWZSaWNoU3QpIHsgei5yYXcgPSBcIjx0PlwiICsgei50ICsgXCI8L3Q+XCI7IHouciA9IHoudDsgfVxuXHRjdXJyZW50X2NvZGVwYWdlID0gY3A7XG5cdHJldHVybiB6O1xufVxuZnVuY3Rpb24gd3JpdGVfWExVbmljb2RlUmljaEV4dGVuZGVkU3RyaW5nKHhsc3RyLyo6OiA6WExTdHJpbmcsIG9wdHMqLykge1xuXHR2YXIgc3RyID0gKHhsc3RyLnR8fFwiXCIpLCBuZm10cyA9IDE7XG5cblx0dmFyIGhkciA9IG5ld19idWYoMyArIChuZm10cyA+IDEgPyAyIDogMCkpO1xuXHRoZHIud3JpdGVfc2hpZnQoMiwgc3RyLmxlbmd0aCk7XG5cdGhkci53cml0ZV9zaGlmdCgxLCAobmZtdHMgPiAxID8gMHgwOCA6IDB4MDApIHwgMHgwMSk7XG5cdGlmKG5mbXRzID4gMSkgaGRyLndyaXRlX3NoaWZ0KDIsIG5mbXRzKTtcblxuXHR2YXIgb3RleHQgPSBuZXdfYnVmKDIgKiBzdHIubGVuZ3RoKTtcblx0b3RleHQud3JpdGVfc2hpZnQoMiAqIHN0ci5sZW5ndGgsIHN0ciwgJ3V0ZjE2bGUnKTtcblxuXHR2YXIgb3V0ID0gW2hkciwgb3RleHRdO1xuXG5cdHJldHVybiBiY29uY2F0KG91dCk7XG59XG5cbi8qIDIuNS4yOTYgWExVbmljb2RlU3RyaW5nTm9DY2ggKi9cbmZ1bmN0aW9uIHBhcnNlX1hMVW5pY29kZVN0cmluZ05vQ2NoKGJsb2IsIGNjaCwgb3B0cykge1xuXHR2YXIgcmV0dmFsO1xuXHRpZihvcHRzKSB7XG5cdFx0aWYob3B0cy5iaWZmID49IDIgJiYgb3B0cy5iaWZmIDw9IDUpIHJldHVybiBibG9iLnJlYWRfc2hpZnQoY2NoLCAnY3BzdHInKTtcblx0XHRpZihvcHRzLmJpZmYgPj0gMTIpIHJldHVybiBibG9iLnJlYWRfc2hpZnQoY2NoLCAnZGJjcy1jb250Jyk7XG5cdH1cblx0dmFyIGZIaWdoQnl0ZSA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0aWYoZkhpZ2hCeXRlPT09MCkgeyByZXR2YWwgPSBibG9iLnJlYWRfc2hpZnQoY2NoLCAnc2Jjcy1jb250Jyk7IH1cblx0ZWxzZSB7IHJldHZhbCA9IGJsb2IucmVhZF9zaGlmdChjY2gsICdkYmNzLWNvbnQnKTsgfVxuXHRyZXR1cm4gcmV0dmFsO1xufVxuXG4vKiAyLjUuMjk0IFhMVW5pY29kZVN0cmluZyAqL1xuZnVuY3Rpb24gcGFyc2VfWExVbmljb2RlU3RyaW5nKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgY2NoID0gYmxvYi5yZWFkX3NoaWZ0KG9wdHMgJiYgb3B0cy5iaWZmID09IDIgPyAxIDogMik7XG5cdGlmKGNjaCA9PT0gMCkgeyBibG9iLmwrKzsgcmV0dXJuIFwiXCI7IH1cblx0cmV0dXJuIHBhcnNlX1hMVW5pY29kZVN0cmluZ05vQ2NoKGJsb2IsIGNjaCwgb3B0cyk7XG59XG4vKiBCSUZGNSBvdmVycmlkZSAqL1xuZnVuY3Rpb24gcGFyc2VfWExVbmljb2RlU3RyaW5nMihibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0aWYob3B0cy5iaWZmID4gNSkgcmV0dXJuIHBhcnNlX1hMVW5pY29kZVN0cmluZyhibG9iLCBsZW5ndGgsIG9wdHMpO1xuXHR2YXIgY2NoID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRpZihjY2ggPT09IDApIHsgYmxvYi5sKys7IHJldHVybiBcIlwiOyB9XG5cdHJldHVybiBibG9iLnJlYWRfc2hpZnQoY2NoLCAob3B0cy5iaWZmIDw9IDQgfHwgIWJsb2IubGVucyApID8gJ2Nwc3RyJyA6ICdzYmNzLWNvbnQnKTtcbn1cbi8qIFRPRE86IEJJRkY1IGFuZCBsb3dlciwgY29kZXBhZ2UgYXdhcmVuZXNzICovXG5mdW5jdGlvbiB3cml0ZV9YTFVuaWNvZGVTdHJpbmcoc3RyLCBvcHRzLCBvKSB7XG5cdGlmKCFvKSBvID0gbmV3X2J1ZigzICsgMiAqIHN0ci5sZW5ndGgpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIHN0ci5sZW5ndGgpO1xuXHRvLndyaXRlX3NoaWZ0KDEsIDEpO1xuXHRvLndyaXRlX3NoaWZ0KDMxLCBzdHIsICd1dGYxNmxlJyk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuNjEgQ29udHJvbEluZm8gKi9cbmZ1bmN0aW9uIHBhcnNlX0NvbnRyb2xJbmZvKGJsb2IvKjo6LCBsZW5ndGgsIG9wdHMqLykge1xuXHR2YXIgZmxhZ3MgPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdGJsb2IubCsrO1xuXHR2YXIgYWNjZWwgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSAyO1xuXHRyZXR1cm4gW2ZsYWdzLCBhY2NlbF07XG59XG5cbi8qIFtNUy1PU0hBUkVEXSAyLjMuNy42IFVSTE1vbmlrZXIgVE9ETzogZmxhZ3MgKi9cbmZ1bmN0aW9uIHBhcnNlX1VSTE1vbmlrZXIoYmxvYi8qOjosIGxlbmd0aCwgb3B0cyovKSB7XG5cdHZhciBsZW4gPSBibG9iLnJlYWRfc2hpZnQoNCksIHN0YXJ0ID0gYmxvYi5sO1xuXHR2YXIgZXh0cmEgPSBmYWxzZTtcblx0aWYobGVuID4gMjQpIHtcblx0XHQvKiBsb29rIGFoZWFkICovXG5cdFx0YmxvYi5sICs9IGxlbiAtIDI0O1xuXHRcdGlmKGJsb2IucmVhZF9zaGlmdCgxNikgPT09IFwiNzk1ODgxZjQzYjFkN2Y0OGFmMmM4MjVkYzQ4NTI3NjNcIikgZXh0cmEgPSB0cnVlO1xuXHRcdGJsb2IubCA9IHN0YXJ0O1xuXHR9XG5cdHZhciB1cmwgPSBibG9iLnJlYWRfc2hpZnQoKGV4dHJhP2xlbi0yNDpsZW4pPj4xLCAndXRmMTZsZScpLnJlcGxhY2UoY2hyMCxcIlwiKTtcblx0aWYoZXh0cmEpIGJsb2IubCArPSAyNDtcblx0cmV0dXJuIHVybDtcbn1cblxuLyogW01TLU9TSEFSRURdIDIuMy43LjggRmlsZU1vbmlrZXIgVE9ETzogYWxsIGZpZWxkcyAqL1xuZnVuY3Rpb24gcGFyc2VfRmlsZU1vbmlrZXIoYmxvYi8qOjosIGxlbmd0aCovKSB7XG5cdHZhciBjQW50aSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIHByZWFtYmxlID0gXCJcIjsgd2hpbGUoY0FudGktLSA+IDApIHByZWFtYmxlICs9IFwiLi4vXCI7XG5cdHZhciBhbnNpUGF0aCA9IGJsb2IucmVhZF9zaGlmdCgwLCAnbHBzdHItYW5zaScpO1xuXHRibG9iLmwgKz0gMjsgLy92YXIgZW5kU2VydmVyID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRpZihibG9iLnJlYWRfc2hpZnQoMikgIT0gMHhERUFEKSB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgRmlsZU1vbmlrZXJcIik7XG5cdHZhciBzeiA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0aWYoc3ogPT09IDApIHJldHVybiBwcmVhbWJsZSArIGFuc2lQYXRoLnJlcGxhY2UoL1xcXFwvZyxcIi9cIik7XG5cdHZhciBieXRlcyA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0aWYoYmxvYi5yZWFkX3NoaWZ0KDIpICE9IDMpIHRocm93IG5ldyBFcnJvcihcIkJhZCBGaWxlTW9uaWtlclwiKTtcblx0dmFyIHVuaWNvZGVQYXRoID0gYmxvYi5yZWFkX3NoaWZ0KGJ5dGVzPj4xLCAndXRmMTZsZScpLnJlcGxhY2UoY2hyMCxcIlwiKTtcblx0cmV0dXJuIHByZWFtYmxlICsgdW5pY29kZVBhdGg7XG59XG5cbi8qIFtNUy1PU0hBUkVEXSAyLjMuNy4yIEh5cGVybGlua01vbmlrZXIgVE9ETzogYWxsIHRoZSBtb25pa2VycyAqL1xuZnVuY3Rpb24gcGFyc2VfSHlwZXJsaW5rTW9uaWtlcihibG9iLCBsZW5ndGgpIHtcblx0dmFyIGNsc2lkID0gYmxvYi5yZWFkX3NoaWZ0KDE2KTsgbGVuZ3RoIC09IDE2O1xuXHRzd2l0Y2goY2xzaWQpIHtcblx0XHRjYXNlIFwiZTBjOWVhNzlmOWJhY2UxMThjODIwMGFhMDA0YmE5MGJcIjogcmV0dXJuIHBhcnNlX1VSTE1vbmlrZXIoYmxvYiwgbGVuZ3RoKTtcblx0XHRjYXNlIFwiMDMwMzAwMDAwMDAwMDAwMGMwMDAwMDAwMDAwMDAwNDZcIjogcmV0dXJuIHBhcnNlX0ZpbGVNb25pa2VyKGJsb2IsIGxlbmd0aCk7XG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgTW9uaWtlciBcIiArIGNsc2lkKTtcblx0fVxufVxuXG4vKiBbTVMtT1NIQVJFRF0gMi4zLjcuOSBIeXBlcmxpbmtTdHJpbmcgKi9cbmZ1bmN0aW9uIHBhcnNlX0h5cGVybGlua1N0cmluZyhibG9iLyo6OiwgbGVuZ3RoKi8pIHtcblx0dmFyIGxlbiA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIG8gPSBsZW4gPiAwID8gYmxvYi5yZWFkX3NoaWZ0KGxlbiwgJ3V0ZjE2bGUnKS5yZXBsYWNlKGNocjAsIFwiXCIpIDogXCJcIjtcblx0cmV0dXJuIG87XG59XG5mdW5jdGlvbiB3cml0ZV9IeXBlcmxpbmtTdHJpbmcoc3RyLyo6c3RyaW5nKi8sIG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDYgKyBzdHIubGVuZ3RoICogMik7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMSArIHN0ci5sZW5ndGgpO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSBvLndyaXRlX3NoaWZ0KDIsIHN0ci5jaGFyQ29kZUF0KGkpKTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1PU0hBUkVEXSAyLjMuNy4xIEh5cGVybGluayBPYmplY3QgKi9cbmZ1bmN0aW9uIHBhcnNlX0h5cGVybGluayhibG9iLCBsZW5ndGgpLyo6SHlwZXJsaW5rKi8ge1xuXHR2YXIgZW5kID0gYmxvYi5sICsgbGVuZ3RoO1xuXHR2YXIgc1ZlciA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0aWYoc1ZlciAhPT0gMikgdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIHN0cmVhbVZlcnNpb246IFwiICsgc1Zlcik7XG5cdHZhciBmbGFncyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDI7XG5cdHZhciBkaXNwbGF5TmFtZSwgdGFyZ2V0RnJhbWVOYW1lLCBtb25pa2VyLCBvbGVNb25pa2VyLCBMb2M9XCJcIiwgZ3VpZCwgZmlsZVRpbWU7XG5cdGlmKGZsYWdzICYgMHgwMDEwKSBkaXNwbGF5TmFtZSA9IHBhcnNlX0h5cGVybGlua1N0cmluZyhibG9iLCBlbmQgLSBibG9iLmwpO1xuXHRpZihmbGFncyAmIDB4MDA4MCkgdGFyZ2V0RnJhbWVOYW1lID0gcGFyc2VfSHlwZXJsaW5rU3RyaW5nKGJsb2IsIGVuZCAtIGJsb2IubCk7XG5cdGlmKChmbGFncyAmIDB4MDEwMSkgPT09IDB4MDEwMSkgbW9uaWtlciA9IHBhcnNlX0h5cGVybGlua1N0cmluZyhibG9iLCBlbmQgLSBibG9iLmwpO1xuXHRpZigoZmxhZ3MgJiAweDAxMDEpID09PSAweDAwMDEpIG9sZU1vbmlrZXIgPSBwYXJzZV9IeXBlcmxpbmtNb25pa2VyKGJsb2IsIGVuZCAtIGJsb2IubCk7XG5cdGlmKGZsYWdzICYgMHgwMDA4KSBMb2MgPSBwYXJzZV9IeXBlcmxpbmtTdHJpbmcoYmxvYiwgZW5kIC0gYmxvYi5sKTtcblx0aWYoZmxhZ3MgJiAweDAwMjApIGd1aWQgPSBibG9iLnJlYWRfc2hpZnQoMTYpO1xuXHRpZihmbGFncyAmIDB4MDA0MCkgZmlsZVRpbWUgPSBwYXJzZV9GSUxFVElNRShibG9iLyosIDgqLyk7XG5cdGJsb2IubCA9IGVuZDtcblx0dmFyIHRhcmdldCA9IHRhcmdldEZyYW1lTmFtZXx8bW9uaWtlcnx8b2xlTW9uaWtlcnx8XCJcIjtcblx0aWYodGFyZ2V0ICYmIExvYykgdGFyZ2V0Kz1cIiNcIitMb2M7XG5cdGlmKCF0YXJnZXQpIHRhcmdldCA9IFwiI1wiICsgTG9jO1xuXHRpZigoZmxhZ3MgJiAweDAwMDIpICYmIHRhcmdldC5jaGFyQXQoMCkgPT0gXCIvXCIgJiYgdGFyZ2V0LmNoYXJBdCgxKSAhPSBcIi9cIikgdGFyZ2V0ID0gXCJmaWxlOi8vXCIgKyB0YXJnZXQ7XG5cdHZhciBvdXQgPSAoe1RhcmdldDp0YXJnZXR9Lyo6YW55Ki8pO1xuXHRpZihndWlkKSBvdXQuZ3VpZCA9IGd1aWQ7XG5cdGlmKGZpbGVUaW1lKSBvdXQudGltZSA9IGZpbGVUaW1lO1xuXHRpZihkaXNwbGF5TmFtZSkgb3V0LlRvb2x0aXAgPSBkaXNwbGF5TmFtZTtcblx0cmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIHdyaXRlX0h5cGVybGluayhobCkge1xuXHR2YXIgb3V0ID0gbmV3X2J1Zig1MTIpLCBpID0gMDtcblx0dmFyIFRhcmdldCA9IGhsLlRhcmdldDtcblx0aWYoVGFyZ2V0LnNsaWNlKDAsNykgPT0gXCJmaWxlOi8vXCIpIFRhcmdldCA9IFRhcmdldC5zbGljZSg3KTtcblx0dmFyIGhhc2hpZHggPSBUYXJnZXQuaW5kZXhPZihcIiNcIik7XG5cdHZhciBGID0gaGFzaGlkeCA+IC0xID8gMHgxZiA6IDB4MTc7XG5cdHN3aXRjaChUYXJnZXQuY2hhckF0KDApKSB7IGNhc2UgXCIjXCI6IEY9MHgxYzsgYnJlYWs7IGNhc2UgXCIuXCI6IEYmPX4yOyBicmVhazsgfVxuXHRvdXQud3JpdGVfc2hpZnQoNCwyKTsgb3V0LndyaXRlX3NoaWZ0KDQsIEYpO1xuXHR2YXIgZGF0YSA9IFs4LDY4MTU4MjcsNjYxOTIzNyw0ODQ5NzgwLDgzXTsgZm9yKGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSkgb3V0LndyaXRlX3NoaWZ0KDQsIGRhdGFbaV0pO1xuXHRpZihGID09IDB4MUMpIHtcblx0XHRUYXJnZXQgPSBUYXJnZXQuc2xpY2UoMSk7XG5cdFx0d3JpdGVfSHlwZXJsaW5rU3RyaW5nKFRhcmdldCwgb3V0KTtcblx0fSBlbHNlIGlmKEYgJiAweDAyKSB7XG5cdFx0ZGF0YSA9IFwiZTAgYzkgZWEgNzkgZjkgYmEgY2UgMTEgOGMgODIgMDAgYWEgMDAgNGIgYTkgMGJcIi5zcGxpdChcIiBcIik7XG5cdFx0Zm9yKGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSkgb3V0LndyaXRlX3NoaWZ0KDEsIHBhcnNlSW50KGRhdGFbaV0sIDE2KSk7XG5cdFx0dmFyIFByZXRhcmdldCA9IGhhc2hpZHggPiAtMSA/IFRhcmdldC5zbGljZSgwLCBoYXNoaWR4KSA6IFRhcmdldDtcblx0XHRvdXQud3JpdGVfc2hpZnQoNCwgMiooUHJldGFyZ2V0Lmxlbmd0aCArIDEpKTtcblx0XHRmb3IoaSA9IDA7IGkgPCBQcmV0YXJnZXQubGVuZ3RoOyArK2kpIG91dC53cml0ZV9zaGlmdCgyLCBQcmV0YXJnZXQuY2hhckNvZGVBdChpKSk7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDIsIDApO1xuXHRcdGlmKEYgJiAweDA4KSB3cml0ZV9IeXBlcmxpbmtTdHJpbmcoaGFzaGlkeCA+IC0xID8gVGFyZ2V0LnNsaWNlKGhhc2hpZHgrMSk6IFwiXCIsIG91dCk7XG5cdH0gZWxzZSB7XG5cdFx0ZGF0YSA9IFwiMDMgMDMgMDAgMDAgMDAgMDAgMDAgMDAgYzAgMDAgMDAgMDAgMDAgMDAgMDAgNDZcIi5zcGxpdChcIiBcIik7XG5cdFx0Zm9yKGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSkgb3V0LndyaXRlX3NoaWZ0KDEsIHBhcnNlSW50KGRhdGFbaV0sIDE2KSk7XG5cdFx0dmFyIFAgPSAwO1xuXHRcdHdoaWxlKFRhcmdldC5zbGljZShQKjMsUCozKzMpPT1cIi4uL1wifHxUYXJnZXQuc2xpY2UoUCozLFAqMyszKT09XCIuLlxcXFxcIikgKytQO1xuXHRcdG91dC53cml0ZV9zaGlmdCgyLCBQKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoNCwgVGFyZ2V0Lmxlbmd0aCAtIDMgKiBQICsgMSk7XG5cdFx0Zm9yKGkgPSAwOyBpIDwgVGFyZ2V0Lmxlbmd0aCAtIDMgKiBQOyArK2kpIG91dC53cml0ZV9zaGlmdCgxLCBUYXJnZXQuY2hhckNvZGVBdChpICsgMyAqIFApICYgMHhGRik7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDEsIDApO1xuXHRcdG91dC53cml0ZV9zaGlmdCgyLCAweEZGRkYpO1xuXHRcdG91dC53cml0ZV9zaGlmdCgyLCAweERFQUQpO1xuXHRcdGZvcihpID0gMDsgaSA8IDY7ICsraSkgb3V0LndyaXRlX3NoaWZ0KDQsIDApO1xuXHR9XG5cdHJldHVybiBvdXQuc2xpY2UoMCwgb3V0LmwpO1xufVxuXG4vKiAyLjUuMTc4IExvbmdSR0JBICovXG5mdW5jdGlvbiBwYXJzZV9Mb25nUkdCQShibG9iLyo6OiwgbGVuZ3RoKi8pIHsgdmFyIHIgPSBibG9iLnJlYWRfc2hpZnQoMSksIGcgPSBibG9iLnJlYWRfc2hpZnQoMSksIGIgPSBibG9iLnJlYWRfc2hpZnQoMSksIGEgPSBibG9iLnJlYWRfc2hpZnQoMSk7IHJldHVybiBbcixnLGIsYV07IH1cblxuLyogMi41LjE3NyBMb25nUkdCICovXG5mdW5jdGlvbiBwYXJzZV9Mb25nUkdCKGJsb2IsIGxlbmd0aCkgeyB2YXIgeCA9IHBhcnNlX0xvbmdSR0JBKGJsb2IsIGxlbmd0aCk7IHhbM10gPSAwOyByZXR1cm4geDsgfVxuXG5cbi8qIFtNUy1YTFNdIDIuNS4xOSAqL1xuZnVuY3Rpb24gcGFyc2VfWExTQ2VsbChibG9iLyo6OiwgbGVuZ3RoKi8pLyo6Q2VsbCovIHtcblx0dmFyIHJ3ID0gYmxvYi5yZWFkX3NoaWZ0KDIpOyAvLyAwLWluZGV4ZWRcblx0dmFyIGNvbCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGl4ZmUgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHJldHVybiAoe3I6cncsIGM6Y29sLCBpeGZlOml4ZmV9Lyo6YW55Ki8pO1xufVxuZnVuY3Rpb24gd3JpdGVfWExTQ2VsbChSLyo6bnVtYmVyKi8sIEMvKjpudW1iZXIqLywgaXhmZS8qOj9udW1iZXIqLywgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoNik7XG5cdG8ud3JpdGVfc2hpZnQoMiwgUik7XG5cdG8ud3JpdGVfc2hpZnQoMiwgQyk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgaXhmZXx8MCk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTM0ICovXG5mdW5jdGlvbiBwYXJzZV9mcnRIZWFkZXIoYmxvYikge1xuXHR2YXIgcnQgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBmbGFncyA9IGJsb2IucmVhZF9zaGlmdCgyKTsgLy8gVE9ETzogcGFyc2UgdGhlc2UgZmxhZ3Ncblx0YmxvYi5sICs9IDg7XG5cdHJldHVybiB7dHlwZTogcnQsIGZsYWdzOiBmbGFnc307XG59XG5cblxuXG5mdW5jdGlvbiBwYXJzZV9PcHRYTFVuaWNvZGVTdHJpbmcoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7IHJldHVybiBsZW5ndGggPT09IDAgPyBcIlwiIDogcGFyc2VfWExVbmljb2RlU3RyaW5nMihibG9iLCBsZW5ndGgsIG9wdHMpOyB9XG5cbi8qIFtNUy1YTFNdIDIuNS4zNDQgKi9cbmZ1bmN0aW9uIHBhcnNlX1hUSShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHcgPSBvcHRzLmJpZmYgPiA4ID8gNCA6IDI7XG5cdHZhciBpU3VwQm9vayA9IGJsb2IucmVhZF9zaGlmdCh3KSwgaXRhYkZpcnN0ID0gYmxvYi5yZWFkX3NoaWZ0KHcsJ2knKSwgaXRhYkxhc3QgPSBibG9iLnJlYWRfc2hpZnQodywnaScpO1xuXHRyZXR1cm4gW2lTdXBCb29rLCBpdGFiRmlyc3QsIGl0YWJMYXN0XTtcbn1cblxuLyogW01TLVhMU10gMi41LjIxOCAqL1xuZnVuY3Rpb24gcGFyc2VfUmtSZWMoYmxvYikge1xuXHR2YXIgaXhmZSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIFJLID0gcGFyc2VfUmtOdW1iZXIoYmxvYik7XG5cdHJldHVybiBbaXhmZSwgUktdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMSAqL1xuZnVuY3Rpb24gcGFyc2VfQWRkaW5VZGYoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGJsb2IubCArPSA0OyBsZW5ndGggLT0gNDtcblx0dmFyIGwgPSBibG9iLmwgKyBsZW5ndGg7XG5cdHZhciB1ZGZOYW1lID0gcGFyc2VfU2hvcnRYTFVuaWNvZGVTdHJpbmcoYmxvYiwgbGVuZ3RoLCBvcHRzKTtcblx0dmFyIGNiID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRsIC09IGJsb2IubDtcblx0aWYoY2IgIT09IGwpIHRocm93IG5ldyBFcnJvcihcIk1hbGZvcm1lZCBBZGRpblVkZjogcGFkZGluZyA9IFwiICsgbCArIFwiICE9IFwiICsgY2IpO1xuXHRibG9iLmwgKz0gY2I7XG5cdHJldHVybiB1ZGZOYW1lO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMjA5IFRPRE86IENoZWNrIHNpemVzICovXG5mdW5jdGlvbiBwYXJzZV9SZWY4VShibG9iLyo6OiwgbGVuZ3RoKi8pIHtcblx0dmFyIHJ3Rmlyc3QgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciByd0xhc3QgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBjb2xGaXJzdCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGNvbExhc3QgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHJldHVybiB7czp7Yzpjb2xGaXJzdCwgcjpyd0ZpcnN0fSwgZTp7Yzpjb2xMYXN0LHI6cndMYXN0fX07XG59XG5mdW5jdGlvbiB3cml0ZV9SZWY4VShyLyo6UmFuZ2UqLywgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoOCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgci5zLnIpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIHIuZS5yKTtcblx0by53cml0ZV9zaGlmdCgyLCByLnMuYyk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgci5lLmMpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi41LjIxMSAqL1xuZnVuY3Rpb24gcGFyc2VfUmVmVShibG9iLyo6OiwgbGVuZ3RoKi8pIHtcblx0dmFyIHJ3Rmlyc3QgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciByd0xhc3QgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBjb2xGaXJzdCA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0dmFyIGNvbExhc3QgPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdHJldHVybiB7czp7Yzpjb2xGaXJzdCwgcjpyd0ZpcnN0fSwgZTp7Yzpjb2xMYXN0LHI6cndMYXN0fX07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4yMDcgKi9cbnZhciBwYXJzZV9SZWYgPSBwYXJzZV9SZWZVO1xuXG4vKiBbTVMtWExTXSAyLjUuMTQzICovXG5mdW5jdGlvbiBwYXJzZV9GdENtbyhibG9iLyo6OiwgbGVuZ3RoKi8pIHtcblx0YmxvYi5sICs9IDQ7XG5cdHZhciBvdCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGlkID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgZmxhZ3MgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCs9MTI7XG5cdHJldHVybiBbaWQsIG90LCBmbGFnc107XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xNDkgKi9cbmZ1bmN0aW9uIHBhcnNlX0Z0TnRzKGJsb2IpIHtcblx0dmFyIG91dCA9IHt9O1xuXHRibG9iLmwgKz0gNDtcblx0YmxvYi5sICs9IDE2OyAvLyBHVUlEIFRPRE9cblx0b3V0LmZTaGFyZWROb3RlID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gNDtcblx0cmV0dXJuIG91dDtcbn1cblxuLyogW01TLVhMU10gMi41LjE0MiAqL1xuZnVuY3Rpb24gcGFyc2VfRnRDZihibG9iKSB7XG5cdHZhciBvdXQgPSB7fTtcblx0YmxvYi5sICs9IDQ7XG5cdGJsb2IuY2YgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHJldHVybiBvdXQ7XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xNDAgLSAyLjUuMTU0IGFuZCBmcmllbmRzICovXG5mdW5jdGlvbiBwYXJzZV9GdFNraXAoYmxvYikgeyBibG9iLmwgKz0gMjsgYmxvYi5sICs9IGJsb2IucmVhZF9zaGlmdCgyKTsgfVxudmFyIEZ0VGFiID0ge1xuXHQvKjo6WyovMHgwMC8qOjpdKi86IHBhcnNlX0Z0U2tpcCwgICAgICAvKiBGdEVuZCAqL1xuXHQvKjo6WyovMHgwNC8qOjpdKi86IHBhcnNlX0Z0U2tpcCwgICAgICAvKiBGdE1hY3JvICovXG5cdC8qOjpbKi8weDA1Lyo6Ol0qLzogcGFyc2VfRnRTa2lwLCAgICAgIC8qIEZ0QnV0dG9uICovXG5cdC8qOjpbKi8weDA2Lyo6Ol0qLzogcGFyc2VfRnRTa2lwLCAgICAgIC8qIEZ0R21vICovXG5cdC8qOjpbKi8weDA3Lyo6Ol0qLzogcGFyc2VfRnRDZiwgICAgICAgIC8qIEZ0Q2YgKi9cblx0Lyo6OlsqLzB4MDgvKjo6XSovOiBwYXJzZV9GdFNraXAsICAgICAgLyogRnRQaW9HcmJpdCAqL1xuXHQvKjo6WyovMHgwOS8qOjpdKi86IHBhcnNlX0Z0U2tpcCwgICAgICAvKiBGdFBpY3RGbWxhICovXG5cdC8qOjpbKi8weDBBLyo6Ol0qLzogcGFyc2VfRnRTa2lwLCAgICAgIC8qIEZ0Q2JscyAqL1xuXHQvKjo6WyovMHgwQi8qOjpdKi86IHBhcnNlX0Z0U2tpcCwgICAgICAvKiBGdFJibyAqL1xuXHQvKjo6WyovMHgwQy8qOjpdKi86IHBhcnNlX0Z0U2tpcCwgICAgICAvKiBGdFNicyAqL1xuXHQvKjo6WyovMHgwRC8qOjpdKi86IHBhcnNlX0Z0TnRzLCAgICAgICAvKiBGdE50cyAqL1xuXHQvKjo6WyovMHgwRS8qOjpdKi86IHBhcnNlX0Z0U2tpcCwgICAgICAvKiBGdFNic0ZtbGEgKi9cblx0Lyo6OlsqLzB4MEYvKjo6XSovOiBwYXJzZV9GdFNraXAsICAgICAgLyogRnRHYm9EYXRhICovXG5cdC8qOjpbKi8weDEwLyo6Ol0qLzogcGFyc2VfRnRTa2lwLCAgICAgIC8qIEZ0RWRvRGF0YSAqL1xuXHQvKjo6WyovMHgxMS8qOjpdKi86IHBhcnNlX0Z0U2tpcCwgICAgICAvKiBGdFJib0RhdGEgKi9cblx0Lyo6OlsqLzB4MTIvKjo6XSovOiBwYXJzZV9GdFNraXAsICAgICAgLyogRnRDYmxzRGF0YSAqL1xuXHQvKjo6WyovMHgxMy8qOjpdKi86IHBhcnNlX0Z0U2tpcCwgICAgICAvKiBGdExic0RhdGEgKi9cblx0Lyo6OlsqLzB4MTQvKjo6XSovOiBwYXJzZV9GdFNraXAsICAgICAgLyogRnRDYmxzRm1sYSAqL1xuXHQvKjo6WyovMHgxNS8qOjpdKi86IHBhcnNlX0Z0Q21vXG59O1xuZnVuY3Rpb24gcGFyc2VfRnRBcnJheShibG9iLCBsZW5ndGgvKjo6LCBvdCovKSB7XG5cdHZhciB0Z3QgPSBibG9iLmwgKyBsZW5ndGg7XG5cdHZhciBmdHMgPSBbXTtcblx0d2hpbGUoYmxvYi5sIDwgdGd0KSB7XG5cdFx0dmFyIGZ0ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdGJsb2IubC09Mjtcblx0XHR0cnkge1xuXHRcdFx0ZnRzLnB1c2goRnRUYWJbZnRdKGJsb2IsIHRndCAtIGJsb2IubCkpO1xuXHRcdH0gY2F0Y2goZSkgeyBibG9iLmwgPSB0Z3Q7IHJldHVybiBmdHM7IH1cblx0fVxuXHRpZihibG9iLmwgIT0gdGd0KSBibG9iLmwgPSB0Z3Q7IC8vdGhyb3cgbmV3IEVycm9yKFwiYmFkIE9iamVjdCBGdC1zZXF1ZW5jZVwiKTtcblx0cmV0dXJuIGZ0cztcbn1cblxuLyogLS0tIDIuNCBSZWNvcmRzIC0tLSAqL1xuXG4vKiBbTVMtWExTXSAyLjQuMjEgKi9cbmZ1bmN0aW9uIHBhcnNlX0JPRihibG9iLCBsZW5ndGgpIHtcblx0dmFyIG8gPSB7QklGRlZlcjowLCBkdDowfTtcblx0by5CSUZGVmVyID0gYmxvYi5yZWFkX3NoaWZ0KDIpOyBsZW5ndGggLT0gMjtcblx0aWYobGVuZ3RoID49IDIpIHsgby5kdCA9IGJsb2IucmVhZF9zaGlmdCgyKTsgYmxvYi5sIC09IDI7IH1cblx0c3dpdGNoKG8uQklGRlZlcikge1xuXHRcdGNhc2UgMHgwNjAwOiAvKiBCSUZGOCAqL1xuXHRcdGNhc2UgMHgwNTAwOiAvKiBCSUZGNSAqL1xuXHRcdGNhc2UgMHgwNDAwOiAvKiBCSUZGNCAqL1xuXHRcdGNhc2UgMHgwMzAwOiAvKiBCSUZGMyAqL1xuXHRcdGNhc2UgMHgwMjAwOiAvKiBCSUZGMiAqL1xuXHRcdGNhc2UgMHgwMDAyOiBjYXNlIDB4MDAwNzogLyogQklGRjIgKi9cblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6IGlmKGxlbmd0aCA+IDYpIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgQklGRiBWZXIgXCIgKyBvLkJJRkZWZXIpO1xuXHR9XG5cblx0YmxvYi5yZWFkX3NoaWZ0KGxlbmd0aCk7XG5cdHJldHVybiBvO1xufVxuZnVuY3Rpb24gd3JpdGVfQk9GKHdiLyo6V29ya2Jvb2sqLywgdC8qOm51bWJlciovLCBvKSB7XG5cdHZhciBoID0gMHgwNjAwLCB3ID0gMTY7XG5cdHN3aXRjaChvLmJvb2tUeXBlKSB7XG5cdFx0Y2FzZSAnYmlmZjgnOiBicmVhaztcblx0XHRjYXNlICdiaWZmNSc6IGggPSAweDA1MDA7IHcgPSA4OyBicmVhaztcblx0XHRjYXNlICdiaWZmNCc6IGggPSAweDAwMDQ7IHcgPSA2OyBicmVhaztcblx0XHRjYXNlICdiaWZmMyc6IGggPSAweDAwMDM7IHcgPSA2OyBicmVhaztcblx0XHRjYXNlICdiaWZmMic6IGggPSAweDAwMDI7IHcgPSA0OyBicmVhaztcblx0XHRjYXNlICd4bGEnOiBicmVhaztcblx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJ1bnN1cHBvcnRlZCBCSUZGIHZlcnNpb25cIik7XG5cdH1cblx0dmFyIG91dCA9IG5ld19idWYodyk7XG5cdG91dC53cml0ZV9zaGlmdCgyLCBoKTtcblx0b3V0LndyaXRlX3NoaWZ0KDIsIHQpO1xuXHRpZih3ID4gNCkgb3V0LndyaXRlX3NoaWZ0KDIsIDB4NzI2Mik7XG5cdGlmKHcgPiA2KSBvdXQud3JpdGVfc2hpZnQoMiwgMHgwN0NEKTtcblx0aWYodyA+IDgpIHtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgMHhDMDA5KTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgMHgwMDAxKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgMHgwNzA2KTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgMHgwMDAwKTtcblx0fVxuXHRyZXR1cm4gb3V0O1xufVxuXG5cbi8qIFtNUy1YTFNdIDIuNC4xNDYgKi9cbmZ1bmN0aW9uIHBhcnNlX0ludGVyZmFjZUhkcihibG9iLCBsZW5ndGgpIHtcblx0aWYobGVuZ3RoID09PSAwKSByZXR1cm4gMHgwNGIwO1xuXHRpZigoYmxvYi5yZWFkX3NoaWZ0KDIpKSE9PTB4MDRiMCl7LyogZW1wdHkgKi99XG5cdHJldHVybiAweDA0YjA7XG59XG5cblxuLyogW01TLVhMU10gMi40LjM0OSAqL1xuZnVuY3Rpb24gcGFyc2VfV3JpdGVBY2Nlc3MoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGlmKG9wdHMuZW5jKSB7IGJsb2IubCArPSBsZW5ndGg7IHJldHVybiBcIlwiOyB9XG5cdHZhciBsID0gYmxvYi5sO1xuXHQvLyBUT0RPOiBtYWtlIHN1cmUgWExVbmljb2RlU3RyaW5nIGRvZXNudCBvdmVycnVuXG5cdHZhciBVc2VyTmFtZSA9IHBhcnNlX1hMVW5pY29kZVN0cmluZzIoYmxvYiwgMCwgb3B0cyk7XG5cdGJsb2IucmVhZF9zaGlmdChsZW5ndGggKyBsIC0gYmxvYi5sKTtcblx0cmV0dXJuIFVzZXJOYW1lO1xufVxuZnVuY3Rpb24gd3JpdGVfV3JpdGVBY2Nlc3Mocy8qOnN0cmluZyovLCBvcHRzKSB7XG5cdHZhciBiOCA9ICFvcHRzIHx8IG9wdHMuYmlmZiA9PSA4O1xuXHR2YXIgbyA9IG5ld19idWYoYjggPyAxMTIgOiA1NCk7XG5cdG8ud3JpdGVfc2hpZnQob3B0cy5iaWZmID09IDggPyAyIDogMSwgNyk7XG5cdGlmKGI4KSBvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDB4MzMzMzY4NTMpO1xuXHRvLndyaXRlX3NoaWZ0KDQsICgweDAwNTM0QTc0IHwgKGI4ID8gMCA6IDB4MjAwMDAwMDApKSk7XG5cdHdoaWxlKG8ubCA8IG8ubGVuZ3RoKSBvLndyaXRlX3NoaWZ0KDEsIChiOCA/IDAgOiAzMikpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi40LjM1MSAqL1xuZnVuY3Rpb24gcGFyc2VfV3NCb29sKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgZmxhZ3MgPSBvcHRzICYmIG9wdHMuYmlmZiA9PSA4IHx8IGxlbmd0aCA9PSAyID8gYmxvYi5yZWFkX3NoaWZ0KDIpIDogKGJsb2IubCArPSBsZW5ndGgsIDApO1xuXHRyZXR1cm4geyBmRGlhbG9nOiBmbGFncyAmIDB4MTAsIGZCZWxvdzogZmxhZ3MgJiAweDQwLCBmUmlnaHQ6IGZsYWdzICYgMHg4MCB9O1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMjggKi9cbmZ1bmN0aW9uIHBhcnNlX0JvdW5kU2hlZXQ4KGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgcG9zID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgaGlkZGVuID0gYmxvYi5yZWFkX3NoaWZ0KDEpICYgMHgwMztcblx0dmFyIGR0ID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRzd2l0Y2goZHQpIHtcblx0XHRjYXNlIDA6IGR0ID0gJ1dvcmtzaGVldCc7IGJyZWFrO1xuXHRcdGNhc2UgMTogZHQgPSAnTWFjcm9zaGVldCc7IGJyZWFrO1xuXHRcdGNhc2UgMjogZHQgPSAnQ2hhcnRzaGVldCc7IGJyZWFrO1xuXHRcdGNhc2UgNjogZHQgPSAnVkJBTW9kdWxlJzsgYnJlYWs7XG5cdH1cblx0dmFyIG5hbWUgPSBwYXJzZV9TaG9ydFhMVW5pY29kZVN0cmluZyhibG9iLCAwLCBvcHRzKTtcblx0aWYobmFtZS5sZW5ndGggPT09IDApIG5hbWUgPSBcIlNoZWV0MVwiO1xuXHRyZXR1cm4geyBwb3M6cG9zLCBoczpoaWRkZW4sIGR0OmR0LCBuYW1lOm5hbWUgfTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JvdW5kU2hlZXQ4KGRhdGEsIG9wdHMpIHtcblx0dmFyIHcgPSAoIW9wdHMgfHwgb3B0cy5iaWZmID49IDggPyAyIDogMSk7XG5cdHZhciBvID0gbmV3X2J1Zig4ICsgdyAqIGRhdGEubmFtZS5sZW5ndGgpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIGRhdGEucG9zKTtcblx0by53cml0ZV9zaGlmdCgxLCBkYXRhLmhzIHx8IDApO1xuXHRvLndyaXRlX3NoaWZ0KDEsIGRhdGEuZHQpO1xuXHRvLndyaXRlX3NoaWZ0KDEsIGRhdGEubmFtZS5sZW5ndGgpO1xuXHRpZihvcHRzLmJpZmYgPj0gOCkgby53cml0ZV9zaGlmdCgxLCAxKTtcblx0by53cml0ZV9zaGlmdCh3ICogZGF0YS5uYW1lLmxlbmd0aCwgZGF0YS5uYW1lLCBvcHRzLmJpZmYgPCA4ID8gJ3NiY3MnIDogJ3V0ZjE2bGUnKTtcblx0dmFyIG91dCA9IG8uc2xpY2UoMCwgby5sKTtcblx0b3V0LmwgPSBvLmw7IHJldHVybiBvdXQ7XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4yNjUgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfU1NUKGJsb2IsIGxlbmd0aCkvKjpTU1QqLyB7XG5cdHZhciBlbmQgPSBibG9iLmwgKyBsZW5ndGg7XG5cdHZhciBjbnQgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciB1Y250ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgc3Rycy8qOlNTVCovID0gKFtdLyo6YW55Ki8pO1xuXHRmb3IodmFyIGkgPSAwOyBpICE9IHVjbnQgJiYgYmxvYi5sIDwgZW5kOyArK2kpIHtcblx0XHRzdHJzLnB1c2gocGFyc2VfWExVbmljb2RlUmljaEV4dGVuZGVkU3RyaW5nKGJsb2IpKTtcblx0fVxuXHRzdHJzLkNvdW50ID0gY250OyBzdHJzLlVuaXF1ZSA9IHVjbnQ7XG5cdHJldHVybiBzdHJzO1xufVxuZnVuY3Rpb24gd3JpdGVfU1NUKHNzdCwgb3B0cykge1xuXHR2YXIgaGVhZGVyID0gbmV3X2J1Zig4KTtcblx0aGVhZGVyLndyaXRlX3NoaWZ0KDQsIHNzdC5Db3VudCk7XG5cdGhlYWRlci53cml0ZV9zaGlmdCg0LCBzc3QuVW5pcXVlKTtcblx0dmFyIHN0cnMgPSBbXTtcblx0Zm9yKHZhciBqID0gMDsgaiA8IHNzdC5sZW5ndGg7ICsraikgc3Ryc1tqXSA9IHdyaXRlX1hMVW5pY29kZVJpY2hFeHRlbmRlZFN0cmluZyhzc3Rbal0sIG9wdHMpO1xuXHR2YXIgbyA9IGJjb25jYXQoW2hlYWRlcl0uY29uY2F0KHN0cnMpKTtcblx0Lyo6OigqL28vKjo6IDphbnkpKi8ucGFydHMgPSBbaGVhZGVyLmxlbmd0aF0uY29uY2F0KHN0cnMubWFwKGZ1bmN0aW9uKHN0cikgeyByZXR1cm4gc3RyLmxlbmd0aDsgfSkpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi40LjEwNyAqL1xuZnVuY3Rpb24gcGFyc2VfRXh0U1NUKGJsb2IsIGxlbmd0aCkge1xuXHR2YXIgZXh0c3N0ID0ge307XG5cdGV4dHNzdC5kc3N0ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gbGVuZ3RoLTI7XG5cdHJldHVybiBleHRzc3Q7XG59XG5cblxuLyogW01TLVhMU10gMi40LjIyMSBUT0RPOiBjaGVjayBCSUZGMi00ICovXG5mdW5jdGlvbiBwYXJzZV9Sb3coYmxvYikge1xuXHR2YXIgeiA9ICh7fS8qOmFueSovKTtcblx0ei5yID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR6LmMgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHouY250ID0gYmxvYi5yZWFkX3NoaWZ0KDIpIC0gei5jO1xuXHR2YXIgbWl5UncgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSA0OyAvLyByZXNlcnZlZCgyKSwgdW51c2VkKDIpXG5cdHZhciBmbGFncyA9IGJsb2IucmVhZF9zaGlmdCgxKTsgLy8gdmFyaW91cyBmbGFnc1xuXHRibG9iLmwgKz0gMzsgLy8gcmVzZXJ2ZWQoOCksIGl4ZmUoMTIpLCBmbGFncyg0KVxuXHRpZihmbGFncyAmIDB4MDcpIHoubGV2ZWwgPSBmbGFncyAmIDB4MDc7XG5cdC8vIGNvbGxhcHNlZDogZmxhZ3MgJiAweDEwXG5cdGlmKGZsYWdzICYgMHgyMCkgei5oaWRkZW4gPSB0cnVlO1xuXHRpZihmbGFncyAmIDB4NDApIHouaHB0ID0gbWl5UncgLyAyMDtcblx0cmV0dXJuIHo7XG59XG5cblxuLyogW01TLVhMU10gMi40LjEyNSAqL1xuZnVuY3Rpb24gcGFyc2VfRm9yY2VGdWxsQ2FsY3VsYXRpb24oYmxvYikge1xuXHR2YXIgaGVhZGVyID0gcGFyc2VfZnJ0SGVhZGVyKGJsb2IpO1xuXHRpZihoZWFkZXIudHlwZSAhPSAweDA4QTMpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgRnV0dXJlIFJlY29yZCBcIiArIGhlYWRlci50eXBlKTtcblx0dmFyIGZ1bGxjYWxjID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRyZXR1cm4gZnVsbGNhbGMgIT09IDB4MDtcbn1cblxuXG5cblxuXG4vKiBbTVMtWExTXSAyLjQuMjE1IHJ0ICovXG5mdW5jdGlvbiBwYXJzZV9SZWNhbGNJZChibG9iKSB7XG5cdGJsb2IucmVhZF9zaGlmdCgyKTtcblx0cmV0dXJuIGJsb2IucmVhZF9zaGlmdCg0KTtcbn1cblxuLyogW01TLVhMU10gMi40Ljg3ICovXG5mdW5jdGlvbiBwYXJzZV9EZWZhdWx0Um93SGVpZ2h0KGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgZiA9IDA7XG5cdGlmKCEob3B0cyAmJiBvcHRzLmJpZmYgPT0gMikpIHtcblx0XHRmID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR9XG5cdHZhciBtaXlSdyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0aWYoKG9wdHMgJiYgb3B0cy5iaWZmID09IDIpKSB7XG5cdFx0ZiA9IDEgLSAobWl5UncgPj4gMTUpOyBtaXlSdyAmPSAweDdmZmY7XG5cdH1cblx0dmFyIGZsID0ge1Vuc3luY2VkOmYmMSxEeVplcm86KGYmMik+PjEsRXhBc2M6KGYmNCk+PjIsRXhEc2M6KGYmOCk+PjN9O1xuXHRyZXR1cm4gW2ZsLCBtaXlSd107XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4zNDUgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfV2luZG93MShibG9iKSB7XG5cdHZhciB4V24gPSBibG9iLnJlYWRfc2hpZnQoMiksIHlXbiA9IGJsb2IucmVhZF9zaGlmdCgyKSwgZHhXbiA9IGJsb2IucmVhZF9zaGlmdCgyKSwgZHlXbiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGZsYWdzID0gYmxvYi5yZWFkX3NoaWZ0KDIpLCBpVGFiQ3VyID0gYmxvYi5yZWFkX3NoaWZ0KDIpLCBpVGFiRmlyc3QgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBjdGFiU2VsID0gYmxvYi5yZWFkX3NoaWZ0KDIpLCB3VGFiUmF0aW8gPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHJldHVybiB7IFBvczogW3hXbiwgeVduXSwgRGltOiBbZHhXbiwgZHlXbl0sIEZsYWdzOiBmbGFncywgQ3VyVGFiOiBpVGFiQ3VyLFxuXHRcdEZpcnN0VGFiOiBpVGFiRmlyc3QsIFNlbGVjdGVkOiBjdGFiU2VsLCBUYWJSYXRpbzogd1RhYlJhdGlvIH07XG59XG5mdW5jdGlvbiB3cml0ZV9XaW5kb3cxKC8qOjpvcHRzKi8pIHtcblx0dmFyIG8gPSBuZXdfYnVmKDE4KTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCAweDcyNjApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDB4NDRjMCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMHgzOCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMSk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMHgwMWY0KTtcblx0cmV0dXJuIG87XG59XG4vKiBbTVMtWExTXSAyLjQuMzQ2IFRPRE8gKi9cbmZ1bmN0aW9uIHBhcnNlX1dpbmRvdzIoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGlmKG9wdHMgJiYgb3B0cy5iaWZmID49IDIgJiYgb3B0cy5iaWZmIDwgNSkgcmV0dXJuIHt9O1xuXHR2YXIgZiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0cmV0dXJuIHsgUlRMOiBmICYgMHg0MCB9O1xufVxuZnVuY3Rpb24gd3JpdGVfV2luZG93Mih2aWV3KSB7XG5cdHZhciBvID0gbmV3X2J1ZigxOCksIGYgPSAweDZiNjtcblx0aWYodmlldyAmJiB2aWV3LlJUTCkgZiB8PSAweDQwO1xuXHRvLndyaXRlX3NoaWZ0KDIsIGYpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDY0KTtcblx0by53cml0ZV9zaGlmdCg0LCAwKTtcblx0by53cml0ZV9zaGlmdCg0LCAwKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xODkgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfUGFuZSgvKmJsb2IsIGxlbmd0aCwgb3B0cyovKSB7XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xMjIgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfRm9udChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIG8vKjphbnkqLyA9IHtcblx0XHRkeUhlaWdodDogYmxvYi5yZWFkX3NoaWZ0KDIpLFxuXHRcdGZsOiBibG9iLnJlYWRfc2hpZnQoMilcblx0fTtcblx0c3dpdGNoKChvcHRzICYmIG9wdHMuYmlmZikgfHwgOCkge1xuXHRcdGNhc2UgMjogYnJlYWs7XG5cdFx0Y2FzZSAzOiBjYXNlIDQ6IGJsb2IubCArPSAyOyBicmVhaztcblx0XHRkZWZhdWx0OiBibG9iLmwgKz0gMTA7IGJyZWFrO1xuXHR9XG5cdG8ubmFtZSA9IHBhcnNlX1Nob3J0WExVbmljb2RlU3RyaW5nKGJsb2IsIDAsIG9wdHMpO1xuXHRyZXR1cm4gbztcbn1cbmZ1bmN0aW9uIHdyaXRlX0ZvbnQoZGF0YSwgb3B0cykge1xuXHR2YXIgbmFtZSA9IGRhdGEubmFtZSB8fCBcIkFyaWFsXCI7XG5cdHZhciBiNSA9IChvcHRzICYmIChvcHRzLmJpZmYgPT0gNSkpLCB3ID0gKGI1ID8gKDE1ICsgbmFtZS5sZW5ndGgpIDogKDE2ICsgMiAqIG5hbWUubGVuZ3RoKSk7XG5cdHZhciBvID0gbmV3X2J1Zih3KTtcblx0by53cml0ZV9zaGlmdCgyLCAoZGF0YS5zeiB8fCAxMikgKiAyMCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgNDAwKTtcblx0by53cml0ZV9zaGlmdCg0LCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0by53cml0ZV9zaGlmdCgxLCBuYW1lLmxlbmd0aCk7XG5cdGlmKCFiNSkgby53cml0ZV9zaGlmdCgxLCAxKTtcblx0by53cml0ZV9zaGlmdCgoYjUgPyAxIDogMikgKiBuYW1lLmxlbmd0aCwgbmFtZSwgKGI1ID8gXCJzYmNzXCIgOiBcInV0ZjE2bGVcIikpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi40LjE0OSAqL1xuZnVuY3Rpb24gcGFyc2VfTGFiZWxTc3QoYmxvYikge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0NlbGwoYmxvYik7XG5cdGNlbGwuaXNzdCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0cmV0dXJuIGNlbGw7XG59XG5mdW5jdGlvbiB3cml0ZV9MYWJlbFNzdChSLyo6bnVtYmVyKi8sIEMvKjpudW1iZXIqLywgdi8qOm51bWJlciovLCBvcy8qOm51bWJlciovIC8qOjosIG9wdHMqLykge1xuXHR2YXIgbyA9IG5ld19idWYoMTApO1xuXHR3cml0ZV9YTFNDZWxsKFIsIEMsIG9zLCBvKTtcblx0by53cml0ZV9zaGlmdCg0LCB2KTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xNDggKi9cbmZ1bmN0aW9uIHBhcnNlX0xhYmVsKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRpZihvcHRzLmJpZmZndWVzcyAmJiBvcHRzLmJpZmYgPT0gMikgb3B0cy5iaWZmID0gNTtcblx0dmFyIHRhcmdldCA9IGJsb2IubCArIGxlbmd0aDtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNDZWxsKGJsb2IsIDYpO1xuXHRpZihvcHRzLmJpZmYgPT0gMikgYmxvYi5sKys7XG5cdHZhciBzdHIgPSBwYXJzZV9YTFVuaWNvZGVTdHJpbmcoYmxvYiwgdGFyZ2V0IC0gYmxvYi5sLCBvcHRzKTtcblx0Y2VsbC52YWwgPSBzdHI7XG5cdHJldHVybiBjZWxsO1xufVxuZnVuY3Rpb24gd3JpdGVfTGFiZWwoUi8qOm51bWJlciovLCBDLyo6bnVtYmVyKi8sIHYvKjpzdHJpbmcqLywgb3MvKjpudW1iZXIqLywgb3B0cykge1xuXHR2YXIgYjggPSAhb3B0cyB8fCBvcHRzLmJpZmYgPT0gODtcblx0dmFyIG8gPSBuZXdfYnVmKDYgKyAyICsgKCtiOCkgKyAoMSArIGI4KSAqIHYubGVuZ3RoKTtcblx0d3JpdGVfWExTQ2VsbChSLCBDLCBvcywgbyk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgdi5sZW5ndGgpO1xuXHRpZihiOCkgby53cml0ZV9zaGlmdCgxLCAxKTtcblx0by53cml0ZV9zaGlmdCgoMSArIGI4KSAqIHYubGVuZ3RoLCB2LCBiOCA/ICd1dGYxNmxlJyA6ICdzYmNzJyk7XG5cdHJldHVybiBvO1xufVxuXG5cbi8qIFtNUy1YTFNdIDIuNC4xMjYgTnVtYmVyIEZvcm1hdHMgKi9cbmZ1bmN0aW9uIHBhcnNlX0Zvcm1hdChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIG51bUZtdElkID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgZm10c3RyID0gcGFyc2VfWExVbmljb2RlU3RyaW5nMihibG9iLCAwLCBvcHRzKTtcblx0cmV0dXJuIFtudW1GbXRJZCwgZm10c3RyXTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0Zvcm1hdChpLyo6bnVtYmVyKi8sIGYvKjpzdHJpbmcqLywgb3B0cywgbykge1xuXHR2YXIgYjUgPSAob3B0cyAmJiAob3B0cy5iaWZmID09IDUpKTtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKGI1ID8gKDMgKyBmLmxlbmd0aCkgOiAoNSArIDIgKiBmLmxlbmd0aCkpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIGkpO1xuXHRvLndyaXRlX3NoaWZ0KChiNSA/IDEgOiAyKSwgZi5sZW5ndGgpO1xuXHRpZighYjUpIG8ud3JpdGVfc2hpZnQoMSwgMSk7XG5cdG8ud3JpdGVfc2hpZnQoKGI1ID8gMSA6IDIpICogZi5sZW5ndGgsIGYsIChiNSA/ICdzYmNzJyA6ICd1dGYxNmxlJykpO1xuXHR2YXIgb3V0ID0gKG8ubGVuZ3RoID4gby5sKSA/IG8uc2xpY2UoMCwgby5sKSA6IG87XG5cdGlmKG91dC5sID09IG51bGwpIG91dC5sID0gb3V0Lmxlbmd0aDtcblx0cmV0dXJuIG91dDtcbn1cbnZhciBwYXJzZV9CSUZGMkZvcm1hdCA9IHBhcnNlX1hMVW5pY29kZVN0cmluZzI7XG5cbi8qIFtNUy1YTFNdIDIuNC45MCAqL1xuZnVuY3Rpb24gcGFyc2VfRGltZW5zaW9ucyhibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGVuZCA9IGJsb2IubCArIGxlbmd0aDtcblx0dmFyIHcgPSBvcHRzLmJpZmYgPT0gOCB8fCAhb3B0cy5iaWZmID8gNCA6IDI7XG5cdHZhciByID0gYmxvYi5yZWFkX3NoaWZ0KHcpLCBSID0gYmxvYi5yZWFkX3NoaWZ0KHcpO1xuXHR2YXIgYyA9IGJsb2IucmVhZF9zaGlmdCgyKSwgQyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sID0gZW5kO1xuXHRyZXR1cm4ge3M6IHtyOnIsIGM6Y30sIGU6IHtyOlIsIGM6Q319O1xufVxuZnVuY3Rpb24gd3JpdGVfRGltZW5zaW9ucyhyYW5nZSwgb3B0cykge1xuXHR2YXIgdyA9IG9wdHMuYmlmZiA9PSA4IHx8ICFvcHRzLmJpZmYgPyA0IDogMjtcblx0dmFyIG8gPSBuZXdfYnVmKDIqdyArIDYpO1xuXHRvLndyaXRlX3NoaWZ0KHcsIHJhbmdlLnMucik7XG5cdG8ud3JpdGVfc2hpZnQodywgcmFuZ2UuZS5yICsgMSk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgcmFuZ2Uucy5jKTtcblx0by53cml0ZV9zaGlmdCgyLCByYW5nZS5lLmMgKyAxKTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4yMjAgKi9cbmZ1bmN0aW9uIHBhcnNlX1JLKGJsb2IpIHtcblx0dmFyIHJ3ID0gYmxvYi5yZWFkX3NoaWZ0KDIpLCBjb2wgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBya3JlYyA9IHBhcnNlX1JrUmVjKGJsb2IpO1xuXHRyZXR1cm4ge3I6cncsIGM6Y29sLCBpeGZlOnJrcmVjWzBdLCBya251bTpya3JlY1sxXX07XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xNzUgKi9cbmZ1bmN0aW9uIHBhcnNlX011bFJrKGJsb2IsIGxlbmd0aCkge1xuXHR2YXIgdGFyZ2V0ID0gYmxvYi5sICsgbGVuZ3RoIC0gMjtcblx0dmFyIHJ3ID0gYmxvYi5yZWFkX3NoaWZ0KDIpLCBjb2wgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBya3JlY3MgPSBbXTtcblx0d2hpbGUoYmxvYi5sIDwgdGFyZ2V0KSBya3JlY3MucHVzaChwYXJzZV9Sa1JlYyhibG9iKSk7XG5cdGlmKGJsb2IubCAhPT0gdGFyZ2V0KSB0aHJvdyBuZXcgRXJyb3IoXCJNdWxSSyByZWFkIGVycm9yXCIpO1xuXHR2YXIgbGFzdGNvbCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0aWYocmtyZWNzLmxlbmd0aCAhPSBsYXN0Y29sIC0gY29sICsgMSkgdGhyb3cgbmV3IEVycm9yKFwiTXVsUksgbGVuZ3RoIG1pc21hdGNoXCIpO1xuXHRyZXR1cm4ge3I6cncsIGM6Y29sLCBDOmxhc3Rjb2wsIHJrcmVjOnJrcmVjc307XG59XG4vKiBbTVMtWExTXSAyLjQuMTc0ICovXG5mdW5jdGlvbiBwYXJzZV9NdWxCbGFuayhibG9iLCBsZW5ndGgpIHtcblx0dmFyIHRhcmdldCA9IGJsb2IubCArIGxlbmd0aCAtIDI7XG5cdHZhciBydyA9IGJsb2IucmVhZF9zaGlmdCgyKSwgY29sID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgaXhmZXMgPSBbXTtcblx0d2hpbGUoYmxvYi5sIDwgdGFyZ2V0KSBpeGZlcy5wdXNoKGJsb2IucmVhZF9zaGlmdCgyKSk7XG5cdGlmKGJsb2IubCAhPT0gdGFyZ2V0KSB0aHJvdyBuZXcgRXJyb3IoXCJNdWxCbGFuayByZWFkIGVycm9yXCIpO1xuXHR2YXIgbGFzdGNvbCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0aWYoaXhmZXMubGVuZ3RoICE9IGxhc3Rjb2wgLSBjb2wgKyAxKSB0aHJvdyBuZXcgRXJyb3IoXCJNdWxCbGFuayBsZW5ndGggbWlzbWF0Y2hcIik7XG5cdHJldHVybiB7cjpydywgYzpjb2wsIEM6bGFzdGNvbCwgaXhmZTppeGZlc307XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4yMCAyLjUuMjQ5IFRPRE86IGludGVycHJldCB2YWx1ZXMgaGVyZSAqL1xuZnVuY3Rpb24gcGFyc2VfQ2VsbFN0eWxlWEYoYmxvYiwgbGVuZ3RoLCBzdHlsZSwgb3B0cykge1xuXHR2YXIgbyA9IHt9O1xuXHR2YXIgYSA9IGJsb2IucmVhZF9zaGlmdCg0KSwgYiA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIGMgPSBibG9iLnJlYWRfc2hpZnQoNCksIGQgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdG8ucGF0dGVyblR5cGUgPSBYTFNGaWxsUGF0dGVybltjID4+IDI2XTtcblxuXHRpZighb3B0cy5jZWxsU3R5bGVzKSByZXR1cm4gbztcblx0by5hbGMgPSBhICYgMHgwNztcblx0by5mV3JhcCA9IChhID4+IDMpICYgMHgwMTtcblx0by5hbGNWID0gKGEgPj4gNCkgJiAweDA3O1xuXHRvLmZKdXN0TGFzdCA9IChhID4+IDcpICYgMHgwMTtcblx0by50cm90ID0gKGEgPj4gOCkgJiAweEZGO1xuXHRvLmNJbmRlbnQgPSAoYSA+PiAxNikgJiAweDBGO1xuXHRvLmZTaHJpbmtUb0ZpdCA9IChhID4+IDIwKSAmIDB4MDE7XG5cdG8uaVJlYWRPcmRlciA9IChhID4+IDIyKSAmIDB4MDI7XG5cdG8uZkF0ck51bSA9IChhID4+IDI2KSAmIDB4MDE7XG5cdG8uZkF0ckZudCA9IChhID4+IDI3KSAmIDB4MDE7XG5cdG8uZkF0ckFsYyA9IChhID4+IDI4KSAmIDB4MDE7XG5cdG8uZkF0ckJkciA9IChhID4+IDI5KSAmIDB4MDE7XG5cdG8uZkF0clBhdCA9IChhID4+IDMwKSAmIDB4MDE7XG5cdG8uZkF0clByb3QgPSAoYSA+PiAzMSkgJiAweDAxO1xuXG5cdG8uZGdMZWZ0ID0gYiAmIDB4MEY7XG5cdG8uZGdSaWdodCA9IChiID4+IDQpICYgMHgwRjtcblx0by5kZ1RvcCA9IChiID4+IDgpICYgMHgwRjtcblx0by5kZ0JvdHRvbSA9IChiID4+IDEyKSAmIDB4MEY7XG5cdG8uaWN2TGVmdCA9IChiID4+IDE2KSAmIDB4N0Y7XG5cdG8uaWN2UmlnaHQgPSAoYiA+PiAyMykgJiAweDdGO1xuXHRvLmdyYml0RGlhZyA9IChiID4+IDMwKSAmIDB4MDM7XG5cblx0by5pY3ZUb3AgPSBjICYgMHg3Rjtcblx0by5pY3ZCb3R0b20gPSAoYyA+PiA3KSAmIDB4N0Y7XG5cdG8uaWN2RGlhZyA9IChjID4+IDE0KSAmIDB4N0Y7XG5cdG8uZGdEaWFnID0gKGMgPj4gMjEpICYgMHgwRjtcblxuXHRvLmljdkZvcmUgPSBkICYgMHg3Rjtcblx0by5pY3ZCYWNrID0gKGQgPj4gNykgJiAweDdGO1xuXHRvLmZzeEJ1dHRvbiA9IChkID4+IDE0KSAmIDB4MDE7XG5cdHJldHVybiBvO1xufVxuLy9mdW5jdGlvbiBwYXJzZV9DZWxsWEYoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7cmV0dXJuIHBhcnNlX0NlbGxTdHlsZVhGKGJsb2IsbGVuZ3RoLDAsIG9wdHMpO31cbi8vZnVuY3Rpb24gcGFyc2VfU3R5bGVYRihibG9iLCBsZW5ndGgsIG9wdHMpIHtyZXR1cm4gcGFyc2VfQ2VsbFN0eWxlWEYoYmxvYixsZW5ndGgsMSwgb3B0cyk7fVxuXG4vKiBbTVMtWExTXSAyLjQuMzUzIFRPRE86IGFjdHVhbGx5IGRvIHRoaXMgcmlnaHQgKi9cbmZ1bmN0aW9uIHBhcnNlX1hGKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgbyA9IHt9O1xuXHRvLmlmbnQgPSBibG9iLnJlYWRfc2hpZnQoMik7IG8ubnVtRm10SWQgPSBibG9iLnJlYWRfc2hpZnQoMik7IG8uZmxhZ3MgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdG8uZlN0eWxlID0gKG8uZmxhZ3MgPj4gMikgJiAweDAxO1xuXHRsZW5ndGggLT0gNjtcblx0by5kYXRhID0gcGFyc2VfQ2VsbFN0eWxlWEYoYmxvYiwgbGVuZ3RoLCBvLmZTdHlsZSwgb3B0cyk7XG5cdHJldHVybiBvO1xufVxuZnVuY3Rpb24gd3JpdGVfWEYoZGF0YSwgaXhmZVAsIG9wdHMsIG8pIHtcblx0dmFyIGI1ID0gKG9wdHMgJiYgKG9wdHMuYmlmZiA9PSA1KSk7XG5cdGlmKCFvKSBvID0gbmV3X2J1ZihiNSA/IDE2IDogMjApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRpZihkYXRhLnN0eWxlKSB7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAoZGF0YS5udW1GbXRJZHx8MCkpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMHhGRkY0KTtcblx0fSBlbHNlIHtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIChkYXRhLm51bUZtdElkfHwwKSk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAoaXhmZVA8PDQpKTtcblx0fVxuXHR2YXIgZiA9IDA7XG5cdGlmKGRhdGEubnVtRm10SWQgPiAwICYmIGI1KSBmIHw9IDB4MDQwMDtcblx0by53cml0ZV9zaGlmdCg0LCBmKTtcblx0by53cml0ZV9zaGlmdCg0LCAwKTtcblx0aWYoIWI1KSBvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi40LjEzNCAqL1xuZnVuY3Rpb24gcGFyc2VfR3V0cyhibG9iKSB7XG5cdGJsb2IubCArPSA0O1xuXHR2YXIgb3V0ID0gW2Jsb2IucmVhZF9zaGlmdCgyKSwgYmxvYi5yZWFkX3NoaWZ0KDIpXTtcblx0aWYob3V0WzBdICE9PSAwKSBvdXRbMF0tLTtcblx0aWYob3V0WzFdICE9PSAwKSBvdXRbMV0tLTtcblx0aWYob3V0WzBdID4gNyB8fCBvdXRbMV0gPiA3KSB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgR3V0dGVyczogXCIgKyBvdXQuam9pbihcInxcIikpO1xuXHRyZXR1cm4gb3V0O1xufVxuZnVuY3Rpb24gd3JpdGVfR3V0cyhndXRzLyo6QXJyYXk8bnVtYmVyPiovKSB7XG5cdHZhciBvID0gbmV3X2J1Zig4KTtcblx0by53cml0ZV9zaGlmdCg0LCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCBndXRzWzBdID8gZ3V0c1swXSArIDEgOiAwKTtcblx0by53cml0ZV9zaGlmdCgyLCBndXRzWzFdID8gZ3V0c1sxXSArIDEgOiAwKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4yNCAqL1xuZnVuY3Rpb24gcGFyc2VfQm9vbEVycihibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNDZWxsKGJsb2IsIDYpO1xuXHRpZihvcHRzLmJpZmYgPT0gMiB8fCBsZW5ndGggPT0gOSkgKytibG9iLmw7XG5cdHZhciB2YWwgPSBwYXJzZV9CZXMoYmxvYiwgMik7XG5cdGNlbGwudmFsID0gdmFsO1xuXHRjZWxsLnQgPSAodmFsID09PSB0cnVlIHx8IHZhbCA9PT0gZmFsc2UpID8gJ2InIDogJ2UnO1xuXHRyZXR1cm4gY2VsbDtcbn1cbmZ1bmN0aW9uIHdyaXRlX0Jvb2xFcnIoUi8qOm51bWJlciovLCBDLyo6bnVtYmVyKi8sIHYsIG9zLyo6bnVtYmVyKi8sIG9wdHMsIHQvKjpzdHJpbmcqLykge1xuXHR2YXIgbyA9IG5ld19idWYoOCk7XG5cdHdyaXRlX1hMU0NlbGwoUiwgQywgb3MsIG8pO1xuXHR3cml0ZV9CZXModiwgdCwgbyk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMTgwIE51bWJlciAqL1xuZnVuY3Rpb24gcGFyc2VfTnVtYmVyKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRpZihvcHRzLmJpZmZndWVzcyAmJiBvcHRzLmJpZmYgPT0gMikgb3B0cy5iaWZmID0gNTtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNDZWxsKGJsb2IsIDYpO1xuXHR2YXIgeG51bSA9IHBhcnNlX1hudW0oYmxvYiwgOCk7XG5cdGNlbGwudmFsID0geG51bTtcblx0cmV0dXJuIGNlbGw7XG59XG5mdW5jdGlvbiB3cml0ZV9OdW1iZXIoUi8qOm51bWJlciovLCBDLyo6bnVtYmVyKi8sIHYsIG9zLyo6OiA6bnVtYmVyLCBvcHRzKi8pIHtcblx0dmFyIG8gPSBuZXdfYnVmKDE0KTtcblx0d3JpdGVfWExTQ2VsbChSLCBDLCBvcywgbyk7XG5cdHdyaXRlX1hudW0odiwgbyk7XG5cdHJldHVybiBvO1xufVxuXG52YXIgcGFyc2VfWExIZWFkZXJGb290ZXIgPSBwYXJzZV9PcHRYTFVuaWNvZGVTdHJpbmc7IC8vIFRPRE86IHBhcnNlIDIuNC4xMzZcblxuLyogW01TLVhMU10gMi40LjI3MSAqL1xuZnVuY3Rpb24gcGFyc2VfU3VwQm9vayhibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGVuZCA9IGJsb2IubCArIGxlbmd0aDtcblx0dmFyIGN0YWIgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBjY2ggPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdG9wdHMuc2JjY2ggPSBjY2g7XG5cdGlmKGNjaCA9PSAweDA0MDEgfHwgY2NoID09IDB4M0EwMSkgcmV0dXJuIFtjY2gsIGN0YWJdO1xuXHRpZihjY2ggPCAweDAxIHx8IGNjaCA+MHhmZikgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBTdXBCb29rIHR5cGU6IFwiK2NjaCk7XG5cdHZhciB2aXJ0UGF0aCA9IHBhcnNlX1hMVW5pY29kZVN0cmluZ05vQ2NoKGJsb2IsIGNjaCk7XG5cdC8qIFRPRE86IDIuNS4yNzcgVmlydHVhbCBQYXRoICovXG5cdHZhciByZ3N0ID0gW107XG5cdHdoaWxlKGVuZCA+IGJsb2IubCkgcmdzdC5wdXNoKHBhcnNlX1hMVW5pY29kZVN0cmluZyhibG9iKSk7XG5cdHJldHVybiBbY2NoLCBjdGFiLCB2aXJ0UGF0aCwgcmdzdF07XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xMDUgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfRXh0ZXJuTmFtZShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGZsYWdzID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgYm9keTtcblx0dmFyIG8gPSAoe1xuXHRcdGZCdWlsdEluOiBmbGFncyAmIDB4MDEsXG5cdFx0ZldhbnRBZHZpc2U6IChmbGFncyA+Pj4gMSkgJiAweDAxLFxuXHRcdGZXYW50UGljdDogKGZsYWdzID4+PiAyKSAmIDB4MDEsXG5cdFx0Zk9sZTogKGZsYWdzID4+PiAzKSAmIDB4MDEsXG5cdFx0Zk9sZUxpbms6IChmbGFncyA+Pj4gNCkgJiAweDAxLFxuXHRcdGNmOiAoZmxhZ3MgPj4+IDUpICYgMHgzRkYsXG5cdFx0Zkljb246IGZsYWdzID4+PiAxNSAmIDB4MDFcblx0fS8qOmFueSovKTtcblx0aWYob3B0cy5zYmNjaCA9PT0gMHgzQTAxKSBib2R5ID0gcGFyc2VfQWRkaW5VZGYoYmxvYiwgbGVuZ3RoLTIsIG9wdHMpO1xuXHQvL2Vsc2UgdGhyb3cgbmV3IEVycm9yKFwidW5zdXBwb3J0ZWQgU3VwQm9vayBjY2g6IFwiICsgb3B0cy5zYmNjaCk7XG5cdG8uYm9keSA9IGJvZHkgfHwgYmxvYi5yZWFkX3NoaWZ0KGxlbmd0aC0yKTtcblx0aWYodHlwZW9mIGJvZHkgPT09IFwic3RyaW5nXCIpIG8uTmFtZSA9IGJvZHk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMTUwIFRPRE8gKi9cbnZhciBYTFNMYmxCdWlsdEluID0gW1xuXHRcIl94bG5tLkNvbnNvbGlkYXRlX0FyZWFcIixcblx0XCJfeGxubS5BdXRvX09wZW5cIixcblx0XCJfeGxubS5BdXRvX0Nsb3NlXCIsXG5cdFwiX3hsbm0uRXh0cmFjdFwiLFxuXHRcIl94bG5tLkRhdGFiYXNlXCIsXG5cdFwiX3hsbm0uQ3JpdGVyaWFcIixcblx0XCJfeGxubS5QcmludF9BcmVhXCIsXG5cdFwiX3hsbm0uUHJpbnRfVGl0bGVzXCIsXG5cdFwiX3hsbm0uUmVjb3JkZXJcIixcblx0XCJfeGxubS5EYXRhX0Zvcm1cIixcblx0XCJfeGxubS5BdXRvX0FjdGl2YXRlXCIsXG5cdFwiX3hsbm0uQXV0b19EZWFjdGl2YXRlXCIsXG5cdFwiX3hsbm0uU2hlZXRfVGl0bGVcIixcblx0XCJfeGxubS5fRmlsdGVyRGF0YWJhc2VcIlxuXTtcbmZ1bmN0aW9uIHBhcnNlX0xibChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHRhcmdldCA9IGJsb2IubCArIGxlbmd0aDtcblx0dmFyIGZsYWdzID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgY2hLZXkgPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdHZhciBjY2ggPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdHZhciBjY2UgPSBibG9iLnJlYWRfc2hpZnQob3B0cyAmJiBvcHRzLmJpZmYgPT0gMiA/IDEgOiAyKTtcblx0dmFyIGl0YWIgPSAwO1xuXHRpZighb3B0cyB8fCBvcHRzLmJpZmYgPj0gNSkge1xuXHRcdGlmKG9wdHMuYmlmZiAhPSA1KSBibG9iLmwgKz0gMjtcblx0XHRpdGFiID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdGlmKG9wdHMuYmlmZiA9PSA1KSBibG9iLmwgKz0gMjtcblx0XHRibG9iLmwgKz0gNDtcblx0fVxuXHR2YXIgbmFtZSA9IHBhcnNlX1hMVW5pY29kZVN0cmluZ05vQ2NoKGJsb2IsIGNjaCwgb3B0cyk7XG5cdGlmKGZsYWdzICYgMHgyMCkgbmFtZSA9IFhMU0xibEJ1aWx0SW5bbmFtZS5jaGFyQ29kZUF0KDApXTtcblx0dmFyIG5wZmxlbiA9IHRhcmdldCAtIGJsb2IubDsgaWYob3B0cyAmJiBvcHRzLmJpZmYgPT0gMikgLS1ucGZsZW47XG5cdC8qanNoaW50IC1XMDE4ICovXG5cdHZhciByZ2NlID0gKHRhcmdldCA9PSBibG9iLmwgfHwgY2NlID09PSAwIHx8ICEobnBmbGVuID4gMCkpID8gW10gOiBwYXJzZV9OYW1lUGFyc2VkRm9ybXVsYShibG9iLCBucGZsZW4sIG9wdHMsIGNjZSk7XG5cdC8qanNoaW50ICtXMDE4ICovXG5cdHJldHVybiB7XG5cdFx0Y2hLZXk6IGNoS2V5LFxuXHRcdE5hbWU6IG5hbWUsXG5cdFx0aXRhYjogaXRhYixcblx0XHRyZ2NlOiByZ2NlXG5cdH07XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xMDYgVE9ETzogdmVyaWZ5IGZpbGVuYW1lIGVuY29kaW5nICovXG5mdW5jdGlvbiBwYXJzZV9FeHRlcm5TaGVldChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0aWYob3B0cy5iaWZmIDwgOCkgcmV0dXJuIHBhcnNlX0JJRkY1RXh0ZXJuU2hlZXQoYmxvYiwgbGVuZ3RoLCBvcHRzKTtcblx0dmFyIG8gPSBbXSwgdGFyZ2V0ID0gYmxvYi5sICsgbGVuZ3RoLCBsZW4gPSBibG9iLnJlYWRfc2hpZnQob3B0cy5iaWZmID4gOCA/IDQgOiAyKTtcblx0d2hpbGUobGVuLS0gIT09IDApIG8ucHVzaChwYXJzZV9YVEkoYmxvYiwgb3B0cy5iaWZmID4gOCA/IDEyIDogNiwgb3B0cykpO1xuXHRcdC8vIFtpU3VwQm9vaywgaXRhYkZpcnN0LCBpdGFiTGFzdF07XG5cdGlmKGJsb2IubCAhPSB0YXJnZXQpIHRocm93IG5ldyBFcnJvcihcIkJhZCBFeHRlcm5TaGVldDogXCIgKyBibG9iLmwgKyBcIiAhPSBcIiArIHRhcmdldCk7XG5cdHJldHVybiBvO1xufVxuZnVuY3Rpb24gcGFyc2VfQklGRjVFeHRlcm5TaGVldChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0aWYoYmxvYltibG9iLmwgKyAxXSA9PSAweDAzKSBibG9iW2Jsb2IubF0rKztcblx0dmFyIG8gPSBwYXJzZV9TaG9ydFhMVW5pY29kZVN0cmluZyhibG9iLCBsZW5ndGgsIG9wdHMpO1xuXHRyZXR1cm4gby5jaGFyQ29kZUF0KDApID09IDB4MDMgPyBvLnNsaWNlKDEpIDogbztcbn1cblxuLyogW01TLVhMU10gMi40LjE3NiBUT0RPOiBjaGVjayBvbGRlciBiaWZmICovXG5mdW5jdGlvbiBwYXJzZV9OYW1lQ210KGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRpZihvcHRzLmJpZmYgPCA4KSB7IGJsb2IubCArPSBsZW5ndGg7IHJldHVybjsgfVxuXHR2YXIgY2NoTmFtZSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGNjaENvbW1lbnQgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBuYW1lID0gcGFyc2VfWExVbmljb2RlU3RyaW5nTm9DY2goYmxvYiwgY2NoTmFtZSwgb3B0cyk7XG5cdHZhciBjb21tZW50ID0gcGFyc2VfWExVbmljb2RlU3RyaW5nTm9DY2goYmxvYiwgY2NoQ29tbWVudCwgb3B0cyk7XG5cdHJldHVybiBbbmFtZSwgY29tbWVudF07XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4yNjAgKi9cbmZ1bmN0aW9uIHBhcnNlX1NockZtbGEoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciByZWYgPSBwYXJzZV9SZWZVKGJsb2IsIDYpO1xuXHRibG9iLmwrKztcblx0dmFyIGNVc2UgPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdGxlbmd0aCAtPSA4O1xuXHRyZXR1cm4gW3BhcnNlX1NoYXJlZFBhcnNlZEZvcm11bGEoYmxvYiwgbGVuZ3RoLCBvcHRzKSwgY1VzZSwgcmVmXTtcbn1cblxuLyogW01TLVhMU10gMi40LjQgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfQXJyYXkoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciByZWYgPSBwYXJzZV9SZWYoYmxvYiwgNik7XG5cdC8qIFRPRE86IGZBbHdheXNDYWxjICovXG5cdHN3aXRjaChvcHRzLmJpZmYpIHtcblx0XHRjYXNlIDI6IGJsb2IubCArKzsgbGVuZ3RoIC09IDc7IGJyZWFrO1xuXHRcdGNhc2UgMzogY2FzZSA0OiBibG9iLmwgKz0gMjsgbGVuZ3RoIC09IDg7IGJyZWFrO1xuXHRcdGRlZmF1bHQ6IGJsb2IubCArPSA2OyBsZW5ndGggLT0gMTI7XG5cdH1cblx0cmV0dXJuIFtyZWYsIHBhcnNlX0FycmF5UGFyc2VkRm9ybXVsYShibG9iLCBsZW5ndGgsIG9wdHMsIHJlZildO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMTczICovXG5mdW5jdGlvbiBwYXJzZV9NVFJTZXR0aW5ncyhibG9iKSB7XG5cdHZhciBmTVRSRW5hYmxlZCA9IGJsb2IucmVhZF9zaGlmdCg0KSAhPT0gMHgwMDtcblx0dmFyIGZVc2VyU2V0VGhyZWFkQ291bnQgPSBibG9iLnJlYWRfc2hpZnQoNCkgIT09IDB4MDA7XG5cdHZhciBjVXNlclRocmVhZENvdW50ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRyZXR1cm4gW2ZNVFJFbmFibGVkLCBmVXNlclNldFRocmVhZENvdW50LCBjVXNlclRocmVhZENvdW50XTtcbn1cblxuLyogW01TLVhMU10gMi41LjE4NiBUT0RPOiBCSUZGNSAqL1xuZnVuY3Rpb24gcGFyc2VfTm90ZVNoKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRpZihvcHRzLmJpZmYgPCA4KSByZXR1cm47XG5cdHZhciByb3cgPSBibG9iLnJlYWRfc2hpZnQoMiksIGNvbCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGZsYWdzID0gYmxvYi5yZWFkX3NoaWZ0KDIpLCBpZE9iaiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIHN0QXV0aG9yID0gcGFyc2VfWExVbmljb2RlU3RyaW5nMihibG9iLCAwLCBvcHRzKTtcblx0aWYob3B0cy5iaWZmIDwgOCkgYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRyZXR1cm4gW3tyOnJvdyxjOmNvbH0sIHN0QXV0aG9yLCBpZE9iaiwgZmxhZ3NdO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMTc5ICovXG5mdW5jdGlvbiBwYXJzZV9Ob3RlKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHQvKiBUT0RPOiBTdXBwb3J0IHJldmlzaW9ucyAqL1xuXHRyZXR1cm4gcGFyc2VfTm90ZVNoKGJsb2IsIGxlbmd0aCwgb3B0cyk7XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xNjggKi9cbmZ1bmN0aW9uIHBhcnNlX01lcmdlQ2VsbHMoYmxvYiwgbGVuZ3RoKS8qOkFycmF5PFJhbmdlPiovIHtcblx0dmFyIG1lcmdlcy8qOkFycmF5PFJhbmdlPiovID0gW107XG5cdHZhciBjbWNzID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR3aGlsZSAoY21jcy0tKSBtZXJnZXMucHVzaChwYXJzZV9SZWY4VShibG9iLGxlbmd0aCkpO1xuXHRyZXR1cm4gbWVyZ2VzO1xufVxuZnVuY3Rpb24gd3JpdGVfTWVyZ2VDZWxscyhtZXJnZXMvKjpBcnJheTxSYW5nZT4qLykge1xuXHR2YXIgbyA9IG5ld19idWYoMiArIG1lcmdlcy5sZW5ndGggKiA4KTtcblx0by53cml0ZV9zaGlmdCgyLCBtZXJnZXMubGVuZ3RoKTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IG1lcmdlcy5sZW5ndGg7ICsraSkgd3JpdGVfUmVmOFUobWVyZ2VzW2ldLCBvKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xODEgVE9ETzogcGFyc2UgYWxsIHRoZSB0aGluZ3MhICovXG5mdW5jdGlvbiBwYXJzZV9PYmooYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGlmKG9wdHMgJiYgb3B0cy5iaWZmIDwgOCkgcmV0dXJuIHBhcnNlX0JJRkY1T2JqKGJsb2IsIGxlbmd0aCwgb3B0cyk7XG5cdHZhciBjbW8gPSBwYXJzZV9GdENtbyhibG9iLCAyMik7IC8vIGlkLCBvdCwgZmxhZ3Ncblx0dmFyIGZ0cyA9IHBhcnNlX0Z0QXJyYXkoYmxvYiwgbGVuZ3RoLTIyLCBjbW9bMV0pO1xuXHRyZXR1cm4geyBjbW86IGNtbywgZnQ6ZnRzIH07XG59XG4vKiBmcm9tIG9sZGVyIHNwZWMgKi9cbnZhciBwYXJzZV9CSUZGNU9UID0ge1xuMHgwODogZnVuY3Rpb24oYmxvYiwgbGVuZ3RoKSB7XG5cdHZhciB0Z3QgPSBibG9iLmwgKyBsZW5ndGg7XG5cdGJsb2IubCArPSAxMDsgLy8gdG9kb1xuXHR2YXIgY2YgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSA0O1xuXHRibG9iLmwgKz0gMjsgLy92YXIgY2JQaWN0Rm1sYSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDI7XG5cdGJsb2IubCArPSAyOyAvL3ZhciBncmJpdCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDQ7XG5cdHZhciBjY2hOYW1lID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRibG9iLmwgKz0gY2NoTmFtZTsgLy8gVE9ETzogc3ROYW1lXG5cdGJsb2IubCA9IHRndDsgLy8gVE9ETzogZm1sYVxuXHRyZXR1cm4geyBmbXQ6Y2YgfTtcbn1cbn07XG5cbmZ1bmN0aW9uIHBhcnNlX0JJRkY1T2JqKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRibG9iLmwgKz0gNDsgLy92YXIgY250ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgb3QgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBpZCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGdyYml0ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gMjsgLy92YXIgY29sTCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDI7IC8vdmFyIGR4TCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDI7IC8vdmFyIHJ3VCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDI7IC8vdmFyIGR5VCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDI7IC8vdmFyIGNvbFIgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSAyOyAvL3ZhciBkeFIgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSAyOyAvL3ZhciByd0IgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSAyOyAvL3ZhciBkeUIgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSAyOyAvL3ZhciBjYk1hY3JvID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gNjtcblx0bGVuZ3RoIC09IDM2O1xuXHR2YXIgZnRzID0gW107XG5cdGZ0cy5wdXNoKChwYXJzZV9CSUZGNU9UW290XXx8cGFyc2Vub29wKShibG9iLCBsZW5ndGgsIG9wdHMpKTtcblx0cmV0dXJuIHsgY21vOiBbaWQsIG90LCBncmJpdF0sIGZ0OmZ0cyB9O1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMzI5IFRPRE86IHBhcnNlIHByb3Blcmx5ICovXG5mdW5jdGlvbiBwYXJzZV9UeE8oYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBzID0gYmxvYi5sO1xuXHR2YXIgdGV4dHMgPSBcIlwiO1xudHJ5IHtcblx0YmxvYi5sICs9IDQ7XG5cdHZhciBvdCA9IChvcHRzLmxhc3RvYmp8fHtjbW86WzAsMF19KS5jbW9bMV07XG5cdHZhciBjb250cm9sSW5mbzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuXHRpZihbMCw1LDcsMTEsMTIsMTRdLmluZGV4T2Yob3QpID09IC0xKSBibG9iLmwgKz0gNjtcblx0ZWxzZSBjb250cm9sSW5mbyA9IHBhcnNlX0NvbnRyb2xJbmZvKGJsb2IsIDYsIG9wdHMpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG5cdHZhciBjY2hUZXh0ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHQvKnZhciBjYlJ1bnMgPSAqL2Jsb2IucmVhZF9zaGlmdCgyKTtcblx0Lyp2YXIgaWZudEVtcHR5ID0gKi9wYXJzZXVpbnQxNihibG9iLCAyKTtcblx0dmFyIGxlbiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IGxlbjtcblx0Ly92YXIgZm1sYSA9IHBhcnNlX09iakZtbGEoYmxvYiwgcyArIGxlbmd0aCAtIGJsb2IubCk7XG5cblx0Zm9yKHZhciBpID0gMTsgaSA8IGJsb2IubGVucy5sZW5ndGgtMTsgKytpKSB7XG5cdFx0aWYoYmxvYi5sLXMgIT0gYmxvYi5sZW5zW2ldKSB0aHJvdyBuZXcgRXJyb3IoXCJUeE86IGJhZCBjb250aW51ZSByZWNvcmRcIik7XG5cdFx0dmFyIGhkciA9IGJsb2JbYmxvYi5sXTtcblx0XHR2YXIgdCA9IHBhcnNlX1hMVW5pY29kZVN0cmluZ05vQ2NoKGJsb2IsIGJsb2IubGVuc1tpKzFdLWJsb2IubGVuc1tpXS0xKTtcblx0XHR0ZXh0cyArPSB0O1xuXHRcdGlmKHRleHRzLmxlbmd0aCA+PSAoaGRyID8gY2NoVGV4dCA6IDIqY2NoVGV4dCkpIGJyZWFrO1xuXHR9XG5cdGlmKHRleHRzLmxlbmd0aCAhPT0gY2NoVGV4dCAmJiB0ZXh0cy5sZW5ndGggIT09IGNjaFRleHQqMikge1xuXHRcdHRocm93IG5ldyBFcnJvcihcImNjaFRleHQ6IFwiICsgY2NoVGV4dCArIFwiICE9IFwiICsgdGV4dHMubGVuZ3RoKTtcblx0fVxuXG5cdGJsb2IubCA9IHMgKyBsZW5ndGg7XG5cdC8qIFtNUy1YTFNdIDIuNS4yNzIgVHhPUnVucyAqL1xuLy9cdHZhciByZ1R4b1J1bnMgPSBbXTtcbi8vXHRmb3IodmFyIGogPSAwOyBqICE9IGNiUnVucy84LTE7ICsraikgYmxvYi5sICs9IDg7XG4vL1x0dmFyIGNjaFRleHQyID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuLy9cdGlmKGNjaFRleHQyICE9PSBjY2hUZXh0KSB0aHJvdyBuZXcgRXJyb3IoXCJUeE9MYXN0UnVuIG1pc21hdGNoOiBcIiArIGNjaFRleHQyICsgXCIgXCIgKyBjY2hUZXh0KTtcbi8vXHRibG9iLmwgKz0gNjtcbi8vXHRpZihzICsgbGVuZ3RoICE9IGJsb2IubCkgdGhyb3cgbmV3IEVycm9yKFwiVHhPIFwiICsgKHMgKyBsZW5ndGgpICsgXCIsIGF0IFwiICsgYmxvYi5sKTtcblx0cmV0dXJuIHsgdDogdGV4dHMgfTtcbn0gY2F0Y2goZSkgeyBibG9iLmwgPSBzICsgbGVuZ3RoOyByZXR1cm4geyB0OiB0ZXh0cyB9OyB9XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xNDAgKi9cbmZ1bmN0aW9uIHBhcnNlX0hMaW5rKGJsb2IsIGxlbmd0aCkge1xuXHR2YXIgcmVmID0gcGFyc2VfUmVmOFUoYmxvYiwgOCk7XG5cdGJsb2IubCArPSAxNjsgLyogQ0xTSUQgKi9cblx0dmFyIGhsaW5rID0gcGFyc2VfSHlwZXJsaW5rKGJsb2IsIGxlbmd0aC0yNCk7XG5cdHJldHVybiBbcmVmLCBobGlua107XG59XG5mdW5jdGlvbiB3cml0ZV9ITGluayhobCkge1xuXHR2YXIgTyA9IG5ld19idWYoMjQpO1xuXHR2YXIgcmVmID0gZGVjb2RlX2NlbGwoaGxbMF0pO1xuXHRPLndyaXRlX3NoaWZ0KDIsIHJlZi5yKTsgTy53cml0ZV9zaGlmdCgyLCByZWYucik7XG5cdE8ud3JpdGVfc2hpZnQoMiwgcmVmLmMpOyBPLndyaXRlX3NoaWZ0KDIsIHJlZi5jKTtcblx0dmFyIGNsc2lkID0gXCJkMCBjOSBlYSA3OSBmOSBiYSBjZSAxMSA4YyA4MiAwMCBhYSAwMCA0YiBhOSAwYlwiLnNwbGl0KFwiIFwiKTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIE8ud3JpdGVfc2hpZnQoMSwgcGFyc2VJbnQoY2xzaWRbaV0sIDE2KSk7XG5cdHJldHVybiBiY29uY2F0KFtPLCB3cml0ZV9IeXBlcmxpbmsoaGxbMV0pXSk7XG59XG5cblxuLyogW01TLVhMU10gMi40LjE0MSAqL1xuZnVuY3Rpb24gcGFyc2VfSExpbmtUb29sdGlwKGJsb2IsIGxlbmd0aCkge1xuXHRibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciByZWYgPSBwYXJzZV9SZWY4VShibG9iLCA4KTtcblx0dmFyIHd6VG9vbHRpcCA9IGJsb2IucmVhZF9zaGlmdCgobGVuZ3RoLTEwKS8yLCAnZGJjcy1jb250Jyk7XG5cdHd6VG9vbHRpcCA9IHd6VG9vbHRpcC5yZXBsYWNlKGNocjAsXCJcIik7XG5cdHJldHVybiBbcmVmLCB3elRvb2x0aXBdO1xufVxuZnVuY3Rpb24gd3JpdGVfSExpbmtUb29sdGlwKGhsKSB7XG5cdHZhciBUVCA9IGhsWzFdLlRvb2x0aXA7XG5cdHZhciBPID0gbmV3X2J1ZigxMCArIDIgKiAoVFQubGVuZ3RoICsgMSkpO1xuXHRPLndyaXRlX3NoaWZ0KDIsIDB4MDgwMCk7XG5cdHZhciByZWYgPSBkZWNvZGVfY2VsbChobFswXSk7XG5cdE8ud3JpdGVfc2hpZnQoMiwgcmVmLnIpOyBPLndyaXRlX3NoaWZ0KDIsIHJlZi5yKTtcblx0Ty53cml0ZV9zaGlmdCgyLCByZWYuYyk7IE8ud3JpdGVfc2hpZnQoMiwgcmVmLmMpO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgVFQubGVuZ3RoOyArK2kpIE8ud3JpdGVfc2hpZnQoMiwgVFQuY2hhckNvZGVBdChpKSk7XG5cdE8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdHJldHVybiBPO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuNjMgKi9cbmZ1bmN0aW9uIHBhcnNlX0NvdW50cnkoYmxvYikvKjpbc3RyaW5nfG51bWJlciwgc3RyaW5nfG51bWJlcl0qLyB7XG5cdHZhciBvID0gWzAsMF0sIGQ7XG5cdGQgPSBibG9iLnJlYWRfc2hpZnQoMik7IG9bMF0gPSBDb3VudHJ5RW51bVtkXSB8fCBkO1xuXHRkID0gYmxvYi5yZWFkX3NoaWZ0KDIpOyBvWzFdID0gQ291bnRyeUVudW1bZF0gfHwgZDtcblx0cmV0dXJuIG87XG59XG5mdW5jdGlvbiB3cml0ZV9Db3VudHJ5KG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDQpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDB4MDEpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDB4MDEpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi40LjUwIENscnRDbGllbnQgKi9cbmZ1bmN0aW9uIHBhcnNlX0NscnRDbGllbnQoYmxvYikge1xuXHR2YXIgY2N2ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgbyA9IFtdO1xuXHR3aGlsZShjY3YtLT4wKSBvLnB1c2gocGFyc2VfTG9uZ1JHQihibG9iLCA4KSk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMTg4ICovXG5mdW5jdGlvbiBwYXJzZV9QYWxldHRlKGJsb2IpIHtcblx0dmFyIGNjdiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIG8gPSBbXTtcblx0d2hpbGUoY2N2LS0+MCkgby5wdXNoKHBhcnNlX0xvbmdSR0IoYmxvYiwgOCkpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi40LjM1NCAqL1xuZnVuY3Rpb24gcGFyc2VfWEZDUkMoYmxvYikge1xuXHRibG9iLmwgKz0gMjtcblx0dmFyIG8gPSB7Y3hmczowLCBjcmM6MH07XG5cdG8uY3hmcyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0by5jcmMgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuNTMgVE9ETzogcGFyc2UgZmxhZ3MgKi9cbi8qIFtNUy1YTFNCXSAyLjQuMzIzIFRPRE86IHBhcnNlIGZsYWdzICovXG5mdW5jdGlvbiBwYXJzZV9Db2xJbmZvKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRpZighb3B0cy5jZWxsU3R5bGVzKSByZXR1cm4gcGFyc2Vub29wKGJsb2IsIGxlbmd0aCk7XG5cdHZhciB3ID0gb3B0cyAmJiBvcHRzLmJpZmYgPj0gMTIgPyA0IDogMjtcblx0dmFyIGNvbEZpcnN0ID0gYmxvYi5yZWFkX3NoaWZ0KHcpO1xuXHR2YXIgY29sTGFzdCA9IGJsb2IucmVhZF9zaGlmdCh3KTtcblx0dmFyIGNvbGR4ID0gYmxvYi5yZWFkX3NoaWZ0KHcpO1xuXHR2YXIgaXhmZSA9IGJsb2IucmVhZF9zaGlmdCh3KTtcblx0dmFyIGZsYWdzID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRpZih3ID09IDIpIGJsb2IubCArPSAyO1xuXHR2YXIgbyA9ICh7czpjb2xGaXJzdCwgZTpjb2xMYXN0LCB3OmNvbGR4LCBpeGZlOml4ZmUsIGZsYWdzOmZsYWdzfS8qOmFueSovKTtcblx0aWYob3B0cy5iaWZmID49IDUgfHwgIW9wdHMuYmlmZikgby5sZXZlbCA9IChmbGFncyA+PiA4KSAmIDB4Nztcblx0cmV0dXJuIG87XG59XG5mdW5jdGlvbiB3cml0ZV9Db2xJbmZvKGNvbCwgaWR4KSB7XG5cdHZhciBvID0gbmV3X2J1ZigxMik7XG5cdG8ud3JpdGVfc2hpZnQoMiwgaWR4KTtcblx0by53cml0ZV9zaGlmdCgyLCBpZHgpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIGNvbC53aWR0aCAqIDI1Nik7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdHZhciBmID0gMDtcblx0aWYoY29sLmhpZGRlbikgZiB8PSAxO1xuXHRvLndyaXRlX3NoaWZ0KDEsIGYpO1xuXHRmID0gY29sLmxldmVsIHx8IDA7XG5cdG8ud3JpdGVfc2hpZnQoMSwgZik7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMjU3ICovXG5mdW5jdGlvbiBwYXJzZV9TZXR1cChibG9iLCBsZW5ndGgpIHtcblx0dmFyIG8gPSB7fTtcblx0aWYobGVuZ3RoIDwgMzIpIHJldHVybiBvO1xuXHRibG9iLmwgKz0gMTY7XG5cdG8uaGVhZGVyID0gcGFyc2VfWG51bShibG9iLCA4KTtcblx0by5mb290ZXIgPSBwYXJzZV9YbnVtKGJsb2IsIDgpO1xuXHRibG9iLmwgKz0gMjtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4yNjEgKi9cbmZ1bmN0aW9uIHBhcnNlX1NodFByb3BzKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgZGVmID0ge2FyZWE6ZmFsc2V9O1xuXHRpZihvcHRzLmJpZmYgIT0gNSkgeyBibG9iLmwgKz0gbGVuZ3RoOyByZXR1cm4gZGVmOyB9XG5cdHZhciBkID0gYmxvYi5yZWFkX3NoaWZ0KDEpOyBibG9iLmwgKz0gMztcblx0aWYoKGQgJiAweDEwKSkgZGVmLmFyZWEgPSB0cnVlO1xuXHRyZXR1cm4gZGVmO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMjQxICovXG5mdW5jdGlvbiB3cml0ZV9SUlRhYklkKG4vKjpudW1iZXIqLykge1xuXHR2YXIgb3V0ID0gbmV3X2J1ZigyICogbik7XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBuOyArK2kpIG91dC53cml0ZV9zaGlmdCgyLCBpKzEpO1xuXHRyZXR1cm4gb3V0O1xufVxuXG52YXIgcGFyc2VfQmxhbmsgPSBwYXJzZV9YTFNDZWxsOyAvKiBbTVMtWExTXSAyLjQuMjAgSnVzdCB0aGUgY2VsbCAqL1xudmFyIHBhcnNlX1NjbCA9IHBhcnNldWludDE2YTsgLyogW01TLVhMU10gMi40LjI0NyBudW0sIGRlbiAqL1xudmFyIHBhcnNlX1N0cmluZyA9IHBhcnNlX1hMVW5pY29kZVN0cmluZzsgLyogW01TLVhMU10gMi40LjI2OCAqL1xuXG4vKiAtLS0gU3BlY2lmaWMgdG8gdmVyc2lvbnMgYmVmb3JlIEJJRkY4IC0tLSAqL1xuZnVuY3Rpb24gcGFyc2VfSW1EYXRhKGJsb2IpIHtcblx0dmFyIGNmID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgZW52ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgbGNiID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgbyA9IHtmbXQ6Y2YsIGVudjplbnYsIGxlbjpsY2IsIGRhdGE6YmxvYi5zbGljZShibG9iLmwsYmxvYi5sK2xjYil9O1xuXHRibG9iLmwgKz0gbGNiO1xuXHRyZXR1cm4gbztcbn1cblxuLyogQklGRjJfPz8/IHdoZXJlID8/PyBpcyB0aGUgbmFtZSBmcm9tIFtYTFNdICovXG5mdW5jdGlvbiBwYXJzZV9CSUZGMlNUUihibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0aWYob3B0cy5iaWZmZ3Vlc3MgJiYgb3B0cy5iaWZmID09IDUpIG9wdHMuYmlmZiA9IDI7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQ2VsbChibG9iLCA2KTtcblx0KytibG9iLmw7XG5cdHZhciBzdHIgPSBwYXJzZV9YTFVuaWNvZGVTdHJpbmcyKGJsb2IsIGxlbmd0aC03LCBvcHRzKTtcblx0Y2VsbC50ID0gJ3N0cic7XG5cdGNlbGwudmFsID0gc3RyO1xuXHRyZXR1cm4gY2VsbDtcbn1cblxuZnVuY3Rpb24gcGFyc2VfQklGRjJOVU0oYmxvYi8qOjosIGxlbmd0aCovKSB7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQ2VsbChibG9iLCA2KTtcblx0KytibG9iLmw7XG5cdHZhciBudW0gPSBwYXJzZV9YbnVtKGJsb2IsIDgpO1xuXHRjZWxsLnQgPSAnbic7XG5cdGNlbGwudmFsID0gbnVtO1xuXHRyZXR1cm4gY2VsbDtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JJRkYyTlVNKHIvKjpudW1iZXIqLywgYy8qOm51bWJlciovLCB2YWwvKjpudW1iZXIqLykge1xuXHR2YXIgb3V0ID0gbmV3X2J1ZigxNSk7XG5cdHdyaXRlX0JJRkYyQ2VsbChvdXQsIHIsIGMpO1xuXHRvdXQud3JpdGVfc2hpZnQoOCwgdmFsLCAnZicpO1xuXHRyZXR1cm4gb3V0O1xufVxuXG5mdW5jdGlvbiBwYXJzZV9CSUZGMklOVChibG9iKSB7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQ2VsbChibG9iLCA2KTtcblx0KytibG9iLmw7XG5cdHZhciBudW0gPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGNlbGwudCA9ICduJztcblx0Y2VsbC52YWwgPSBudW07XG5cdHJldHVybiBjZWxsO1xufVxuZnVuY3Rpb24gd3JpdGVfQklGRjJJTlQoci8qOm51bWJlciovLCBjLyo6bnVtYmVyKi8sIHZhbC8qOm51bWJlciovKSB7XG5cdHZhciBvdXQgPSBuZXdfYnVmKDkpO1xuXHR3cml0ZV9CSUZGMkNlbGwob3V0LCByLCBjKTtcblx0b3V0LndyaXRlX3NoaWZ0KDIsIHZhbCk7XG5cdHJldHVybiBvdXQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX0JJRkYyU1RSSU5HKGJsb2IpIHtcblx0dmFyIGNjaCA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0aWYoY2NoID09PSAwKSB7IGJsb2IubCsrOyByZXR1cm4gXCJcIjsgfVxuXHRyZXR1cm4gYmxvYi5yZWFkX3NoaWZ0KGNjaCwgJ3NiY3MtY29udCcpO1xufVxuXG4vKiBUT0RPOiBjb252ZXJ0IHRvIEJJRkY4IGZvbnQgc3RydWN0ICovXG5mdW5jdGlvbiBwYXJzZV9CSUZGMkZPTlRYVFJBKGJsb2IsIGxlbmd0aCkge1xuXHRibG9iLmwgKz0gNjsgLy8gdW5rbm93blxuXHRibG9iLmwgKz0gMjsgLy8gZm9udCB3ZWlnaHQgXCJibHNcIlxuXHRibG9iLmwgKz0gMTsgLy8gY2hhcnNldFxuXHRibG9iLmwgKz0gMzsgLy8gdW5rbm93blxuXHRibG9iLmwgKz0gMTsgLy8gZm9udCBmYW1pbHlcblx0YmxvYi5sICs9IGxlbmd0aCAtIDEzO1xufVxuXG4vKiBUT0RPOiBwYXJzZSByaWNoIHRleHQgcnVucyAqL1xuZnVuY3Rpb24gcGFyc2VfUlN0cmluZyhibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGVuZCA9IGJsb2IubCArIGxlbmd0aDtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNDZWxsKGJsb2IsIDYpO1xuXHR2YXIgY2NoID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgc3RyID0gcGFyc2VfWExVbmljb2RlU3RyaW5nTm9DY2goYmxvYiwgY2NoLCBvcHRzKTtcblx0YmxvYi5sID0gZW5kO1xuXHRjZWxsLnQgPSAnc3RyJztcblx0Y2VsbC52YWwgPSBzdHI7XG5cdHJldHVybiBjZWxsO1xufVxuLyogZnJvbSBqcy1oYXJiIChDKSAyMDE0LXByZXNlbnQgIFNoZWV0SlMgKi9cbnZhciBEQkZfU1VQUE9SVEVEX1ZFUlNJT05TID0gWzB4MDIsIDB4MDMsIDB4MzAsIDB4MzEsIDB4ODMsIDB4OEIsIDB4OEMsIDB4RjVdO1xudmFyIERCRiA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG52YXIgZGJmX2NvZGVwYWdlX21hcCA9IHtcblx0LyogQ29kZSBQYWdlcyBTdXBwb3J0ZWQgYnkgVmlzdWFsIEZveFBybyAqL1xuXHQvKjo6WyovMHgwMS8qOjpdKi86ICAgNDM3LCAgICAgICAgICAgLyo6OlsqLzB4MDIvKjo6XSovOiAgIDg1MCxcblx0Lyo6OlsqLzB4MDMvKjo6XSovOiAgMTI1MiwgICAgICAgICAgIC8qOjpbKi8weDA0Lyo6Ol0qLzogMTAwMDAsXG5cdC8qOjpbKi8weDY0Lyo6Ol0qLzogICA4NTIsICAgICAgICAgICAvKjo6WyovMHg2NS8qOjpdKi86ICAgODY2LFxuXHQvKjo6WyovMHg2Ni8qOjpdKi86ICAgODY1LCAgICAgICAgICAgLyo6OlsqLzB4NjcvKjo6XSovOiAgIDg2MSxcblx0Lyo6OlsqLzB4NjgvKjo6XSovOiAgIDg5NSwgICAgICAgICAgIC8qOjpbKi8weDY5Lyo6Ol0qLzogICA2MjAsXG5cdC8qOjpbKi8weDZBLyo6Ol0qLzogICA3MzcsICAgICAgICAgICAvKjo6WyovMHg2Qi8qOjpdKi86ICAgODU3LFxuXHQvKjo6WyovMHg3OC8qOjpdKi86ICAgOTUwLCAgICAgICAgICAgLyo6OlsqLzB4NzkvKjo6XSovOiAgIDk0OSxcblx0Lyo6OlsqLzB4N0EvKjo6XSovOiAgIDkzNiwgICAgICAgICAgIC8qOjpbKi8weDdCLyo6Ol0qLzogICA5MzIsXG5cdC8qOjpbKi8weDdDLyo6Ol0qLzogICA4NzQsICAgICAgICAgICAvKjo6WyovMHg3RC8qOjpdKi86ICAxMjU1LFxuXHQvKjo6WyovMHg3RS8qOjpdKi86ICAxMjU2LCAgICAgICAgICAgLyo6OlsqLzB4OTYvKjo6XSovOiAxMDAwNyxcblx0Lyo6OlsqLzB4OTcvKjo6XSovOiAxMDAyOSwgICAgICAgICAgIC8qOjpbKi8weDk4Lyo6Ol0qLzogMTAwMDYsXG5cdC8qOjpbKi8weEM4Lyo6Ol0qLzogIDEyNTAsICAgICAgICAgICAvKjo6WyovMHhDOS8qOjpdKi86ICAxMjUxLFxuXHQvKjo6WyovMHhDQS8qOjpdKi86ICAxMjU0LCAgICAgICAgICAgLyo6OlsqLzB4Q0IvKjo6XSovOiAgMTI1MyxcblxuXHQvKiBzaGFwZWZpbGUgREJGIGV4dGVuc2lvbiAqL1xuXHQvKjo6WyovMHgwMC8qOjpdKi86IDIwMTI3LCAgICAgICAgICAgLyo6OlsqLzB4MDgvKjo6XSovOiAgIDg2NSxcblx0Lyo6OlsqLzB4MDkvKjo6XSovOiAgIDQzNywgICAgICAgICAgIC8qOjpbKi8weDBBLyo6Ol0qLzogICA4NTAsXG5cdC8qOjpbKi8weDBCLyo6Ol0qLzogICA0MzcsICAgICAgICAgICAvKjo6WyovMHgwRC8qOjpdKi86ICAgNDM3LFxuXHQvKjo6WyovMHgwRS8qOjpdKi86ICAgODUwLCAgICAgICAgICAgLyo6OlsqLzB4MEYvKjo6XSovOiAgIDQzNyxcblx0Lyo6OlsqLzB4MTAvKjo6XSovOiAgIDg1MCwgICAgICAgICAgIC8qOjpbKi8weDExLyo6Ol0qLzogICA0MzcsXG5cdC8qOjpbKi8weDEyLyo6Ol0qLzogICA4NTAsICAgICAgICAgICAvKjo6WyovMHgxMy8qOjpdKi86ICAgOTMyLFxuXHQvKjo6WyovMHgxNC8qOjpdKi86ICAgODUwLCAgICAgICAgICAgLyo6OlsqLzB4MTUvKjo6XSovOiAgIDQzNyxcblx0Lyo6OlsqLzB4MTYvKjo6XSovOiAgIDg1MCwgICAgICAgICAgIC8qOjpbKi8weDE3Lyo6Ol0qLzogICA4NjUsXG5cdC8qOjpbKi8weDE4Lyo6Ol0qLzogICA0MzcsICAgICAgICAgICAvKjo6WyovMHgxOS8qOjpdKi86ICAgNDM3LFxuXHQvKjo6WyovMHgxQS8qOjpdKi86ICAgODUwLCAgICAgICAgICAgLyo6OlsqLzB4MUIvKjo6XSovOiAgIDQzNyxcblx0Lyo6OlsqLzB4MUMvKjo6XSovOiAgIDg2MywgICAgICAgICAgIC8qOjpbKi8weDFELyo6Ol0qLzogICA4NTAsXG5cdC8qOjpbKi8weDFGLyo6Ol0qLzogICA4NTIsICAgICAgICAgICAvKjo6WyovMHgyMi8qOjpdKi86ICAgODUyLFxuXHQvKjo6WyovMHgyMy8qOjpdKi86ICAgODUyLCAgICAgICAgICAgLyo6OlsqLzB4MjQvKjo6XSovOiAgIDg2MCxcblx0Lyo6OlsqLzB4MjUvKjo6XSovOiAgIDg1MCwgICAgICAgICAgIC8qOjpbKi8weDI2Lyo6Ol0qLzogICA4NjYsXG5cdC8qOjpbKi8weDM3Lyo6Ol0qLzogICA4NTAsICAgICAgICAgICAvKjo6WyovMHg0MC8qOjpdKi86ICAgODUyLFxuXHQvKjo6WyovMHg0RC8qOjpdKi86ICAgOTM2LCAgICAgICAgICAgLyo6OlsqLzB4NEUvKjo6XSovOiAgIDk0OSxcblx0Lyo6OlsqLzB4NEYvKjo6XSovOiAgIDk1MCwgICAgICAgICAgIC8qOjpbKi8weDUwLyo6Ol0qLzogICA4NzQsXG5cdC8qOjpbKi8weDU3Lyo6Ol0qLzogIDEyNTIsICAgICAgICAgICAvKjo6WyovMHg1OC8qOjpdKi86ICAxMjUyLFxuXHQvKjo6WyovMHg1OS8qOjpdKi86ICAxMjUyLCAgICAgICAgICAgLyo6OlsqLzB4NkMvKjo6XSovOiAgIDg2Myxcblx0Lyo6OlsqLzB4ODYvKjo6XSovOiAgIDczNywgICAgICAgICAgIC8qOjpbKi8weDg3Lyo6Ol0qLzogICA4NTIsXG5cdC8qOjpbKi8weDg4Lyo6Ol0qLzogICA4NTcsICAgICAgICAgICAvKjo6WyovMHhDQy8qOjpdKi86ICAxMjU3LFxuXG5cdC8qOjpbKi8weEZGLyo6Ol0qLzogMTY5Njlcbn07XG52YXIgZGJmX3JldmVyc2VfbWFwID0gZXZlcnQoe1xuXHQvKjo6WyovMHgwMS8qOjpdKi86ICAgNDM3LCAgICAgICAgICAgLyo6OlsqLzB4MDIvKjo6XSovOiAgIDg1MCxcblx0Lyo6OlsqLzB4MDMvKjo6XSovOiAgMTI1MiwgICAgICAgICAgIC8qOjpbKi8weDA0Lyo6Ol0qLzogMTAwMDAsXG5cdC8qOjpbKi8weDY0Lyo6Ol0qLzogICA4NTIsICAgICAgICAgICAvKjo6WyovMHg2NS8qOjpdKi86ICAgODY2LFxuXHQvKjo6WyovMHg2Ni8qOjpdKi86ICAgODY1LCAgICAgICAgICAgLyo6OlsqLzB4NjcvKjo6XSovOiAgIDg2MSxcblx0Lyo6OlsqLzB4NjgvKjo6XSovOiAgIDg5NSwgICAgICAgICAgIC8qOjpbKi8weDY5Lyo6Ol0qLzogICA2MjAsXG5cdC8qOjpbKi8weDZBLyo6Ol0qLzogICA3MzcsICAgICAgICAgICAvKjo6WyovMHg2Qi8qOjpdKi86ICAgODU3LFxuXHQvKjo6WyovMHg3OC8qOjpdKi86ICAgOTUwLCAgICAgICAgICAgLyo6OlsqLzB4NzkvKjo6XSovOiAgIDk0OSxcblx0Lyo6OlsqLzB4N0EvKjo6XSovOiAgIDkzNiwgICAgICAgICAgIC8qOjpbKi8weDdCLyo6Ol0qLzogICA5MzIsXG5cdC8qOjpbKi8weDdDLyo6Ol0qLzogICA4NzQsICAgICAgICAgICAvKjo6WyovMHg3RC8qOjpdKi86ICAxMjU1LFxuXHQvKjo6WyovMHg3RS8qOjpdKi86ICAxMjU2LCAgICAgICAgICAgLyo6OlsqLzB4OTYvKjo6XSovOiAxMDAwNyxcblx0Lyo6OlsqLzB4OTcvKjo6XSovOiAxMDAyOSwgICAgICAgICAgIC8qOjpbKi8weDk4Lyo6Ol0qLzogMTAwMDYsXG5cdC8qOjpbKi8weEM4Lyo6Ol0qLzogIDEyNTAsICAgICAgICAgICAvKjo6WyovMHhDOS8qOjpdKi86ICAxMjUxLFxuXHQvKjo6WyovMHhDQS8qOjpdKi86ICAxMjU0LCAgICAgICAgICAgLyo6OlsqLzB4Q0IvKjo6XSovOiAgMTI1Myxcblx0Lyo6OlsqLzB4MDAvKjo6XSovOiAyMDEyN1xufSk7XG4vKiBUT0RPOiBmaW5kIGFuIGFjdHVhbCBzcGVjaWZpY2F0aW9uICovXG5mdW5jdGlvbiBkYmZfdG9fYW9hKGJ1Ziwgb3B0cykvKjpBT0EqLyB7XG5cdHZhciBvdXQvKjpBT0EqLyA9IFtdO1xuXHR2YXIgZC8qOkJsb2NrKi8gPSAobmV3X3Jhd19idWYoMSkvKjphbnkqLyk7XG5cdHN3aXRjaChvcHRzLnR5cGUpIHtcblx0XHRjYXNlICdiYXNlNjQnOiBkID0gczJhKEJhc2U2NF9kZWNvZGUoYnVmKSk7IGJyZWFrO1xuXHRcdGNhc2UgJ2JpbmFyeSc6IGQgPSBzMmEoYnVmKTsgYnJlYWs7XG5cdFx0Y2FzZSAnYnVmZmVyJzpcblx0XHRjYXNlICdhcnJheSc6IGQgPSBidWY7IGJyZWFrO1xuXHR9XG5cdHByZXBfYmxvYihkLCAwKTtcblxuXHQvKiBoZWFkZXIgKi9cblx0dmFyIGZ0ID0gZC5yZWFkX3NoaWZ0KDEpO1xuXHR2YXIgbWVtbyA9ICEhKGZ0ICYgMHg4OCk7XG5cdHZhciB2ZnAgPSBmYWxzZSwgbDcgPSBmYWxzZTtcblx0c3dpdGNoKGZ0KSB7XG5cdFx0Y2FzZSAweDAyOiBicmVhazsgLy8gZEJBU0UgSUlcblx0XHRjYXNlIDB4MDM6IGJyZWFrOyAvLyBkQkFTRSBJSUlcblx0XHRjYXNlIDB4MzA6IHZmcCA9IHRydWU7IG1lbW8gPSB0cnVlOyBicmVhazsgLy8gVkZQXG5cdFx0Y2FzZSAweDMxOiB2ZnAgPSB0cnVlOyBtZW1vID0gdHJ1ZTsgYnJlYWs7IC8vIFZGUCB3aXRoIGF1dG9pbmNyZW1lbnRcblx0XHQvLyAweDQzIGRCQVNFIElWIFNRTCB0YWJsZSBmaWxlc1xuXHRcdC8vIDB4NjMgZEJBU0UgSVYgU1FMIHN5c3RlbSBmaWxlc1xuXHRcdGNhc2UgMHg4MzogYnJlYWs7IC8vIGRCQVNFIElJSSB3aXRoIG1lbW9cblx0XHRjYXNlIDB4OEI6IGJyZWFrOyAvLyBkQkFTRSBJViB3aXRoIG1lbW9cblx0XHRjYXNlIDB4OEM6IGw3ID0gdHJ1ZTsgYnJlYWs7IC8vIGRCQVNFIExldmVsIDcgd2l0aCBtZW1vXG5cdFx0Ly8gY2FzZSAweENCIGRCQVNFIElWIFNRTCB0YWJsZSBmaWxlcyB3aXRoIG1lbW9cblx0XHRjYXNlIDB4RjU6IGJyZWFrOyAvLyBGb3hQcm8gMi54IHdpdGggbWVtb1xuXHRcdC8vIGNhc2UgMHhGQiBGb3hCQVNFXG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiREJGIFVuc3VwcG9ydGVkIFZlcnNpb246IFwiICsgZnQudG9TdHJpbmcoMTYpKTtcblx0fVxuXG5cdHZhciBucm93ID0gMCwgZnBvcyA9IDB4MDIwOTtcblx0aWYoZnQgPT0gMHgwMikgbnJvdyA9IGQucmVhZF9zaGlmdCgyKTtcblx0ZC5sICs9IDM7IC8vIGRCQVNFIElJIHN0b3JlcyBERE1NWVkgZGF0ZSwgb3RoZXJzIHVzZSBZWU1NRERcblx0aWYoZnQgIT0gMHgwMikgbnJvdyA9IGQucmVhZF9zaGlmdCg0KTtcblx0aWYobnJvdyA+IDEwNDg1NzYpIG5yb3cgPSAxZTY7XG5cblx0aWYoZnQgIT0gMHgwMikgZnBvcyA9IGQucmVhZF9zaGlmdCgyKTsgLy8gaGVhZGVyIGxlbmd0aFxuXHR2YXIgcmxlbiA9IGQucmVhZF9zaGlmdCgyKTsgLy8gcmVjb3JkIGxlbmd0aFxuXG5cdHZhciAvKmZsYWdzID0gMCwqLyBjdXJyZW50X2NwID0gb3B0cy5jb2RlcGFnZSB8fCAxMjUyO1xuXHRpZihmdCAhPSAweDAyKSB7IC8vIDIwIHJlc2VydmVkIGJ5dGVzXG5cdFx0ZC5sKz0xNjtcblx0XHQvKmZsYWdzID0gKi9kLnJlYWRfc2hpZnQoMSk7XG5cdFx0Ly9pZihtZW1vICYmICgoZmxhZ3MgJiAweDAyKSA9PT0gMCkpIHRocm93IG5ldyBFcnJvcihcIkRCRiBGbGFncyBcIiArIGZsYWdzLnRvU3RyaW5nKDE2KSArIFwiIGZ0IFwiICsgZnQudG9TdHJpbmcoMTYpKTtcblxuXHRcdC8qIGNvZGVwYWdlIHByZXNlbnQgaW4gRm94UHJvIGFuZCBkQkFTRSBMZXZlbCA3ICovXG5cdFx0aWYoZFtkLmxdICE9PSAwKSBjdXJyZW50X2NwID0gZGJmX2NvZGVwYWdlX21hcFtkW2QubF1dO1xuXHRcdGQubCs9MTtcblxuXHRcdGQubCs9Mjtcblx0fVxuXHRpZihsNykgZC5sICs9IDM2OyAvLyBMZXZlbCA3OiAzMiBieXRlIFwiTGFuZ3VhZ2UgZHJpdmVyIG5hbWVcIiwgNCBieXRlIHJlc2VydmVkXG5cbi8qOjogdHlwZSBEQkZGaWVsZCA9IHsgbmFtZTpzdHJpbmc7IGxlbjpudW1iZXI7IHR5cGU6c3RyaW5nOyB9ICovXG5cdHZhciBmaWVsZHMvKjpBcnJheTxEQkZGaWVsZD4qLyA9IFtdLCBmaWVsZC8qOkRCRkZpZWxkKi8gPSAoe30vKjphbnkqLyk7XG5cdHZhciBoZW5kID0gTWF0aC5taW4oZC5sZW5ndGgsIChmdCA9PSAweDAyID8gMHgyMDkgOiAoZnBvcyAtIDEwIC0gKHZmcCA/IDI2NCA6IDApKSkpO1xuXHR2YXIgd3cgPSBsNyA/IDMyIDogMTE7XG5cdHdoaWxlKGQubCA8IGhlbmQgJiYgZFtkLmxdICE9IDB4MGQpIHtcblx0XHRmaWVsZCA9ICh7fS8qOmFueSovKTtcblx0XHRmaWVsZC5uYW1lID0gJGNwdGFibGUudXRpbHMuZGVjb2RlKGN1cnJlbnRfY3AsIGQuc2xpY2UoZC5sLCBkLmwrd3cpKS5yZXBsYWNlKC9bXFx1MDAwMFxcclxcbl0uKiQvZyxcIlwiKTtcblx0XHRkLmwgKz0gd3c7XG5cdFx0ZmllbGQudHlwZSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoZC5yZWFkX3NoaWZ0KDEpKTtcblx0XHRpZihmdCAhPSAweDAyICYmICFsNykgZmllbGQub2Zmc2V0ID0gZC5yZWFkX3NoaWZ0KDQpO1xuXHRcdGZpZWxkLmxlbiA9IGQucmVhZF9zaGlmdCgxKTtcblx0XHRpZihmdCA9PSAweDAyKSBmaWVsZC5vZmZzZXQgPSBkLnJlYWRfc2hpZnQoMik7XG5cdFx0ZmllbGQuZGVjID0gZC5yZWFkX3NoaWZ0KDEpO1xuXHRcdGlmKGZpZWxkLm5hbWUubGVuZ3RoKSBmaWVsZHMucHVzaChmaWVsZCk7XG5cdFx0aWYoZnQgIT0gMHgwMikgZC5sICs9IGw3ID8gMTMgOiAxNDtcblx0XHRzd2l0Y2goZmllbGQudHlwZSkge1xuXHRcdFx0Y2FzZSAnQic6IC8vIERvdWJsZSAoVkZQKSAvIEJpbmFyeSAoZEJBU0UgTDcpXG5cdFx0XHRcdGlmKCghdmZwIHx8IGZpZWxkLmxlbiAhPSA4KSAmJiBvcHRzLldURikgY29uc29sZS5sb2coJ1NraXBwaW5nICcgKyBmaWVsZC5uYW1lICsgJzonICsgZmllbGQudHlwZSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnRyc6IC8vIEdlbmVyYWwgKEZveFBybyBhbmQgZEJBU0UgTDcpXG5cdFx0XHRjYXNlICdQJzogLy8gUGljdHVyZSAoRm94UHJvIGFuZCBkQkFTRSBMNylcblx0XHRcdFx0aWYob3B0cy5XVEYpIGNvbnNvbGUubG9nKCdTa2lwcGluZyAnICsgZmllbGQubmFtZSArICc6JyArIGZpZWxkLnR5cGUpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJysnOiAvLyBBdXRvaW5jcmVtZW50IChkQkFTRSBMNyBvbmx5KVxuXHRcdFx0Y2FzZSAnMCc6IC8vIF9OdWxsRmxhZ3MgKFZGUCBvbmx5KVxuXHRcdFx0Y2FzZSAnQCc6IC8vIFRpbWVzdGFtcCAoZEJBU0UgTDcgb25seSlcblx0XHRcdGNhc2UgJ0MnOiAvLyBDaGFyYWN0ZXIgKGRCQVNFIElJKVxuXHRcdFx0Y2FzZSAnRCc6IC8vIERhdGUgKGRCQVNFIElJSSlcblx0XHRcdGNhc2UgJ0YnOiAvLyBGbG9hdCAoZEJBU0UgSVYpXG5cdFx0XHRjYXNlICdJJzogLy8gTG9uZyAoVkZQIGFuZCBkQkFTRSBMNylcblx0XHRcdGNhc2UgJ0wnOiAvLyBMb2dpY2FsIChkQkFTRSBJSSlcblx0XHRcdGNhc2UgJ00nOiAvLyBNZW1vIChkQkFTRSBJSUkpXG5cdFx0XHRjYXNlICdOJzogLy8gTnVtYmVyIChkQkFTRSBJSSlcblx0XHRcdGNhc2UgJ08nOiAvLyBEb3VibGUgKGRCQVNFIEw3IG9ubHkpXG5cdFx0XHRjYXNlICdUJzogLy8gRGF0ZXRpbWUgKFZGUCBvbmx5KVxuXHRcdFx0Y2FzZSAnWSc6IC8vIEN1cnJlbmN5IChWRlAgb25seSlcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gRmllbGQgVHlwZTogJyArIGZpZWxkLnR5cGUpO1xuXHRcdH1cblx0fVxuXG5cdGlmKGRbZC5sXSAhPT0gMHgwRCkgZC5sID0gZnBvcy0xO1xuXHRpZihkLnJlYWRfc2hpZnQoMSkgIT09IDB4MEQpIHRocm93IG5ldyBFcnJvcihcIkRCRiBUZXJtaW5hdG9yIG5vdCBmb3VuZCBcIiArIGQubCArIFwiIFwiICsgZFtkLmxdKTtcblx0ZC5sID0gZnBvcztcblxuXHQvKiBkYXRhICovXG5cdHZhciBSID0gMCwgQyA9IDA7XG5cdG91dFswXSA9IFtdO1xuXHRmb3IoQyA9IDA7IEMgIT0gZmllbGRzLmxlbmd0aDsgKytDKSBvdXRbMF1bQ10gPSBmaWVsZHNbQ10ubmFtZTtcblx0d2hpbGUobnJvdy0tID4gMCkge1xuXHRcdGlmKGRbZC5sXSA9PT0gMHgyQSkge1xuXHRcdFx0Ly8gVE9ETzogcmVjb3JkIG1hcmtlZCBhcyBkZWxldGVkIC0tIGNyZWF0ZSBhIGhpZGRlbiByb3c/XG5cdFx0XHRkLmwrPXJsZW47XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cdFx0KytkLmw7XG5cdFx0b3V0WysrUl0gPSBbXTsgQyA9IDA7XG5cdFx0Zm9yKEMgPSAwOyBDICE9IGZpZWxkcy5sZW5ndGg7ICsrQykge1xuXHRcdFx0dmFyIGRkID0gZC5zbGljZShkLmwsIGQubCtmaWVsZHNbQ10ubGVuKTsgZC5sKz1maWVsZHNbQ10ubGVuO1xuXHRcdFx0cHJlcF9ibG9iKGRkLCAwKTtcblx0XHRcdHZhciBzID0gJGNwdGFibGUudXRpbHMuZGVjb2RlKGN1cnJlbnRfY3AsIGRkKTtcblx0XHRcdHN3aXRjaChmaWVsZHNbQ10udHlwZSkge1xuXHRcdFx0XHRjYXNlICdDJzpcblx0XHRcdFx0XHQvLyBOT1RFOiBpdCBpcyBjb252ZW50aW9uYWwgdG8gd3JpdGUgJyAgLyAgLyAgJyBmb3IgZW1wdHkgZGF0ZXNcblx0XHRcdFx0XHRpZihzLnRyaW0oKS5sZW5ndGgpIG91dFtSXVtDXSA9IHMucmVwbGFjZSgvXFxzKyQvLFwiXCIpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdEJzpcblx0XHRcdFx0XHRpZihzLmxlbmd0aCA9PT0gOCkgb3V0W1JdW0NdID0gbmV3IERhdGUoK3Muc2xpY2UoMCw0KSwgK3Muc2xpY2UoNCw2KS0xLCArcy5zbGljZSg2LDgpKTtcblx0XHRcdFx0XHRlbHNlIG91dFtSXVtDXSA9IHM7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ0YnOiBvdXRbUl1bQ10gPSBwYXJzZUZsb2F0KHMudHJpbSgpKTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJysnOiBjYXNlICdJJzogb3V0W1JdW0NdID0gbDcgPyBkZC5yZWFkX3NoaWZ0KC00LCAnaScpIF4gMHg4MDAwMDAwMCA6IGRkLnJlYWRfc2hpZnQoNCwgJ2knKTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ0wnOiBzd2l0Y2gocy50cmltKCkudG9VcHBlckNhc2UoKSkge1xuXHRcdFx0XHRcdGNhc2UgJ1knOiBjYXNlICdUJzogb3V0W1JdW0NdID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnTic6IGNhc2UgJ0YnOiBvdXRbUl1bQ10gPSBmYWxzZTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnJzogY2FzZSAnPyc6IGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIkRCRiBVbnJlY29nbml6ZWQgTDp8XCIgKyBzICsgXCJ8XCIpO1xuXHRcdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ00nOiAvKiBUT0RPOiBoYW5kbGUgbWVtbyBmaWxlcyAqL1xuXHRcdFx0XHRcdGlmKCFtZW1vKSB0aHJvdyBuZXcgRXJyb3IoXCJEQkYgVW5leHBlY3RlZCBNRU1PIGZvciB0eXBlIFwiICsgZnQudG9TdHJpbmcoMTYpKTtcblx0XHRcdFx0XHRvdXRbUl1bQ10gPSBcIiMjTUVNTyMjXCIgKyAobDcgPyBwYXJzZUludChzLnRyaW0oKSwgMTApOiBkZC5yZWFkX3NoaWZ0KDQpKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnTic6XG5cdFx0XHRcdFx0cyA9IHMucmVwbGFjZSgvXFx1MDAwMC9nLFwiXCIpLnRyaW0oKTtcblx0XHRcdFx0XHQvLyBOT1RFOiBkQkFTRSBJSSBpbnRlcnByZXRzIFwiICAuICBcIiBhcyAwXG5cdFx0XHRcdFx0aWYocyAmJiBzICE9IFwiLlwiKSBvdXRbUl1bQ10gPSArcyB8fCAwOyBicmVhaztcblx0XHRcdFx0Y2FzZSAnQCc6XG5cdFx0XHRcdFx0Ly8gTk9URTogZEJBU0Ugc3BlY3MgYXBwZWFyIHRvIGJlIGluY29ycmVjdFxuXHRcdFx0XHRcdG91dFtSXVtDXSA9IG5ldyBEYXRlKGRkLnJlYWRfc2hpZnQoLTgsICdmJykgLSAweDM4ODMxNzUzMzQwMCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ1QnOiBvdXRbUl1bQ10gPSBuZXcgRGF0ZSgoZGQucmVhZF9zaGlmdCg0KSAtIDB4MjUzRDhDKSAqIDB4NTI2NUMwMCArIGRkLnJlYWRfc2hpZnQoNCkpOyBicmVhaztcblx0XHRcdFx0Y2FzZSAnWSc6IG91dFtSXVtDXSA9IGRkLnJlYWRfc2hpZnQoNCwnaScpLzFlNCArIChkZC5yZWFkX3NoaWZ0KDQsICdpJykvMWU0KSpNYXRoLnBvdygyLDMyKTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ08nOiBvdXRbUl1bQ10gPSAtZGQucmVhZF9zaGlmdCgtOCwgJ2YnKTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ0InOiBpZih2ZnAgJiYgZmllbGRzW0NdLmxlbiA9PSA4KSB7IG91dFtSXVtDXSA9IGRkLnJlYWRfc2hpZnQoOCwnZicpOyBicmVhazsgfVxuXHRcdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdFx0Y2FzZSAnRyc6IGNhc2UgJ1AnOiBkZC5sICs9IGZpZWxkc1tDXS5sZW47IGJyZWFrO1xuXHRcdFx0XHRjYXNlICcwJzpcblx0XHRcdFx0XHRpZihmaWVsZHNbQ10ubmFtZSA9PT0gJ19OdWxsRmxhZ3MnKSBicmVhaztcblx0XHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIkRCRiBVbnN1cHBvcnRlZCBkYXRhIHR5cGUgXCIgKyBmaWVsZHNbQ10udHlwZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdGlmKGZ0ICE9IDB4MDIpIGlmKGQubCA8IGQubGVuZ3RoICYmIGRbZC5sKytdICE9IDB4MUEpIHRocm93IG5ldyBFcnJvcihcIkRCRiBFT0YgTWFya2VyIG1pc3NpbmcgXCIgKyAoZC5sLTEpICsgXCIgb2YgXCIgKyBkLmxlbmd0aCArIFwiIFwiICsgZFtkLmwtMV0udG9TdHJpbmcoMTYpKTtcblx0aWYob3B0cyAmJiBvcHRzLnNoZWV0Um93cykgb3V0ID0gb3V0LnNsaWNlKDAsIG9wdHMuc2hlZXRSb3dzKTtcblx0b3B0cy5EQkYgPSBmaWVsZHM7XG5cdHJldHVybiBvdXQ7XG59XG5cbmZ1bmN0aW9uIGRiZl90b19zaGVldChidWYsIG9wdHMpLyo6V29ya3NoZWV0Ki8ge1xuXHR2YXIgbyA9IG9wdHMgfHwge307XG5cdGlmKCFvLmRhdGVORikgby5kYXRlTkYgPSBcInl5eXltbWRkXCI7XG5cdHZhciB3cyA9IGFvYV90b19zaGVldChkYmZfdG9fYW9hKGJ1ZiwgbyksIG8pO1xuXHR3c1tcIiFjb2xzXCJdID0gby5EQkYubWFwKGZ1bmN0aW9uKGZpZWxkKSB7IHJldHVybiB7XG5cdFx0d2NoOiBmaWVsZC5sZW4sXG5cdFx0REJGOiBmaWVsZFxuXHR9O30pO1xuXHRkZWxldGUgby5EQkY7XG5cdHJldHVybiB3cztcbn1cblxuZnVuY3Rpb24gZGJmX3RvX3dvcmtib29rKGJ1Ziwgb3B0cykvKjpXb3JrYm9vayovIHtcblx0dHJ5IHsgcmV0dXJuIHNoZWV0X3RvX3dvcmtib29rKGRiZl90b19zaGVldChidWYsIG9wdHMpLCBvcHRzKTsgfVxuXHRjYXRjaChlKSB7IGlmKG9wdHMgJiYgb3B0cy5XVEYpIHRocm93IGU7IH1cblx0cmV0dXJuICh7U2hlZXROYW1lczpbXSxTaGVldHM6e319KTtcbn1cblxudmFyIF9STEVOID0geyAnQic6IDgsICdDJzogMjUwLCAnTCc6IDEsICdEJzogOCwgJz8nOiAwLCAnJzogMCB9O1xuZnVuY3Rpb24gc2hlZXRfdG9fZGJmKHdzLyo6V29ya3NoZWV0Ki8sIG9wdHMvKjpXcml0ZU9wdHMqLykge1xuXHR2YXIgbyA9IG9wdHMgfHwge307XG5cdGlmKCtvLmNvZGVwYWdlID49IDApIHNldF9jcCgrby5jb2RlcGFnZSk7XG5cdGlmKG8udHlwZSA9PSBcInN0cmluZ1wiKSB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3Qgd3JpdGUgREJGIHRvIEpTIHN0cmluZ1wiKTtcblx0dmFyIGJhID0gYnVmX2FycmF5KCk7XG5cdHZhciBhb2EvKjpBT0EqLyA9IHNoZWV0X3RvX2pzb24od3MsIHtoZWFkZXI6MSwgcmF3OnRydWUsIGNlbGxEYXRlczp0cnVlfSk7XG5cdHZhciBoZWFkZXJzID0gYW9hWzBdLCBkYXRhID0gYW9hLnNsaWNlKDEpLCBjb2xzID0gd3NbXCIhY29sc1wiXSB8fCBbXTtcblx0dmFyIGkgPSAwLCBqID0gMCwgaGNudCA9IDAsIHJsZW4gPSAxO1xuXHRmb3IoaSA9IDA7IGkgPCBoZWFkZXJzLmxlbmd0aDsgKytpKSB7XG5cdFx0aWYoKChjb2xzW2ldfHx7fSkuREJGfHx7fSkubmFtZSkgeyBoZWFkZXJzW2ldID0gY29sc1tpXS5EQkYubmFtZTsgKytoY250OyBjb250aW51ZTsgfVxuXHRcdGlmKGhlYWRlcnNbaV0gPT0gbnVsbCkgY29udGludWU7XG5cdFx0KytoY250O1xuXHRcdGlmKHR5cGVvZiBoZWFkZXJzW2ldID09PSAnbnVtYmVyJykgaGVhZGVyc1tpXSA9IGhlYWRlcnNbaV0udG9TdHJpbmcoMTApO1xuXHRcdGlmKHR5cGVvZiBoZWFkZXJzW2ldICE9PSAnc3RyaW5nJykgdGhyb3cgbmV3IEVycm9yKFwiREJGIEludmFsaWQgY29sdW1uIG5hbWUgXCIgKyBoZWFkZXJzW2ldICsgXCIgfFwiICsgKHR5cGVvZiBoZWFkZXJzW2ldKSArIFwifFwiKTtcblx0XHRpZihoZWFkZXJzLmluZGV4T2YoaGVhZGVyc1tpXSkgIT09IGkpIGZvcihqPTA7IGo8MTAyNDsrK2opXG5cdFx0XHRpZihoZWFkZXJzLmluZGV4T2YoaGVhZGVyc1tpXSArIFwiX1wiICsgaikgPT0gLTEpIHsgaGVhZGVyc1tpXSArPSBcIl9cIiArIGo7IGJyZWFrOyB9XG5cdH1cblx0dmFyIHJhbmdlID0gc2FmZV9kZWNvZGVfcmFuZ2Uod3NbJyFyZWYnXSk7XG5cdHZhciBjb2x0eXBlcy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgY29sd2lkdGhzLyo6QXJyYXk8bnVtYmVyPiovID0gW107XG5cdHZhciBjb2xkZWNpbWFscy8qOkFycmF5PG51bWJlcj4qLyA9IFtdO1xuXHRmb3IoaSA9IDA7IGkgPD0gcmFuZ2UuZS5jIC0gcmFuZ2Uucy5jOyArK2kpIHtcblx0XHR2YXIgZ3Vlc3MgPSAnJywgX2d1ZXNzID0gJycsIG1heGxlbiA9IDA7XG5cdFx0dmFyIGNvbC8qOkFycmF5PGFueT4qLyA9IFtdO1xuXHRcdGZvcihqPTA7IGogPCBkYXRhLmxlbmd0aDsgKytqKSB7XG5cdFx0XHRpZihkYXRhW2pdW2ldICE9IG51bGwpIGNvbC5wdXNoKGRhdGFbal1baV0pO1xuXHRcdH1cblx0XHRpZihjb2wubGVuZ3RoID09IDAgfHwgaGVhZGVyc1tpXSA9PSBudWxsKSB7IGNvbHR5cGVzW2ldID0gJz8nOyBjb250aW51ZTsgfVxuXHRcdGZvcihqID0gMDsgaiA8IGNvbC5sZW5ndGg7ICsraikge1xuXHRcdFx0c3dpdGNoKHR5cGVvZiBjb2xbal0pIHtcblx0XHRcdFx0LyogVE9ETzogY2hlY2sgaWYgTDIgY29tcGF0IGlzIGRlc2lyZWQgKi9cblx0XHRcdFx0Y2FzZSAnbnVtYmVyJzogX2d1ZXNzID0gJ0InOyBicmVhaztcblx0XHRcdFx0Y2FzZSAnc3RyaW5nJzogX2d1ZXNzID0gJ0MnOyBicmVhaztcblx0XHRcdFx0Y2FzZSAnYm9vbGVhbic6IF9ndWVzcyA9ICdMJzsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ29iamVjdCc6IF9ndWVzcyA9IGNvbFtqXSBpbnN0YW5jZW9mIERhdGUgPyAnRCcgOiAnQyc7IGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OiBfZ3Vlc3MgPSAnQyc7XG5cdFx0XHR9XG5cdFx0XHRtYXhsZW4gPSBNYXRoLm1heChtYXhsZW4sIFN0cmluZyhjb2xbal0pLmxlbmd0aCk7XG5cdFx0XHRndWVzcyA9IGd1ZXNzICYmIGd1ZXNzICE9IF9ndWVzcyA/ICdDJyA6IF9ndWVzcztcblx0XHRcdC8vaWYoZ3Vlc3MgPT0gJ0MnKSBicmVhaztcblx0XHR9XG5cdFx0aWYobWF4bGVuID4gMjUwKSBtYXhsZW4gPSAyNTA7XG5cdFx0X2d1ZXNzID0gKChjb2xzW2ldfHx7fSkuREJGfHx7fSkudHlwZTtcblx0XHQvKiBUT0RPOiBtb3JlIGZpbmUgZ3JhaW5lZCBjb250cm9sIG92ZXIgREJGIHR5cGUgcmVzb2x1dGlvbiAqL1xuXHRcdGlmKF9ndWVzcyA9PSAnQycpIHtcblx0XHRcdGlmKGNvbHNbaV0uREJGLmxlbiA+IG1heGxlbikgbWF4bGVuID0gY29sc1tpXS5EQkYubGVuO1xuXHRcdH1cblx0XHRpZihndWVzcyA9PSAnQicgJiYgX2d1ZXNzID09ICdOJykge1xuXHRcdFx0Z3Vlc3MgPSAnTic7XG5cdFx0XHRjb2xkZWNpbWFsc1tpXSA9IGNvbHNbaV0uREJGLmRlYztcblx0XHRcdG1heGxlbiA9IGNvbHNbaV0uREJGLmxlbjtcblx0XHR9XG5cdFx0Y29sd2lkdGhzW2ldID0gZ3Vlc3MgPT0gJ0MnIHx8IF9ndWVzcyA9PSAnTicgPyBtYXhsZW4gOiAoX1JMRU5bZ3Vlc3NdIHx8IDApO1xuXHRcdHJsZW4gKz0gY29sd2lkdGhzW2ldO1xuXHRcdGNvbHR5cGVzW2ldID0gZ3Vlc3M7XG5cdH1cblxuXHR2YXIgaCA9IGJhLm5leHQoMzIpO1xuXHRoLndyaXRlX3NoaWZ0KDQsIDB4MTMwMjExMzApO1xuXHRoLndyaXRlX3NoaWZ0KDQsIGRhdGEubGVuZ3RoKTtcblx0aC53cml0ZV9zaGlmdCgyLCAyOTYgKyAzMiAqIGhjbnQpO1xuXHRoLndyaXRlX3NoaWZ0KDIsIHJsZW4pO1xuXHRmb3IoaT0wOyBpIDwgNDsgKytpKSBoLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRoLndyaXRlX3NoaWZ0KDQsIDB4MDAwMDAwMDAgfCAoKCtkYmZfcmV2ZXJzZV9tYXBbLyo6OlN0cmluZygqL2N1cnJlbnRfYW5zaS8qOjopKi9dIHx8IDB4MDMpPDw4KSk7XG5cblx0Zm9yKGkgPSAwLCBqID0gMDsgaSA8IGhlYWRlcnMubGVuZ3RoOyArK2kpIHtcblx0XHRpZihoZWFkZXJzW2ldID09IG51bGwpIGNvbnRpbnVlO1xuXHRcdHZhciBoZiA9IGJhLm5leHQoMzIpO1xuXHRcdHZhciBfZiA9IChoZWFkZXJzW2ldLnNsaWNlKC0xMCkgKyBcIlxceDAwXFx4MDBcXHgwMFxceDAwXFx4MDBcXHgwMFxceDAwXFx4MDBcXHgwMFxceDAwXFx4MDBcIikuc2xpY2UoMCwgMTEpO1xuXHRcdGhmLndyaXRlX3NoaWZ0KDEsIF9mLCBcInNiY3NcIik7XG5cdFx0aGYud3JpdGVfc2hpZnQoMSwgY29sdHlwZXNbaV0gPT0gJz8nID8gJ0MnIDogY29sdHlwZXNbaV0sIFwic2Jjc1wiKTtcblx0XHRoZi53cml0ZV9zaGlmdCg0LCBqKTtcblx0XHRoZi53cml0ZV9zaGlmdCgxLCBjb2x3aWR0aHNbaV0gfHwgX1JMRU5bY29sdHlwZXNbaV1dIHx8IDApO1xuXHRcdGhmLndyaXRlX3NoaWZ0KDEsIGNvbGRlY2ltYWxzW2ldIHx8IDApO1xuXHRcdGhmLndyaXRlX3NoaWZ0KDEsIDB4MDIpO1xuXHRcdGhmLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRcdGhmLndyaXRlX3NoaWZ0KDEsIDApO1xuXHRcdGhmLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRcdGhmLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRcdGogKz0gKGNvbHdpZHRoc1tpXSB8fCBfUkxFTltjb2x0eXBlc1tpXV0gfHwgMCk7XG5cdH1cblxuXHR2YXIgaGIgPSBiYS5uZXh0KDI2NCk7XG5cdGhiLndyaXRlX3NoaWZ0KDQsIDB4MDAwMDAwMEQpO1xuXHRmb3IoaT0wOyBpIDwgNjU7KytpKSBoYi53cml0ZV9zaGlmdCg0LCAweDAwMDAwMDAwKTtcblx0Zm9yKGk9MDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgcm91dCA9IGJhLm5leHQocmxlbik7XG5cdFx0cm91dC53cml0ZV9zaGlmdCgxLCAwKTtcblx0XHRmb3Ioaj0wOyBqPGhlYWRlcnMubGVuZ3RoOyArK2opIHtcblx0XHRcdGlmKGhlYWRlcnNbal0gPT0gbnVsbCkgY29udGludWU7XG5cdFx0XHRzd2l0Y2goY29sdHlwZXNbal0pIHtcblx0XHRcdFx0Y2FzZSAnTCc6IHJvdXQud3JpdGVfc2hpZnQoMSwgZGF0YVtpXVtqXSA9PSBudWxsID8gMHgzRiA6IGRhdGFbaV1bal0gPyAweDU0IDogMHg0Nik7IGJyZWFrO1xuXHRcdFx0XHRjYXNlICdCJzogcm91dC53cml0ZV9zaGlmdCg4LCBkYXRhW2ldW2pdfHwwLCAnZicpOyBicmVhaztcblx0XHRcdFx0Y2FzZSAnTic6XG5cdFx0XHRcdFx0dmFyIF9uID0gXCIwXCI7XG5cdFx0XHRcdFx0aWYodHlwZW9mIGRhdGFbaV1bal0gPT0gXCJudW1iZXJcIikgX24gPSBkYXRhW2ldW2pdLnRvRml4ZWQoY29sZGVjaW1hbHNbal18fDApO1xuXHRcdFx0XHRcdGZvcihoY250PTA7IGhjbnQgPCBjb2x3aWR0aHNbal0tX24ubGVuZ3RoOyArK2hjbnQpIHJvdXQud3JpdGVfc2hpZnQoMSwgMHgyMCk7XG5cdFx0XHRcdFx0cm91dC53cml0ZV9zaGlmdCgxLCBfbiwgXCJzYmNzXCIpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdEJzpcblx0XHRcdFx0XHRpZighZGF0YVtpXVtqXSkgcm91dC53cml0ZV9zaGlmdCg4LCBcIjAwMDAwMDAwXCIsIFwic2Jjc1wiKTtcblx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdHJvdXQud3JpdGVfc2hpZnQoNCwgKFwiMDAwMFwiK2RhdGFbaV1bal0uZ2V0RnVsbFllYXIoKSkuc2xpY2UoLTQpLCBcInNiY3NcIik7XG5cdFx0XHRcdFx0XHRyb3V0LndyaXRlX3NoaWZ0KDIsIChcIjAwXCIrKGRhdGFbaV1bal0uZ2V0TW9udGgoKSsxKSkuc2xpY2UoLTIpLCBcInNiY3NcIik7XG5cdFx0XHRcdFx0XHRyb3V0LndyaXRlX3NoaWZ0KDIsIChcIjAwXCIrZGF0YVtpXVtqXS5nZXREYXRlKCkpLnNsaWNlKC0yKSwgXCJzYmNzXCIpO1xuXHRcdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ0MnOlxuXHRcdFx0XHRcdHZhciBfcyA9IFN0cmluZyhkYXRhW2ldW2pdICE9IG51bGwgPyBkYXRhW2ldW2pdIDogXCJcIikuc2xpY2UoMCwgY29sd2lkdGhzW2pdKTtcblx0XHRcdFx0XHRyb3V0LndyaXRlX3NoaWZ0KDEsIF9zLCBcInNiY3NcIik7XG5cdFx0XHRcdFx0Zm9yKGhjbnQ9MDsgaGNudCA8IGNvbHdpZHRoc1tqXS1fcy5sZW5ndGg7ICsraGNudCkgcm91dC53cml0ZV9zaGlmdCgxLCAweDIwKTsgYnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vIGRhdGFcblx0fVxuXHRiYS5uZXh0KDEpLndyaXRlX3NoaWZ0KDEsIDB4MUEpO1xuXHRyZXR1cm4gYmEuZW5kKCk7XG59XG5cdHJldHVybiB7XG5cdFx0dG9fd29ya2Jvb2s6IGRiZl90b193b3JrYm9vayxcblx0XHR0b19zaGVldDogZGJmX3RvX3NoZWV0LFxuXHRcdGZyb21fc2hlZXQ6IHNoZWV0X3RvX2RiZlxuXHR9O1xufSkoKTtcblxudmFyIFNZTEsgPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCkge1xuXHQvKiBUT0RPOiBzdHJlc3MgdGVzdCBzZXF1ZW5jZXMgKi9cblx0dmFyIHN5bGtfZXNjYXBlcyA9ICh7XG5cdFx0QUE6J8OAJywgQkE6J8OBJywgQ0E6J8OCJywgREE6MTk1LCBIQTonw4QnLCBKQToxOTcsXG5cdFx0QUU6J8OIJywgQkU6J8OJJywgQ0U6J8OKJywgICAgICAgICBIRTonw4snLFxuXHRcdEFJOifDjCcsIEJJOifDjScsIENJOifDjicsICAgICAgICAgSEk6J8OPJyxcblx0XHRBTzonw5InLCBCTzonw5MnLCBDTzonw5QnLCBETzoyMTMsIEhPOifDlicsXG5cdFx0QVU6J8OZJywgQlU6J8OaJywgQ1U6J8ObJywgICAgICAgICBIVTonw5wnLFxuXHRcdEFhOifDoCcsIEJhOifDoScsIENhOifDoicsIERhOjIyNywgSGE6J8OkJywgSmE6MjI5LFxuXHRcdEFlOifDqCcsIEJlOifDqScsIENlOifDqicsICAgICAgICAgSGU6J8OrJyxcblx0XHRBaTonw6wnLCBCaTonw60nLCBDaTonw64nLCAgICAgICAgIEhpOifDrycsXG5cdFx0QW86J8OyJywgQm86J8OzJywgQ286J8O0JywgRG86MjQ1LCBIbzonw7YnLFxuXHRcdEF1OifDuScsIEJ1OifDuicsIEN1OifDuycsICAgICAgICAgSHU6J8O8Jyxcblx0XHRLQzonw4cnLCBLYzonw6cnLCBxOifDpicsICB6OifFkycsICBhOifDhicsICBqOifFkicsXG5cdFx0RE46MjA5LCBEbjoyNDEsIEh5OjI1NSxcblx0XHRTOjE2OSwgIGM6MTcwLCAgUjoxNzQsICBcIkIgXCI6MTgwLFxuXHRcdC8qOjpbKi8wLyo6Ol0qLzoxNzYsICAgIC8qOjpbKi8xLyo6Ol0qLzoxNzcsICAvKjo6WyovMi8qOjpdKi86MTc4LFxuXHRcdC8qOjpbKi8zLyo6Ol0qLzoxNzksICAgIC8qOjpbKi81Lyo6Ol0qLzoxODEsICAvKjo6WyovNi8qOjpdKi86MTgyLFxuXHRcdC8qOjpbKi83Lyo6Ol0qLzoxODMsICAgIFE6MTg1LCAgazoxODYsICBiOjIwOCwgIGk6MjE2LCAgbDoyMjIsICBzOjI0MCwgIHk6MjQ4LFxuXHRcdFwiIVwiOjE2MSwgJ1wiJzoxNjIsIFwiI1wiOjE2MywgXCIoXCI6MTY0LCBcIiVcIjoxNjUsIFwiJ1wiOjE2NywgXCJIIFwiOjE2OCxcblx0XHRcIitcIjoxNzEsIFwiO1wiOjE4NywgXCI8XCI6MTg4LCBcIj1cIjoxODksIFwiPlwiOjE5MCwgXCI/XCI6MTkxLCBcIntcIjoyMjNcblx0fS8qOmFueSovKTtcblx0dmFyIHN5bGtfY2hhcl9yZWdleCA9IG5ldyBSZWdFeHAoXCJcXHUwMDFCTihcIiArIGtleXMoc3lsa19lc2NhcGVzKS5qb2luKFwifFwiKS5yZXBsYWNlKC9cXHxcXHxcXHwvLCBcInxcXFxcfHxcIikucmVwbGFjZSgvKFs/KCkrXSkvZyxcIlxcXFwkMVwiKSArIFwifFxcXFx8KVwiLCBcImdtXCIpO1xuXHR2YXIgc3lsa19jaGFyX2ZuID0gZnVuY3Rpb24oXywgJDEpeyB2YXIgbyA9IHN5bGtfZXNjYXBlc1skMV07IHJldHVybiB0eXBlb2YgbyA9PSBcIm51bWJlclwiID8gX2dldGFuc2kobykgOiBvOyB9O1xuXHR2YXIgZGVjb2RlX3N5bGtfY2hhciA9IGZ1bmN0aW9uKCQkLCAkMSwgJDIpIHsgdmFyIG5ld2NjID0gKCgkMS5jaGFyQ29kZUF0KDApIC0gMHgyMCk8PDQpIHwgKCQyLmNoYXJDb2RlQXQoMCkgLSAweDMwKTsgcmV0dXJuIG5ld2NjID09IDU5ID8gJCQgOiBfZ2V0YW5zaShuZXdjYyk7IH07XG5cdHN5bGtfZXNjYXBlc1tcInxcIl0gPSAyNTQ7XG5cdC8qIFRPRE86IGZpbmQgYW4gYWN0dWFsIHNwZWNpZmljYXRpb24gKi9cblx0ZnVuY3Rpb24gc3lsa190b19hb2EoZC8qOlJhd0RhdGEqLywgb3B0cykvKjpbQU9BLCBXb3Jrc2hlZXRdKi8ge1xuXHRcdHN3aXRjaChvcHRzLnR5cGUpIHtcblx0XHRcdGNhc2UgJ2Jhc2U2NCc6IHJldHVybiBzeWxrX3RvX2FvYV9zdHIoQmFzZTY0X2RlY29kZShkKSwgb3B0cyk7XG5cdFx0XHRjYXNlICdiaW5hcnknOiByZXR1cm4gc3lsa190b19hb2Ffc3RyKGQsIG9wdHMpO1xuXHRcdFx0Y2FzZSAnYnVmZmVyJzogcmV0dXJuIHN5bGtfdG9fYW9hX3N0cihoYXNfYnVmICYmIEJ1ZmZlci5pc0J1ZmZlcihkKSA/IGQudG9TdHJpbmcoJ2JpbmFyeScpIDogYTJzKGQpLCBvcHRzKTtcblx0XHRcdGNhc2UgJ2FycmF5JzogcmV0dXJuIHN5bGtfdG9fYW9hX3N0cihjYzJzdHIoZCksIG9wdHMpO1xuXHRcdH1cblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgdHlwZSBcIiArIG9wdHMudHlwZSk7XG5cdH1cblx0ZnVuY3Rpb24gc3lsa190b19hb2Ffc3RyKHN0ci8qOnN0cmluZyovLCBvcHRzKS8qOltBT0EsIFdvcmtzaGVldF0qLyB7XG5cdFx0dmFyIHJlY29yZHMgPSBzdHIuc3BsaXQoL1tcXG5cXHJdKy8pLCBSID0gLTEsIEMgPSAtMSwgcmkgPSAwLCByaiA9IDAsIGFyci8qOkFPQSovID0gW107XG5cdFx0dmFyIGZvcm1hdHMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0XHR2YXIgbmV4dF9jZWxsX2Zvcm1hdC8qOnN0cmluZ3xudWxsKi8gPSBudWxsO1xuXHRcdHZhciBzaHQgPSB7fSwgcm93aW5mby8qOkFycmF5PFJvd0luZm8+Ki8gPSBbXSwgY29saW5mby8qOkFycmF5PENvbEluZm8+Ki8gPSBbXSwgY3cvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0XHR2YXIgTXZhbCA9IDAsIGo7XG5cdFx0aWYoK29wdHMuY29kZXBhZ2UgPj0gMCkgc2V0X2NwKCtvcHRzLmNvZGVwYWdlKTtcblx0XHRmb3IgKDsgcmkgIT09IHJlY29yZHMubGVuZ3RoOyArK3JpKSB7XG5cdFx0XHRNdmFsID0gMDtcblx0XHRcdHZhciByc3RyPXJlY29yZHNbcmldLnRyaW0oKS5yZXBsYWNlKC9cXHgxQihbXFx4MjAtXFx4MkZdKShbXFx4MzAtXFx4M0ZdKS9nLCBkZWNvZGVfc3lsa19jaGFyKS5yZXBsYWNlKHN5bGtfY2hhcl9yZWdleCwgc3lsa19jaGFyX2ZuKTtcblx0XHRcdHZhciByZWNvcmQ9cnN0ci5yZXBsYWNlKC87Oy9nLCBcIlxcdTAwMDBcIikuc3BsaXQoXCI7XCIpLm1hcChmdW5jdGlvbih4KSB7IHJldHVybiB4LnJlcGxhY2UoL1xcdTAwMDAvZywgXCI7XCIpOyB9KTtcblx0XHRcdHZhciBSVD1yZWNvcmRbMF0sIHZhbDtcblx0XHRcdGlmKHJzdHIubGVuZ3RoID4gMCkgc3dpdGNoKFJUKSB7XG5cdFx0XHRjYXNlICdJRCc6IGJyZWFrOyAvKiBoZWFkZXIgKi9cblx0XHRcdGNhc2UgJ0UnOiBicmVhazsgLyogRU9GICovXG5cdFx0XHRjYXNlICdCJzogYnJlYWs7IC8qIGRpbWVuc2lvbnMgKi9cblx0XHRcdGNhc2UgJ08nOiBicmVhazsgLyogb3B0aW9ucz8gKi9cblx0XHRcdGNhc2UgJ1cnOiBicmVhazsgLyogd2luZG93PyAqL1xuXHRcdFx0Y2FzZSAnUCc6XG5cdFx0XHRcdGlmKHJlY29yZFsxXS5jaGFyQXQoMCkgPT0gJ1AnKVxuXHRcdFx0XHRcdGZvcm1hdHMucHVzaChyc3RyLnNsaWNlKDMpLnJlcGxhY2UoLzs7L2csIFwiO1wiKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnQyc6XG5cdFx0XHR2YXIgQ19zZWVuX0sgPSBmYWxzZSwgQ19zZWVuX1ggPSBmYWxzZSwgQ19zZWVuX1MgPSBmYWxzZSwgQ19zZWVuX0UgPSBmYWxzZSwgX1IgPSAtMSwgX0MgPSAtMTtcblx0XHRcdGZvcihyaj0xOyByajxyZWNvcmQubGVuZ3RoOyArK3JqKSBzd2l0Y2gocmVjb3JkW3JqXS5jaGFyQXQoMCkpIHtcblx0XHRcdFx0Y2FzZSAnQSc6IGJyZWFrOyAvLyBUT0RPOiBjb21tZW50XG5cdFx0XHRcdGNhc2UgJ1gnOiBDID0gcGFyc2VJbnQocmVjb3JkW3JqXS5zbGljZSgxKSktMTsgQ19zZWVuX1ggPSB0cnVlOyBicmVhaztcblx0XHRcdFx0Y2FzZSAnWSc6XG5cdFx0XHRcdFx0UiA9IHBhcnNlSW50KHJlY29yZFtyal0uc2xpY2UoMSkpLTE7IGlmKCFDX3NlZW5fWCkgQyA9IDA7XG5cdFx0XHRcdFx0Zm9yKGogPSBhcnIubGVuZ3RoOyBqIDw9IFI7ICsraikgYXJyW2pdID0gW107XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ0snOlxuXHRcdFx0XHRcdHZhbCA9IHJlY29yZFtyal0uc2xpY2UoMSk7XG5cdFx0XHRcdFx0aWYodmFsLmNoYXJBdCgwKSA9PT0gJ1wiJykgdmFsID0gdmFsLnNsaWNlKDEsdmFsLmxlbmd0aCAtIDEpO1xuXHRcdFx0XHRcdGVsc2UgaWYodmFsID09PSAnVFJVRScpIHZhbCA9IHRydWU7XG5cdFx0XHRcdFx0ZWxzZSBpZih2YWwgPT09ICdGQUxTRScpIHZhbCA9IGZhbHNlO1xuXHRcdFx0XHRcdGVsc2UgaWYoIWlzTmFOKGZ1enp5bnVtKHZhbCkpKSB7XG5cdFx0XHRcdFx0XHR2YWwgPSBmdXp6eW51bSh2YWwpO1xuXHRcdFx0XHRcdFx0aWYobmV4dF9jZWxsX2Zvcm1hdCAhPT0gbnVsbCAmJiBmbXRfaXNfZGF0ZShuZXh0X2NlbGxfZm9ybWF0KSkgdmFsID0gbnVtZGF0ZSh2YWwpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZighaXNOYU4oZnV6enlkYXRlKHZhbCkuZ2V0RGF0ZSgpKSkge1xuXHRcdFx0XHRcdFx0dmFsID0gcGFyc2VEYXRlKHZhbCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmKHR5cGVvZiAkY3B0YWJsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHZhbCA9PSBcInN0cmluZ1wiICYmICgob3B0c3x8e30pLnR5cGUgIT0gXCJzdHJpbmdcIikgJiYgKG9wdHN8fHt9KS5jb2RlcGFnZSkgdmFsID0gJGNwdGFibGUudXRpbHMuZGVjb2RlKG9wdHMuY29kZXBhZ2UsIHZhbCk7XG5cdFx0XHRcdFx0Q19zZWVuX0sgPSB0cnVlO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdFJzpcblx0XHRcdFx0XHRDX3NlZW5fRSA9IHRydWU7XG5cdFx0XHRcdFx0dmFyIGZvcm11bGEgPSByY190b19hMShyZWNvcmRbcmpdLnNsaWNlKDEpLCB7cjpSLGM6Q30pO1xuXHRcdFx0XHRcdGFycltSXVtDXSA9IFthcnJbUl1bQ10sIGZvcm11bGFdO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdTJzpcblx0XHRcdFx0XHRDX3NlZW5fUyA9IHRydWU7XG5cdFx0XHRcdFx0YXJyW1JdW0NdID0gW2FycltSXVtDXSwgXCJTNVNcIl07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ0cnOiBicmVhazsgLy8gdW5rbm93blxuXHRcdFx0XHRjYXNlICdSJzogX1IgPSBwYXJzZUludChyZWNvcmRbcmpdLnNsaWNlKDEpKS0xOyBicmVhaztcblx0XHRcdFx0Y2FzZSAnQyc6IF9DID0gcGFyc2VJbnQocmVjb3JkW3JqXS5zbGljZSgxKSktMTsgYnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6IGlmKG9wdHMgJiYgb3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcihcIlNZTEsgYmFkIHJlY29yZCBcIiArIHJzdHIpO1xuXHRcdFx0fVxuXHRcdFx0aWYoQ19zZWVuX0spIHtcblx0XHRcdFx0aWYoYXJyW1JdW0NdICYmIGFycltSXVtDXS5sZW5ndGggPT0gMikgYXJyW1JdW0NdWzBdID0gdmFsO1xuXHRcdFx0XHRlbHNlIGFycltSXVtDXSA9IHZhbDtcblx0XHRcdFx0bmV4dF9jZWxsX2Zvcm1hdCA9IG51bGw7XG5cdFx0XHR9XG5cdFx0XHRpZihDX3NlZW5fUykge1xuXHRcdFx0XHRpZihDX3NlZW5fRSkgdGhyb3cgbmV3IEVycm9yKFwiU1lMSyBzaGFyZWQgZm9ybXVsYSBjYW5ub3QgaGF2ZSBvd24gZm9ybXVsYVwiKTtcblx0XHRcdFx0dmFyIHNocmJhc2UgPSBfUiA+IC0xICYmIGFycltfUl1bX0NdO1xuXHRcdFx0XHRpZighc2hyYmFzZSB8fCAhc2hyYmFzZVsxXSkgdGhyb3cgbmV3IEVycm9yKFwiU1lMSyBzaGFyZWQgZm9ybXVsYSBjYW5ub3QgZmluZCBiYXNlXCIpO1xuXHRcdFx0XHRhcnJbUl1bQ11bMV0gPSBzaGlmdF9mb3JtdWxhX3N0cihzaHJiYXNlWzFdLCB7cjogUiAtIF9SLCBjOiBDIC0gX0N9KTtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnRic6XG5cdFx0XHR2YXIgRl9zZWVuID0gMDtcblx0XHRcdGZvcihyaj0xOyByajxyZWNvcmQubGVuZ3RoOyArK3JqKSBzd2l0Y2gocmVjb3JkW3JqXS5jaGFyQXQoMCkpIHtcblx0XHRcdFx0Y2FzZSAnWCc6IEMgPSBwYXJzZUludChyZWNvcmRbcmpdLnNsaWNlKDEpKS0xOyArK0Zfc2VlbjsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ1knOlxuXHRcdFx0XHRcdFIgPSBwYXJzZUludChyZWNvcmRbcmpdLnNsaWNlKDEpKS0xOyAvKkMgPSAwOyovXG5cdFx0XHRcdFx0Zm9yKGogPSBhcnIubGVuZ3RoOyBqIDw9IFI7ICsraikgYXJyW2pdID0gW107XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ00nOiBNdmFsID0gcGFyc2VJbnQocmVjb3JkW3JqXS5zbGljZSgxKSkgLyAyMDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ0YnOiBicmVhazsgLyogPz8/ICovXG5cdFx0XHRcdGNhc2UgJ0cnOiBicmVhazsgLyogaGlkZSBncmlkICovXG5cdFx0XHRcdGNhc2UgJ1AnOlxuXHRcdFx0XHRcdG5leHRfY2VsbF9mb3JtYXQgPSBmb3JtYXRzW3BhcnNlSW50KHJlY29yZFtyal0uc2xpY2UoMSkpXTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnUyc6IGJyZWFrOyAvKiBjZWxsIHN0eWxlICovXG5cdFx0XHRcdGNhc2UgJ0QnOiBicmVhazsgLyogY29sdW1uICovXG5cdFx0XHRcdGNhc2UgJ04nOiBicmVhazsgLyogZm9udCAqL1xuXHRcdFx0XHRjYXNlICdXJzpcblx0XHRcdFx0XHRjdyA9IHJlY29yZFtyal0uc2xpY2UoMSkuc3BsaXQoXCIgXCIpO1xuXHRcdFx0XHRcdGZvcihqID0gcGFyc2VJbnQoY3dbMF0sIDEwKTsgaiA8PSBwYXJzZUludChjd1sxXSwgMTApOyArK2opIHtcblx0XHRcdFx0XHRcdE12YWwgPSBwYXJzZUludChjd1syXSwgMTApO1xuXHRcdFx0XHRcdFx0Y29saW5mb1tqLTFdID0gTXZhbCA9PT0gMCA/IHtoaWRkZW46dHJ1ZX06IHt3Y2g6TXZhbH07IHByb2Nlc3NfY29sKGNvbGluZm9bai0xXSk7XG5cdFx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAnQyc6IC8qIGRlZmF1bHQgY29sdW1uIGZvcm1hdCAqL1xuXHRcdFx0XHRcdEMgPSBwYXJzZUludChyZWNvcmRbcmpdLnNsaWNlKDEpKS0xO1xuXHRcdFx0XHRcdGlmKCFjb2xpbmZvW0NdKSBjb2xpbmZvW0NdID0ge307XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ1InOiAvKiByb3cgcHJvcGVydGllcyAqL1xuXHRcdFx0XHRcdFIgPSBwYXJzZUludChyZWNvcmRbcmpdLnNsaWNlKDEpKS0xO1xuXHRcdFx0XHRcdGlmKCFyb3dpbmZvW1JdKSByb3dpbmZvW1JdID0ge307XG5cdFx0XHRcdFx0aWYoTXZhbCA+IDApIHsgcm93aW5mb1tSXS5ocHQgPSBNdmFsOyByb3dpbmZvW1JdLmhweCA9IHB0MnB4KE12YWwpOyB9XG5cdFx0XHRcdFx0ZWxzZSBpZihNdmFsID09PSAwKSByb3dpbmZvW1JdLmhpZGRlbiA9IHRydWU7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6IGlmKG9wdHMgJiYgb3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcihcIlNZTEsgYmFkIHJlY29yZCBcIiArIHJzdHIpO1xuXHRcdFx0fVxuXHRcdFx0aWYoRl9zZWVuIDwgMSkgbmV4dF9jZWxsX2Zvcm1hdCA9IG51bGw7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogaWYob3B0cyAmJiBvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKFwiU1lMSyBiYWQgcmVjb3JkIFwiICsgcnN0cik7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmKHJvd2luZm8ubGVuZ3RoID4gMCkgc2h0Wychcm93cyddID0gcm93aW5mbztcblx0XHRpZihjb2xpbmZvLmxlbmd0aCA+IDApIHNodFsnIWNvbHMnXSA9IGNvbGluZm87XG5cdFx0aWYob3B0cyAmJiBvcHRzLnNoZWV0Um93cykgYXJyID0gYXJyLnNsaWNlKDAsIG9wdHMuc2hlZXRSb3dzKTtcblx0XHRyZXR1cm4gW2Fyciwgc2h0XTtcblx0fVxuXG5cdGZ1bmN0aW9uIHN5bGtfdG9fc2hlZXQoZC8qOlJhd0RhdGEqLywgb3B0cykvKjpXb3Jrc2hlZXQqLyB7XG5cdFx0dmFyIGFvYXNodCA9IHN5bGtfdG9fYW9hKGQsIG9wdHMpO1xuXHRcdHZhciBhb2EgPSBhb2FzaHRbMF0sIHdzID0gYW9hc2h0WzFdO1xuXHRcdHZhciBvID0gYW9hX3RvX3NoZWV0KGFvYSwgb3B0cyk7XG5cdFx0a2V5cyh3cykuZm9yRWFjaChmdW5jdGlvbihrKSB7IG9ba10gPSB3c1trXTsgfSk7XG5cdFx0cmV0dXJuIG87XG5cdH1cblxuXHRmdW5jdGlvbiBzeWxrX3RvX3dvcmtib29rKGQvKjpSYXdEYXRhKi8sIG9wdHMpLyo6V29ya2Jvb2sqLyB7IHJldHVybiBzaGVldF90b193b3JrYm9vayhzeWxrX3RvX3NoZWV0KGQsIG9wdHMpLCBvcHRzKTsgfVxuXG5cdGZ1bmN0aW9uIHdyaXRlX3dzX2NlbGxfc3lsayhjZWxsLyo6Q2VsbCovLCB3cy8qOldvcmtzaGVldCovLCBSLyo6bnVtYmVyKi8sIEMvKjpudW1iZXIqLy8qOjosIG9wdHMqLykvKjpzdHJpbmcqLyB7XG5cdFx0dmFyIG8gPSBcIkM7WVwiICsgKFIrMSkgKyBcIjtYXCIgKyAoQysxKSArIFwiO0tcIjtcblx0XHRzd2l0Y2goY2VsbC50KSB7XG5cdFx0XHRjYXNlICduJzpcblx0XHRcdFx0byArPSAoY2VsbC52fHwwKTtcblx0XHRcdFx0aWYoY2VsbC5mICYmICFjZWxsLkYpIG8gKz0gXCI7RVwiICsgYTFfdG9fcmMoY2VsbC5mLCB7cjpSLCBjOkN9KTsgYnJlYWs7XG5cdFx0XHRjYXNlICdiJzogbyArPSBjZWxsLnYgPyBcIlRSVUVcIiA6IFwiRkFMU0VcIjsgYnJlYWs7XG5cdFx0XHRjYXNlICdlJzogbyArPSBjZWxsLncgfHwgY2VsbC52OyBicmVhaztcblx0XHRcdGNhc2UgJ2QnOiBvICs9ICdcIicgKyAoY2VsbC53IHx8IGNlbGwudikgKyAnXCInOyBicmVhaztcblx0XHRcdGNhc2UgJ3MnOiBvICs9ICdcIicgKyBjZWxsLnYucmVwbGFjZSgvXCIvZyxcIlwiKS5yZXBsYWNlKC87L2csIFwiOztcIikgKyAnXCInOyBicmVhaztcblx0XHR9XG5cdFx0cmV0dXJuIG87XG5cdH1cblxuXHRmdW5jdGlvbiB3cml0ZV93c19jb2xzX3N5bGsob3V0LCBjb2xzKSB7XG5cdFx0Y29scy5mb3JFYWNoKGZ1bmN0aW9uKGNvbCwgaSkge1xuXHRcdFx0dmFyIHJlYyA9IFwiRjtXXCIgKyAoaSsxKSArIFwiIFwiICsgKGkrMSkgKyBcIiBcIjtcblx0XHRcdGlmKGNvbC5oaWRkZW4pIHJlYyArPSBcIjBcIjtcblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRpZih0eXBlb2YgY29sLndpZHRoID09ICdudW1iZXInICYmICFjb2wud3B4KSBjb2wud3B4ID0gd2lkdGgycHgoY29sLndpZHRoKTtcblx0XHRcdFx0aWYodHlwZW9mIGNvbC53cHggPT0gJ251bWJlcicgJiYgIWNvbC53Y2gpIGNvbC53Y2ggPSBweDJjaGFyKGNvbC53cHgpO1xuXHRcdFx0XHRpZih0eXBlb2YgY29sLndjaCA9PSAnbnVtYmVyJykgcmVjICs9IE1hdGgucm91bmQoY29sLndjaCk7XG5cdFx0XHR9XG5cdFx0XHRpZihyZWMuY2hhckF0KHJlYy5sZW5ndGggLSAxKSAhPSBcIiBcIikgb3V0LnB1c2gocmVjKTtcblx0XHR9KTtcblx0fVxuXG5cdGZ1bmN0aW9uIHdyaXRlX3dzX3Jvd3Nfc3lsayhvdXQvKjpBcnJheTxzdHJpbmc+Ki8sIHJvd3MvKjpBcnJheTxSb3dJbmZvPiovKSB7XG5cdFx0cm93cy5mb3JFYWNoKGZ1bmN0aW9uKHJvdywgaSkge1xuXHRcdFx0dmFyIHJlYyA9IFwiRjtcIjtcblx0XHRcdGlmKHJvdy5oaWRkZW4pIHJlYyArPSBcIk0wO1wiO1xuXHRcdFx0ZWxzZSBpZihyb3cuaHB0KSByZWMgKz0gXCJNXCIgKyAyMCAqIHJvdy5ocHQgKyBcIjtcIjtcblx0XHRcdGVsc2UgaWYocm93LmhweCkgcmVjICs9IFwiTVwiICsgMjAgKiBweDJwdChyb3cuaHB4KSArIFwiO1wiO1xuXHRcdFx0aWYocmVjLmxlbmd0aCA+IDIpIG91dC5wdXNoKHJlYyArIFwiUlwiICsgKGkrMSkpO1xuXHRcdH0pO1xuXHR9XG5cblx0ZnVuY3Rpb24gc2hlZXRfdG9fc3lsayh3cy8qOldvcmtzaGVldCovLCBvcHRzLyo6P2FueSovKS8qOnN0cmluZyovIHtcblx0XHR2YXIgcHJlYW1ibGUvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXCJJRDtQV1hMO047RVwiXSwgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRcdHZhciByID0gc2FmZV9kZWNvZGVfcmFuZ2Uod3NbJyFyZWYnXSksIGNlbGwvKjpDZWxsKi87XG5cdFx0dmFyIGRlbnNlID0gQXJyYXkuaXNBcnJheSh3cyk7XG5cdFx0dmFyIFJTID0gXCJcXHJcXG5cIjtcblxuXHRcdHByZWFtYmxlLnB1c2goXCJQO1BHZW5lcmFsXCIpO1xuXHRcdHByZWFtYmxlLnB1c2goXCJGO1AwO0RHMEc4O00yNTVcIik7XG5cdFx0aWYod3NbJyFjb2xzJ10pIHdyaXRlX3dzX2NvbHNfc3lsayhwcmVhbWJsZSwgd3NbJyFjb2xzJ10pO1xuXHRcdGlmKHdzWychcm93cyddKSB3cml0ZV93c19yb3dzX3N5bGsocHJlYW1ibGUsIHdzWychcm93cyddKTtcblxuXHRcdHByZWFtYmxlLnB1c2goXCJCO1lcIiArIChyLmUuciAtIHIucy5yICsgMSkgKyBcIjtYXCIgKyAoci5lLmMgLSByLnMuYyArIDEpICsgXCI7RFwiICsgW3Iucy5jLHIucy5yLHIuZS5jLHIuZS5yXS5qb2luKFwiIFwiKSk7XG5cdFx0Zm9yKHZhciBSID0gci5zLnI7IFIgPD0gci5lLnI7ICsrUikge1xuXHRcdFx0Zm9yKHZhciBDID0gci5zLmM7IEMgPD0gci5lLmM7ICsrQykge1xuXHRcdFx0XHR2YXIgY29vcmQgPSBlbmNvZGVfY2VsbCh7cjpSLGM6Q30pO1xuXHRcdFx0XHRjZWxsID0gZGVuc2UgPyAod3NbUl18fFtdKVtDXTogd3NbY29vcmRdO1xuXHRcdFx0XHRpZighY2VsbCB8fCAoY2VsbC52ID09IG51bGwgJiYgKCFjZWxsLmYgfHwgY2VsbC5GKSkpIGNvbnRpbnVlO1xuXHRcdFx0XHRvLnB1c2god3JpdGVfd3NfY2VsbF9zeWxrKGNlbGwsIHdzLCBSLCBDLCBvcHRzKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBwcmVhbWJsZS5qb2luKFJTKSArIFJTICsgby5qb2luKFJTKSArIFJTICsgXCJFXCIgKyBSUztcblx0fVxuXG5cdHJldHVybiB7XG5cdFx0dG9fd29ya2Jvb2s6IHN5bGtfdG9fd29ya2Jvb2ssXG5cdFx0dG9fc2hlZXQ6IHN5bGtfdG9fc2hlZXQsXG5cdFx0ZnJvbV9zaGVldDogc2hlZXRfdG9fc3lsa1xuXHR9O1xufSkoKTtcblxudmFyIERJRiA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG5cdGZ1bmN0aW9uIGRpZl90b19hb2EoZC8qOlJhd0RhdGEqLywgb3B0cykvKjpBT0EqLyB7XG5cdFx0c3dpdGNoKG9wdHMudHlwZSkge1xuXHRcdFx0Y2FzZSAnYmFzZTY0JzogcmV0dXJuIGRpZl90b19hb2Ffc3RyKEJhc2U2NF9kZWNvZGUoZCksIG9wdHMpO1xuXHRcdFx0Y2FzZSAnYmluYXJ5JzogcmV0dXJuIGRpZl90b19hb2Ffc3RyKGQsIG9wdHMpO1xuXHRcdFx0Y2FzZSAnYnVmZmVyJzogcmV0dXJuIGRpZl90b19hb2Ffc3RyKGhhc19idWYgJiYgQnVmZmVyLmlzQnVmZmVyKGQpID8gZC50b1N0cmluZygnYmluYXJ5JykgOiBhMnMoZCksIG9wdHMpO1xuXHRcdFx0Y2FzZSAnYXJyYXknOiByZXR1cm4gZGlmX3RvX2FvYV9zdHIoY2Myc3RyKGQpLCBvcHRzKTtcblx0XHR9XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIHR5cGUgXCIgKyBvcHRzLnR5cGUpO1xuXHR9XG5cdGZ1bmN0aW9uIGRpZl90b19hb2Ffc3RyKHN0ci8qOnN0cmluZyovLCBvcHRzKS8qOkFPQSovIHtcblx0XHR2YXIgcmVjb3JkcyA9IHN0ci5zcGxpdCgnXFxuJyksIFIgPSAtMSwgQyA9IC0xLCByaSA9IDAsIGFyci8qOkFPQSovID0gW107XG5cdFx0Zm9yICg7IHJpICE9PSByZWNvcmRzLmxlbmd0aDsgKytyaSkge1xuXHRcdFx0aWYgKHJlY29yZHNbcmldLnRyaW0oKSA9PT0gJ0JPVCcpIHsgYXJyWysrUl0gPSBbXTsgQyA9IDA7IGNvbnRpbnVlOyB9XG5cdFx0XHRpZiAoUiA8IDApIGNvbnRpbnVlO1xuXHRcdFx0dmFyIG1ldGFkYXRhID0gcmVjb3Jkc1tyaV0udHJpbSgpLnNwbGl0KFwiLFwiKTtcblx0XHRcdHZhciB0eXBlID0gbWV0YWRhdGFbMF0sIHZhbHVlID0gbWV0YWRhdGFbMV07XG5cdFx0XHQrK3JpO1xuXHRcdFx0dmFyIGRhdGEgPSByZWNvcmRzW3JpXSB8fCBcIlwiO1xuXHRcdFx0d2hpbGUoKChkYXRhLm1hdGNoKC9bXCJdL2cpfHxbXSkubGVuZ3RoICYgMSkgJiYgcmkgPCByZWNvcmRzLmxlbmd0aCAtIDEpIGRhdGEgKz0gXCJcXG5cIiArIHJlY29yZHNbKytyaV07XG5cdFx0XHRkYXRhID0gZGF0YS50cmltKCk7XG5cdFx0XHRzd2l0Y2ggKCt0eXBlKSB7XG5cdFx0XHRcdGNhc2UgLTE6XG5cdFx0XHRcdFx0aWYgKGRhdGEgPT09ICdCT1QnKSB7IGFyclsrK1JdID0gW107IEMgPSAwOyBjb250aW51ZTsgfVxuXHRcdFx0XHRcdGVsc2UgaWYgKGRhdGEgIT09ICdFT0QnKSB0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgRElGIHNwZWNpYWwgY29tbWFuZCBcIiArIGRhdGEpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0aWYoZGF0YSA9PT0gJ1RSVUUnKSBhcnJbUl1bQ10gPSB0cnVlO1xuXHRcdFx0XHRcdGVsc2UgaWYoZGF0YSA9PT0gJ0ZBTFNFJykgYXJyW1JdW0NdID0gZmFsc2U7XG5cdFx0XHRcdFx0ZWxzZSBpZighaXNOYU4oZnV6enludW0odmFsdWUpKSkgYXJyW1JdW0NdID0gZnV6enludW0odmFsdWUpO1xuXHRcdFx0XHRcdGVsc2UgaWYoIWlzTmFOKGZ1enp5ZGF0ZSh2YWx1ZSkuZ2V0RGF0ZSgpKSkgYXJyW1JdW0NdID0gcGFyc2VEYXRlKHZhbHVlKTtcblx0XHRcdFx0XHRlbHNlIGFycltSXVtDXSA9IHZhbHVlO1xuXHRcdFx0XHRcdCsrQzsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMTpcblx0XHRcdFx0XHRkYXRhID0gZGF0YS5zbGljZSgxLGRhdGEubGVuZ3RoLTEpO1xuXHRcdFx0XHRcdGRhdGEgPSBkYXRhLnJlcGxhY2UoL1wiXCIvZywgJ1wiJyk7XG5cdFx0XHRcdFx0aWYoRElGX1hMICYmIGRhdGEgJiYgZGF0YS5tYXRjaCgvXj1cIi4qXCIkLykpIGRhdGEgPSBkYXRhLnNsaWNlKDIsIC0xKTtcblx0XHRcdFx0XHRhcnJbUl1bQysrXSA9IGRhdGEgIT09ICcnID8gZGF0YSA6IG51bGw7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZiAoZGF0YSA9PT0gJ0VPRCcpIGJyZWFrO1xuXHRcdH1cblx0XHRpZihvcHRzICYmIG9wdHMuc2hlZXRSb3dzKSBhcnIgPSBhcnIuc2xpY2UoMCwgb3B0cy5zaGVldFJvd3MpO1xuXHRcdHJldHVybiBhcnI7XG5cdH1cblxuXHRmdW5jdGlvbiBkaWZfdG9fc2hlZXQoc3RyLyo6c3RyaW5nKi8sIG9wdHMpLyo6V29ya3NoZWV0Ki8geyByZXR1cm4gYW9hX3RvX3NoZWV0KGRpZl90b19hb2Eoc3RyLCBvcHRzKSwgb3B0cyk7IH1cblx0ZnVuY3Rpb24gZGlmX3RvX3dvcmtib29rKHN0ci8qOnN0cmluZyovLCBvcHRzKS8qOldvcmtib29rKi8geyByZXR1cm4gc2hlZXRfdG9fd29ya2Jvb2soZGlmX3RvX3NoZWV0KHN0ciwgb3B0cyksIG9wdHMpOyB9XG5cblx0dmFyIHNoZWV0X3RvX2RpZiA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG5cdFx0dmFyIHB1c2hfZmllbGQgPSBmdW5jdGlvbiBwZihvLyo6QXJyYXk8c3RyaW5nPiovLCB0b3BpYy8qOnN0cmluZyovLCB2Lyo6bnVtYmVyKi8sIG4vKjpudW1iZXIqLywgcy8qOnN0cmluZyovKSB7XG5cdFx0XHRvLnB1c2godG9waWMpO1xuXHRcdFx0by5wdXNoKHYgKyBcIixcIiArIG4pO1xuXHRcdFx0by5wdXNoKCdcIicgKyBzLnJlcGxhY2UoL1wiL2csJ1wiXCInKSArICdcIicpO1xuXHRcdH07XG5cdFx0dmFyIHB1c2hfdmFsdWUgPSBmdW5jdGlvbiBwbyhvLyo6QXJyYXk8c3RyaW5nPiovLCB0eXBlLyo6bnVtYmVyKi8sIHYvKjphbnkqLywgcy8qOnN0cmluZyovKSB7XG5cdFx0XHRvLnB1c2godHlwZSArIFwiLFwiICsgdik7XG5cdFx0XHRvLnB1c2godHlwZSA9PSAxID8gJ1wiJyArIHMucmVwbGFjZSgvXCIvZywnXCJcIicpICsgJ1wiJyA6IHMpO1xuXHRcdH07XG5cdFx0cmV0dXJuIGZ1bmN0aW9uIHNoZWV0X3RvX2RpZih3cy8qOldvcmtzaGVldCovLyo6Oiwgb3B0czo/YW55Ki8pLyo6c3RyaW5nKi8ge1xuXHRcdFx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0XHRcdHZhciByID0gc2FmZV9kZWNvZGVfcmFuZ2Uod3NbJyFyZWYnXSksIGNlbGwvKjpDZWxsKi87XG5cdFx0XHR2YXIgZGVuc2UgPSBBcnJheS5pc0FycmF5KHdzKTtcblx0XHRcdHB1c2hfZmllbGQobywgXCJUQUJMRVwiLCAwLCAxLCBcInNoZWV0anNcIik7XG5cdFx0XHRwdXNoX2ZpZWxkKG8sIFwiVkVDVE9SU1wiLCAwLCByLmUuciAtIHIucy5yICsgMSxcIlwiKTtcblx0XHRcdHB1c2hfZmllbGQobywgXCJUVVBMRVNcIiwgMCwgci5lLmMgLSByLnMuYyArIDEsXCJcIik7XG5cdFx0XHRwdXNoX2ZpZWxkKG8sIFwiREFUQVwiLCAwLCAwLFwiXCIpO1xuXHRcdFx0Zm9yKHZhciBSID0gci5zLnI7IFIgPD0gci5lLnI7ICsrUikge1xuXHRcdFx0XHRwdXNoX3ZhbHVlKG8sIC0xLCAwLCBcIkJPVFwiKTtcblx0XHRcdFx0Zm9yKHZhciBDID0gci5zLmM7IEMgPD0gci5lLmM7ICsrQykge1xuXHRcdFx0XHRcdHZhciBjb29yZCA9IGVuY29kZV9jZWxsKHtyOlIsYzpDfSk7XG5cdFx0XHRcdFx0Y2VsbCA9IGRlbnNlID8gKHdzW1JdfHxbXSlbQ10gOiB3c1tjb29yZF07XG5cdFx0XHRcdFx0aWYoIWNlbGwpIHsgcHVzaF92YWx1ZShvLCAxLCAwLCBcIlwiKTsgY29udGludWU7fVxuXHRcdFx0XHRcdHN3aXRjaChjZWxsLnQpIHtcblx0XHRcdFx0XHRcdGNhc2UgJ24nOlxuXHRcdFx0XHRcdFx0XHR2YXIgdmFsID0gRElGX1hMID8gY2VsbC53IDogY2VsbC52O1xuXHRcdFx0XHRcdFx0XHRpZighdmFsICYmIGNlbGwudiAhPSBudWxsKSB2YWwgPSBjZWxsLnY7XG5cdFx0XHRcdFx0XHRcdGlmKHZhbCA9PSBudWxsKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYoRElGX1hMICYmIGNlbGwuZiAmJiAhY2VsbC5GKSBwdXNoX3ZhbHVlKG8sIDEsIDAsIFwiPVwiICsgY2VsbC5mKTtcblx0XHRcdFx0XHRcdFx0XHRlbHNlIHB1c2hfdmFsdWUobywgMSwgMCwgXCJcIik7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZWxzZSBwdXNoX3ZhbHVlKG8sIDAsIHZhbCwgXCJWXCIpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ2InOlxuXHRcdFx0XHRcdFx0XHRwdXNoX3ZhbHVlKG8sIDAsIGNlbGwudiA/IDEgOiAwLCBjZWxsLnYgPyBcIlRSVUVcIiA6IFwiRkFMU0VcIik7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAncyc6XG5cdFx0XHRcdFx0XHRcdHB1c2hfdmFsdWUobywgMSwgMCwgKCFESUZfWEwgfHwgaXNOYU4oY2VsbC52KSkgPyBjZWxsLnYgOiAnPVwiJyArIGNlbGwudiArICdcIicpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ2QnOlxuXHRcdFx0XHRcdFx0XHRpZighY2VsbC53KSBjZWxsLncgPSBTU0ZfZm9ybWF0KGNlbGwueiB8fCB0YWJsZV9mbXRbMTRdLCBkYXRlbnVtKHBhcnNlRGF0ZShjZWxsLnYpKSk7XG5cdFx0XHRcdFx0XHRcdGlmKERJRl9YTCkgcHVzaF92YWx1ZShvLCAwLCBjZWxsLncsIFwiVlwiKTtcblx0XHRcdFx0XHRcdFx0ZWxzZSBwdXNoX3ZhbHVlKG8sIDEsIDAsIGNlbGwudyk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0ZGVmYXVsdDogcHVzaF92YWx1ZShvLCAxLCAwLCBcIlwiKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHB1c2hfdmFsdWUobywgLTEsIDAsIFwiRU9EXCIpO1xuXHRcdFx0dmFyIFJTID0gXCJcXHJcXG5cIjtcblx0XHRcdHZhciBvbyA9IG8uam9pbihSUyk7XG5cdFx0XHQvL3doaWxlKChvby5sZW5ndGggJiAweDdGKSAhPSAwKSBvbyArPSBcIlxcMFwiO1xuXHRcdFx0cmV0dXJuIG9vO1xuXHRcdH07XG5cdH0pKCk7XG5cdHJldHVybiB7XG5cdFx0dG9fd29ya2Jvb2s6IGRpZl90b193b3JrYm9vayxcblx0XHR0b19zaGVldDogZGlmX3RvX3NoZWV0LFxuXHRcdGZyb21fc2hlZXQ6IHNoZWV0X3RvX2RpZlxuXHR9O1xufSkoKTtcblxudmFyIEVUSCA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG5cdGZ1bmN0aW9uIGRlY29kZShzLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8geyByZXR1cm4gcy5yZXBsYWNlKC9cXFxcYi9nLFwiXFxcXFwiKS5yZXBsYWNlKC9cXFxcYy9nLFwiOlwiKS5yZXBsYWNlKC9cXFxcbi9nLFwiXFxuXCIpOyB9XG5cdGZ1bmN0aW9uIGVuY29kZShzLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8geyByZXR1cm4gcy5yZXBsYWNlKC9cXFxcL2csIFwiXFxcXGJcIikucmVwbGFjZSgvOi9nLCBcIlxcXFxjXCIpLnJlcGxhY2UoL1xcbi9nLFwiXFxcXG5cIik7IH1cblxuXHRmdW5jdGlvbiBldGhfdG9fYW9hKHN0ci8qOnN0cmluZyovLCBvcHRzKS8qOkFPQSovIHtcblx0XHR2YXIgcmVjb3JkcyA9IHN0ci5zcGxpdCgnXFxuJyksIFIgPSAtMSwgQyA9IC0xLCByaSA9IDAsIGFyci8qOkFPQSovID0gW107XG5cdFx0Zm9yICg7IHJpICE9PSByZWNvcmRzLmxlbmd0aDsgKytyaSkge1xuXHRcdFx0dmFyIHJlY29yZCA9IHJlY29yZHNbcmldLnRyaW0oKS5zcGxpdChcIjpcIik7XG5cdFx0XHRpZihyZWNvcmRbMF0gIT09ICdjZWxsJykgY29udGludWU7XG5cdFx0XHR2YXIgYWRkciA9IGRlY29kZV9jZWxsKHJlY29yZFsxXSk7XG5cdFx0XHRpZihhcnIubGVuZ3RoIDw9IGFkZHIucikgZm9yKFIgPSBhcnIubGVuZ3RoOyBSIDw9IGFkZHIucjsgKytSKSBpZighYXJyW1JdKSBhcnJbUl0gPSBbXTtcblx0XHRcdFIgPSBhZGRyLnI7IEMgPSBhZGRyLmM7XG5cdFx0XHRzd2l0Y2gocmVjb3JkWzJdKSB7XG5cdFx0XHRcdGNhc2UgJ3QnOiBhcnJbUl1bQ10gPSBkZWNvZGUocmVjb3JkWzNdKTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ3YnOiBhcnJbUl1bQ10gPSArcmVjb3JkWzNdOyBicmVhaztcblx0XHRcdFx0Y2FzZSAndnRmJzogdmFyIF9mID0gcmVjb3JkW3JlY29yZC5sZW5ndGggLSAxXTtcblx0XHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRcdGNhc2UgJ3Z0Yyc6XG5cdFx0XHRcdFx0c3dpdGNoKHJlY29yZFszXSkge1xuXHRcdFx0XHRcdFx0Y2FzZSAnbmwnOiBhcnJbUl1bQ10gPSArcmVjb3JkWzRdID8gdHJ1ZSA6IGZhbHNlOyBicmVhaztcblx0XHRcdFx0XHRcdGRlZmF1bHQ6IGFycltSXVtDXSA9ICtyZWNvcmRbNF07IGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZihyZWNvcmRbMl0gPT0gJ3Z0ZicpIGFycltSXVtDXSA9IFthcnJbUl1bQ10sIF9mXTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYob3B0cyAmJiBvcHRzLnNoZWV0Um93cykgYXJyID0gYXJyLnNsaWNlKDAsIG9wdHMuc2hlZXRSb3dzKTtcblx0XHRyZXR1cm4gYXJyO1xuXHR9XG5cblx0ZnVuY3Rpb24gZXRoX3RvX3NoZWV0KGQvKjpzdHJpbmcqLywgb3B0cykvKjpXb3Jrc2hlZXQqLyB7IHJldHVybiBhb2FfdG9fc2hlZXQoZXRoX3RvX2FvYShkLCBvcHRzKSwgb3B0cyk7IH1cblx0ZnVuY3Rpb24gZXRoX3RvX3dvcmtib29rKGQvKjpzdHJpbmcqLywgb3B0cykvKjpXb3JrYm9vayovIHsgcmV0dXJuIHNoZWV0X3RvX3dvcmtib29rKGV0aF90b19zaGVldChkLCBvcHRzKSwgb3B0cyk7IH1cblxuXHR2YXIgaGVhZGVyID0gW1xuXHRcdFwic29jaWFsY2FsYzp2ZXJzaW9uOjEuNVwiLFxuXHRcdFwiTUlNRS1WZXJzaW9uOiAxLjBcIixcblx0XHRcIkNvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkOyBib3VuZGFyeT1Tb2NpYWxDYWxjU3ByZWFkc2hlZXRDb250cm9sU2F2ZVwiXG5cdF0uam9pbihcIlxcblwiKTtcblxuXHR2YXIgc2VwID0gW1xuXHRcdFwiLS1Tb2NpYWxDYWxjU3ByZWFkc2hlZXRDb250cm9sU2F2ZVwiLFxuXHRcdFwiQ29udGVudC10eXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XCJcblx0XS5qb2luKFwiXFxuXCIpICsgXCJcXG5cIjtcblxuXHQvKiBUT0RPOiB0aGUgb3RoZXIgcGFydHMgKi9cblx0dmFyIG1ldGEgPSBbXG5cdFx0XCIjIFNvY2lhbENhbGMgU3ByZWFkc2hlZXQgQ29udHJvbCBTYXZlXCIsXG5cdFx0XCJwYXJ0OnNoZWV0XCJcblx0XS5qb2luKFwiXFxuXCIpO1xuXG5cdHZhciBlbmQgPSBcIi0tU29jaWFsQ2FsY1NwcmVhZHNoZWV0Q29udHJvbFNhdmUtLVwiO1xuXG5cdGZ1bmN0aW9uIHNoZWV0X3RvX2V0aF9kYXRhKHdzLyo6V29ya3NoZWV0Ki8pLyo6c3RyaW5nKi8ge1xuXHRcdGlmKCF3cyB8fCAhd3NbJyFyZWYnXSkgcmV0dXJuIFwiXCI7XG5cdFx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXSwgb28vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXSwgY2VsbCwgY29vcmQgPSBcIlwiO1xuXHRcdHZhciByID0gZGVjb2RlX3JhbmdlKHdzWychcmVmJ10pO1xuXHRcdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkod3MpO1xuXHRcdGZvcih2YXIgUiA9IHIucy5yOyBSIDw9IHIuZS5yOyArK1IpIHtcblx0XHRcdGZvcih2YXIgQyA9IHIucy5jOyBDIDw9IHIuZS5jOyArK0MpIHtcblx0XHRcdFx0Y29vcmQgPSBlbmNvZGVfY2VsbCh7cjpSLGM6Q30pO1xuXHRcdFx0XHRjZWxsID0gZGVuc2UgPyAod3NbUl18fFtdKVtDXSA6IHdzW2Nvb3JkXTtcblx0XHRcdFx0aWYoIWNlbGwgfHwgY2VsbC52ID09IG51bGwgfHwgY2VsbC50ID09PSAneicpIGNvbnRpbnVlO1xuXHRcdFx0XHRvbyA9IFtcImNlbGxcIiwgY29vcmQsICd0J107XG5cdFx0XHRcdHN3aXRjaChjZWxsLnQpIHtcblx0XHRcdFx0XHRjYXNlICdzJzogY2FzZSAnc3RyJzogb28ucHVzaChlbmNvZGUoY2VsbC52KSk7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ24nOlxuXHRcdFx0XHRcdFx0aWYoIWNlbGwuZikgeyBvb1syXT0ndic7IG9vWzNdPWNlbGwudjsgfVxuXHRcdFx0XHRcdFx0ZWxzZSB7IG9vWzJdPSd2dGYnOyBvb1szXT0nbic7IG9vWzRdPWNlbGwudjsgb29bNV09ZW5jb2RlKGNlbGwuZik7IH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2InOlxuXHRcdFx0XHRcdFx0b29bMl0gPSAndnQnKyhjZWxsLmY/J2YnOidjJyk7IG9vWzNdPSdubCc7IG9vWzRdPWNlbGwudj9cIjFcIjpcIjBcIjtcblx0XHRcdFx0XHRcdG9vWzVdID0gZW5jb2RlKGNlbGwuZnx8KGNlbGwudj8nVFJVRSc6J0ZBTFNFJykpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZCc6XG5cdFx0XHRcdFx0XHR2YXIgdCA9IGRhdGVudW0ocGFyc2VEYXRlKGNlbGwudikpO1xuXHRcdFx0XHRcdFx0b29bMl0gPSAndnRjJzsgb29bM10gPSAnbmQnOyBvb1s0XSA9IFwiXCIrdDtcblx0XHRcdFx0XHRcdG9vWzVdID0gY2VsbC53IHx8IFNTRl9mb3JtYXQoY2VsbC56IHx8IHRhYmxlX2ZtdFsxNF0sIHQpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZSc6IGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG8ucHVzaChvby5qb2luKFwiOlwiKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdG8ucHVzaChcInNoZWV0OmM6XCIgKyAoci5lLmMtci5zLmMrMSkgKyBcIjpyOlwiICsgKHIuZS5yLXIucy5yKzEpICsgXCI6dHZmOjFcIik7XG5cdFx0by5wdXNoKFwidmFsdWVmb3JtYXQ6MTp0ZXh0LXdpa2lcIik7XG5cdFx0Ly9vLnB1c2goXCJjb3BpZWRmcm9tOlwiICsgd3NbJyFyZWYnXSk7IC8vIGNsaXBib2FyZCBvbmx5XG5cdFx0cmV0dXJuIG8uam9pbihcIlxcblwiKTtcblx0fVxuXG5cdGZ1bmN0aW9uIHNoZWV0X3RvX2V0aCh3cy8qOldvcmtzaGVldCovLyo6Oiwgb3B0czo/YW55Ki8pLyo6c3RyaW5nKi8ge1xuXHRcdHJldHVybiBbaGVhZGVyLCBzZXAsIG1ldGEsIHNlcCwgc2hlZXRfdG9fZXRoX2RhdGEod3MpLCBlbmRdLmpvaW4oXCJcXG5cIik7XG5cdFx0Ly8gcmV0dXJuIFtcInZlcnNpb246MS41XCIsIHNoZWV0X3RvX2V0aF9kYXRhKHdzKV0uam9pbihcIlxcblwiKTsgLy8gY2xpcGJvYXJkIGZvcm1cblx0fVxuXG5cdHJldHVybiB7XG5cdFx0dG9fd29ya2Jvb2s6IGV0aF90b193b3JrYm9vayxcblx0XHR0b19zaGVldDogZXRoX3RvX3NoZWV0LFxuXHRcdGZyb21fc2hlZXQ6IHNoZWV0X3RvX2V0aFxuXHR9O1xufSkoKTtcblxudmFyIFBSTiA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG5cdGZ1bmN0aW9uIHNldF90ZXh0X2FycihkYXRhLyo6c3RyaW5nKi8sIGFyci8qOkFPQSovLCBSLyo6bnVtYmVyKi8sIEMvKjpudW1iZXIqLywgby8qOmFueSovKSB7XG5cdFx0aWYoby5yYXcpIGFycltSXVtDXSA9IGRhdGE7XG5cdFx0ZWxzZSBpZihkYXRhID09PSBcIlwiKXsvKiBlbXB0eSAqL31cblx0XHRlbHNlIGlmKGRhdGEgPT09ICdUUlVFJykgYXJyW1JdW0NdID0gdHJ1ZTtcblx0XHRlbHNlIGlmKGRhdGEgPT09ICdGQUxTRScpIGFycltSXVtDXSA9IGZhbHNlO1xuXHRcdGVsc2UgaWYoIWlzTmFOKGZ1enp5bnVtKGRhdGEpKSkgYXJyW1JdW0NdID0gZnV6enludW0oZGF0YSk7XG5cdFx0ZWxzZSBpZighaXNOYU4oZnV6enlkYXRlKGRhdGEpLmdldERhdGUoKSkpIGFycltSXVtDXSA9IHBhcnNlRGF0ZShkYXRhKTtcblx0XHRlbHNlIGFycltSXVtDXSA9IGRhdGE7XG5cdH1cblxuXHRmdW5jdGlvbiBwcm5fdG9fYW9hX3N0cihmLyo6c3RyaW5nKi8sIG9wdHMpLyo6QU9BKi8ge1xuXHRcdHZhciBvID0gb3B0cyB8fCB7fTtcblx0XHR2YXIgYXJyLyo6QU9BKi8gPSAoW10vKjphbnkqLyk7XG5cdFx0aWYoIWYgfHwgZi5sZW5ndGggPT09IDApIHJldHVybiBhcnI7XG5cdFx0dmFyIGxpbmVzID0gZi5zcGxpdCgvW1xcclxcbl0vKTtcblx0XHR2YXIgTCA9IGxpbmVzLmxlbmd0aCAtIDE7XG5cdFx0d2hpbGUoTCA+PSAwICYmIGxpbmVzW0xdLmxlbmd0aCA9PT0gMCkgLS1MO1xuXHRcdHZhciBzdGFydCA9IDEwLCBpZHggPSAwO1xuXHRcdHZhciBSID0gMDtcblx0XHRmb3IoOyBSIDw9IEw7ICsrUikge1xuXHRcdFx0aWR4ID0gbGluZXNbUl0uaW5kZXhPZihcIiBcIik7XG5cdFx0XHRpZihpZHggPT0gLTEpIGlkeCA9IGxpbmVzW1JdLmxlbmd0aDsgZWxzZSBpZHgrKztcblx0XHRcdHN0YXJ0ID0gTWF0aC5tYXgoc3RhcnQsIGlkeCk7XG5cdFx0fVxuXHRcdGZvcihSID0gMDsgUiA8PSBMOyArK1IpIHtcblx0XHRcdGFycltSXSA9IFtdO1xuXHRcdFx0LyogVE9ETzogY29uZmlybSB0aGF0IHdpZHRocyBhcmUgYWx3YXlzIDEwICovXG5cdFx0XHR2YXIgQyA9IDA7XG5cdFx0XHRzZXRfdGV4dF9hcnIobGluZXNbUl0uc2xpY2UoMCwgc3RhcnQpLnRyaW0oKSwgYXJyLCBSLCBDLCBvKTtcblx0XHRcdGZvcihDID0gMTsgQyA8PSAobGluZXNbUl0ubGVuZ3RoIC0gc3RhcnQpLzEwICsgMTsgKytDKVxuXHRcdFx0XHRzZXRfdGV4dF9hcnIobGluZXNbUl0uc2xpY2Uoc3RhcnQrKEMtMSkqMTAsc3RhcnQrQyoxMCkudHJpbSgpLGFycixSLEMsbyk7XG5cdFx0fVxuXHRcdGlmKG8uc2hlZXRSb3dzKSBhcnIgPSBhcnIuc2xpY2UoMCwgby5zaGVldFJvd3MpO1xuXHRcdHJldHVybiBhcnI7XG5cdH1cblxuXHQvLyBMaXN0IG9mIGFjY2VwdGVkIENTViBzZXBhcmF0b3JzXG5cdHZhciBndWVzc19zZXBzID0ge1xuXHRcdC8qOjpbKi8weDJDLyo6Ol0qLzogJywnLFxuXHRcdC8qOjpbKi8weDA5Lyo6Ol0qLzogXCJcXHRcIixcblx0XHQvKjo6WyovMHgzQi8qOjpdKi86ICc7Jyxcblx0XHQvKjo6WyovMHg3Qy8qOjpdKi86ICd8J1xuXHR9O1xuXG5cdC8vIENTViBzZXBhcmF0b3Igd2VpZ2h0cyB0byBiZSB1c2VkIGluIGNhc2Ugb2YgZXF1YWwgbnVtYmVyc1xuXHR2YXIgZ3Vlc3Nfc2VwX3dlaWdodHMgPSB7XG5cdFx0Lyo6OlsqLzB4MkMvKjo6XSovOiAzLFxuXHRcdC8qOjpbKi8weDA5Lyo6Ol0qLzogMixcblx0XHQvKjo6WyovMHgzQi8qOjpdKi86IDEsXG5cdFx0Lyo6OlsqLzB4N0MvKjo6XSovOiAwXG5cdH07XG5cblx0ZnVuY3Rpb24gZ3Vlc3Nfc2VwKHN0cikge1xuXHRcdHZhciBjbnQgPSB7fSwgaW5zdHIgPSBmYWxzZSwgZW5kID0gMCwgY2MgPSAwO1xuXHRcdGZvcig7ZW5kIDwgc3RyLmxlbmd0aDsrK2VuZCkge1xuXHRcdFx0aWYoKGNjPXN0ci5jaGFyQ29kZUF0KGVuZCkpID09IDB4MjIpIGluc3RyID0gIWluc3RyO1xuXHRcdFx0ZWxzZSBpZighaW5zdHIgJiYgY2MgaW4gZ3Vlc3Nfc2VwcykgY250W2NjXSA9IChjbnRbY2NdfHwwKSsxO1xuXHRcdH1cblxuXHRcdGNjID0gW107XG5cdFx0Zm9yKGVuZCBpbiBjbnQpIGlmICggT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNudCwgZW5kKSApIHtcblx0XHRcdGNjLnB1c2goWyBjbnRbZW5kXSwgZW5kIF0pO1xuXHRcdH1cblxuXHRcdGlmICggIWNjLmxlbmd0aCApIHtcblx0XHRcdGNudCA9IGd1ZXNzX3NlcF93ZWlnaHRzO1xuXHRcdFx0Zm9yKGVuZCBpbiBjbnQpIGlmICggT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNudCwgZW5kKSApIHtcblx0XHRcdFx0Y2MucHVzaChbIGNudFtlbmRdLCBlbmQgXSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Y2Muc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhWzBdIC0gYlswXSB8fCBndWVzc19zZXBfd2VpZ2h0c1thWzFdXSAtIGd1ZXNzX3NlcF93ZWlnaHRzW2JbMV1dOyB9KTtcblxuXHRcdHJldHVybiBndWVzc19zZXBzW2NjLnBvcCgpWzFdXSB8fCAweDJDO1xuXHR9XG5cblx0ZnVuY3Rpb24gZHN2X3RvX3NoZWV0X3N0cihzdHIvKjpzdHJpbmcqLywgb3B0cykvKjpXb3Jrc2hlZXQqLyB7XG5cdFx0dmFyIG8gPSBvcHRzIHx8IHt9O1xuXHRcdHZhciBzZXAgPSBcIlwiO1xuXHRcdGlmKERFTlNFICE9IG51bGwgJiYgby5kZW5zZSA9PSBudWxsKSBvLmRlbnNlID0gREVOU0U7XG5cdFx0dmFyIHdzLyo6V29ya3NoZWV0Ki8gPSBvLmRlbnNlID8gKFtdLyo6YW55Ki8pIDogKHt9Lyo6YW55Ki8pO1xuXHRcdHZhciByYW5nZS8qOlJhbmdlKi8gPSAoe3M6IHtjOjAsIHI6MH0sIGU6IHtjOjAsIHI6MH19Lyo6YW55Ki8pO1xuXG5cdFx0aWYoc3RyLnNsaWNlKDAsNCkgPT0gXCJzZXA9XCIpIHtcblx0XHRcdC8vIElmIHRoZSBsaW5lIGVuZHMgaW4gXFxyXFxuXG5cdFx0XHRpZihzdHIuY2hhckNvZGVBdCg1KSA9PSAxMyAmJiBzdHIuY2hhckNvZGVBdCg2KSA9PSAxMCApIHtcblx0XHRcdFx0c2VwID0gc3RyLmNoYXJBdCg0KTsgc3RyID0gc3RyLnNsaWNlKDcpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gSWYgbGluZSBlbmRzIGluIFxcciBPUiBcXG5cblx0XHRcdGVsc2UgaWYoc3RyLmNoYXJDb2RlQXQoNSkgPT0gMTMgfHwgc3RyLmNoYXJDb2RlQXQoNSkgPT0gMTAgKSB7XG5cdFx0XHRcdHNlcCA9IHN0ci5jaGFyQXQoNCk7IHN0ciA9IHN0ci5zbGljZSg2KTtcblx0XHRcdH1cblx0XHRcdGVsc2Ugc2VwID0gZ3Vlc3Nfc2VwKHN0ci5zbGljZSgwLDEwMjQpKTtcblx0XHR9XG5cdFx0ZWxzZSBpZihvICYmIG8uRlMpIHNlcCA9IG8uRlM7XG5cdFx0ZWxzZSBzZXAgPSBndWVzc19zZXAoc3RyLnNsaWNlKDAsMTAyNCkpO1xuXHRcdHZhciBSID0gMCwgQyA9IDAsIHYgPSAwO1xuXHRcdHZhciBzdGFydCA9IDAsIGVuZCA9IDAsIHNlcGNjID0gc2VwLmNoYXJDb2RlQXQoMCksIGluc3RyID0gZmFsc2UsIGNjPTAsIHN0YXJ0Y2M9c3RyLmNoYXJDb2RlQXQoMCk7XG5cdFx0c3RyID0gc3RyLnJlcGxhY2UoL1xcclxcbi9tZywgXCJcXG5cIik7XG5cdFx0dmFyIF9yZS8qOj9SZWdFeHAqLyA9IG8uZGF0ZU5GICE9IG51bGwgPyBkYXRlTkZfcmVnZXgoby5kYXRlTkYpIDogbnVsbDtcblx0XHRmdW5jdGlvbiBmaW5pc2hfY2VsbCgpIHtcblx0XHRcdHZhciBzID0gc3RyLnNsaWNlKHN0YXJ0LCBlbmQpO1xuXHRcdFx0dmFyIGNlbGwgPSAoe30vKjphbnkqLyk7XG5cdFx0XHRpZihzLmNoYXJBdCgwKSA9PSAnXCInICYmIHMuY2hhckF0KHMubGVuZ3RoIC0gMSkgPT0gJ1wiJykgcyA9IHMuc2xpY2UoMSwtMSkucmVwbGFjZSgvXCJcIi9nLCdcIicpO1xuXHRcdFx0aWYocy5sZW5ndGggPT09IDApIGNlbGwudCA9ICd6Jztcblx0XHRcdGVsc2UgaWYoby5yYXcpIHsgY2VsbC50ID0gJ3MnOyBjZWxsLnYgPSBzOyB9XG5cdFx0XHRlbHNlIGlmKHMudHJpbSgpLmxlbmd0aCA9PT0gMCkgeyBjZWxsLnQgPSAncyc7IGNlbGwudiA9IHM7IH1cblx0XHRcdGVsc2UgaWYocy5jaGFyQ29kZUF0KDApID09IDB4M0QpIHtcblx0XHRcdFx0aWYocy5jaGFyQ29kZUF0KDEpID09IDB4MjIgJiYgcy5jaGFyQ29kZUF0KHMubGVuZ3RoIC0gMSkgPT0gMHgyMikgeyBjZWxsLnQgPSAncyc7IGNlbGwudiA9IHMuc2xpY2UoMiwtMSkucmVwbGFjZSgvXCJcIi9nLCdcIicpOyB9XG5cdFx0XHRcdGVsc2UgaWYoZnV6enlmbWxhKHMpKSB7IGNlbGwudCA9ICduJzsgY2VsbC5mID0gcy5zbGljZSgxKTsgfVxuXHRcdFx0XHRlbHNlIHsgY2VsbC50ID0gJ3MnOyBjZWxsLnYgPSBzOyB9IH1cblx0XHRcdGVsc2UgaWYocyA9PSBcIlRSVUVcIikgeyBjZWxsLnQgPSAnYic7IGNlbGwudiA9IHRydWU7IH1cblx0XHRcdGVsc2UgaWYocyA9PSBcIkZBTFNFXCIpIHsgY2VsbC50ID0gJ2InOyBjZWxsLnYgPSBmYWxzZTsgfVxuXHRcdFx0ZWxzZSBpZighaXNOYU4odiA9IGZ1enp5bnVtKHMpKSkgeyBjZWxsLnQgPSAnbic7IGlmKG8uY2VsbFRleHQgIT09IGZhbHNlKSBjZWxsLncgPSBzOyBjZWxsLnYgPSB2OyB9XG5cdFx0XHRlbHNlIGlmKCFpc05hTihmdXp6eWRhdGUocykuZ2V0RGF0ZSgpKSB8fCBfcmUgJiYgcy5tYXRjaChfcmUpKSB7XG5cdFx0XHRcdGNlbGwueiA9IG8uZGF0ZU5GIHx8IHRhYmxlX2ZtdFsxNF07XG5cdFx0XHRcdHZhciBrID0gMDtcblx0XHRcdFx0aWYoX3JlICYmIHMubWF0Y2goX3JlKSl7IHM9ZGF0ZU5GX2ZpeChzLCBvLmRhdGVORiwgKHMubWF0Y2goX3JlKXx8W10pKTsgaz0xOyB9XG5cdFx0XHRcdGlmKG8uY2VsbERhdGVzKSB7IGNlbGwudCA9ICdkJzsgY2VsbC52ID0gcGFyc2VEYXRlKHMsIGspOyB9XG5cdFx0XHRcdGVsc2UgeyBjZWxsLnQgPSAnbic7IGNlbGwudiA9IGRhdGVudW0ocGFyc2VEYXRlKHMsIGspKTsgfVxuXHRcdFx0XHRpZihvLmNlbGxUZXh0ICE9PSBmYWxzZSkgY2VsbC53ID0gU1NGX2Zvcm1hdChjZWxsLnosIGNlbGwudiBpbnN0YW5jZW9mIERhdGUgPyBkYXRlbnVtKGNlbGwudik6Y2VsbC52KTtcblx0XHRcdFx0aWYoIW8uY2VsbE5GKSBkZWxldGUgY2VsbC56O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y2VsbC50ID0gJ3MnO1xuXHRcdFx0XHRjZWxsLnYgPSBzO1xuXHRcdFx0fVxuXHRcdFx0aWYoY2VsbC50ID09ICd6Jyl7fVxuXHRcdFx0ZWxzZSBpZihvLmRlbnNlKSB7IGlmKCF3c1tSXSkgd3NbUl0gPSBbXTsgd3NbUl1bQ10gPSBjZWxsOyB9XG5cdFx0XHRlbHNlIHdzW2VuY29kZV9jZWxsKHtjOkMscjpSfSldID0gY2VsbDtcblx0XHRcdHN0YXJ0ID0gZW5kKzE7IHN0YXJ0Y2MgPSBzdHIuY2hhckNvZGVBdChzdGFydCk7XG5cdFx0XHRpZihyYW5nZS5lLmMgPCBDKSByYW5nZS5lLmMgPSBDO1xuXHRcdFx0aWYocmFuZ2UuZS5yIDwgUikgcmFuZ2UuZS5yID0gUjtcblx0XHRcdGlmKGNjID09IHNlcGNjKSArK0M7IGVsc2UgeyBDID0gMDsgKytSOyBpZihvLnNoZWV0Um93cyAmJiBvLnNoZWV0Um93cyA8PSBSKSByZXR1cm4gdHJ1ZTsgfVxuXHRcdH1cblx0XHRvdXRlcjogZm9yKDtlbmQgPCBzdHIubGVuZ3RoOysrZW5kKSBzd2l0Y2goKGNjPXN0ci5jaGFyQ29kZUF0KGVuZCkpKSB7XG5cdFx0XHRjYXNlIDB4MjI6IGlmKHN0YXJ0Y2MgPT09IDB4MjIpIGluc3RyID0gIWluc3RyOyBicmVhaztcblx0XHRcdGNhc2Ugc2VwY2M6IGNhc2UgMHgwYTogY2FzZSAweDBkOiBpZighaW5zdHIgJiYgZmluaXNoX2NlbGwoKSkgYnJlYWsgb3V0ZXI7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogYnJlYWs7XG5cdFx0fVxuXHRcdGlmKGVuZCAtIHN0YXJ0ID4gMCkgZmluaXNoX2NlbGwoKTtcblxuXHRcdHdzWychcmVmJ10gPSBlbmNvZGVfcmFuZ2UocmFuZ2UpO1xuXHRcdHJldHVybiB3cztcblx0fVxuXG5cdGZ1bmN0aW9uIHBybl90b19zaGVldF9zdHIoc3RyLyo6c3RyaW5nKi8sIG9wdHMpLyo6V29ya3NoZWV0Ki8ge1xuXHRcdGlmKCEob3B0cyAmJiBvcHRzLlBSTikpIHJldHVybiBkc3ZfdG9fc2hlZXRfc3RyKHN0ciwgb3B0cyk7XG5cdFx0aWYob3B0cy5GUykgcmV0dXJuIGRzdl90b19zaGVldF9zdHIoc3RyLCBvcHRzKTtcblx0XHRpZihzdHIuc2xpY2UoMCw0KSA9PSBcInNlcD1cIikgcmV0dXJuIGRzdl90b19zaGVldF9zdHIoc3RyLCBvcHRzKTtcblx0XHRpZihzdHIuaW5kZXhPZihcIlxcdFwiKSA+PSAwIHx8IHN0ci5pbmRleE9mKFwiLFwiKSA+PSAwIHx8IHN0ci5pbmRleE9mKFwiO1wiKSA+PSAwKSByZXR1cm4gZHN2X3RvX3NoZWV0X3N0cihzdHIsIG9wdHMpO1xuXHRcdHJldHVybiBhb2FfdG9fc2hlZXQocHJuX3RvX2FvYV9zdHIoc3RyLCBvcHRzKSwgb3B0cyk7XG5cdH1cblxuXHRmdW5jdGlvbiBwcm5fdG9fc2hlZXQoZC8qOlJhd0RhdGEqLywgb3B0cykvKjpXb3Jrc2hlZXQqLyB7XG5cdFx0dmFyIHN0ciA9IFwiXCIsIGJ5dGVzID0gb3B0cy50eXBlID09ICdzdHJpbmcnID8gWzAsMCwwLDBdIDogZmlyc3RieXRlKGQsIG9wdHMpO1xuXHRcdHN3aXRjaChvcHRzLnR5cGUpIHtcblx0XHRcdGNhc2UgJ2Jhc2U2NCc6IHN0ciA9IEJhc2U2NF9kZWNvZGUoZCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnYmluYXJ5Jzogc3RyID0gZDsgYnJlYWs7XG5cdFx0XHRjYXNlICdidWZmZXInOlxuXHRcdFx0XHRpZihvcHRzLmNvZGVwYWdlID09IDY1MDAxKSBzdHIgPSBkLnRvU3RyaW5nKCd1dGY4Jyk7IC8vIFRPRE86IHRlc3QgaWYgYnVmXG5cdFx0XHRcdGVsc2UgaWYob3B0cy5jb2RlcGFnZSAmJiB0eXBlb2YgJGNwdGFibGUgIT09ICd1bmRlZmluZWQnKSBzdHIgPSAkY3B0YWJsZS51dGlscy5kZWNvZGUob3B0cy5jb2RlcGFnZSwgZCk7XG5cdFx0XHRcdGVsc2Ugc3RyID0gaGFzX2J1ZiAmJiBCdWZmZXIuaXNCdWZmZXIoZCkgPyBkLnRvU3RyaW5nKCdiaW5hcnknKSA6IGEycyhkKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdhcnJheSc6IHN0ciA9IGNjMnN0cihkKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdzdHJpbmcnOiBzdHIgPSBkOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIlVucmVjb2duaXplZCB0eXBlIFwiICsgb3B0cy50eXBlKTtcblx0XHR9XG5cdFx0aWYoYnl0ZXNbMF0gPT0gMHhFRiAmJiBieXRlc1sxXSA9PSAweEJCICYmIGJ5dGVzWzJdID09IDB4QkYpIHN0ciA9IHV0ZjhyZWFkKHN0ci5zbGljZSgzKSk7XG5cdFx0ZWxzZSBpZihvcHRzLnR5cGUgIT0gJ3N0cmluZycgJiYgb3B0cy50eXBlICE9ICdidWZmZXInICYmIG9wdHMuY29kZXBhZ2UgPT0gNjUwMDEpIHN0ciA9IHV0ZjhyZWFkKHN0cik7XG5cdFx0ZWxzZSBpZigob3B0cy50eXBlID09ICdiaW5hcnknKSAmJiB0eXBlb2YgJGNwdGFibGUgIT09ICd1bmRlZmluZWQnICYmIG9wdHMuY29kZXBhZ2UpICBzdHIgPSAkY3B0YWJsZS51dGlscy5kZWNvZGUob3B0cy5jb2RlcGFnZSwgJGNwdGFibGUudXRpbHMuZW5jb2RlKDI4NTkxLHN0cikpO1xuXHRcdGlmKHN0ci5zbGljZSgwLDE5KSA9PSBcInNvY2lhbGNhbGM6dmVyc2lvbjpcIikgcmV0dXJuIEVUSC50b19zaGVldChvcHRzLnR5cGUgPT0gJ3N0cmluZycgPyBzdHIgOiB1dGY4cmVhZChzdHIpLCBvcHRzKTtcblx0XHRyZXR1cm4gcHJuX3RvX3NoZWV0X3N0cihzdHIsIG9wdHMpO1xuXHR9XG5cblx0ZnVuY3Rpb24gcHJuX3RvX3dvcmtib29rKGQvKjpSYXdEYXRhKi8sIG9wdHMpLyo6V29ya2Jvb2sqLyB7IHJldHVybiBzaGVldF90b193b3JrYm9vayhwcm5fdG9fc2hlZXQoZCwgb3B0cyksIG9wdHMpOyB9XG5cblx0ZnVuY3Rpb24gc2hlZXRfdG9fcHJuKHdzLyo6V29ya3NoZWV0Ki8vKjo6LCBvcHRzOj9hbnkqLykvKjpzdHJpbmcqLyB7XG5cdFx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0XHR2YXIgciA9IHNhZmVfZGVjb2RlX3JhbmdlKHdzWychcmVmJ10pLCBjZWxsLyo6Q2VsbCovO1xuXHRcdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkod3MpO1xuXHRcdGZvcih2YXIgUiA9IHIucy5yOyBSIDw9IHIuZS5yOyArK1IpIHtcblx0XHRcdHZhciBvby8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRcdFx0Zm9yKHZhciBDID0gci5zLmM7IEMgPD0gci5lLmM7ICsrQykge1xuXHRcdFx0XHR2YXIgY29vcmQgPSBlbmNvZGVfY2VsbCh7cjpSLGM6Q30pO1xuXHRcdFx0XHRjZWxsID0gZGVuc2UgPyAod3NbUl18fFtdKVtDXSA6IHdzW2Nvb3JkXTtcblx0XHRcdFx0aWYoIWNlbGwgfHwgY2VsbC52ID09IG51bGwpIHsgb28ucHVzaChcIiAgICAgICAgICBcIik7IGNvbnRpbnVlOyB9XG5cdFx0XHRcdHZhciB3ID0gKGNlbGwudyB8fCAoZm9ybWF0X2NlbGwoY2VsbCksIGNlbGwudykgfHwgXCJcIikuc2xpY2UoMCwxMCk7XG5cdFx0XHRcdHdoaWxlKHcubGVuZ3RoIDwgMTApIHcgKz0gXCIgXCI7XG5cdFx0XHRcdG9vLnB1c2godyArIChDID09PSAwID8gXCIgXCIgOiBcIlwiKSk7XG5cdFx0XHR9XG5cdFx0XHRvLnB1c2gob28uam9pbihcIlwiKSk7XG5cdFx0fVxuXHRcdHJldHVybiBvLmpvaW4oXCJcXG5cIik7XG5cdH1cblxuXHRyZXR1cm4ge1xuXHRcdHRvX3dvcmtib29rOiBwcm5fdG9fd29ya2Jvb2ssXG5cdFx0dG9fc2hlZXQ6IHBybl90b19zaGVldCxcblx0XHRmcm9tX3NoZWV0OiBzaGVldF90b19wcm5cblx0fTtcbn0pKCk7XG5cbi8qIEV4Y2VsIGRlZmF1bHRzIHRvIFNZTEsgYnV0IHdhcm5zIGlmIGRhdGEgaXMgbm90IHZhbGlkICovXG5mdW5jdGlvbiByZWFkX3diX0lEKGQsIG9wdHMpIHtcblx0dmFyIG8gPSBvcHRzIHx8IHt9LCBPTERfV1RGID0gISFvLldURjsgby5XVEYgPSB0cnVlO1xuXHR0cnkge1xuXHRcdHZhciBvdXQgPSBTWUxLLnRvX3dvcmtib29rKGQsIG8pO1xuXHRcdG8uV1RGID0gT0xEX1dURjtcblx0XHRyZXR1cm4gb3V0O1xuXHR9IGNhdGNoKGUpIHtcblx0XHRvLldURiA9IE9MRF9XVEY7XG5cdFx0aWYoIWUubWVzc2FnZS5tYXRjaCgvU1lMSyBiYWQgcmVjb3JkIElELykgJiYgT0xEX1dURikgdGhyb3cgZTtcblx0XHRyZXR1cm4gUFJOLnRvX3dvcmtib29rKGQsIG9wdHMpO1xuXHR9XG59XG5cbnZhciBXS18gPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCkge1xuXHRmdW5jdGlvbiBsb3R1c2hvcHBlcihkYXRhLCBjYi8qOlJlY29yZEhvcHBlckNCKi8sIG9wdHMvKjphbnkqLykge1xuXHRcdGlmKCFkYXRhKSByZXR1cm47XG5cdFx0cHJlcF9ibG9iKGRhdGEsIGRhdGEubCB8fCAwKTtcblx0XHR2YXIgRW51bSA9IG9wdHMuRW51bSB8fCBXSzFFbnVtO1xuXHRcdHdoaWxlKGRhdGEubCA8IGRhdGEubGVuZ3RoKSB7XG5cdFx0XHR2YXIgUlQgPSBkYXRhLnJlYWRfc2hpZnQoMik7XG5cdFx0XHR2YXIgUiA9IEVudW1bUlRdIHx8IEVudW1bMHhGRkZGXTtcblx0XHRcdHZhciBsZW5ndGggPSBkYXRhLnJlYWRfc2hpZnQoMik7XG5cdFx0XHR2YXIgdGd0ID0gZGF0YS5sICsgbGVuZ3RoO1xuXHRcdFx0dmFyIGQgPSBSLmYgJiYgUi5mKGRhdGEsIGxlbmd0aCwgb3B0cyk7XG5cdFx0XHRkYXRhLmwgPSB0Z3Q7XG5cdFx0XHRpZihjYihkLCBSLCBSVCkpIHJldHVybjtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBsb3R1c190b193b3JrYm9vayhkLyo6UmF3RGF0YSovLCBvcHRzKSB7XG5cdFx0c3dpdGNoKG9wdHMudHlwZSkge1xuXHRcdFx0Y2FzZSAnYmFzZTY0JzogcmV0dXJuIGxvdHVzX3RvX3dvcmtib29rX2J1ZihzMmEoQmFzZTY0X2RlY29kZShkKSksIG9wdHMpO1xuXHRcdFx0Y2FzZSAnYmluYXJ5JzogcmV0dXJuIGxvdHVzX3RvX3dvcmtib29rX2J1ZihzMmEoZCksIG9wdHMpO1xuXHRcdFx0Y2FzZSAnYnVmZmVyJzpcblx0XHRcdGNhc2UgJ2FycmF5JzogcmV0dXJuIGxvdHVzX3RvX3dvcmtib29rX2J1ZihkLCBvcHRzKTtcblx0XHR9XG5cdFx0dGhyb3cgXCJVbnN1cHBvcnRlZCB0eXBlIFwiICsgb3B0cy50eXBlO1xuXHR9XG5cblx0ZnVuY3Rpb24gbG90dXNfdG9fd29ya2Jvb2tfYnVmKGQsIG9wdHMpLyo6V29ya2Jvb2sqLyB7XG5cdFx0aWYoIWQpIHJldHVybiBkO1xuXHRcdHZhciBvID0gb3B0cyB8fCB7fTtcblx0XHRpZihERU5TRSAhPSBudWxsICYmIG8uZGVuc2UgPT0gbnVsbCkgby5kZW5zZSA9IERFTlNFO1xuXHRcdHZhciBzLyo6V29ya3NoZWV0Ki8gPSAoKG8uZGVuc2UgPyBbXSA6IHt9KS8qOmFueSovKSwgbiA9IFwiU2hlZXQxXCIsIG5leHRfbiA9IFwiXCIsIHNpZHggPSAwO1xuXHRcdHZhciBzaGVldHMgPSB7fSwgc25hbWVzID0gW10sIHJlYWxuYW1lcyA9IFtdO1xuXG5cdFx0dmFyIHJlZmd1ZXNzID0ge3M6IHtyOjAsIGM6MH0sIGU6IHtyOjAsIGM6MH0gfTtcblx0XHR2YXIgc2hlZXRSb3dzID0gby5zaGVldFJvd3MgfHwgMDtcblxuXHRcdGlmKGRbMl0gPT0gMHgwMCkge1xuXHRcdFx0aWYoZFszXSA9PSAweDA4IHx8IGRbM10gPT0gMHgwOSkge1xuXHRcdFx0XHRpZihkLmxlbmd0aCA+PSAxNiAmJiBkWzE0XSA9PSAweDA1ICYmIGRbMTVdID09PSAweDZjKSB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBXb3JrcyAzIGZvciBNYWMgZmlsZVwiKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZihkWzJdID09IDB4MDIpIHtcblx0XHRcdG8uRW51bSA9IFdLMUVudW07XG5cdFx0XHRsb3R1c2hvcHBlcihkLCBmdW5jdGlvbih2YWwsIFIsIFJUKSB7IHN3aXRjaChSVCkge1xuXHRcdFx0XHRjYXNlIDB4MDA6IC8qIEJPRiAqL1xuXHRcdFx0XHRcdG8udmVycyA9IHZhbDtcblx0XHRcdFx0XHRpZih2YWwgPj0gMHgxMDAwKSBvLnFwcm8gPSB0cnVlO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDY6IHJlZmd1ZXNzID0gdmFsOyBicmVhazsgLyogUkFOR0UgKi9cblx0XHRcdFx0Y2FzZSAweENDOiBpZih2YWwpIG5leHRfbiA9IHZhbDsgYnJlYWs7IC8qIFNIRUVUTkFNRUNTICovXG5cdFx0XHRcdGNhc2UgMHhERTogbmV4dF9uID0gdmFsOyBicmVhazsgLyogU0hFRVROQU1FTFAgKi9cblx0XHRcdFx0Y2FzZSAweDBGOiAvKiBMQUJFTCAqL1xuXHRcdFx0XHRjYXNlIDB4MzM6IC8qIFNUUklORyAqL1xuXHRcdFx0XHRcdGlmKCFvLnFwcm8pIHZhbFsxXS52ID0gdmFsWzFdLnYuc2xpY2UoMSk7XG5cdFx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0XHRjYXNlIDB4MEQ6IC8qIElOVEVHRVIgKi9cblx0XHRcdFx0Y2FzZSAweDBFOiAvKiBOVU1CRVIgKi9cblx0XHRcdFx0Y2FzZSAweDEwOiAvKiBGT1JNVUxBICovXG5cdFx0XHRcdFx0LyogVE9ETzogYWN0dWFsIHRyYW5zbGF0aW9uIG9mIHRoZSBmb3JtYXQgY29kZSAqL1xuXHRcdFx0XHRcdGlmKFJUID09IDB4MEUgJiYgKHZhbFsyXSAmIDB4NzApID09IDB4NzAgJiYgKHZhbFsyXSAmIDB4MEYpID4gMSAmJiAodmFsWzJdICYgMHgwRikgPCAxNSkge1xuXHRcdFx0XHRcdFx0dmFsWzFdLnogPSBvLmRhdGVORiB8fCB0YWJsZV9mbXRbMTRdO1xuXHRcdFx0XHRcdFx0aWYoby5jZWxsRGF0ZXMpIHsgdmFsWzFdLnQgPSAnZCc7IHZhbFsxXS52ID0gbnVtZGF0ZSh2YWxbMV0udik7IH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZihvLnFwcm8pIHtcblx0XHRcdFx0XHRcdGlmKHZhbFszXSA+IHNpZHgpIHtcblx0XHRcdFx0XHRcdFx0c1tcIiFyZWZcIl0gPSBlbmNvZGVfcmFuZ2UocmVmZ3Vlc3MpO1xuXHRcdFx0XHRcdFx0XHRzaGVldHNbbl0gPSBzO1xuXHRcdFx0XHRcdFx0XHRzbmFtZXMucHVzaChuKTtcblx0XHRcdFx0XHRcdFx0cyA9IChvLmRlbnNlID8gW10gOiB7fSk7XG5cdFx0XHRcdFx0XHRcdHJlZmd1ZXNzID0ge3M6IHtyOjAsIGM6MH0sIGU6IHtyOjAsIGM6MH0gfTtcblx0XHRcdFx0XHRcdFx0c2lkeCA9IHZhbFszXTsgbiA9IG5leHRfbiB8fCBcIlNoZWV0XCIgKyAoc2lkeCArIDEpOyBuZXh0X24gPSBcIlwiO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHZhciB0bXBjZWxsID0gby5kZW5zZSA/IChzW3ZhbFswXS5yXXx8W10pW3ZhbFswXS5jXSA6IHNbZW5jb2RlX2NlbGwodmFsWzBdKV07XG5cdFx0XHRcdFx0aWYodG1wY2VsbCkge1xuXHRcdFx0XHRcdFx0dG1wY2VsbC50ID0gdmFsWzFdLnQ7IHRtcGNlbGwudiA9IHZhbFsxXS52O1xuXHRcdFx0XHRcdFx0aWYodmFsWzFdLnogIT0gbnVsbCkgdG1wY2VsbC56ID0gdmFsWzFdLno7XG5cdFx0XHRcdFx0XHRpZih2YWxbMV0uZiAhPSBudWxsKSB0bXBjZWxsLmYgPSB2YWxbMV0uZjtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZihvLmRlbnNlKSB7XG5cdFx0XHRcdFx0XHRpZighc1t2YWxbMF0ucl0pIHNbdmFsWzBdLnJdID0gW107XG5cdFx0XHRcdFx0XHRzW3ZhbFswXS5yXVt2YWxbMF0uY10gPSB2YWxbMV07XG5cdFx0XHRcdFx0fSBlbHNlIHNbZW5jb2RlX2NlbGwodmFsWzBdKV0gPSB2YWxbMV07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHR9fSwgbyk7XG5cdFx0fSBlbHNlIGlmKGRbMl0gPT0gMHgxQSB8fCBkWzJdID09IDB4MEUpIHtcblx0XHRcdG8uRW51bSA9IFdLM0VudW07XG5cdFx0XHRpZihkWzJdID09IDB4MEUpIHsgby5xcHJvID0gdHJ1ZTsgZC5sID0gMDsgfVxuXHRcdFx0bG90dXNob3BwZXIoZCwgZnVuY3Rpb24odmFsLCBSLCBSVCkgeyBzd2l0Y2goUlQpIHtcblx0XHRcdFx0Y2FzZSAweENDOiBuID0gdmFsOyBicmVhazsgLyogU0hFRVROQU1FQ1MgKi9cblx0XHRcdFx0Y2FzZSAweDE2OiAvKiBMQUJFTDE2ICovXG5cdFx0XHRcdFx0dmFsWzFdLnYgPSB2YWxbMV0udi5zbGljZSgxKTtcblx0XHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRcdGNhc2UgMHgxNzogLyogTlVNQkVSMTcgKi9cblx0XHRcdFx0Y2FzZSAweDE4OiAvKiBOVU1CRVIxOCAqL1xuXHRcdFx0XHRjYXNlIDB4MTk6IC8qIEZPUk1VTEExOSAqL1xuXHRcdFx0XHRjYXNlIDB4MjU6IC8qIE5VTUJFUjI1ICovXG5cdFx0XHRcdGNhc2UgMHgyNzogLyogTlVNQkVSMjcgKi9cblx0XHRcdFx0Y2FzZSAweDI4OiAvKiBGT1JNVUxBMjggKi9cblx0XHRcdFx0XHRpZih2YWxbM10gPiBzaWR4KSB7XG5cdFx0XHRcdFx0XHRzW1wiIXJlZlwiXSA9IGVuY29kZV9yYW5nZShyZWZndWVzcyk7XG5cdFx0XHRcdFx0XHRzaGVldHNbbl0gPSBzO1xuXHRcdFx0XHRcdFx0c25hbWVzLnB1c2gobik7XG5cdFx0XHRcdFx0XHRzID0gKG8uZGVuc2UgPyBbXSA6IHt9KTtcblx0XHRcdFx0XHRcdHJlZmd1ZXNzID0ge3M6IHtyOjAsIGM6MH0sIGU6IHtyOjAsIGM6MH0gfTtcblx0XHRcdFx0XHRcdHNpZHggPSB2YWxbM107IG4gPSBcIlNoZWV0XCIgKyAoc2lkeCArIDEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZihzaGVldFJvd3MgPiAwICYmIHZhbFswXS5yID49IHNoZWV0Um93cykgYnJlYWs7XG5cdFx0XHRcdFx0aWYoby5kZW5zZSkge1xuXHRcdFx0XHRcdFx0aWYoIXNbdmFsWzBdLnJdKSBzW3ZhbFswXS5yXSA9IFtdO1xuXHRcdFx0XHRcdFx0c1t2YWxbMF0ucl1bdmFsWzBdLmNdID0gdmFsWzFdO1xuXHRcdFx0XHRcdH0gZWxzZSBzW2VuY29kZV9jZWxsKHZhbFswXSldID0gdmFsWzFdO1xuXHRcdFx0XHRcdGlmKHJlZmd1ZXNzLmUuYyA8IHZhbFswXS5jKSByZWZndWVzcy5lLmMgPSB2YWxbMF0uYztcblx0XHRcdFx0XHRpZihyZWZndWVzcy5lLnIgPCB2YWxbMF0ucikgcmVmZ3Vlc3MuZS5yID0gdmFsWzBdLnI7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgxQjogLyogWEZPUk1BVCAqL1xuXHRcdFx0XHRcdGlmKHZhbFsweDM2YjBdKSByZWFsbmFtZXNbdmFsWzB4MzZiMF1bMF1dID0gdmFsWzB4MzZiMF1bMV07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwNjAxOiAvKiBTSEVFVElORk9RUCAqL1xuXHRcdFx0XHRcdHJlYWxuYW1lc1t2YWxbMF1dID0gdmFsWzFdOyBpZih2YWxbMF0gPT0gc2lkeCkgbiA9IHZhbFsxXTsgYnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6IGJyZWFrO1xuXHRcdFx0fX0sIG8pO1xuXHRcdH0gZWxzZSB0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgTE9UVVMgQk9GIFwiICsgZFsyXSk7XG5cdFx0c1tcIiFyZWZcIl0gPSBlbmNvZGVfcmFuZ2UocmVmZ3Vlc3MpO1xuXHRcdHNoZWV0c1tuZXh0X24gfHwgbl0gPSBzO1xuXHRcdHNuYW1lcy5wdXNoKG5leHRfbiB8fCBuKTtcblx0XHRpZighcmVhbG5hbWVzLmxlbmd0aCkgcmV0dXJuIHsgU2hlZXROYW1lczogc25hbWVzLCBTaGVldHM6IHNoZWV0cyB9O1xuXHRcdHZhciBvc2hlZXRzID0ge30sIHJuYW1lcyA9IFtdO1xuXHRcdC8qIFRPRE86IHZlcmlmeSBubyBjb2xsaXNpb25zICovXG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IHJlYWxuYW1lcy5sZW5ndGg7ICsraSkgaWYoc2hlZXRzW3NuYW1lc1tpXV0pIHtcblx0XHRcdHJuYW1lcy5wdXNoKHJlYWxuYW1lc1tpXSB8fCBzbmFtZXNbaV0pO1xuXHRcdFx0b3NoZWV0c1tyZWFsbmFtZXNbaV1dID0gc2hlZXRzW3JlYWxuYW1lc1tpXV0gfHwgc2hlZXRzW3NuYW1lc1tpXV07XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJuYW1lcy5wdXNoKHJlYWxuYW1lc1tpXSk7XG5cdFx0XHRvc2hlZXRzW3JlYWxuYW1lc1tpXV0gPSAoeyBcIiFyZWZcIjogXCJBMVwiIH0pO1xuXHRcdH1cblx0XHRyZXR1cm4geyBTaGVldE5hbWVzOiBybmFtZXMsIFNoZWV0czogb3NoZWV0cyB9O1xuXHR9XG5cblx0ZnVuY3Rpb24gc2hlZXRfdG9fd2sxKHdzLyo6V29ya3NoZWV0Ki8sIG9wdHMvKjpXcml0ZU9wdHMqLykge1xuXHRcdHZhciBvID0gb3B0cyB8fCB7fTtcblx0XHRpZigrby5jb2RlcGFnZSA+PSAwKSBzZXRfY3AoK28uY29kZXBhZ2UpO1xuXHRcdGlmKG8udHlwZSA9PSBcInN0cmluZ1wiKSB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3Qgd3JpdGUgV0sxIHRvIEpTIHN0cmluZ1wiKTtcblx0XHR2YXIgYmEgPSBidWZfYXJyYXkoKTtcblx0XHR2YXIgcmFuZ2UgPSBzYWZlX2RlY29kZV9yYW5nZSh3c1tcIiFyZWZcIl0pO1xuXHRcdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkod3MpO1xuXHRcdHZhciBjb2xzID0gW107XG5cblx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMCwgd3JpdGVfQk9GX1dLMSgweDA0MDYpKTtcblx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwNiwgd3JpdGVfUkFOR0UocmFuZ2UpKTtcblx0XHR2YXIgbWF4X1IgPSBNYXRoLm1pbihyYW5nZS5lLnIsIDgxOTEpO1xuXHRcdGZvcih2YXIgUiA9IHJhbmdlLnMucjsgUiA8PSBtYXhfUjsgKytSKSB7XG5cdFx0XHR2YXIgcnIgPSBlbmNvZGVfcm93KFIpO1xuXHRcdFx0Zm9yKHZhciBDID0gcmFuZ2Uucy5jOyBDIDw9IHJhbmdlLmUuYzsgKytDKSB7XG5cdFx0XHRcdGlmKFIgPT09IHJhbmdlLnMucikgY29sc1tDXSA9IGVuY29kZV9jb2woQyk7XG5cdFx0XHRcdHZhciByZWYgPSBjb2xzW0NdICsgcnI7XG5cdFx0XHRcdHZhciBjZWxsID0gZGVuc2UgPyAod3NbUl18fFtdKVtDXSA6IHdzW3JlZl07XG5cdFx0XHRcdGlmKCFjZWxsIHx8IGNlbGwudCA9PSBcInpcIikgY29udGludWU7XG5cdFx0XHRcdC8qIFRPRE86IGZvcm11bGEgcmVjb3JkcyAqL1xuXHRcdFx0XHRpZihjZWxsLnQgPT0gXCJuXCIpIHtcblx0XHRcdFx0XHRpZigoY2VsbC52fDApPT1jZWxsLnYgJiYgY2VsbC52ID49IC0zMjc2OCAmJiBjZWxsLnYgPD0gMzI3NjcpIHdyaXRlX2JpZmZfcmVjKGJhLCAweDBkLCB3cml0ZV9JTlRFR0VSKFIsIEMsIGNlbGwudikpO1xuXHRcdFx0XHRcdGVsc2Ugd3JpdGVfYmlmZl9yZWMoYmEsIDB4MGUsIHdyaXRlX05VTUJFUihSLCBDLCBjZWxsLnYpKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR2YXIgc3RyID0gZm9ybWF0X2NlbGwoY2VsbCk7XG5cdFx0XHRcdFx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MEYsIHdyaXRlX0xBQkVMKFIsIEMsIHN0ci5zbGljZSgwLCAyMzkpKSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMSk7XG5cdFx0cmV0dXJuIGJhLmVuZCgpO1xuXHR9XG5cblx0ZnVuY3Rpb24gYm9va190b193azMod2IvKjpXb3JrYm9vayovLCBvcHRzLyo6V3JpdGVPcHRzKi8pIHtcblx0XHR2YXIgbyA9IG9wdHMgfHwge307XG5cdFx0aWYoK28uY29kZXBhZ2UgPj0gMCkgc2V0X2NwKCtvLmNvZGVwYWdlKTtcblx0XHRpZihvLnR5cGUgPT0gXCJzdHJpbmdcIikgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHdyaXRlIFdLMyB0byBKUyBzdHJpbmdcIik7XG5cdFx0dmFyIGJhID0gYnVmX2FycmF5KCk7XG5cblx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMCwgd3JpdGVfQk9GX1dLMyh3YikpO1xuXG5cdFx0Zm9yKHZhciBpID0gMCwgY250ID0gMDsgaSA8IHdiLlNoZWV0TmFtZXMubGVuZ3RoOyArK2kpIGlmKCh3Yi5TaGVldHNbd2IuU2hlZXROYW1lc1tpXV0gfHwge30pW1wiIXJlZlwiXSkgd3JpdGVfYmlmZl9yZWMoYmEsIDB4MWIsIHdyaXRlX1hGT1JNQVRfU0hFRVROQU1FKHdiLlNoZWV0TmFtZXNbaV0sIGNudCsrKSk7XG5cblx0XHR2YXIgd3NpZHggPSAwO1xuXHRcdGZvcihpID0gMDsgaSA8IHdiLlNoZWV0TmFtZXMubGVuZ3RoOyArK2kpIHtcblx0XHRcdHZhciB3cyA9IHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW2ldXTtcblx0XHRcdGlmKCF3cyB8fCAhd3NbXCIhcmVmXCJdKSBjb250aW51ZTtcblx0XHRcdHZhciByYW5nZSA9IHNhZmVfZGVjb2RlX3JhbmdlKHdzW1wiIXJlZlwiXSk7XG5cdFx0XHR2YXIgZGVuc2UgPSBBcnJheS5pc0FycmF5KHdzKTtcblx0XHRcdHZhciBjb2xzID0gW107XG5cdFx0XHR2YXIgbWF4X1IgPSBNYXRoLm1pbihyYW5nZS5lLnIsIDgxOTEpO1xuXHRcdFx0Zm9yKHZhciBSID0gcmFuZ2Uucy5yOyBSIDw9IG1heF9SOyArK1IpIHtcblx0XHRcdFx0dmFyIHJyID0gZW5jb2RlX3JvdyhSKTtcblx0XHRcdFx0Zm9yKHZhciBDID0gcmFuZ2Uucy5jOyBDIDw9IHJhbmdlLmUuYzsgKytDKSB7XG5cdFx0XHRcdFx0aWYoUiA9PT0gcmFuZ2Uucy5yKSBjb2xzW0NdID0gZW5jb2RlX2NvbChDKTtcblx0XHRcdFx0XHR2YXIgcmVmID0gY29sc1tDXSArIHJyO1xuXHRcdFx0XHRcdHZhciBjZWxsID0gZGVuc2UgPyAod3NbUl18fFtdKVtDXSA6IHdzW3JlZl07XG5cdFx0XHRcdFx0aWYoIWNlbGwgfHwgY2VsbC50ID09IFwielwiKSBjb250aW51ZTtcblx0XHRcdFx0XHQvKiBUT0RPOiBGT1JNVUxBMTkgTlVNQkVSMTggcmVjb3JkcyAqL1xuXHRcdFx0XHRcdGlmKGNlbGwudCA9PSBcIm5cIikge1xuXHRcdFx0XHRcdFx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MTcsIHdyaXRlX05VTUJFUl8xNyhSLCBDLCB3c2lkeCwgY2VsbC52KSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHZhciBzdHIgPSBmb3JtYXRfY2VsbChjZWxsKTtcblx0XHRcdFx0XHRcdC8qIFRPRE86IG1heCBsZW4/ICovXG5cdFx0XHRcdFx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgxNiwgd3JpdGVfTEFCRUxfMTYoUiwgQywgd3NpZHgsIHN0ci5zbGljZSgwLCAyMzkpKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQrK3dzaWR4O1xuXHRcdH1cblxuXHRcdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAxKTtcblx0XHRyZXR1cm4gYmEuZW5kKCk7XG5cdH1cblxuXG5cdGZ1bmN0aW9uIHdyaXRlX0JPRl9XSzEodi8qOm51bWJlciovKSB7XG5cdFx0dmFyIG91dCA9IG5ld19idWYoMik7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDIsIHYpO1xuXHRcdHJldHVybiBvdXQ7XG5cdH1cblxuXHRmdW5jdGlvbiB3cml0ZV9CT0ZfV0szKHdiLyo6V29ya2Jvb2sqLykge1xuXHRcdHZhciBvdXQgPSBuZXdfYnVmKDI2KTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgMHgxMDAwKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgMHgwMDA0KTtcblx0XHRvdXQud3JpdGVfc2hpZnQoNCwgMHgwMDAwKTtcblx0XHR2YXIgcm93cyA9IDAsIGNvbHMgPSAwLCB3c2NudCA9IDA7XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IHdiLlNoZWV0TmFtZXMubGVuZ3RoOyArK2kpIHtcblx0XHRcdHZhciBuYW1lID0gd2IuU2hlZXROYW1lc1tpXTtcblx0XHRcdHZhciB3cyA9IHdiLlNoZWV0c1tuYW1lXTtcblx0XHRcdGlmKCF3cyB8fCAhd3NbXCIhcmVmXCJdKSBjb250aW51ZTtcblx0XHRcdCsrd3NjbnQ7XG5cdFx0XHR2YXIgcmFuZ2UgPSBkZWNvZGVfcmFuZ2Uod3NbXCIhcmVmXCJdKTtcblx0XHRcdGlmKHJvd3MgPCByYW5nZS5lLnIpIHJvd3MgPSByYW5nZS5lLnI7XG5cdFx0XHRpZihjb2xzIDwgcmFuZ2UuZS5jKSBjb2xzID0gcmFuZ2UuZS5jO1xuXHRcdH1cblx0XHRpZihyb3dzID4gODE5MSkgcm93cyA9IDgxOTE7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDIsIHJvd3MpO1xuXHRcdG91dC53cml0ZV9zaGlmdCgxLCB3c2NudCk7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDEsIGNvbHMpO1xuXHRcdG91dC53cml0ZV9zaGlmdCgyLCAweDAwKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgMHgwMCk7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDEsIDB4MDEpO1xuXHRcdG91dC53cml0ZV9zaGlmdCgxLCAweDAyKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoNCwgMCk7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDQsIDApO1xuXHRcdHJldHVybiBvdXQ7XG5cdH1cblxuXHRmdW5jdGlvbiBwYXJzZV9SQU5HRShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0XHR2YXIgbyA9IHtzOntjOjAscjowfSxlOntjOjAscjowfX07XG5cdFx0aWYobGVuZ3RoID09IDggJiYgb3B0cy5xcHJvKSB7XG5cdFx0XHRvLnMuYyA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0XHRcdGJsb2IubCsrO1xuXHRcdFx0by5zLnIgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0XHRvLmUuYyA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0XHRcdGJsb2IubCsrO1xuXHRcdFx0by5lLnIgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0XHRyZXR1cm4gbztcblx0XHR9XG5cdFx0by5zLmMgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0by5zLnIgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0aWYobGVuZ3RoID09IDEyICYmIG9wdHMucXBybykgYmxvYi5sICs9IDI7XG5cdFx0by5lLmMgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0by5lLnIgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0aWYobGVuZ3RoID09IDEyICYmIG9wdHMucXBybykgYmxvYi5sICs9IDI7XG5cdFx0aWYoby5zLmMgPT0gMHhGRkZGKSBvLnMuYyA9IG8uZS5jID0gby5zLnIgPSBvLmUuciA9IDA7XG5cdFx0cmV0dXJuIG87XG5cdH1cblx0ZnVuY3Rpb24gd3JpdGVfUkFOR0UocmFuZ2UpIHtcblx0XHR2YXIgb3V0ID0gbmV3X2J1Zig4KTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgcmFuZ2Uucy5jKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgcmFuZ2Uucy5yKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgcmFuZ2UuZS5jKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgcmFuZ2UuZS5yKTtcblx0XHRyZXR1cm4gb3V0O1xuXHR9XG5cblx0ZnVuY3Rpb24gcGFyc2VfY2VsbChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0XHR2YXIgbyA9IFt7YzowLHI6MH0sIHt0OiduJyx2OjB9LCAwLCAwXTtcblx0XHRpZihvcHRzLnFwcm8gJiYgb3B0cy52ZXJzICE9IDB4NTEyMCkge1xuXHRcdFx0b1swXS5jID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRcdFx0b1szXSA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0XHRcdG9bMF0uciA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHRcdGJsb2IubCs9Mjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b1syXSA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0XHRcdG9bMF0uYyA9IGJsb2IucmVhZF9zaGlmdCgyKTsgb1swXS5yID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdH1cblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX0xBQkVMKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRcdHZhciB0Z3QgPSBibG9iLmwgKyBsZW5ndGg7XG5cdFx0dmFyIG8gPSBwYXJzZV9jZWxsKGJsb2IsIGxlbmd0aCwgb3B0cyk7XG5cdFx0b1sxXS50ID0gJ3MnO1xuXHRcdGlmKG9wdHMudmVycyA9PSAweDUxMjApIHtcblx0XHRcdGJsb2IubCsrO1xuXHRcdFx0dmFyIGxlbiA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0XHRcdG9bMV0udiA9IGJsb2IucmVhZF9zaGlmdChsZW4sICd1dGY4Jyk7XG5cdFx0XHRyZXR1cm4gbztcblx0XHR9XG5cdFx0aWYob3B0cy5xcHJvKSBibG9iLmwrKztcblx0XHRvWzFdLnYgPSBibG9iLnJlYWRfc2hpZnQodGd0IC0gYmxvYi5sLCAnY3N0cicpO1xuXHRcdHJldHVybiBvO1xuXHR9XG5cdGZ1bmN0aW9uIHdyaXRlX0xBQkVMKFIsIEMsIHMpIHtcblx0XHQvKiBUT0RPOiBlbmNvZGluZyAqL1xuXHRcdHZhciBvID0gbmV3X2J1Zig3ICsgcy5sZW5ndGgpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgMHhGRik7XG5cdFx0by53cml0ZV9zaGlmdCgyLCBDKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIFIpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgMHgyNyk7IC8vID8/XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IG8ubGVuZ3RoOyArK2kpIHtcblx0XHRcdHZhciBjYyA9IHMuY2hhckNvZGVBdChpKTtcblx0XHRcdG8ud3JpdGVfc2hpZnQoMSwgY2MgPj0gMHg4MCA/IDB4NUYgOiBjYyk7XG5cdFx0fVxuXHRcdG8ud3JpdGVfc2hpZnQoMSwgMCk7XG5cdFx0cmV0dXJuIG87XG5cdH1cblxuXHRmdW5jdGlvbiBwYXJzZV9JTlRFR0VSKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRcdHZhciBvID0gcGFyc2VfY2VsbChibG9iLCBsZW5ndGgsIG9wdHMpO1xuXHRcdG9bMV0udiA9IGJsb2IucmVhZF9zaGlmdCgyLCAnaScpO1xuXHRcdHJldHVybiBvO1xuXHR9XG5cdGZ1bmN0aW9uIHdyaXRlX0lOVEVHRVIoUiwgQywgdikge1xuXHRcdHZhciBvID0gbmV3X2J1Zig3KTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIDB4RkYpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgQyk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCBSKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIHYsICdpJyk7XG5cdFx0cmV0dXJuIG87XG5cdH1cblxuXHRmdW5jdGlvbiBwYXJzZV9OVU1CRVIoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdFx0dmFyIG8gPSBwYXJzZV9jZWxsKGJsb2IsIGxlbmd0aCwgb3B0cyk7XG5cdFx0b1sxXS52ID0gYmxvYi5yZWFkX3NoaWZ0KDgsICdmJyk7XG5cdFx0cmV0dXJuIG87XG5cdH1cblx0ZnVuY3Rpb24gd3JpdGVfTlVNQkVSKFIsIEMsIHYpIHtcblx0XHR2YXIgbyA9IG5ld19idWYoMTMpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgMHhGRik7XG5cdFx0by53cml0ZV9zaGlmdCgyLCBDKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIFIpO1xuXHRcdG8ud3JpdGVfc2hpZnQoOCwgdiwgJ2YnKTtcblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX0ZPUk1VTEEoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdFx0dmFyIHRndCA9IGJsb2IubCArIGxlbmd0aDtcblx0XHR2YXIgbyA9IHBhcnNlX2NlbGwoYmxvYiwgbGVuZ3RoLCBvcHRzKTtcblx0XHQvKiBUT0RPOiBmb3JtdWxhICovXG5cdFx0b1sxXS52ID0gYmxvYi5yZWFkX3NoaWZ0KDgsICdmJyk7XG5cdFx0aWYob3B0cy5xcHJvKSBibG9iLmwgPSB0Z3Q7XG5cdFx0ZWxzZSB7XG5cdFx0XHR2YXIgZmxlbiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHRcdHdrMV9mbWxhX3RvX2NzZihibG9iLnNsaWNlKGJsb2IubCwgYmxvYi5sICsgZmxlbiksIG8pO1xuXHRcdFx0YmxvYi5sICs9IGZsZW47XG5cdFx0fVxuXHRcdHJldHVybiBvO1xuXHR9XG5cblx0ZnVuY3Rpb24gd2sxX3BhcnNlX3JjKEIsIFYsIGNvbCkge1xuXHRcdHZhciByZWwgPSBWICYgMHg4MDAwO1xuXHRcdFYgJj0gfjB4ODAwMDtcblx0XHRWID0gKHJlbCA/IEIgOiAwKSArICgoViA+PSAweDIwMDApID8gViAtIDB4NDAwMCA6IFYpO1xuXHRcdHJldHVybiAocmVsID8gXCJcIiA6IFwiJFwiKSArIChjb2wgPyBlbmNvZGVfY29sKFYpIDogZW5jb2RlX3JvdyhWKSk7XG5cdH1cblx0LyogdmFyIG9wcmVjID0gW1xuXHRcdDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDYsIDQsIDQsIDUsIDUsIDcsIDMsIDMsXG5cdFx0MywgMywgMywgMywgMSwgMSwgMiwgNiwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOFxuXHRdOyAqL1xuXHQvKiBUT0RPOiBmbGVzaCBvdXQgKi9cblx0dmFyIEZ1bmNUYWIgPSB7XG5cdFx0MHgzMzogW1wiRkFMU0VcIiwgMF0sXG5cdFx0MHgzNDogW1wiVFJVRVwiLCAwXSxcblx0XHQweDQ2OiBbXCJMRU5cIiwgMV0sXG5cdFx0MHg1MDogW1wiU1VNXCIsIDY5XSxcblx0XHQweDUxOiBbXCJBVkVSQUdFQVwiLCA2OV0sXG5cdFx0MHg1MjogW1wiQ09VTlRBXCIsIDY5XSxcblx0XHQweDUzOiBbXCJNSU5BXCIsIDY5XSxcblx0XHQweDU0OiBbXCJNQVhBXCIsIDY5XSxcblx0XHQweDZGOiBbXCJUXCIsIDFdXG5cdH07XG5cdHZhciBCaW5PcFRhYiA9IFtcblx0XHQgIFwiXCIsICAgXCJcIiwgICBcIlwiLCAgIFwiXCIsICAgXCJcIiwgICBcIlwiLCAgIFwiXCIsICAgXCJcIiwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1taXhlZC1zcGFjZXMtYW5kLXRhYnNcblx0XHQgIFwiXCIsICBcIitcIiwgIFwiLVwiLCAgXCIqXCIsICBcIi9cIiwgIFwiXlwiLCAgXCI9XCIsIFwiPD5cIiwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1taXhlZC1zcGFjZXMtYW5kLXRhYnNcblx0XHRcIjw9XCIsIFwiPj1cIiwgIFwiPFwiLCAgXCI+XCIsICAgXCJcIiwgICBcIlwiLCAgIFwiXCIsICAgXCJcIiwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1taXhlZC1zcGFjZXMtYW5kLXRhYnNcblx0XHQgXCImXCIsICAgXCJcIiwgICBcIlwiLCAgIFwiXCIsICAgXCJcIiwgICBcIlwiLCAgIFwiXCIsICAgXCJcIiAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1taXhlZC1zcGFjZXMtYW5kLXRhYnNcblx0XTtcblxuXHRmdW5jdGlvbiB3azFfZm1sYV90b19jc2YoYmxvYiwgbykge1xuXHRcdHByZXBfYmxvYihibG9iLCAwKTtcblx0XHR2YXIgb3V0ID0gW10sIGFyZ2MgPSAwLCBSID0gXCJcIiwgQyA9IFwiXCIsIGFyZ0wgPSBcIlwiLCBhcmdSID0gXCJcIjtcblx0XHR3aGlsZShibG9iLmwgPCBibG9iLmxlbmd0aCkge1xuXHRcdFx0dmFyIGNjID0gYmxvYltibG9iLmwrK107XG5cdFx0XHRzd2l0Y2goY2MpIHtcblx0XHRcdFx0Y2FzZSAweDAwOiBvdXQucHVzaChibG9iLnJlYWRfc2hpZnQoOCwgJ2YnKSk7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDE6IHtcblx0XHRcdFx0XHRDID0gd2sxX3BhcnNlX3JjKG9bMF0uYywgYmxvYi5yZWFkX3NoaWZ0KDIpLCB0cnVlKTtcblx0XHRcdFx0XHRSID0gd2sxX3BhcnNlX3JjKG9bMF0uciwgYmxvYi5yZWFkX3NoaWZ0KDIpLCBmYWxzZSk7XG5cdFx0XHRcdFx0b3V0LnB1c2goQyArIFIpO1xuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDI6IHtcblx0XHRcdFx0XHR2YXIgYyA9IHdrMV9wYXJzZV9yYyhvWzBdLmMsIGJsb2IucmVhZF9zaGlmdCgyKSwgdHJ1ZSk7XG5cdFx0XHRcdFx0dmFyIHIgPSB3azFfcGFyc2VfcmMob1swXS5yLCBibG9iLnJlYWRfc2hpZnQoMiksIGZhbHNlKTtcblx0XHRcdFx0XHRDID0gd2sxX3BhcnNlX3JjKG9bMF0uYywgYmxvYi5yZWFkX3NoaWZ0KDIpLCB0cnVlKTtcblx0XHRcdFx0XHRSID0gd2sxX3BhcnNlX3JjKG9bMF0uciwgYmxvYi5yZWFkX3NoaWZ0KDIpLCBmYWxzZSk7XG5cdFx0XHRcdFx0b3V0LnB1c2goYyArIHIgKyBcIjpcIiArIEMgKyBSKTtcblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAzOlxuXHRcdFx0XHRcdGlmKGJsb2IubCA8IGJsb2IubGVuZ3RoKSB7IGNvbnNvbGUuZXJyb3IoXCJXSzEgcHJlbWF0dXJlIGZvcm11bGEgZW5kXCIpOyByZXR1cm47IH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAweDA0OiBvdXQucHVzaChcIihcIiArIG91dC5wb3AoKSArIFwiKVwiKTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwNTogb3V0LnB1c2goYmxvYi5yZWFkX3NoaWZ0KDIpKTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwNjoge1xuXHRcdFx0XHRcdC8qIFRPRE86IHRleHQgZW5jb2RpbmcgKi9cblx0XHRcdFx0XHR2YXIgWiA9IFwiXCI7IHdoaWxlKChjYyA9IGJsb2JbYmxvYi5sKytdKSkgWiArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNjKTtcblx0XHRcdFx0XHRvdXQucHVzaCgnXCInICsgWi5yZXBsYWNlKC9cIi9nLCAnXCJcIicpICsgJ1wiJyk7XG5cdFx0XHRcdH0gYnJlYWs7XG5cblx0XHRcdFx0Y2FzZSAweDA4OiBvdXQucHVzaChcIi1cIiArIG91dC5wb3AoKSk7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MTc6IG91dC5wdXNoKFwiK1wiICsgb3V0LnBvcCgpKTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgxNjogb3V0LnB1c2goXCJOT1QoXCIgKyBvdXQucG9wKCkgKyBcIilcIik7IGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgMHgxNDogY2FzZSAweDE1OiB7XG5cdFx0XHRcdFx0YXJnUiA9IG91dC5wb3AoKTsgYXJnTCA9IG91dC5wb3AoKTtcblx0XHRcdFx0XHRvdXQucHVzaChbXCJBTkRcIiwgXCJPUlwiXVtjYyAtIDB4MTRdICsgXCIoXCIgKyBhcmdMICsgXCIsXCIgKyBhcmdSICsgXCIpXCIpO1xuXHRcdFx0XHR9IGJyZWFrO1xuXG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0aWYoY2MgPCAweDIwICYmIEJpbk9wVGFiW2NjXSkge1xuXHRcdFx0XHRcdFx0YXJnUiA9IG91dC5wb3AoKTsgYXJnTCA9IG91dC5wb3AoKTtcblx0XHRcdFx0XHRcdG91dC5wdXNoKGFyZ0wgKyBCaW5PcFRhYltjY10gKyBhcmdSKTtcblx0XHRcdFx0XHR9IGVsc2UgaWYoRnVuY1RhYltjY10pIHtcblx0XHRcdFx0XHRcdGFyZ2MgPSBGdW5jVGFiW2NjXVsxXTtcblx0XHRcdFx0XHRcdGlmKGFyZ2MgPT0gNjkpIGFyZ2MgPSBibG9iW2Jsb2IubCsrXTtcblx0XHRcdFx0XHRcdGlmKGFyZ2MgPiBvdXQubGVuZ3RoKSB7IGNvbnNvbGUuZXJyb3IoXCJXSzEgYmFkIGZvcm11bGEgcGFyc2UgMHhcIiArIGNjLnRvU3RyaW5nKDE2KSArIFwiOnxcIiArIG91dC5qb2luKFwifFwiKSArIFwifFwiKTsgcmV0dXJuOyB9XG5cdFx0XHRcdFx0XHR2YXIgYXJncyA9IG91dC5zbGljZSgtYXJnYyk7XG5cdFx0XHRcdFx0XHRvdXQubGVuZ3RoIC09IGFyZ2M7XG5cdFx0XHRcdFx0XHRvdXQucHVzaChGdW5jVGFiW2NjXVswXSArIFwiKFwiICsgYXJncy5qb2luKFwiLFwiKSArIFwiKVwiKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZWxzZSBpZihjYyA8PSAweDA3KSByZXR1cm4gY29uc29sZS5lcnJvcihcIldLMSBpbnZhbGlkIG9wY29kZSBcIiArIGNjLnRvU3RyaW5nKDE2KSk7XG5cdFx0XHRcdFx0ZWxzZSBpZihjYyA8PSAweDE4KSByZXR1cm4gY29uc29sZS5lcnJvcihcIldLMSB1bnN1cHBvcnRlZCBvcCBcIiArIGNjLnRvU3RyaW5nKDE2KSk7XG5cdFx0XHRcdFx0ZWxzZSBpZihjYyA8PSAweDFFKSByZXR1cm4gY29uc29sZS5lcnJvcihcIldLMSBpbnZhbGlkIG9wY29kZSBcIiArIGNjLnRvU3RyaW5nKDE2KSk7XG5cdFx0XHRcdFx0ZWxzZSBpZihjYyA8PSAweDczKSByZXR1cm4gY29uc29sZS5lcnJvcihcIldLMSB1bnN1cHBvcnRlZCBmdW5jdGlvbiBvcGNvZGUgXCIgKyBjYy50b1N0cmluZygxNikpO1xuXHRcdFx0XHRcdC8vIHBvc3NpYmxlIGZ1dHVyZSBmdW5jdGlvbnMgPz9cblx0XHRcdFx0XHRlbHNlIHJldHVybiBjb25zb2xlLmVycm9yKFwiV0sxIHVucmVjb2duaXplZCBvcGNvZGUgXCIgKyBjYy50b1N0cmluZygxNikpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZihvdXQubGVuZ3RoID09IDEpIG9bMV0uZiA9IFwiXCIgKyBvdXRbMF07XG5cdFx0ZWxzZSBjb25zb2xlLmVycm9yKFwiV0sxIGJhZCBmb3JtdWxhIHBhcnNlIHxcIiArIG91dC5qb2luKFwifFwiKSArIFwifFwiKTtcblx0fVxuXG5cblx0ZnVuY3Rpb24gcGFyc2VfY2VsbF8zKGJsb2IvKjo6LCBsZW5ndGgqLykge1xuXHRcdHZhciBvID0gW3tjOjAscjowfSwge3Q6J24nLHY6MH0sIDBdO1xuXHRcdG9bMF0uciA9IGJsb2IucmVhZF9zaGlmdCgyKTsgb1szXSA9IGJsb2JbYmxvYi5sKytdOyBvWzBdLmMgPSBibG9iW2Jsb2IubCsrXTtcblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX0xBQkVMXzE2KGJsb2IsIGxlbmd0aCkge1xuXHRcdHZhciBvID0gcGFyc2VfY2VsbF8zKGJsb2IsIGxlbmd0aCk7XG5cdFx0b1sxXS50ID0gJ3MnO1xuXHRcdG9bMV0udiA9IGJsb2IucmVhZF9zaGlmdChsZW5ndGggLSA0LCAnY3N0cicpO1xuXHRcdHJldHVybiBvO1xuXHR9XG5cdGZ1bmN0aW9uIHdyaXRlX0xBQkVMXzE2KFIsIEMsIHdzaWR4LCBzKSB7XG5cdFx0LyogVE9ETzogZW5jb2RpbmcgKi9cblx0XHR2YXIgbyA9IG5ld19idWYoNiArIHMubGVuZ3RoKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIFIpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgd3NpZHgpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgQyk7XG5cdFx0by53cml0ZV9zaGlmdCgxLCAweDI3KTtcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgcy5sZW5ndGg7ICsraSkge1xuXHRcdFx0dmFyIGNjID0gcy5jaGFyQ29kZUF0KGkpO1xuXHRcdFx0by53cml0ZV9zaGlmdCgxLCBjYyA+PSAweDgwID8gMHg1RiA6IGNjKTtcblx0XHR9XG5cdFx0by53cml0ZV9zaGlmdCgxLCAwKTtcblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX05VTUJFUl8xOChibG9iLCBsZW5ndGgpIHtcblx0XHR2YXIgbyA9IHBhcnNlX2NlbGxfMyhibG9iLCBsZW5ndGgpO1xuXHRcdG9bMV0udiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHR2YXIgdiA9IG9bMV0udiA+PiAxO1xuXHRcdGlmKG9bMV0udiAmIDB4MSkge1xuXHRcdFx0c3dpdGNoKHYgJiAweDA3KSB7XG5cdFx0XHRcdGNhc2UgMDogdiA9ICh2ID4+IDMpICogNTAwMDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMTogdiA9ICh2ID4+IDMpICogNTAwOyBicmVhaztcblx0XHRcdFx0Y2FzZSAyOiB2ID0gKHYgPj4gMykgLyAyMDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMzogdiA9ICh2ID4+IDMpIC8gMjAwOyBicmVhaztcblx0XHRcdFx0Y2FzZSA0OiB2ID0gKHYgPj4gMykgLyAyMDAwOyBicmVhaztcblx0XHRcdFx0Y2FzZSA1OiB2ID0gKHYgPj4gMykgLyAyMDAwMDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgNjogdiA9ICh2ID4+IDMpIC8gMTY7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDc6IHYgPSAodiA+PiAzKSAvIDY0OyBicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdFx0b1sxXS52ID0gdjtcblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX05VTUJFUl8xNyhibG9iLCBsZW5ndGgpIHtcblx0XHR2YXIgbyA9IHBhcnNlX2NlbGxfMyhibG9iLCBsZW5ndGgpO1xuXHRcdHZhciB2MSA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0XHR2YXIgdjIgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdFx0dmFyIGUgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0aWYoZSA9PSAweEZGRkYpIHtcblx0XHRcdGlmKHYxID09PSAwICYmIHYyID09PSAweEMwMDAwMDAwKSB7IG9bMV0udCA9IFwiZVwiOyBvWzFdLnYgPSAweDBGOyB9IC8vIEVSUiAtPiAjVkFMVUUhXG5cdFx0XHRlbHNlIGlmKHYxID09PSAwICYmIHYyID09PSAweEQwMDAwMDAwKSB7IG9bMV0udCA9IFwiZVwiOyBvWzFdLnYgPSAweDJBOyB9IC8vIE5BIC0+ICNOL0Fcblx0XHRcdGVsc2Ugb1sxXS52ID0gMDtcblx0XHRcdHJldHVybiBvO1xuXHRcdH1cblx0XHR2YXIgcyA9IGUgJiAweDgwMDA7IGUgPSAoZSYweDdGRkYpIC0gMTY0NDY7XG5cdFx0b1sxXS52ID0gKDEgLSBzKjIpICogKHYyICogTWF0aC5wb3coMiwgZSszMikgKyB2MSAqIE1hdGgucG93KDIsIGUpKTtcblx0XHRyZXR1cm4gbztcblx0fVxuXHRmdW5jdGlvbiB3cml0ZV9OVU1CRVJfMTcoUiwgQywgd3NpZHgsIHYpIHtcblx0XHR2YXIgbyA9IG5ld19idWYoMTQpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgUik7XG5cdFx0by53cml0ZV9zaGlmdCgxLCB3c2lkeCk7XG5cdFx0by53cml0ZV9zaGlmdCgxLCBDKTtcblx0XHRpZih2ID09IDApIHtcblx0XHRcdG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdFx0XHRvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRcdFx0by53cml0ZV9zaGlmdCgyLCAweEZGRkYpO1xuXHRcdFx0cmV0dXJuIG87XG5cdFx0fVxuXHRcdHZhciBzID0gMCwgZSA9IDAsIHYxID0gMCwgdjIgPSAwO1xuXHRcdGlmKHYgPCAwKSB7IHMgPSAxOyB2ID0gLXY7IH1cblx0XHRlID0gTWF0aC5sb2cyKHYpIHwgMDtcblx0XHR2IC89IE1hdGgucG93KDIsIGUtMzEpO1xuXHRcdHYyID0gKHYpPj4+MDtcblx0XHRpZigodjImMHg4MDAwMDAwMCkgPT0gMCkgeyB2Lz0yOyArK2U7IHYyID0gdiA+Pj4gMDsgfVxuXHRcdHYgLT0gdjI7XG5cdFx0djIgfD0gMHg4MDAwMDAwMDtcblx0XHR2MiA+Pj49IDA7XG5cdFx0diAqPSBNYXRoLnBvdygyLCAzMik7XG5cdFx0djEgPSB2Pj4+MDtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIHYxKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIHYyKTtcblx0XHRlICs9IDB4M0ZGRiArIChzID8gMHg4MDAwIDogMCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCBlKTtcblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX0ZPUk1VTEFfMTkoYmxvYiwgbGVuZ3RoKSB7XG5cdFx0dmFyIG8gPSBwYXJzZV9OVU1CRVJfMTcoYmxvYiwgMTQpO1xuXHRcdGJsb2IubCArPSBsZW5ndGggLSAxNDsgLyogVE9ETzogV0szIGZvcm11bGEgKi9cblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX05VTUJFUl8yNShibG9iLCBsZW5ndGgpIHtcblx0XHR2YXIgbyA9IHBhcnNlX2NlbGxfMyhibG9iLCBsZW5ndGgpO1xuXHRcdHZhciB2MSA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0XHRvWzFdLnYgPSB2MSA+PiA2O1xuXHRcdHJldHVybiBvO1xuXHR9XG5cblx0ZnVuY3Rpb24gcGFyc2VfTlVNQkVSXzI3KGJsb2IsIGxlbmd0aCkge1xuXHRcdHZhciBvID0gcGFyc2VfY2VsbF8zKGJsb2IsIGxlbmd0aCk7XG5cdFx0dmFyIHYxID0gYmxvYi5yZWFkX3NoaWZ0KDgsJ2YnKTtcblx0XHRvWzFdLnYgPSB2MTtcblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX0ZPUk1VTEFfMjgoYmxvYiwgbGVuZ3RoKSB7XG5cdFx0dmFyIG8gPSBwYXJzZV9OVU1CRVJfMjcoYmxvYiwgMTQpO1xuXHRcdGJsb2IubCArPSBsZW5ndGggLSAxMDsgLyogVE9ETzogZm9ybXVsYSAqL1xuXHRcdHJldHVybiBvO1xuXHR9XG5cblx0ZnVuY3Rpb24gcGFyc2VfU0hFRVROQU1FQ1MoYmxvYiwgbGVuZ3RoKSB7XG5cdFx0cmV0dXJuIGJsb2JbYmxvYi5sICsgbGVuZ3RoIC0gMV0gPT0gMCA/IGJsb2IucmVhZF9zaGlmdChsZW5ndGgsICdjc3RyJykgOiBcIlwiO1xuXHR9XG5cblx0ZnVuY3Rpb24gcGFyc2VfU0hFRVROQU1FTFAoYmxvYiwgbGVuZ3RoKSB7XG5cdFx0dmFyIGxlbiA9IGJsb2JbYmxvYi5sKytdO1xuXHRcdGlmKGxlbiA+IGxlbmd0aCAtIDEpIGxlbiA9IGxlbmd0aCAtIDE7XG5cdFx0dmFyIG8gPSBcIlwiOyB3aGlsZShvLmxlbmd0aCA8IGxlbikgbyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJsb2JbYmxvYi5sKytdKTtcblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX1NIRUVUSU5GT1FQKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRcdGlmKCFvcHRzLnFwcm8gfHwgbGVuZ3RoIDwgMjEpIHJldHVybjtcblx0XHR2YXIgaWQgPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdFx0YmxvYi5sICs9IDE3O1xuXHRcdGJsb2IubCArPSAxOyAvL3ZhciBsZW4gPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdFx0YmxvYi5sICs9IDI7XG5cdFx0dmFyIG5tID0gYmxvYi5yZWFkX3NoaWZ0KGxlbmd0aCAtIDIxLCAnY3N0cicpO1xuXHRcdHJldHVybiBbaWQsIG5tXTtcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX1hGT1JNQVQoYmxvYiwgbGVuZ3RoKSB7XG5cdFx0dmFyIG8gPSB7fSwgdGd0ID0gYmxvYi5sICsgbGVuZ3RoO1xuXHRcdHdoaWxlKGJsb2IubCA8IHRndCkge1xuXHRcdFx0dmFyIGR0ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdFx0aWYoZHQgPT0gMHgzNmIwKSB7XG5cdFx0XHRcdG9bZHRdID0gWzAsIFwiXCJdO1xuXHRcdFx0XHRvW2R0XVswXSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHRcdFx0d2hpbGUoYmxvYltibG9iLmxdKSB7IG9bZHRdWzFdICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYmxvYltibG9iLmxdKTsgYmxvYi5sKys7IH0gYmxvYi5sKys7XG5cdFx0XHR9XG5cdFx0XHQvLyBUT0RPOiAweDNhOTkgPz9cblx0XHR9XG5cdFx0cmV0dXJuIG87XG5cdH1cblx0ZnVuY3Rpb24gd3JpdGVfWEZPUk1BVF9TSEVFVE5BTUUobmFtZSwgd3NpZHgpIHtcblx0XHR2YXIgb3V0ID0gbmV3X2J1Zig1ICsgbmFtZS5sZW5ndGgpO1xuXHRcdG91dC53cml0ZV9zaGlmdCgyLCAweDM2YjApO1xuXHRcdG91dC53cml0ZV9zaGlmdCgyLCB3c2lkeCk7XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyArK2kpIHtcblx0XHRcdHZhciBjYyA9IG5hbWUuY2hhckNvZGVBdChpKTtcblx0XHRcdG91dFtvdXQubCsrXSA9IGNjID4gMHg3RiA/IDB4NUYgOiBjYztcblx0XHR9XG5cdFx0b3V0W291dC5sKytdID0gMDtcblx0XHRyZXR1cm4gb3V0O1xuXHR9XG5cblx0dmFyIFdLMUVudW0gPSB7XG5cdFx0Lyo6OlsqLzB4MDAwMC8qOjpdKi86IHsgbjpcIkJPRlwiLCBmOnBhcnNldWludDE2IH0sXG5cdFx0Lyo6OlsqLzB4MDAwMS8qOjpdKi86IHsgbjpcIkVPRlwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwMi8qOjpdKi86IHsgbjpcIkNBTENNT0RFXCIgfSxcblx0XHQvKjo6WyovMHgwMDAzLyo6Ol0qLzogeyBuOlwiQ0FMQ09SREVSXCIgfSxcblx0XHQvKjo6WyovMHgwMDA0Lyo6Ol0qLzogeyBuOlwiU1BMSVRcIiB9LFxuXHRcdC8qOjpbKi8weDAwMDUvKjo6XSovOiB7IG46XCJTWU5DXCIgfSxcblx0XHQvKjo6WyovMHgwMDA2Lyo6Ol0qLzogeyBuOlwiUkFOR0VcIiwgZjpwYXJzZV9SQU5HRSB9LFxuXHRcdC8qOjpbKi8weDAwMDcvKjo6XSovOiB7IG46XCJXSU5ET1cxXCIgfSxcblx0XHQvKjo6WyovMHgwMDA4Lyo6Ol0qLzogeyBuOlwiQ09MVzFcIiB9LFxuXHRcdC8qOjpbKi8weDAwMDkvKjo6XSovOiB7IG46XCJXSU5UV09cIiB9LFxuXHRcdC8qOjpbKi8weDAwMEEvKjo6XSovOiB7IG46XCJDT0xXMlwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwQi8qOjpdKi86IHsgbjpcIk5BTUVcIiB9LFxuXHRcdC8qOjpbKi8weDAwMEMvKjo6XSovOiB7IG46XCJCTEFOS1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwRC8qOjpdKi86IHsgbjpcIklOVEVHRVJcIiwgZjpwYXJzZV9JTlRFR0VSIH0sXG5cdFx0Lyo6OlsqLzB4MDAwRS8qOjpdKi86IHsgbjpcIk5VTUJFUlwiLCBmOnBhcnNlX05VTUJFUiB9LFxuXHRcdC8qOjpbKi8weDAwMEYvKjo6XSovOiB7IG46XCJMQUJFTFwiLCBmOnBhcnNlX0xBQkVMIH0sXG5cdFx0Lyo6OlsqLzB4MDAxMC8qOjpdKi86IHsgbjpcIkZPUk1VTEFcIiwgZjpwYXJzZV9GT1JNVUxBIH0sXG5cdFx0Lyo6OlsqLzB4MDAxOC8qOjpdKi86IHsgbjpcIlRBQkxFXCIgfSxcblx0XHQvKjo6WyovMHgwMDE5Lyo6Ol0qLzogeyBuOlwiT1JBTkdFXCIgfSxcblx0XHQvKjo6WyovMHgwMDFBLyo6Ol0qLzogeyBuOlwiUFJBTkdFXCIgfSxcblx0XHQvKjo6WyovMHgwMDFCLyo6Ol0qLzogeyBuOlwiU1JBTkdFXCIgfSxcblx0XHQvKjo6WyovMHgwMDFDLyo6Ol0qLzogeyBuOlwiRlJBTkdFXCIgfSxcblx0XHQvKjo6WyovMHgwMDFELyo6Ol0qLzogeyBuOlwiS1JBTkdFMVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyMC8qOjpdKi86IHsgbjpcIkhSQU5HRVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyMy8qOjpdKi86IHsgbjpcIktSQU5HRTJcIiB9LFxuXHRcdC8qOjpbKi8weDAwMjQvKjo6XSovOiB7IG46XCJQUk9URUNcIiB9LFxuXHRcdC8qOjpbKi8weDAwMjUvKjo6XSovOiB7IG46XCJGT09URVJcIiB9LFxuXHRcdC8qOjpbKi8weDAwMjYvKjo6XSovOiB7IG46XCJIRUFERVJcIiB9LFxuXHRcdC8qOjpbKi8weDAwMjcvKjo6XSovOiB7IG46XCJTRVRVUFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyOC8qOjpdKi86IHsgbjpcIk1BUkdJTlNcIiB9LFxuXHRcdC8qOjpbKi8weDAwMjkvKjo6XSovOiB7IG46XCJMQUJFTEZNVFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyQS8qOjpdKi86IHsgbjpcIlRJVExFU1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyQi8qOjpdKi86IHsgbjpcIlNIRUVUSlNcIiB9LFxuXHRcdC8qOjpbKi8weDAwMkQvKjo6XSovOiB7IG46XCJHUkFQSFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyRS8qOjpdKi86IHsgbjpcIk5HUkFQSFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyRi8qOjpdKi86IHsgbjpcIkNBTENDT1VOVFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAzMC8qOjpdKi86IHsgbjpcIlVORk9STUFUVEVEXCIgfSxcblx0XHQvKjo6WyovMHgwMDMxLyo6Ol0qLzogeyBuOlwiQ1VSU09SVzEyXCIgfSxcblx0XHQvKjo6WyovMHgwMDMyLyo6Ol0qLzogeyBuOlwiV0lORE9XXCIgfSxcblx0XHQvKjo6WyovMHgwMDMzLyo6Ol0qLzogeyBuOlwiU1RSSU5HXCIsIGY6cGFyc2VfTEFCRUwgfSxcblx0XHQvKjo6WyovMHgwMDM3Lyo6Ol0qLzogeyBuOlwiUEFTU1dPUkRcIiB9LFxuXHRcdC8qOjpbKi8weDAwMzgvKjo6XSovOiB7IG46XCJMT0NLRURcIiB9LFxuXHRcdC8qOjpbKi8weDAwM0MvKjo6XSovOiB7IG46XCJRVUVSWVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAzRC8qOjpdKi86IHsgbjpcIlFVRVJZTkFNRVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAzRS8qOjpdKi86IHsgbjpcIlBSSU5UXCIgfSxcblx0XHQvKjo6WyovMHgwMDNGLyo6Ol0qLzogeyBuOlwiUFJJTlROQU1FXCIgfSxcblx0XHQvKjo6WyovMHgwMDQwLyo6Ol0qLzogeyBuOlwiR1JBUEgyXCIgfSxcblx0XHQvKjo6WyovMHgwMDQxLyo6Ol0qLzogeyBuOlwiR1JBUEhOQU1FXCIgfSxcblx0XHQvKjo6WyovMHgwMDQyLyo6Ol0qLzogeyBuOlwiWk9PTVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDA0My8qOjpdKi86IHsgbjpcIlNZTVNQTElUXCIgfSxcblx0XHQvKjo6WyovMHgwMDQ0Lyo6Ol0qLzogeyBuOlwiTlNST1dTXCIgfSxcblx0XHQvKjo6WyovMHgwMDQ1Lyo6Ol0qLzogeyBuOlwiTlNDT0xTXCIgfSxcblx0XHQvKjo6WyovMHgwMDQ2Lyo6Ol0qLzogeyBuOlwiUlVMRVJcIiB9LFxuXHRcdC8qOjpbKi8weDAwNDcvKjo6XSovOiB7IG46XCJOTkFNRVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDA0OC8qOjpdKi86IHsgbjpcIkFDT01NXCIgfSxcblx0XHQvKjo6WyovMHgwMDQ5Lyo6Ol0qLzogeyBuOlwiQU1BQ1JPXCIgfSxcblx0XHQvKjo6WyovMHgwMDRBLyo6Ol0qLzogeyBuOlwiUEFSU0VcIiB9LFxuXHRcdC8qOjpbKi8weDAwNjYvKjo6XSovOiB7IG46XCJQUkFOR0VTPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwNjcvKjo6XSovOiB7IG46XCJSUkFOR0VTPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwNjgvKjo6XSovOiB7IG46XCJGTkFNRT8/XCIgfSxcblx0XHQvKjo6WyovMHgwMDY5Lyo6Ol0qLzogeyBuOlwiTVJBTkdFUz8/XCIgfSxcblx0XHQvKjo6WyovMHgwMENDLyo6Ol0qLzogeyBuOlwiU0hFRVROQU1FQ1NcIiwgZjpwYXJzZV9TSEVFVE5BTUVDUyB9LFxuXHRcdC8qOjpbKi8weDAwREUvKjo6XSovOiB7IG46XCJTSEVFVE5BTUVMUFwiLCBmOnBhcnNlX1NIRUVUTkFNRUxQIH0sXG5cdFx0Lyo6OlsqLzB4RkZGRi8qOjpdKi86IHsgbjpcIlwiIH1cblx0fTtcblxuXHR2YXIgV0szRW51bSA9IHtcblx0XHQvKjo6WyovMHgwMDAwLyo6Ol0qLzogeyBuOlwiQk9GXCIgfSxcblx0XHQvKjo6WyovMHgwMDAxLyo6Ol0qLzogeyBuOlwiRU9GXCIgfSxcblx0XHQvKjo6WyovMHgwMDAyLyo6Ol0qLzogeyBuOlwiUEFTU1dPUkRcIiB9LFxuXHRcdC8qOjpbKi8weDAwMDMvKjo6XSovOiB7IG46XCJDQUxDU0VUXCIgfSxcblx0XHQvKjo6WyovMHgwMDA0Lyo6Ol0qLzogeyBuOlwiV0lORE9XU0VUXCIgfSxcblx0XHQvKjo6WyovMHgwMDA1Lyo6Ol0qLzogeyBuOlwiU0hFRVRDRUxMUFRSXCIgfSxcblx0XHQvKjo6WyovMHgwMDA2Lyo6Ol0qLzogeyBuOlwiU0hFRVRMQVlPVVRcIiB9LFxuXHRcdC8qOjpbKi8weDAwMDcvKjo6XSovOiB7IG46XCJDT0xVTU5XSURUSFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwOC8qOjpdKi86IHsgbjpcIkhJRERFTkNPTFVNTlwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwOS8qOjpdKi86IHsgbjpcIlVTRVJSQU5HRVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwQS8qOjpdKi86IHsgbjpcIlNZU1RFTVJBTkdFXCIgfSxcblx0XHQvKjo6WyovMHgwMDBCLyo6Ol0qLzogeyBuOlwiWkVST0ZPUkNFXCIgfSxcblx0XHQvKjo6WyovMHgwMDBDLyo6Ol0qLzogeyBuOlwiU09SVEtFWURJUlwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwRC8qOjpdKi86IHsgbjpcIkZJTEVTRUFMXCIgfSxcblx0XHQvKjo6WyovMHgwMDBFLyo6Ol0qLzogeyBuOlwiREFUQUZJTExOVU1TXCIgfSxcblx0XHQvKjo6WyovMHgwMDBGLyo6Ol0qLzogeyBuOlwiUFJJTlRNQUlOXCIgfSxcblx0XHQvKjo6WyovMHgwMDEwLyo6Ol0qLzogeyBuOlwiUFJJTlRTVFJJTkdcIiB9LFxuXHRcdC8qOjpbKi8weDAwMTEvKjo6XSovOiB7IG46XCJHUkFQSE1BSU5cIiB9LFxuXHRcdC8qOjpbKi8weDAwMTIvKjo6XSovOiB7IG46XCJHUkFQSFNUUklOR1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDAxMy8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMDE0Lyo6Ol0qLzogeyBuOlwiRVJSQ0VMTFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAxNS8qOjpdKi86IHsgbjpcIk5BQ0VMTFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAxNi8qOjpdKi86IHsgbjpcIkxBQkVMMTZcIiwgZjpwYXJzZV9MQUJFTF8xNn0sXG5cdFx0Lyo6OlsqLzB4MDAxNy8qOjpdKi86IHsgbjpcIk5VTUJFUjE3XCIsIGY6cGFyc2VfTlVNQkVSXzE3IH0sXG5cdFx0Lyo6OlsqLzB4MDAxOC8qOjpdKi86IHsgbjpcIk5VTUJFUjE4XCIsIGY6cGFyc2VfTlVNQkVSXzE4IH0sXG5cdFx0Lyo6OlsqLzB4MDAxOS8qOjpdKi86IHsgbjpcIkZPUk1VTEExOVwiLCBmOnBhcnNlX0ZPUk1VTEFfMTl9LFxuXHRcdC8qOjpbKi8weDAwMUEvKjo6XSovOiB7IG46XCJGT1JNVUxBMUFcIiB9LFxuXHRcdC8qOjpbKi8weDAwMUIvKjo6XSovOiB7IG46XCJYRk9STUFUXCIsIGY6cGFyc2VfWEZPUk1BVCB9LFxuXHRcdC8qOjpbKi8weDAwMUMvKjo6XSovOiB7IG46XCJEVExBQkVMTUlTQ1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDAxRC8qOjpdKi86IHsgbjpcIkRUTEFCRUxDRUxMXCIgfSxcblx0XHQvKjo6WyovMHgwMDFFLyo6Ol0qLzogeyBuOlwiR1JBUEhXSU5ET1dcIiB9LFxuXHRcdC8qOjpbKi8weDAwMUYvKjo6XSovOiB7IG46XCJDUEFcIiB9LFxuXHRcdC8qOjpbKi8weDAwMjAvKjo6XSovOiB7IG46XCJMUExBVVRPXCIgfSxcblx0XHQvKjo6WyovMHgwMDIxLyo6Ol0qLzogeyBuOlwiUVVFUllcIiB9LFxuXHRcdC8qOjpbKi8weDAwMjIvKjo6XSovOiB7IG46XCJISURERU5TSEVFVFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyMy8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMDI1Lyo6Ol0qLzogeyBuOlwiTlVNQkVSMjVcIiwgZjpwYXJzZV9OVU1CRVJfMjUgfSxcblx0XHQvKjo6WyovMHgwMDI2Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwMjcvKjo6XSovOiB7IG46XCJOVU1CRVIyN1wiLCBmOnBhcnNlX05VTUJFUl8yNyB9LFxuXHRcdC8qOjpbKi8weDAwMjgvKjo6XSovOiB7IG46XCJGT1JNVUxBMjhcIiwgZjpwYXJzZV9GT1JNVUxBXzI4IH0sXG5cdFx0Lyo6OlsqLzB4MDA4RS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMDkzLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwOTYvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDA5Ny8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMDk4Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwOTkvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDA5QS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMDlCLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwOUMvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDBBMy8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMEFFLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwQUYvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDBCMC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMEIxLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwQjgvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDBCOS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMEJBLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwQkIvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDBCQy8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMEMzLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwQzkvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDBDQy8qOjpdKi86IHsgbjpcIlNIRUVUTkFNRUNTXCIsIGY6cGFyc2VfU0hFRVROQU1FQ1MgfSxcblx0XHQvKjo6WyovMHgwMENELyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwQ0UvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDBDRi8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMEQwLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAxMDAvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDEwMy8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMTA0Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAxMDUvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDEwNi8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMTA3Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAxMDkvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDEwQS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMTBCLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAxMEMvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDEwRS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMTBGLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAxODAvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDE4NS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMTg2Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAxODkvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDE4Qy8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjAwLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyMDIvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDIwMS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjA0Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyMDUvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDI4MC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjgxLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyODIvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDI4My8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjg0Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyODUvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDI4Ni8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjg3Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyODgvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDI5Mi8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjkzLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyOTQvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDI5NS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjk2Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyOTkvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDI5QS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMzAwLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAzMDQvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDYwMS8qOjpdKi86IHsgbjpcIlNIRUVUSU5GT1FQXCIsIGY6cGFyc2VfU0hFRVRJTkZPUVAgfSxcblx0XHQvKjo6WyovMHgwNjQwLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDA2NDIvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDcwMS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwNzAyLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDA3MDMvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDcwNC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwNzgwLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDA4MDAvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDgwMS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwODA0Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDBBODAvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MkFGNi8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgzMjMxLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDZFNDkvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4NkY0NC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHhGRkZGLyo6Ol0qLzogeyBuOlwiXCIgfVxuXHR9O1xuXHRyZXR1cm4ge1xuXHRcdHNoZWV0X3RvX3drMTogc2hlZXRfdG9fd2sxLFxuXHRcdGJvb2tfdG9fd2szOiBib29rX3RvX3drMyxcblx0XHR0b193b3JrYm9vazogbG90dXNfdG9fd29ya2Jvb2tcblx0fTtcbn0pKCk7XG4vKiAxOC40LjcgclByIENUX1JQckVsdCAqL1xuZnVuY3Rpb24gcGFyc2VfcnByKHJwcikge1xuXHR2YXIgZm9udCA9IHt9LCBtID0gcnByLm1hdGNoKHRhZ3JlZ2V4KSwgaSA9IDA7XG5cdHZhciBwYXNzID0gZmFsc2U7XG5cdGlmKG0pIGZvcig7aSE9bS5sZW5ndGg7ICsraSkge1xuXHRcdHZhciB5ID0gcGFyc2V4bWx0YWcobVtpXSk7XG5cdFx0c3dpdGNoKHlbMF0ucmVwbGFjZSgvXFx3KjovZyxcIlwiKSkge1xuXHRcdFx0LyogMTguOC4xMiBjb25kZW5zZSBDVF9Cb29sZWFuUHJvcGVydHkgKi9cblx0XHRcdC8qICoqIG5vdCByZXF1aXJlZCAuICovXG5cdFx0XHRjYXNlICc8Y29uZGVuc2UnOiBicmVhaztcblx0XHRcdC8qIDE4LjguMTcgZXh0ZW5kIENUX0Jvb2xlYW5Qcm9wZXJ0eSAqL1xuXHRcdFx0LyogKiogbm90IHJlcXVpcmVkIC4gKi9cblx0XHRcdGNhc2UgJzxleHRlbmQnOiBicmVhaztcblx0XHRcdC8qIDE4LjguMzYgc2hhZG93IENUX0Jvb2xlYW5Qcm9wZXJ0eSAqL1xuXHRcdFx0LyogKiogbm90IHJlcXVpcmVkIC4gKi9cblx0XHRcdGNhc2UgJzxzaGFkb3cnOlxuXHRcdFx0XHRpZigheS52YWwpIGJyZWFrO1xuXHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICc8c2hhZG93Pic6XG5cdFx0XHRjYXNlICc8c2hhZG93Lz4nOiBmb250LnNoYWRvdyA9IDE7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9zaGFkb3c+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjQuMSBjaGFyc2V0IENUX0ludFByb3BlcnR5IFRPRE8gKi9cblx0XHRcdGNhc2UgJzxjaGFyc2V0Jzpcblx0XHRcdFx0aWYoeS52YWwgPT0gJzEnKSBicmVhaztcblx0XHRcdFx0Zm9udC5jcCA9IENTMkNQW3BhcnNlSW50KHkudmFsLCAxMCldO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0LyogMTguNC4yIG91dGxpbmUgQ1RfQm9vbGVhblByb3BlcnR5IFRPRE8gKi9cblx0XHRcdGNhc2UgJzxvdXRsaW5lJzpcblx0XHRcdFx0aWYoIXkudmFsKSBicmVhaztcblx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0Y2FzZSAnPG91dGxpbmU+Jzpcblx0XHRcdGNhc2UgJzxvdXRsaW5lLz4nOiBmb250Lm91dGxpbmUgPSAxOyBicmVhaztcblx0XHRcdGNhc2UgJzwvb3V0bGluZT4nOiBicmVhaztcblxuXHRcdFx0LyogMTguNC41IHJGb250IENUX0ZvbnROYW1lICovXG5cdFx0XHRjYXNlICc8ckZvbnQnOiBmb250Lm5hbWUgPSB5LnZhbDsgYnJlYWs7XG5cblx0XHRcdC8qIDE4LjQuMTEgc3ogQ1RfRm9udFNpemUgKi9cblx0XHRcdGNhc2UgJzxzeic6IGZvbnQuc3ogPSB5LnZhbDsgYnJlYWs7XG5cblx0XHRcdC8qIDE4LjQuMTAgc3RyaWtlIENUX0Jvb2xlYW5Qcm9wZXJ0eSAqL1xuXHRcdFx0Y2FzZSAnPHN0cmlrZSc6XG5cdFx0XHRcdGlmKCF5LnZhbCkgYnJlYWs7XG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJzxzdHJpa2U+Jzpcblx0XHRcdGNhc2UgJzxzdHJpa2UvPic6IGZvbnQuc3RyaWtlID0gMTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L3N0cmlrZT4nOiBicmVhaztcblxuXHRcdFx0LyogMTguNC4xMyB1IENUX1VuZGVybGluZVByb3BlcnR5ICovXG5cdFx0XHRjYXNlICc8dSc6XG5cdFx0XHRcdGlmKCF5LnZhbCkgYnJlYWs7XG5cdFx0XHRcdHN3aXRjaCh5LnZhbCkge1xuXHRcdFx0XHRcdGNhc2UgJ2RvdWJsZSc6IGZvbnQudXZhbCA9IFwiZG91YmxlXCI7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3NpbmdsZUFjY291bnRpbmcnOiBmb250LnV2YWwgPSBcInNpbmdsZS1hY2NvdW50aW5nXCI7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2RvdWJsZUFjY291bnRpbmcnOiBmb250LnV2YWwgPSBcImRvdWJsZS1hY2NvdW50aW5nXCI7IGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJzx1Pic6XG5cdFx0XHRjYXNlICc8dS8+JzogZm9udC51ID0gMTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L3U+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMiBiICovXG5cdFx0XHRjYXNlICc8Yic6XG5cdFx0XHRcdGlmKHkudmFsID09ICcwJykgYnJlYWs7XG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJzxiPic6XG5cdFx0XHRjYXNlICc8Yi8+JzogZm9udC5iID0gMTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L2I+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMjYgaSAqL1xuXHRcdFx0Y2FzZSAnPGknOlxuXHRcdFx0XHRpZih5LnZhbCA9PSAnMCcpIGJyZWFrO1xuXHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICc8aT4nOlxuXHRcdFx0Y2FzZSAnPGkvPic6IGZvbnQuaSA9IDE7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9pPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4zLjEuMTUgY29sb3IgQ1RfQ29sb3IgVE9ETzogdGludCwgdGhlbWUsIGF1dG8sIGluZGV4ZWQgKi9cblx0XHRcdGNhc2UgJzxjb2xvcic6XG5cdFx0XHRcdGlmKHkucmdiKSBmb250LmNvbG9yID0geS5yZ2Iuc2xpY2UoMiw4KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICc8Y29sb3I+JzogY2FzZSAnPGNvbG9yLz4nOiBjYXNlICc8L2NvbG9yPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjE4IGZhbWlseSBTVF9Gb250RmFtaWx5ICovXG5cdFx0XHRjYXNlICc8ZmFtaWx5JzogZm9udC5mYW1pbHkgPSB5LnZhbDsgYnJlYWs7XG5cdFx0XHRjYXNlICc8ZmFtaWx5Pic6IGNhc2UgJzxmYW1pbHkvPic6IGNhc2UgJzwvZmFtaWx5Pic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC40LjE0IHZlcnRBbGlnbiBDVF9WZXJ0aWNhbEFsaWduRm9udFByb3BlcnR5IFRPRE8gKi9cblx0XHRcdGNhc2UgJzx2ZXJ0QWxpZ24nOiBmb250LnZhbGlnbiA9IHkudmFsOyBicmVhaztcblx0XHRcdGNhc2UgJzx2ZXJ0QWxpZ24+JzogY2FzZSAnPHZlcnRBbGlnbi8+JzogY2FzZSAnPC92ZXJ0QWxpZ24+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMzUgc2NoZW1lIENUX0ZvbnRTY2hlbWUgVE9ETyAqL1xuXHRcdFx0Y2FzZSAnPHNjaGVtZSc6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPHNjaGVtZT4nOiBjYXNlICc8c2NoZW1lLz4nOiBjYXNlICc8L3NjaGVtZT4nOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4xMCBleHRMc3QgQ1RfRXh0ZW5zaW9uTGlzdCA/ICovXG5cdFx0XHRjYXNlICc8ZXh0THN0JzogY2FzZSAnPGV4dExzdD4nOiBjYXNlICc8L2V4dExzdD4nOiBicmVhaztcblx0XHRcdGNhc2UgJzxleHQnOiBwYXNzID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L2V4dD4nOiBwYXNzID0gZmFsc2U7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0aWYoeVswXS5jaGFyQ29kZUF0KDEpICE9PSA0NyAmJiAhcGFzcykgdGhyb3cgbmV3IEVycm9yKCdVbnJlY29nbml6ZWQgcmljaCBmb3JtYXQgJyArIHlbMF0pO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gZm9udDtcbn1cblxudmFyIHBhcnNlX3JzID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpIHtcblx0dmFyIHRyZWdleCA9IG1hdGNodGFnKFwidFwiKSwgcnByZWdleCA9IG1hdGNodGFnKFwiclByXCIpO1xuXHQvKiAxOC40LjQgciBDVF9SRWx0ICovXG5cdGZ1bmN0aW9uIHBhcnNlX3Iocikge1xuXHRcdC8qIDE4LjQuMTIgdCBTVF9Yc3RyaW5nICovXG5cdFx0dmFyIHQgPSByLm1hdGNoKHRyZWdleCkvKiwgY3AgPSA2NTAwMSovO1xuXHRcdGlmKCF0KSByZXR1cm4ge3Q6XCJzXCIsIHY6XCJcIn07XG5cblx0XHR2YXIgby8qOkNlbGwqLyA9ICh7dDoncycsIHY6dW5lc2NhcGV4bWwodFsxXSl9Lyo6YW55Ki8pO1xuXHRcdHZhciBycHIgPSByLm1hdGNoKHJwcmVnZXgpO1xuXHRcdGlmKHJwcikgby5zID0gcGFyc2VfcnByKHJwclsxXSk7XG5cdFx0cmV0dXJuIG87XG5cdH1cblx0dmFyIHJyZWdleCA9IC88KD86XFx3KzopP3I+L2csIHJlbmQgPSAvPFxcLyg/Olxcdys6KT9yPi87XG5cdHJldHVybiBmdW5jdGlvbiBwYXJzZV9ycyhycykge1xuXHRcdHJldHVybiBycy5yZXBsYWNlKHJyZWdleCxcIlwiKS5zcGxpdChyZW5kKS5tYXAocGFyc2VfcikuZmlsdGVyKGZ1bmN0aW9uKHIpIHsgcmV0dXJuIHIudjsgfSk7XG5cdH07XG59KSgpO1xuXG5cbi8qIFBhcnNlIGEgbGlzdCBvZiA8cj4gdGFncyAqL1xudmFyIHJzX3RvX2h0bWwgPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uIHBhcnNlX3JzX2ZhY3RvcnkoKSB7XG5cdHZhciBubHJlZ2V4ID0gLyhcXHJcXG58XFxuKS9nO1xuXHRmdW5jdGlvbiBwYXJzZV9ycHIyKGZvbnQsIGludHJvLCBvdXRybykge1xuXHRcdHZhciBzdHlsZS8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXG5cdFx0aWYoZm9udC51KSBzdHlsZS5wdXNoKFwidGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XCIpO1xuXHRcdGlmKGZvbnQudXZhbCkgc3R5bGUucHVzaChcInRleHQtdW5kZXJsaW5lLXN0eWxlOlwiICsgZm9udC51dmFsICsgXCI7XCIpO1xuXHRcdGlmKGZvbnQuc3opIHN0eWxlLnB1c2goXCJmb250LXNpemU6XCIgKyBmb250LnN6ICsgXCJwdDtcIik7XG5cdFx0aWYoZm9udC5vdXRsaW5lKSBzdHlsZS5wdXNoKFwidGV4dC1lZmZlY3Q6IG91dGxpbmU7XCIpO1xuXHRcdGlmKGZvbnQuc2hhZG93KSBzdHlsZS5wdXNoKFwidGV4dC1zaGFkb3c6IGF1dG87XCIpO1xuXHRcdGludHJvLnB1c2goJzxzcGFuIHN0eWxlPVwiJyArIHN0eWxlLmpvaW4oXCJcIikgKyAnXCI+Jyk7XG5cblx0XHRpZihmb250LmIpIHsgaW50cm8ucHVzaChcIjxiPlwiKTsgb3V0cm8ucHVzaChcIjwvYj5cIik7IH1cblx0XHRpZihmb250LmkpIHsgaW50cm8ucHVzaChcIjxpPlwiKTsgb3V0cm8ucHVzaChcIjwvaT5cIik7IH1cblx0XHRpZihmb250LnN0cmlrZSkgeyBpbnRyby5wdXNoKFwiPHM+XCIpOyBvdXRyby5wdXNoKFwiPC9zPlwiKTsgfVxuXG5cdFx0dmFyIGFsaWduID0gZm9udC52YWxpZ24gfHwgXCJcIjtcblx0XHRpZihhbGlnbiA9PSBcInN1cGVyc2NyaXB0XCIgfHwgYWxpZ24gPT0gXCJzdXBlclwiKSBhbGlnbiA9IFwic3VwXCI7XG5cdFx0ZWxzZSBpZihhbGlnbiA9PSBcInN1YnNjcmlwdFwiKSBhbGlnbiA9IFwic3ViXCI7XG5cdFx0aWYoYWxpZ24gIT0gXCJcIikgeyBpbnRyby5wdXNoKFwiPFwiICsgYWxpZ24gKyBcIj5cIik7IG91dHJvLnB1c2goXCI8L1wiICsgYWxpZ24gKyBcIj5cIik7IH1cblxuXHRcdG91dHJvLnB1c2goXCI8L3NwYW4+XCIpO1xuXHRcdHJldHVybiBmb250O1xuXHR9XG5cblx0LyogMTguNC40IHIgQ1RfUkVsdCAqL1xuXHRmdW5jdGlvbiByX3RvX2h0bWwocikge1xuXHRcdHZhciB0ZXJtcy8qOltBcnJheTxzdHJpbmc+LCBzdHJpbmcsIEFycmF5PHN0cmluZz5dKi8gPSBbW10sci52LFtdXTtcblx0XHRpZighci52KSByZXR1cm4gXCJcIjtcblxuXHRcdGlmKHIucykgcGFyc2VfcnByMihyLnMsIHRlcm1zWzBdLCB0ZXJtc1syXSk7XG5cblx0XHRyZXR1cm4gdGVybXNbMF0uam9pbihcIlwiKSArIHRlcm1zWzFdLnJlcGxhY2UobmxyZWdleCwnPGJyLz4nKSArIHRlcm1zWzJdLmpvaW4oXCJcIik7XG5cdH1cblxuXHRyZXR1cm4gZnVuY3Rpb24gcGFyc2VfcnMocnMpIHtcblx0XHRyZXR1cm4gcnMubWFwKHJfdG9faHRtbCkuam9pbihcIlwiKTtcblx0fTtcbn0pKCk7XG5cbi8qIDE4LjQuOCBzaSBDVF9Sc3QgKi9cbnZhciBzaXRyZWdleCA9IC88KD86XFx3KzopP3RbXj5dKj4oW148XSopPFxcLyg/Olxcdys6KT90Pi9nLCBzaXJyZWdleCA9IC88KD86XFx3KzopP3I+LztcbnZhciBzaXJwaHJlZ2V4ID0gLzwoPzpcXHcrOik/clBoLio/PihbXFxzXFxTXSo/KTxcXC8oPzpcXHcrOik/clBoPi9nO1xuZnVuY3Rpb24gcGFyc2Vfc2koeCwgb3B0cykge1xuXHR2YXIgaHRtbCA9IG9wdHMgPyBvcHRzLmNlbGxIVE1MIDogdHJ1ZTtcblx0dmFyIHogPSB7fTtcblx0aWYoIXgpIHJldHVybiB7IHQ6IFwiXCIgfTtcblx0Ly92YXIgeTtcblx0LyogMTguNC4xMiB0IFNUX1hzdHJpbmcgKFBsYWludGV4dCBTdHJpbmcpICovXG5cdC8vIFRPRE86IGlzIHdoaXRlc3BhY2UgYWN0dWFsbHkgdmFsaWQgaGVyZT9cblx0aWYoeC5tYXRjaCgvXlxccyo8KD86XFx3KzopP3RbXj5dKj4vKSkge1xuXHRcdHoudCA9IHVuZXNjYXBleG1sKHV0ZjhyZWFkKHguc2xpY2UoeC5pbmRleE9mKFwiPlwiKSsxKS5zcGxpdCgvPFxcLyg/Olxcdys6KT90Pi8pWzBdfHxcIlwiKSk7XG5cdFx0ei5yID0gdXRmOHJlYWQoeCk7XG5cdFx0aWYoaHRtbCkgei5oID0gZXNjYXBlaHRtbCh6LnQpO1xuXHR9XG5cdC8qIDE4LjQuNCByIENUX1JFbHQgKFJpY2ggVGV4dCBSdW4pICovXG5cdGVsc2UgaWYoKC8qeSA9ICoveC5tYXRjaChzaXJyZWdleCkpKSB7XG5cdFx0ei5yID0gdXRmOHJlYWQoeCk7XG5cdFx0ei50ID0gdW5lc2NhcGV4bWwodXRmOHJlYWQoKHgucmVwbGFjZShzaXJwaHJlZ2V4LCAnJykubWF0Y2goc2l0cmVnZXgpfHxbXSkuam9pbihcIlwiKS5yZXBsYWNlKHRhZ3JlZ2V4LFwiXCIpKSk7XG5cdFx0aWYoaHRtbCkgei5oID0gcnNfdG9faHRtbChwYXJzZV9ycyh6LnIpKTtcblx0fVxuXHQvKiAxOC40LjMgcGhvbmV0aWNQciBDVF9QaG9uZXRpY1ByIChUT0RPOiBuZWVkZWQgZm9yIEFzaWFuIHN1cHBvcnQpICovXG5cdC8qIDE4LjQuNiByUGggQ1RfUGhvbmV0aWNSdW4gKFRPRE86IG5lZWRlZCBmb3IgQXNpYW4gc3VwcG9ydCkgKi9cblx0cmV0dXJuIHo7XG59XG5cbi8qIDE4LjQgU2hhcmVkIFN0cmluZyBUYWJsZSAqL1xudmFyIHNzdHIwID0gLzwoPzpcXHcrOik/c3N0KFtePl0qKT4oW1xcc1xcU10qKTxcXC8oPzpcXHcrOik/c3N0Pi87XG52YXIgc3N0cjEgPSAvPCg/Olxcdys6KT8oPzpzaXxzc3RJdGVtKT4vZztcbnZhciBzc3RyMiA9IC88XFwvKD86XFx3KzopPyg/OnNpfHNzdEl0ZW0pPi87XG5mdW5jdGlvbiBwYXJzZV9zc3RfeG1sKGRhdGEvKjpzdHJpbmcqLywgb3B0cykvKjpTU1QqLyB7XG5cdHZhciBzLyo6U1NUKi8gPSAoW10vKjphbnkqLyksIHNzID0gXCJcIjtcblx0aWYoIWRhdGEpIHJldHVybiBzO1xuXHQvKiAxOC40Ljkgc3N0IENUX1NzdCAqL1xuXHR2YXIgc3N0ID0gZGF0YS5tYXRjaChzc3RyMCk7XG5cdGlmKHNzdCkge1xuXHRcdHNzID0gc3N0WzJdLnJlcGxhY2Uoc3N0cjEsXCJcIikuc3BsaXQoc3N0cjIpO1xuXHRcdGZvcih2YXIgaSA9IDA7IGkgIT0gc3MubGVuZ3RoOyArK2kpIHtcblx0XHRcdHZhciBvID0gcGFyc2Vfc2koc3NbaV0udHJpbSgpLCBvcHRzKTtcblx0XHRcdGlmKG8gIT0gbnVsbCkgc1tzLmxlbmd0aF0gPSBvO1xuXHRcdH1cblx0XHRzc3QgPSBwYXJzZXhtbHRhZyhzc3RbMV0pOyBzLkNvdW50ID0gc3N0LmNvdW50OyBzLlVuaXF1ZSA9IHNzdC51bmlxdWVDb3VudDtcblx0fVxuXHRyZXR1cm4gcztcbn1cblxudmFyIHN0cmF5d3NyZWdleCA9IC9eXFxzfFxccyR8W1xcdFxcblxccl0vO1xuZnVuY3Rpb24gd3JpdGVfc3N0X3htbChzc3QvKjpTU1QqLywgb3B0cykvKjpzdHJpbmcqLyB7XG5cdGlmKCFvcHRzLmJvb2tTU1QpIHJldHVybiBcIlwiO1xuXHR2YXIgbyA9IFtYTUxfSEVBREVSXTtcblx0b1tvLmxlbmd0aF0gPSAod3JpdGV4dGFnKCdzc3QnLCBudWxsLCB7XG5cdFx0eG1sbnM6IFhNTE5TX21haW5bMF0sXG5cdFx0Y291bnQ6IHNzdC5Db3VudCxcblx0XHR1bmlxdWVDb3VudDogc3N0LlVuaXF1ZVxuXHR9KSk7XG5cdGZvcih2YXIgaSA9IDA7IGkgIT0gc3N0Lmxlbmd0aDsgKytpKSB7IGlmKHNzdFtpXSA9PSBudWxsKSBjb250aW51ZTtcblx0XHR2YXIgcy8qOlhMU3RyaW5nKi8gPSBzc3RbaV07XG5cdFx0dmFyIHNpdGFnID0gXCI8c2k+XCI7XG5cdFx0aWYocy5yKSBzaXRhZyArPSBzLnI7XG5cdFx0ZWxzZSB7XG5cdFx0XHRzaXRhZyArPSBcIjx0XCI7XG5cdFx0XHRpZighcy50KSBzLnQgPSBcIlwiO1xuXHRcdFx0aWYocy50Lm1hdGNoKHN0cmF5d3NyZWdleCkpIHNpdGFnICs9ICcgeG1sOnNwYWNlPVwicHJlc2VydmVcIic7XG5cdFx0XHRzaXRhZyArPSBcIj5cIiArIGVzY2FwZXhtbChzLnQpICsgXCI8L3Q+XCI7XG5cdFx0fVxuXHRcdHNpdGFnICs9IFwiPC9zaT5cIjtcblx0XHRvW28ubGVuZ3RoXSA9IChzaXRhZyk7XG5cdH1cblx0aWYoby5sZW5ndGg+Mil7IG9bby5sZW5ndGhdID0gKCc8L3NzdD4nKTsgb1sxXT1vWzFdLnJlcGxhY2UoXCIvPlwiLFwiPlwiKTsgfVxuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuLyogW01TLVhMU0JdIDIuNC4yMjEgQnJ0QmVnaW5Tc3QgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydEJlZ2luU3N0KGRhdGEpIHtcblx0cmV0dXJuIFtkYXRhLnJlYWRfc2hpZnQoNCksIGRhdGEucmVhZF9zaGlmdCg0KV07XG59XG5cbi8qIFtNUy1YTFNCXSAyLjEuNy40NSBTaGFyZWQgU3RyaW5ncyAqL1xuZnVuY3Rpb24gcGFyc2Vfc3N0X2JpbihkYXRhLCBvcHRzKS8qOlNTVCovIHtcblx0dmFyIHMvKjpTU1QqLyA9IChbXS8qOmFueSovKTtcblx0dmFyIHBhc3MgPSBmYWxzZTtcblx0cmVjb3JkaG9wcGVyKGRhdGEsIGZ1bmN0aW9uIGhvcHBlcl9zc3QodmFsLCBSLCBSVCkge1xuXHRcdHN3aXRjaChSVCkge1xuXHRcdFx0Y2FzZSAweDAwOUY6IC8qIEJydEJlZ2luU3N0ICovXG5cdFx0XHRcdHMuQ291bnQgPSB2YWxbMF07IHMuVW5pcXVlID0gdmFsWzFdOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMDEzOiAvKiBCcnRTU1RJdGVtICovXG5cdFx0XHRcdHMucHVzaCh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMEEwOiAvKiBCcnRFbmRTc3QgKi9cblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cblx0XHRcdGNhc2UgMHgwMDIzOiAvKiBCcnRGUlRCZWdpbiAqL1xuXHRcdFx0XHRwYXNzID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAyNDogLyogQnJ0RlJURW5kICovXG5cdFx0XHRcdHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGlmKFIuVCl7fVxuXHRcdFx0XHRpZighcGFzcyB8fCBvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCByZWNvcmQgMHhcIiArIFJULnRvU3RyaW5nKDE2KSk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIHM7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0JydEJlZ2luU3N0KHNzdCwgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoOCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgc3N0LkNvdW50KTtcblx0by53cml0ZV9zaGlmdCg0LCBzc3QuVW5pcXVlKTtcblx0cmV0dXJuIG87XG59XG5cbnZhciB3cml0ZV9CcnRTU1RJdGVtID0gd3JpdGVfUmljaFN0cjtcblxuZnVuY3Rpb24gd3JpdGVfc3N0X2Jpbihzc3QvKjo6LCBvcHRzKi8pIHtcblx0dmFyIGJhID0gYnVmX2FycmF5KCk7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDlGIC8qIEJydEJlZ2luU3N0ICovLCB3cml0ZV9CcnRCZWdpblNzdChzc3QpKTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IHNzdC5sZW5ndGg7ICsraSkgd3JpdGVfcmVjb3JkKGJhLCAweDAwMTMgLyogQnJ0U1NUSXRlbSAqLywgd3JpdGVfQnJ0U1NUSXRlbShzc3RbaV0pKTtcblx0LyogRlJUU1NUICovXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMEEwIC8qIEJydEVuZFNzdCAqLyk7XG5cdHJldHVybiBiYS5lbmQoKTtcbn1cbmZ1bmN0aW9uIF9KUzJBTlNJKHN0ci8qOnN0cmluZyovKS8qOkFycmF5PG51bWJlcj4qLyB7XG5cdGlmKHR5cGVvZiAkY3B0YWJsZSAhPT0gJ3VuZGVmaW5lZCcpIHJldHVybiAkY3B0YWJsZS51dGlscy5lbmNvZGUoY3VycmVudF9hbnNpLCBzdHIpO1xuXHR2YXIgby8qOkFycmF5PG51bWJlcj4qLyA9IFtdLCBvbyA9IHN0ci5zcGxpdChcIlwiKTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IG9vLmxlbmd0aDsgKytpKSBvW2ldID0gb29baV0uY2hhckNvZGVBdCgwKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1PRkZDUllQVE9dIDIuMS40IFZlcnNpb24gKi9cbmZ1bmN0aW9uIHBhcnNlX0NSWVBUT1ZlcnNpb24oYmxvYiwgbGVuZ3RoLyo6P251bWJlciovKSB7XG5cdHZhciBvLyo6YW55Ki8gPSB7fTtcblx0by5NYWpvciA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0by5NaW5vciA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0Lyo6OiBpZihsZW5ndGggPT0gbnVsbCkgcmV0dXJuIG87ICovXG5cdGlmKGxlbmd0aCA+PSA0KSBibG9iLmwgKz0gbGVuZ3RoIC0gNDtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1PRkZDUllQVE9dIDIuMS41IERhdGFTcGFjZVZlcnNpb25JbmZvICovXG5mdW5jdGlvbiBwYXJzZV9EYXRhU3BhY2VWZXJzaW9uSW5mbyhibG9iKSB7XG5cdHZhciBvID0ge307XG5cdG8uaWQgPSBibG9iLnJlYWRfc2hpZnQoMCwgJ2xwcDQnKTtcblx0by5SID0gcGFyc2VfQ1JZUFRPVmVyc2lvbihibG9iLCA0KTtcblx0by5VID0gcGFyc2VfQ1JZUFRPVmVyc2lvbihibG9iLCA0KTtcblx0by5XID0gcGFyc2VfQ1JZUFRPVmVyc2lvbihibG9iLCA0KTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1PRkZDUllQVE9dIDIuMS42LjEgRGF0YVNwYWNlTWFwRW50cnkgU3RydWN0dXJlICovXG5mdW5jdGlvbiBwYXJzZV9EYXRhU3BhY2VNYXBFbnRyeShibG9iKSB7XG5cdHZhciBsZW4gPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBlbmQgPSBibG9iLmwgKyBsZW4gLSA0O1xuXHR2YXIgbyA9IHt9O1xuXHR2YXIgY250ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgY29tcHMvKjpBcnJheTx7dDpudW1iZXIsIHY6c3RyaW5nfT4qLyA9IFtdO1xuXHQvKiBbTVMtT0ZGQ1JZUFRPXSAyLjEuNi4yIERhdGFTcGFjZVJlZmVyZW5jZUNvbXBvbmVudCBTdHJ1Y3R1cmUgKi9cblx0d2hpbGUoY250LS0gPiAwKSBjb21wcy5wdXNoKHsgdDogYmxvYi5yZWFkX3NoaWZ0KDQpLCB2OiBibG9iLnJlYWRfc2hpZnQoMCwgJ2xwcDQnKSB9KTtcblx0by5uYW1lID0gYmxvYi5yZWFkX3NoaWZ0KDAsICdscHA0Jyk7XG5cdG8uY29tcHMgPSBjb21wcztcblx0aWYoYmxvYi5sICE9IGVuZCkgdGhyb3cgbmV3IEVycm9yKFwiQmFkIERhdGFTcGFjZU1hcEVudHJ5OiBcIiArIGJsb2IubCArIFwiICE9IFwiICsgZW5kKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1PRkZDUllQVE9dIDIuMS42IERhdGFTcGFjZU1hcCAqL1xuZnVuY3Rpb24gcGFyc2VfRGF0YVNwYWNlTWFwKGJsb2IpIHtcblx0dmFyIG8gPSBbXTtcblx0YmxvYi5sICs9IDQ7IC8vIG11c3QgYmUgMHg4XG5cdHZhciBjbnQgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHdoaWxlKGNudC0tID4gMCkgby5wdXNoKHBhcnNlX0RhdGFTcGFjZU1hcEVudHJ5KGJsb2IpKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1PRkZDUllQVE9dIDIuMS43IERhdGFTcGFjZURlZmluaXRpb24gKi9cbmZ1bmN0aW9uIHBhcnNlX0RhdGFTcGFjZURlZmluaXRpb24oYmxvYikvKjpBcnJheTxzdHJpbmc+Ki8ge1xuXHR2YXIgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRibG9iLmwgKz0gNDsgLy8gbXVzdCBiZSAweDhcblx0dmFyIGNudCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0d2hpbGUoY250LS0gPiAwKSBvLnB1c2goYmxvYi5yZWFkX3NoaWZ0KDAsICdscHA0JykpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLU9GRkNSWVBUT10gMi4xLjggRGF0YVNwYWNlRGVmaW5pdGlvbiAqL1xuZnVuY3Rpb24gcGFyc2VfVHJhbnNmb3JtSW5mb0hlYWRlcihibG9iKSB7XG5cdHZhciBvID0ge307XG5cdC8qdmFyIGxlbiA9ICovYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRibG9iLmwgKz0gNDsgLy8gbXVzdCBiZSAweDFcblx0by5pZCA9IGJsb2IucmVhZF9zaGlmdCgwLCAnbHBwNCcpO1xuXHRvLm5hbWUgPSBibG9iLnJlYWRfc2hpZnQoMCwgJ2xwcDQnKTtcblx0by5SID0gcGFyc2VfQ1JZUFRPVmVyc2lvbihibG9iLCA0KTtcblx0by5VID0gcGFyc2VfQ1JZUFRPVmVyc2lvbihibG9iLCA0KTtcblx0by5XID0gcGFyc2VfQ1JZUFRPVmVyc2lvbihibG9iLCA0KTtcblx0cmV0dXJuIG87XG59XG5cbmZ1bmN0aW9uIHBhcnNlX1ByaW1hcnkoYmxvYikge1xuXHQvKiBbTVMtT0ZGQ1JZUFRPXSAyLjIuNiBJUk1EU1RyYW5zZm9ybUluZm8gKi9cblx0dmFyIGhkciA9IHBhcnNlX1RyYW5zZm9ybUluZm9IZWFkZXIoYmxvYik7XG5cdC8qIFtNUy1PRkZDUllQVE9dIDIuMS45IEVuY3J5cHRpb25UcmFuc2Zvcm1JbmZvICovXG5cdGhkci5lbmFtZSA9IGJsb2IucmVhZF9zaGlmdCgwLCAnOGxwcDQnKTtcblx0aGRyLmJsa3N6ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRoZHIuY21vZGUgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdGlmKGJsb2IucmVhZF9zaGlmdCg0KSAhPSAweDA0KSB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgIVByaW1hcnkgcmVjb3JkXCIpO1xuXHRyZXR1cm4gaGRyO1xufVxuXG4vKiBbTVMtT0ZGQ1JZUFRPXSAyLjMuMiBFbmNyeXB0aW9uIEhlYWRlciAqL1xuZnVuY3Rpb24gcGFyc2VfRW5jcnlwdGlvbkhlYWRlcihibG9iLCBsZW5ndGgvKjpudW1iZXIqLykge1xuXHR2YXIgdGd0ID0gYmxvYi5sICsgbGVuZ3RoO1xuXHR2YXIgbyA9IHt9O1xuXHRvLkZsYWdzID0gKGJsb2IucmVhZF9zaGlmdCg0KSAmIDB4M0YpO1xuXHRibG9iLmwgKz0gNDtcblx0by5BbGdJRCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIHZhbGlkID0gZmFsc2U7XG5cdHN3aXRjaChvLkFsZ0lEKSB7XG5cdFx0Y2FzZSAweDY2MEU6IGNhc2UgMHg2NjBGOiBjYXNlIDB4NjYxMDogdmFsaWQgPSAoby5GbGFncyA9PSAweDI0KTsgYnJlYWs7XG5cdFx0Y2FzZSAweDY4MDE6IHZhbGlkID0gKG8uRmxhZ3MgPT0gMHgwNCk7IGJyZWFrO1xuXHRcdGNhc2UgMDogdmFsaWQgPSAoby5GbGFncyA9PSAweDEwIHx8IG8uRmxhZ3MgPT0gMHgwNCB8fCBvLkZsYWdzID09IDB4MjQpOyBicmVhaztcblx0XHRkZWZhdWx0OiB0aHJvdyAnVW5yZWNvZ25pemVkIGVuY3J5cHRpb24gYWxnb3JpdGhtOiAnICsgby5BbGdJRDtcblx0fVxuXHRpZighdmFsaWQpIHRocm93IG5ldyBFcnJvcihcIkVuY3J5cHRpb24gRmxhZ3MvQWxnSUQgbWlzbWF0Y2hcIik7XG5cdG8uQWxnSURIYXNoID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRvLktleVNpemUgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdG8uUHJvdmlkZXJUeXBlID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRibG9iLmwgKz0gODtcblx0by5DU1BOYW1lID0gYmxvYi5yZWFkX3NoaWZ0KCh0Z3QtYmxvYi5sKT4+MSwgJ3V0ZjE2bGUnKTtcblx0YmxvYi5sID0gdGd0O1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLU9GRkNSWVBUT10gMi4zLjMgRW5jcnlwdGlvbiBWZXJpZmllciAqL1xuZnVuY3Rpb24gcGFyc2VfRW5jcnlwdGlvblZlcmlmaWVyKGJsb2IsIGxlbmd0aC8qOm51bWJlciovKSB7XG5cdHZhciBvID0ge30sIHRndCA9IGJsb2IubCArIGxlbmd0aDtcblx0YmxvYi5sICs9IDQ7IC8vIFNhbHRTaXplIG11c3QgYmUgMHgxMFxuXHRvLlNhbHQgPSBibG9iLnNsaWNlKGJsb2IubCwgYmxvYi5sKzE2KTsgYmxvYi5sICs9IDE2O1xuXHRvLlZlcmlmaWVyID0gYmxvYi5zbGljZShibG9iLmwsIGJsb2IubCsxNik7IGJsb2IubCArPSAxNjtcblx0Lyp2YXIgc3ogPSAqL2Jsb2IucmVhZF9zaGlmdCg0KTtcblx0by5WZXJpZmllckhhc2ggPSBibG9iLnNsaWNlKGJsb2IubCwgdGd0KTsgYmxvYi5sID0gdGd0O1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLU9GRkNSWVBUT10gMi4zLjQuKiBFbmNyeXB0aW9uSW5mbyBTdHJlYW0gKi9cbmZ1bmN0aW9uIHBhcnNlX0VuY3J5cHRpb25JbmZvKGJsb2IpIHtcblx0dmFyIHZlcnMgPSBwYXJzZV9DUllQVE9WZXJzaW9uKGJsb2IpO1xuXHRzd2l0Y2godmVycy5NaW5vcikge1xuXHRcdGNhc2UgMHgwMjogcmV0dXJuIFt2ZXJzLk1pbm9yLCBwYXJzZV9FbmNJbmZvU3RkKGJsb2IsIHZlcnMpXTtcblx0XHRjYXNlIDB4MDM6IHJldHVybiBbdmVycy5NaW5vciwgcGFyc2VfRW5jSW5mb0V4dChibG9iLCB2ZXJzKV07XG5cdFx0Y2FzZSAweDA0OiByZXR1cm4gW3ZlcnMuTWlub3IsIHBhcnNlX0VuY0luZm9BZ2woYmxvYiwgdmVycyldO1xuXHR9XG5cdHRocm93IG5ldyBFcnJvcihcIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIHVucmVjb2duaXplZCBWZXJzaW9uOiBcIiArIHZlcnMuTWlub3IpO1xufVxuXG4vKiBbTVMtT0ZGQ1JZUFRPXSAyLjMuNC41ICBFbmNyeXB0aW9uSW5mbyBTdHJlYW0gKFN0YW5kYXJkIEVuY3J5cHRpb24pICovXG5mdW5jdGlvbiBwYXJzZV9FbmNJbmZvU3RkKGJsb2IvKjo6LCB2ZXJzKi8pIHtcblx0dmFyIGZsYWdzID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRpZigoZmxhZ3MgJiAweDNGKSAhPSAweDI0KSB0aHJvdyBuZXcgRXJyb3IoXCJFbmNyeXB0aW9uSW5mbyBtaXNtYXRjaFwiKTtcblx0dmFyIHN6ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHQvL3ZhciB0Z3QgPSBibG9iLmwgKyBzejtcblx0dmFyIGhkciA9IHBhcnNlX0VuY3J5cHRpb25IZWFkZXIoYmxvYiwgc3opO1xuXHR2YXIgdmVyaWZpZXIgPSBwYXJzZV9FbmNyeXB0aW9uVmVyaWZpZXIoYmxvYiwgYmxvYi5sZW5ndGggLSBibG9iLmwpO1xuXHRyZXR1cm4geyB0OlwiU3RkXCIsIGg6aGRyLCB2OnZlcmlmaWVyIH07XG59XG4vKiBbTVMtT0ZGQ1JZUFRPXSAyLjMuNC42ICBFbmNyeXB0aW9uSW5mbyBTdHJlYW0gKEV4dGVuc2libGUgRW5jcnlwdGlvbikgKi9cbmZ1bmN0aW9uIHBhcnNlX0VuY0luZm9FeHQoLyo6OmJsb2IsIHZlcnMqLykgeyB0aHJvdyBuZXcgRXJyb3IoXCJGaWxlIGlzIHBhc3N3b3JkLXByb3RlY3RlZDogRUNNQS0zNzYgRXh0ZW5zaWJsZVwiKTsgfVxuLyogW01TLU9GRkNSWVBUT10gMi4zLjQuMTAgRW5jcnlwdGlvbkluZm8gU3RyZWFtIChBZ2lsZSBFbmNyeXB0aW9uKSAqL1xuZnVuY3Rpb24gcGFyc2VfRW5jSW5mb0FnbChibG9iLyo6OiwgdmVycyovKSB7XG5cdHZhciBLZXlEYXRhID0gW1wic2FsdFNpemVcIixcImJsb2NrU2l6ZVwiLFwia2V5Qml0c1wiLFwiaGFzaFNpemVcIixcImNpcGhlckFsZ29yaXRobVwiLFwiY2lwaGVyQ2hhaW5pbmdcIixcImhhc2hBbGdvcml0aG1cIixcInNhbHRWYWx1ZVwiXTtcblx0YmxvYi5sKz00O1xuXHR2YXIgeG1sID0gYmxvYi5yZWFkX3NoaWZ0KGJsb2IubGVuZ3RoIC0gYmxvYi5sLCAndXRmOCcpO1xuXHR2YXIgbyA9IHt9O1xuXHR4bWwucmVwbGFjZSh0YWdyZWdleCwgZnVuY3Rpb24geG1sX2FnaWxlKHgpIHtcblx0XHR2YXIgeS8qOmFueSovID0gcGFyc2V4bWx0YWcoeCk7XG5cdFx0c3dpdGNoKHN0cmlwX25zKHlbMF0pKSB7XG5cdFx0XHRjYXNlICc8P3htbCc6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGVuY3J5cHRpb24nOiBjYXNlICc8L2VuY3J5cHRpb24+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8a2V5RGF0YSc6IEtleURhdGEuZm9yRWFjaChmdW5jdGlvbihrKSB7IG9ba10gPSB5W2tdOyB9KTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8ZGF0YUludGVncml0eSc6IG8uZW5jcnlwdGVkSG1hY0tleSA9IHkuZW5jcnlwdGVkSG1hY0tleTsgby5lbmNyeXB0ZWRIbWFjVmFsdWUgPSB5LmVuY3J5cHRlZEhtYWNWYWx1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8a2V5RW5jcnlwdG9ycz4nOiBjYXNlICc8a2V5RW5jcnlwdG9ycyc6IG8uZW5jcyA9IFtdOyBicmVhaztcblx0XHRcdGNhc2UgJzwva2V5RW5jcnlwdG9ycz4nOiBicmVhaztcblxuXHRcdFx0Y2FzZSAnPGtleUVuY3J5cHRvcic6IG8udXJpID0geS51cmk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9rZXlFbmNyeXB0b3I+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8ZW5jcnlwdGVkS2V5Jzogby5lbmNzLnB1c2goeSk7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogdGhyb3cgeVswXTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLU9GRkNSWVBUT10gMi4zLjUuMSBSQzQgQ3J5cHRvQVBJIEVuY3J5cHRpb24gSGVhZGVyICovXG5mdW5jdGlvbiBwYXJzZV9SQzRDcnlwdG9IZWFkZXIoYmxvYiwgbGVuZ3RoLyo6bnVtYmVyKi8pIHtcblx0dmFyIG8gPSB7fTtcblx0dmFyIHZlcnMgPSBvLkVuY3J5cHRpb25WZXJzaW9uSW5mbyA9IHBhcnNlX0NSWVBUT1ZlcnNpb24oYmxvYiwgNCk7IGxlbmd0aCAtPSA0O1xuXHRpZih2ZXJzLk1pbm9yICE9IDIpIHRocm93IG5ldyBFcnJvcigndW5yZWNvZ25pemVkIG1pbm9yIHZlcnNpb24gY29kZTogJyArIHZlcnMuTWlub3IpO1xuXHRpZih2ZXJzLk1ham9yID4gNCB8fCB2ZXJzLk1ham9yIDwgMikgdGhyb3cgbmV3IEVycm9yKCd1bnJlY29nbml6ZWQgbWFqb3IgdmVyc2lvbiBjb2RlOiAnICsgdmVycy5NYWpvcik7XG5cdG8uRmxhZ3MgPSBibG9iLnJlYWRfc2hpZnQoNCk7IGxlbmd0aCAtPSA0O1xuXHR2YXIgc3ogPSBibG9iLnJlYWRfc2hpZnQoNCk7IGxlbmd0aCAtPSA0O1xuXHRvLkVuY3J5cHRpb25IZWFkZXIgPSBwYXJzZV9FbmNyeXB0aW9uSGVhZGVyKGJsb2IsIHN6KTsgbGVuZ3RoIC09IHN6O1xuXHRvLkVuY3J5cHRpb25WZXJpZmllciA9IHBhcnNlX0VuY3J5cHRpb25WZXJpZmllcihibG9iLCBsZW5ndGgpO1xuXHRyZXR1cm4gbztcbn1cbi8qIFtNUy1PRkZDUllQVE9dIDIuMy42LjEgUkM0IEVuY3J5cHRpb24gSGVhZGVyICovXG5mdW5jdGlvbiBwYXJzZV9SQzRIZWFkZXIoYmxvYi8qOjosIGxlbmd0aCovKSB7XG5cdHZhciBvID0ge307XG5cdHZhciB2ZXJzID0gby5FbmNyeXB0aW9uVmVyc2lvbkluZm8gPSBwYXJzZV9DUllQVE9WZXJzaW9uKGJsb2IsIDQpO1xuXHRpZih2ZXJzLk1ham9yICE9IDEgfHwgdmVycy5NaW5vciAhPSAxKSB0aHJvdyAndW5yZWNvZ25pemVkIHZlcnNpb24gY29kZSAnICsgdmVycy5NYWpvciArICcgOiAnICsgdmVycy5NaW5vcjtcblx0by5TYWx0ID0gYmxvYi5yZWFkX3NoaWZ0KDE2KTtcblx0by5FbmNyeXB0ZWRWZXJpZmllciA9IGJsb2IucmVhZF9zaGlmdCgxNik7XG5cdG8uRW5jcnlwdGVkVmVyaWZpZXJIYXNoID0gYmxvYi5yZWFkX3NoaWZ0KDE2KTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1PRkZDUllQVE9dIDIuMy43LjEgQmluYXJ5IERvY3VtZW50IFBhc3N3b3JkIFZlcmlmaWVyIERlcml2YXRpb24gKi9cbmZ1bmN0aW9uIGNyeXB0b19DcmVhdGVQYXNzd29yZFZlcmlmaWVyX01ldGhvZDEoUGFzc3dvcmQvKjpzdHJpbmcqLykge1xuXHR2YXIgVmVyaWZpZXIgPSAweDAwMDAsIFBhc3N3b3JkQXJyYXk7XG5cdHZhciBQYXNzd29yZERlY29kZWQgPSBfSlMyQU5TSShQYXNzd29yZCk7XG5cdHZhciBsZW4gPSBQYXNzd29yZERlY29kZWQubGVuZ3RoICsgMSwgaSwgUGFzc3dvcmRCeXRlO1xuXHR2YXIgSW50ZXJtZWRpYXRlMSwgSW50ZXJtZWRpYXRlMiwgSW50ZXJtZWRpYXRlMztcblx0UGFzc3dvcmRBcnJheSA9IG5ld19yYXdfYnVmKGxlbik7XG5cdFBhc3N3b3JkQXJyYXlbMF0gPSBQYXNzd29yZERlY29kZWQubGVuZ3RoO1xuXHRmb3IoaSA9IDE7IGkgIT0gbGVuOyArK2kpIFBhc3N3b3JkQXJyYXlbaV0gPSBQYXNzd29yZERlY29kZWRbaS0xXTtcblx0Zm9yKGkgPSBsZW4tMTsgaSA+PSAwOyAtLWkpIHtcblx0XHRQYXNzd29yZEJ5dGUgPSBQYXNzd29yZEFycmF5W2ldO1xuXHRcdEludGVybWVkaWF0ZTEgPSAoKFZlcmlmaWVyICYgMHg0MDAwKSA9PT0gMHgwMDAwKSA/IDAgOiAxO1xuXHRcdEludGVybWVkaWF0ZTIgPSAoVmVyaWZpZXIgPDwgMSkgJiAweDdGRkY7XG5cdFx0SW50ZXJtZWRpYXRlMyA9IEludGVybWVkaWF0ZTEgfCBJbnRlcm1lZGlhdGUyO1xuXHRcdFZlcmlmaWVyID0gSW50ZXJtZWRpYXRlMyBeIFBhc3N3b3JkQnl0ZTtcblx0fVxuXHRyZXR1cm4gVmVyaWZpZXIgXiAweENFNEI7XG59XG5cbi8qIFtNUy1PRkZDUllQVE9dIDIuMy43LjIgQmluYXJ5IERvY3VtZW50IFhPUiBBcnJheSBJbml0aWFsaXphdGlvbiAqL1xudmFyIGNyeXB0b19DcmVhdGVYb3JBcnJheV9NZXRob2QxID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpIHtcblx0dmFyIFBhZEFycmF5ID0gWzB4QkIsIDB4RkYsIDB4RkYsIDB4QkEsIDB4RkYsIDB4RkYsIDB4QjksIDB4ODAsIDB4MDAsIDB4QkUsIDB4MEYsIDB4MDAsIDB4QkYsIDB4MEYsIDB4MDBdO1xuXHR2YXIgSW5pdGlhbENvZGUgPSBbMHhFMUYwLCAweDFEMEYsIDB4Q0M5QywgMHg4NEMwLCAweDExMEMsIDB4MEUxMCwgMHhGMUNFLCAweDMxM0UsIDB4MTg3MiwgMHhFMTM5LCAweEQ0MEYsIDB4ODRGOSwgMHgyODBDLCAweEE5NkEsIDB4NEVDM107XG5cdHZhciBYb3JNYXRyaXggPSBbMHhBRUZDLCAweDRERDksIDB4OUJCMiwgMHgyNzQ1LCAweDRFOEEsIDB4OUQxNCwgMHgyQTA5LCAweDdCNjEsIDB4RjZDMiwgMHhGREE1LCAweEVCNkIsIDB4QzZGNywgMHg5RENGLCAweDJCQkYsIDB4NDU2MywgMHg4QUM2LCAweDA1QUQsIDB4MEI1QSwgMHgxNkI0LCAweDJENjgsIDB4NUFEMCwgMHgwMzc1LCAweDA2RUEsIDB4MERENCwgMHgxQkE4LCAweDM3NTAsIDB4NkVBMCwgMHhERDQwLCAweEQ4NDksIDB4QTBCMywgMHg1MTQ3LCAweEEyOEUsIDB4NTUzRCwgMHhBQTdBLCAweDQ0RDUsIDB4NkY0NSwgMHhERThBLCAweEFEMzUsIDB4NEE0QiwgMHg5NDk2LCAweDM5MEQsIDB4NzIxQSwgMHhFQjIzLCAweEM2NjcsIDB4OUNFRiwgMHgyOUZGLCAweDUzRkUsIDB4QTdGQywgMHg1RkQ5LCAweDQ3RDMsIDB4OEZBNiwgMHgwRjZELCAweDFFREEsIDB4M0RCNCwgMHg3QjY4LCAweEY2RDAsIDB4Qjg2MSwgMHg2MEUzLCAweEMxQzYsIDB4OTNBRCwgMHgzNzdCLCAweDZFRjYsIDB4RERFQywgMHg0NUEwLCAweDhCNDAsIDB4MDZBMSwgMHgwRDQyLCAweDFBODQsIDB4MzUwOCwgMHg2QTEwLCAweEFBNTEsIDB4NDQ4MywgMHg4OTA2LCAweDAyMkQsIDB4MDQ1QSwgMHgwOEI0LCAweDExNjgsIDB4NzZCNCwgMHhFRDY4LCAweENBRjEsIDB4ODVDMywgMHgxQkE3LCAweDM3NEUsIDB4NkU5QywgMHgzNzMwLCAweDZFNjAsIDB4RENDMCwgMHhBOUExLCAweDQzNjMsIDB4ODZDNiwgMHgxREFELCAweDMzMzEsIDB4NjY2MiwgMHhDQ0M0LCAweDg5QTksIDB4MDM3MywgMHgwNkU2LCAweDBEQ0MsIDB4MTAyMSwgMHgyMDQyLCAweDQwODQsIDB4ODEwOCwgMHgxMjMxLCAweDI0NjIsIDB4NDhDNF07XG5cdHZhciBSb3IgPSBmdW5jdGlvbihCeXRlKSB7IHJldHVybiAoKEJ5dGUvMikgfCAoQnl0ZSoxMjgpKSAmIDB4RkY7IH07XG5cdHZhciBYb3JSb3IgPSBmdW5jdGlvbihieXRlMSwgYnl0ZTIpIHsgcmV0dXJuIFJvcihieXRlMSBeIGJ5dGUyKTsgfTtcblx0dmFyIENyZWF0ZVhvcktleV9NZXRob2QxID0gZnVuY3Rpb24oUGFzc3dvcmQpIHtcblx0XHR2YXIgWG9yS2V5ID0gSW5pdGlhbENvZGVbUGFzc3dvcmQubGVuZ3RoIC0gMV07XG5cdFx0dmFyIEN1cnJlbnRFbGVtZW50ID0gMHg2ODtcblx0XHRmb3IodmFyIGkgPSBQYXNzd29yZC5sZW5ndGgtMTsgaSA+PSAwOyAtLWkpIHtcblx0XHRcdHZhciBDaGFyID0gUGFzc3dvcmRbaV07XG5cdFx0XHRmb3IodmFyIGogPSAwOyBqICE9IDc7ICsraikge1xuXHRcdFx0XHRpZihDaGFyICYgMHg0MCkgWG9yS2V5IF49IFhvck1hdHJpeFtDdXJyZW50RWxlbWVudF07XG5cdFx0XHRcdENoYXIgKj0gMjsgLS1DdXJyZW50RWxlbWVudDtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIFhvcktleTtcblx0fTtcblx0cmV0dXJuIGZ1bmN0aW9uKHBhc3N3b3JkLyo6c3RyaW5nKi8pIHtcblx0XHR2YXIgUGFzc3dvcmQgPSBfSlMyQU5TSShwYXNzd29yZCk7XG5cdFx0dmFyIFhvcktleSA9IENyZWF0ZVhvcktleV9NZXRob2QxKFBhc3N3b3JkKTtcblx0XHR2YXIgSW5kZXggPSBQYXNzd29yZC5sZW5ndGg7XG5cdFx0dmFyIE9iZnVzY2F0aW9uQXJyYXkgPSBuZXdfcmF3X2J1ZigxNik7XG5cdFx0Zm9yKHZhciBpID0gMDsgaSAhPSAxNjsgKytpKSBPYmZ1c2NhdGlvbkFycmF5W2ldID0gMHgwMDtcblx0XHR2YXIgVGVtcCwgUGFzc3dvcmRMYXN0Q2hhciwgUGFkSW5kZXg7XG5cdFx0aWYoKEluZGV4ICYgMSkgPT09IDEpIHtcblx0XHRcdFRlbXAgPSBYb3JLZXkgPj4gODtcblx0XHRcdE9iZnVzY2F0aW9uQXJyYXlbSW5kZXhdID0gWG9yUm9yKFBhZEFycmF5WzBdLCBUZW1wKTtcblx0XHRcdC0tSW5kZXg7XG5cdFx0XHRUZW1wID0gWG9yS2V5ICYgMHhGRjtcblx0XHRcdFBhc3N3b3JkTGFzdENoYXIgPSBQYXNzd29yZFtQYXNzd29yZC5sZW5ndGggLSAxXTtcblx0XHRcdE9iZnVzY2F0aW9uQXJyYXlbSW5kZXhdID0gWG9yUm9yKFBhc3N3b3JkTGFzdENoYXIsIFRlbXApO1xuXHRcdH1cblx0XHR3aGlsZShJbmRleCA+IDApIHtcblx0XHRcdC0tSW5kZXg7XG5cdFx0XHRUZW1wID0gWG9yS2V5ID4+IDg7XG5cdFx0XHRPYmZ1c2NhdGlvbkFycmF5W0luZGV4XSA9IFhvclJvcihQYXNzd29yZFtJbmRleF0sIFRlbXApO1xuXHRcdFx0LS1JbmRleDtcblx0XHRcdFRlbXAgPSBYb3JLZXkgJiAweEZGO1xuXHRcdFx0T2JmdXNjYXRpb25BcnJheVtJbmRleF0gPSBYb3JSb3IoUGFzc3dvcmRbSW5kZXhdLCBUZW1wKTtcblx0XHR9XG5cdFx0SW5kZXggPSAxNTtcblx0XHRQYWRJbmRleCA9IDE1IC0gUGFzc3dvcmQubGVuZ3RoO1xuXHRcdHdoaWxlKFBhZEluZGV4ID4gMCkge1xuXHRcdFx0VGVtcCA9IFhvcktleSA+PiA4O1xuXHRcdFx0T2JmdXNjYXRpb25BcnJheVtJbmRleF0gPSBYb3JSb3IoUGFkQXJyYXlbUGFkSW5kZXhdLCBUZW1wKTtcblx0XHRcdC0tSW5kZXg7XG5cdFx0XHQtLVBhZEluZGV4O1xuXHRcdFx0VGVtcCA9IFhvcktleSAmIDB4RkY7XG5cdFx0XHRPYmZ1c2NhdGlvbkFycmF5W0luZGV4XSA9IFhvclJvcihQYXNzd29yZFtJbmRleF0sIFRlbXApO1xuXHRcdFx0LS1JbmRleDtcblx0XHRcdC0tUGFkSW5kZXg7XG5cdFx0fVxuXHRcdHJldHVybiBPYmZ1c2NhdGlvbkFycmF5O1xuXHR9O1xufSkoKTtcblxuLyogW01TLU9GRkNSWVBUT10gMi4zLjcuMyBCaW5hcnkgRG9jdW1lbnQgWE9SIERhdGEgVHJhbnNmb3JtYXRpb24gTWV0aG9kIDEgKi9cbnZhciBjcnlwdG9fRGVjcnlwdERhdGFfTWV0aG9kMSA9IGZ1bmN0aW9uKHBhc3N3b3JkLyo6c3RyaW5nKi8sIERhdGEsIFhvckFycmF5SW5kZXgsIFhvckFycmF5LCBPKSB7XG5cdC8qIElmIFhvckFycmF5IGlzIHNldCwgdXNlIGl0OyBpZiBPIGlzIG5vdCBzZXQsIG1ha2UgY2hhbmdlcyBpbi1wbGFjZSAqL1xuXHRpZighTykgTyA9IERhdGE7XG5cdGlmKCFYb3JBcnJheSkgWG9yQXJyYXkgPSBjcnlwdG9fQ3JlYXRlWG9yQXJyYXlfTWV0aG9kMShwYXNzd29yZCk7XG5cdHZhciBJbmRleCwgVmFsdWU7XG5cdGZvcihJbmRleCA9IDA7IEluZGV4ICE9IERhdGEubGVuZ3RoOyArK0luZGV4KSB7XG5cdFx0VmFsdWUgPSBEYXRhW0luZGV4XTtcblx0XHRWYWx1ZSBePSBYb3JBcnJheVtYb3JBcnJheUluZGV4XTtcblx0XHRWYWx1ZSA9ICgoVmFsdWU+PjUpIHwgKFZhbHVlPDwzKSkgJiAweEZGO1xuXHRcdE9bSW5kZXhdID0gVmFsdWU7XG5cdFx0KytYb3JBcnJheUluZGV4O1xuXHR9XG5cdHJldHVybiBbTywgWG9yQXJyYXlJbmRleCwgWG9yQXJyYXldO1xufTtcblxudmFyIGNyeXB0b19NYWtlWG9yRGVjcnlwdG9yID0gZnVuY3Rpb24ocGFzc3dvcmQvKjpzdHJpbmcqLykge1xuXHR2YXIgWG9yQXJyYXlJbmRleCA9IDAsIFhvckFycmF5ID0gY3J5cHRvX0NyZWF0ZVhvckFycmF5X01ldGhvZDEocGFzc3dvcmQpO1xuXHRyZXR1cm4gZnVuY3Rpb24oRGF0YSkge1xuXHRcdHZhciBPID0gY3J5cHRvX0RlY3J5cHREYXRhX01ldGhvZDEoXCJcIiwgRGF0YSwgWG9yQXJyYXlJbmRleCwgWG9yQXJyYXkpO1xuXHRcdFhvckFycmF5SW5kZXggPSBPWzFdO1xuXHRcdHJldHVybiBPWzBdO1xuXHR9O1xufTtcblxuLyogMi41LjM0MyAqL1xuZnVuY3Rpb24gcGFyc2VfWE9ST2JmdXNjYXRpb24oYmxvYiwgbGVuZ3RoLCBvcHRzLCBvdXQpIHtcblx0dmFyIG8gPSAoeyBrZXk6IHBhcnNldWludDE2KGJsb2IpLCB2ZXJpZmljYXRpb25CeXRlczogcGFyc2V1aW50MTYoYmxvYikgfS8qOmFueSovKTtcblx0aWYob3B0cy5wYXNzd29yZCkgby52ZXJpZmllciA9IGNyeXB0b19DcmVhdGVQYXNzd29yZFZlcmlmaWVyX01ldGhvZDEob3B0cy5wYXNzd29yZCk7XG5cdG91dC52YWxpZCA9IG8udmVyaWZpY2F0aW9uQnl0ZXMgPT09IG8udmVyaWZpZXI7XG5cdGlmKG91dC52YWxpZCkgb3V0Lmluc2l0dSA9IGNyeXB0b19NYWtlWG9yRGVjcnlwdG9yKG9wdHMucGFzc3dvcmQpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogMi40LjExNyAqL1xuZnVuY3Rpb24gcGFyc2VfRmlsZVBhc3NIZWFkZXIoYmxvYiwgbGVuZ3RoLyo6bnVtYmVyKi8sIG9vKSB7XG5cdHZhciBvID0gb28gfHwge307IG8uSW5mbyA9IGJsb2IucmVhZF9zaGlmdCgyKTsgYmxvYi5sIC09IDI7XG5cdGlmKG8uSW5mbyA9PT0gMSkgby5EYXRhID0gcGFyc2VfUkM0SGVhZGVyKGJsb2IsIGxlbmd0aCk7XG5cdGVsc2Ugby5EYXRhID0gcGFyc2VfUkM0Q3J5cHRvSGVhZGVyKGJsb2IsIGxlbmd0aCk7XG5cdHJldHVybiBvO1xufVxuZnVuY3Rpb24gcGFyc2VfRmlsZVBhc3MoYmxvYiwgbGVuZ3RoLyo6bnVtYmVyKi8sIG9wdHMpIHtcblx0dmFyIG8gPSAoeyBUeXBlOiBvcHRzLmJpZmYgPj0gOCA/IGJsb2IucmVhZF9zaGlmdCgyKSA6IDAgfS8qOmFueSovKTsgLyogd0VuY3J5cHRpb25UeXBlICovXG5cdGlmKG8uVHlwZSkgcGFyc2VfRmlsZVBhc3NIZWFkZXIoYmxvYiwgbGVuZ3RoLTIsIG8pO1xuXHRlbHNlIHBhcnNlX1hPUk9iZnVzY2F0aW9uKGJsb2IsIG9wdHMuYmlmZiA+PSA4ID8gbGVuZ3RoIDogbGVuZ3RoIC0gMiwgb3B0cywgbyk7XG5cdHJldHVybiBvO1xufVxuXG5cbnZhciBSVEYgPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCkge1xuXHRmdW5jdGlvbiBydGZfdG9fc2hlZXQoZC8qOlJhd0RhdGEqLywgb3B0cykvKjpXb3Jrc2hlZXQqLyB7XG5cdFx0c3dpdGNoKG9wdHMudHlwZSkge1xuXHRcdFx0Y2FzZSAnYmFzZTY0JzogcmV0dXJuIHJ0Zl90b19zaGVldF9zdHIoQmFzZTY0X2RlY29kZShkKSwgb3B0cyk7XG5cdFx0XHRjYXNlICdiaW5hcnknOiByZXR1cm4gcnRmX3RvX3NoZWV0X3N0cihkLCBvcHRzKTtcblx0XHRcdGNhc2UgJ2J1ZmZlcic6IHJldHVybiBydGZfdG9fc2hlZXRfc3RyKGhhc19idWYgJiYgQnVmZmVyLmlzQnVmZmVyKGQpID8gZC50b1N0cmluZygnYmluYXJ5JykgOiBhMnMoZCksIG9wdHMpO1xuXHRcdFx0Y2FzZSAnYXJyYXknOiAgcmV0dXJuIHJ0Zl90b19zaGVldF9zdHIoY2Myc3RyKGQpLCBvcHRzKTtcblx0XHR9XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIHR5cGUgXCIgKyBvcHRzLnR5cGUpO1xuXHR9XG5cblx0LyogVE9ETzogdGhpcyBpcyBhIHN0dWIgKi9cblx0ZnVuY3Rpb24gcnRmX3RvX3NoZWV0X3N0cihzdHIvKjpzdHJpbmcqLywgb3B0cykvKjpXb3Jrc2hlZXQqLyB7XG5cdFx0dmFyIG8gPSBvcHRzIHx8IHt9O1xuXHRcdHZhciB3cy8qOldvcmtzaGVldCovID0gby5kZW5zZSA/IChbXS8qOmFueSovKSA6ICh7fS8qOmFueSovKTtcblxuXHRcdHZhciByb3dzID0gc3RyLm1hdGNoKC9cXFxcdHJvd2QuKj9cXFxccm93XFxiL2cpO1xuXHRcdGlmKCFyb3dzLmxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKFwiUlRGIG1pc3NpbmcgdGFibGVcIik7XG5cdFx0dmFyIHJhbmdlLyo6UmFuZ2UqLyA9ICh7czoge2M6MCwgcjowfSwgZToge2M6MCwgcjpyb3dzLmxlbmd0aCAtIDF9fS8qOmFueSovKTtcblx0XHRyb3dzLmZvckVhY2goZnVuY3Rpb24ocm93dGYsIFIpIHtcblx0XHRcdGlmKEFycmF5LmlzQXJyYXkod3MpKSB3c1tSXSA9IFtdO1xuXHRcdFx0dmFyIHJ0ZnJlID0gL1xcXFxcXHcrXFxiL2c7XG5cdFx0XHR2YXIgbGFzdF9pbmRleCA9IDA7XG5cdFx0XHR2YXIgcmVzO1xuXHRcdFx0dmFyIEMgPSAtMTtcblx0XHRcdHdoaWxlKChyZXMgPSBydGZyZS5leGVjKHJvd3RmKSkpIHtcblx0XHRcdFx0c3dpdGNoKHJlc1swXSkge1xuXHRcdFx0XHRcdGNhc2UgXCJcXFxcY2VsbFwiOlxuXHRcdFx0XHRcdFx0dmFyIGRhdGEgPSByb3d0Zi5zbGljZShsYXN0X2luZGV4LCBydGZyZS5sYXN0SW5kZXggLSByZXNbMF0ubGVuZ3RoKTtcblx0XHRcdFx0XHRcdGlmKGRhdGFbMF0gPT0gXCIgXCIpIGRhdGEgPSBkYXRhLnNsaWNlKDEpO1xuXHRcdFx0XHRcdFx0KytDO1xuXHRcdFx0XHRcdFx0aWYoZGF0YS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0Ly8gVE9ETzogdmFsdWUgcGFyc2luZywgaW5jbHVkaW5nIGNvZGVwYWdlIGFkanVzdG1lbnRzXG5cdFx0XHRcdFx0XHRcdHZhciBjZWxsID0ge3Y6IGRhdGEsIHQ6XCJzXCJ9O1xuXHRcdFx0XHRcdFx0XHRpZihBcnJheS5pc0FycmF5KHdzKSkgd3NbUl1bQ10gPSBjZWxsO1xuXHRcdFx0XHRcdFx0XHRlbHNlIHdzW2VuY29kZV9jZWxsKHtyOlIsIGM6Q30pXSA9IGNlbGw7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRsYXN0X2luZGV4ID0gcnRmcmUubGFzdEluZGV4O1xuXHRcdFx0fVxuXHRcdFx0aWYoQyA+IHJhbmdlLmUuYykgcmFuZ2UuZS5jID0gQztcblx0XHR9KTtcblx0XHR3c1snIXJlZiddID0gZW5jb2RlX3JhbmdlKHJhbmdlKTtcblx0XHRyZXR1cm4gd3M7XG5cdH1cblxuXHRmdW5jdGlvbiBydGZfdG9fd29ya2Jvb2soZC8qOlJhd0RhdGEqLywgb3B0cykvKjpXb3JrYm9vayovIHsgcmV0dXJuIHNoZWV0X3RvX3dvcmtib29rKHJ0Zl90b19zaGVldChkLCBvcHRzKSwgb3B0cyk7IH1cblxuXHQvKiBUT0RPOiB0aGlzIGlzIGEgc3R1YiAqL1xuXHRmdW5jdGlvbiBzaGVldF90b19ydGYod3MvKjpXb3Jrc2hlZXQqLy8qOjosIG9wdHMqLykvKjpzdHJpbmcqLyB7XG5cdFx0dmFyIG8gPSBbXCJ7XFxcXHJ0ZjFcXFxcYW5zaVwiXTtcblx0XHR2YXIgciA9IHNhZmVfZGVjb2RlX3JhbmdlKHdzWychcmVmJ10pLCBjZWxsLyo6Q2VsbCovO1xuXHRcdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkod3MpO1xuXHRcdGZvcih2YXIgUiA9IHIucy5yOyBSIDw9IHIuZS5yOyArK1IpIHtcblx0XHRcdG8ucHVzaChcIlxcXFx0cm93ZFxcXFx0cmF1dG9maXQxXCIpO1xuXHRcdFx0Zm9yKHZhciBDID0gci5zLmM7IEMgPD0gci5lLmM7ICsrQykgby5wdXNoKFwiXFxcXGNlbGx4XCIgKyAoQysxKSk7XG5cdFx0XHRvLnB1c2goXCJcXFxccGFyZFxcXFxpbnRibFwiKTtcblx0XHRcdGZvcihDID0gci5zLmM7IEMgPD0gci5lLmM7ICsrQykge1xuXHRcdFx0XHR2YXIgY29vcmQgPSBlbmNvZGVfY2VsbCh7cjpSLGM6Q30pO1xuXHRcdFx0XHRjZWxsID0gZGVuc2UgPyAod3NbUl18fFtdKVtDXTogd3NbY29vcmRdO1xuXHRcdFx0XHRpZighY2VsbCB8fCBjZWxsLnYgPT0gbnVsbCAmJiAoIWNlbGwuZiB8fCBjZWxsLkYpKSBjb250aW51ZTtcblx0XHRcdFx0by5wdXNoKFwiIFwiICsgKGNlbGwudyB8fCAoZm9ybWF0X2NlbGwoY2VsbCksIGNlbGwudykpKTtcblx0XHRcdFx0by5wdXNoKFwiXFxcXGNlbGxcIik7XG5cdFx0XHR9XG5cdFx0XHRvLnB1c2goXCJcXFxccGFyZFxcXFxpbnRibFxcXFxyb3dcIik7XG5cdFx0fVxuXHRcdHJldHVybiBvLmpvaW4oXCJcIikgKyBcIn1cIjtcblx0fVxuXG5cdHJldHVybiB7XG5cdFx0dG9fd29ya2Jvb2s6IHJ0Zl90b193b3JrYm9vayxcblx0XHR0b19zaGVldDogcnRmX3RvX3NoZWV0LFxuXHRcdGZyb21fc2hlZXQ6IHNoZWV0X3RvX3J0ZlxuXHR9O1xufSkoKTtcbmZ1bmN0aW9uIGhleDJSR0IoaCkge1xuXHR2YXIgbyA9IGguc2xpY2UoaFswXT09PVwiI1wiPzE6MCkuc2xpY2UoMCw2KTtcblx0cmV0dXJuIFtwYXJzZUludChvLnNsaWNlKDAsMiksMTYpLHBhcnNlSW50KG8uc2xpY2UoMiw0KSwxNikscGFyc2VJbnQoby5zbGljZSg0LDYpLDE2KV07XG59XG5mdW5jdGlvbiByZ2IySGV4KHJnYikge1xuXHRmb3IodmFyIGk9MCxvPTE7IGkhPTM7ICsraSkgbyA9IG8qMjU2ICsgKHJnYltpXT4yNTU/MjU1OnJnYltpXTwwPzA6cmdiW2ldKTtcblx0cmV0dXJuIG8udG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkuc2xpY2UoMSk7XG59XG5cbmZ1bmN0aW9uIHJnYjJIU0wocmdiKSB7XG5cdHZhciBSID0gcmdiWzBdLzI1NSwgRyA9IHJnYlsxXS8yNTUsIEI9cmdiWzJdLzI1NTtcblx0dmFyIE0gPSBNYXRoLm1heChSLCBHLCBCKSwgbSA9IE1hdGgubWluKFIsIEcsIEIpLCBDID0gTSAtIG07XG5cdGlmKEMgPT09IDApIHJldHVybiBbMCwgMCwgUl07XG5cblx0dmFyIEg2ID0gMCwgUyA9IDAsIEwyID0gKE0gKyBtKTtcblx0UyA9IEMgLyAoTDIgPiAxID8gMiAtIEwyIDogTDIpO1xuXHRzd2l0Y2goTSl7XG5cdFx0Y2FzZSBSOiBINiA9ICgoRyAtIEIpIC8gQyArIDYpJTY7IGJyZWFrO1xuXHRcdGNhc2UgRzogSDYgPSAoKEIgLSBSKSAvIEMgKyAyKTsgYnJlYWs7XG5cdFx0Y2FzZSBCOiBINiA9ICgoUiAtIEcpIC8gQyArIDQpOyBicmVhaztcblx0fVxuXHRyZXR1cm4gW0g2IC8gNiwgUywgTDIgLyAyXTtcbn1cblxuZnVuY3Rpb24gaHNsMlJHQihoc2wpe1xuXHR2YXIgSCA9IGhzbFswXSwgUyA9IGhzbFsxXSwgTCA9IGhzbFsyXTtcblx0dmFyIEMgPSBTICogMiAqIChMIDwgMC41ID8gTCA6IDEgLSBMKSwgbSA9IEwgLSBDLzI7XG5cdHZhciByZ2IgPSBbbSxtLG1dLCBoNiA9IDYqSDtcblxuXHR2YXIgWDtcblx0aWYoUyAhPT0gMCkgc3dpdGNoKGg2fDApIHtcblx0XHRjYXNlIDA6IGNhc2UgNjogWCA9IEMgKiBoNjsgcmdiWzBdICs9IEM7IHJnYlsxXSArPSBYOyBicmVhaztcblx0XHRjYXNlIDE6IFggPSBDICogKDIgLSBoNik7ICAgcmdiWzBdICs9IFg7IHJnYlsxXSArPSBDOyBicmVhaztcblx0XHRjYXNlIDI6IFggPSBDICogKGg2IC0gMik7ICAgcmdiWzFdICs9IEM7IHJnYlsyXSArPSBYOyBicmVhaztcblx0XHRjYXNlIDM6IFggPSBDICogKDQgLSBoNik7ICAgcmdiWzFdICs9IFg7IHJnYlsyXSArPSBDOyBicmVhaztcblx0XHRjYXNlIDQ6IFggPSBDICogKGg2IC0gNCk7ICAgcmdiWzJdICs9IEM7IHJnYlswXSArPSBYOyBicmVhaztcblx0XHRjYXNlIDU6IFggPSBDICogKDYgLSBoNik7ICAgcmdiWzJdICs9IFg7IHJnYlswXSArPSBDOyBicmVhaztcblx0fVxuXHRmb3IodmFyIGkgPSAwOyBpICE9IDM7ICsraSkgcmdiW2ldID0gTWF0aC5yb3VuZChyZ2JbaV0qMjU1KTtcblx0cmV0dXJuIHJnYjtcbn1cblxuLyogMTguOC4zIGJnQ29sb3IgdGludCBhbGdvcml0aG0gKi9cbmZ1bmN0aW9uIHJnYl90aW50KGhleCwgdGludCkge1xuXHRpZih0aW50ID09PSAwKSByZXR1cm4gaGV4O1xuXHR2YXIgaHNsID0gcmdiMkhTTChoZXgyUkdCKGhleCkpO1xuXHRpZiAodGludCA8IDApIGhzbFsyXSA9IGhzbFsyXSAqICgxICsgdGludCk7XG5cdGVsc2UgaHNsWzJdID0gMSAtICgxIC0gaHNsWzJdKSAqICgxIC0gdGludCk7XG5cdHJldHVybiByZ2IySGV4KGhzbDJSR0IoaHNsKSk7XG59XG5cbi8qIDE4LjMuMS4xMyB3aWR0aCBjYWxjdWxhdGlvbnMgKi9cbi8qIFtNUy1PSTI5NTAwXSAyLjEuNTk1IENvbHVtbiBXaWR0aCAmIEZvcm1hdHRpbmcgKi9cbnZhciBERUZfTURXID0gNiwgTUFYX01EVyA9IDE1LCBNSU5fTURXID0gMSwgTURXID0gREVGX01EVztcbmZ1bmN0aW9uIHdpZHRoMnB4KHdpZHRoKSB7IHJldHVybiBNYXRoLmZsb29yKCggd2lkdGggKyAoTWF0aC5yb3VuZCgxMjgvTURXKSkvMjU2ICkqIE1EVyApOyB9XG5mdW5jdGlvbiBweDJjaGFyKHB4KSB7IHJldHVybiAoTWF0aC5mbG9vcigocHggLSA1KS9NRFcgKiAxMDAgKyAwLjUpKS8xMDA7IH1cbmZ1bmN0aW9uIGNoYXIyd2lkdGgoY2hyKSB7IHJldHVybiAoTWF0aC5yb3VuZCgoY2hyICogTURXICsgNSkvTURXKjI1NikpLzI1NjsgfVxuLy9mdW5jdGlvbiBweDJjaGFyXyhweCkgeyByZXR1cm4gKCgocHggLSA1KS9NRFcgKiAxMDAgKyAwLjUpKS8xMDA7IH1cbi8vZnVuY3Rpb24gY2hhcjJ3aWR0aF8oY2hyKSB7IHJldHVybiAoKChjaHIgKiBNRFcgKyA1KS9NRFcqMjU2KSkvMjU2OyB9XG5mdW5jdGlvbiBjeWNsZV93aWR0aChjb2xsdykgeyByZXR1cm4gY2hhcjJ3aWR0aChweDJjaGFyKHdpZHRoMnB4KGNvbGx3KSkpOyB9XG4vKiBYTFNYL1hMU0IvWExTIHNwZWNpZnkgd2lkdGggaW4gdW5pdHMgb2YgTURXICovXG5mdW5jdGlvbiBmaW5kX21kd19jb2x3KGNvbGx3KSB7XG5cdHZhciBkZWx0YSA9IE1hdGguYWJzKGNvbGx3IC0gY3ljbGVfd2lkdGgoY29sbHcpKSwgX01EVyA9IE1EVztcblx0aWYoZGVsdGEgPiAwLjAwNSkgZm9yKE1EVz1NSU5fTURXOyBNRFc8TUFYX01EVzsgKytNRFcpIGlmKE1hdGguYWJzKGNvbGx3IC0gY3ljbGVfd2lkdGgoY29sbHcpKSA8PSBkZWx0YSkgeyBkZWx0YSA9IE1hdGguYWJzKGNvbGx3IC0gY3ljbGVfd2lkdGgoY29sbHcpKTsgX01EVyA9IE1EVzsgfVxuXHRNRFcgPSBfTURXO1xufVxuLyogWExNTCBzcGVjaWZpZXMgd2lkdGggaW4gdGVybXMgb2YgcGl4ZWxzICovXG4vKmZ1bmN0aW9uIGZpbmRfbWR3X3dweCh3cHgpIHtcblx0dmFyIGRlbHRhID0gSW5maW5pdHksIGd1ZXNzID0gMCwgX01EVyA9IE1JTl9NRFc7XG5cdGZvcihNRFc9TUlOX01EVzsgTURXPE1BWF9NRFc7ICsrTURXKSB7XG5cdFx0Z3Vlc3MgPSBjaGFyMndpZHRoXyhweDJjaGFyXyh3cHgpKSoyNTY7XG5cdFx0Z3Vlc3MgPSAoZ3Vlc3MpICUgMTtcblx0XHRpZihndWVzcyA+IDAuNSkgZ3Vlc3MtLTtcblx0XHRpZihNYXRoLmFicyhndWVzcykgPCBkZWx0YSkgeyBkZWx0YSA9IE1hdGguYWJzKGd1ZXNzKTsgX01EVyA9IE1EVzsgfVxuXHR9XG5cdE1EVyA9IF9NRFc7XG59Ki9cblxuZnVuY3Rpb24gcHJvY2Vzc19jb2woY29sbC8qOkNvbEluZm8qLykge1xuXHRpZihjb2xsLndpZHRoKSB7XG5cdFx0Y29sbC53cHggPSB3aWR0aDJweChjb2xsLndpZHRoKTtcblx0XHRjb2xsLndjaCA9IHB4MmNoYXIoY29sbC53cHgpO1xuXHRcdGNvbGwuTURXID0gTURXO1xuXHR9IGVsc2UgaWYoY29sbC53cHgpIHtcblx0XHRjb2xsLndjaCA9IHB4MmNoYXIoY29sbC53cHgpO1xuXHRcdGNvbGwud2lkdGggPSBjaGFyMndpZHRoKGNvbGwud2NoKTtcblx0XHRjb2xsLk1EVyA9IE1EVztcblx0fSBlbHNlIGlmKHR5cGVvZiBjb2xsLndjaCA9PSAnbnVtYmVyJykge1xuXHRcdGNvbGwud2lkdGggPSBjaGFyMndpZHRoKGNvbGwud2NoKTtcblx0XHRjb2xsLndweCA9IHdpZHRoMnB4KGNvbGwud2lkdGgpO1xuXHRcdGNvbGwuTURXID0gTURXO1xuXHR9XG5cdGlmKGNvbGwuY3VzdG9tV2lkdGgpIGRlbGV0ZSBjb2xsLmN1c3RvbVdpZHRoO1xufVxuXG52YXIgREVGX1BQSSA9IDk2LCBQUEkgPSBERUZfUFBJO1xuZnVuY3Rpb24gcHgycHQocHgpIHsgcmV0dXJuIHB4ICogOTYgLyBQUEk7IH1cbmZ1bmN0aW9uIHB0MnB4KHB0KSB7IHJldHVybiBwdCAqIFBQSSAvIDk2OyB9XG5cbi8qIFtNUy1FWFNQWE1MM10gMi40LjU0IFNUX2VubVBhdHRlcm4gKi9cbnZhciBYTE1MUGF0dGVyblR5cGVNYXAgPSB7XG5cdFwiTm9uZVwiOiBcIm5vbmVcIixcblx0XCJTb2xpZFwiOiBcInNvbGlkXCIsXG5cdFwiR3JheTUwXCI6IFwibWVkaXVtR3JheVwiLFxuXHRcIkdyYXk3NVwiOiBcImRhcmtHcmF5XCIsXG5cdFwiR3JheTI1XCI6IFwibGlnaHRHcmF5XCIsXG5cdFwiSG9yelN0cmlwZVwiOiBcImRhcmtIb3Jpem9udGFsXCIsXG5cdFwiVmVydFN0cmlwZVwiOiBcImRhcmtWZXJ0aWNhbFwiLFxuXHRcIlJldmVyc2VEaWFnU3RyaXBlXCI6IFwiZGFya0Rvd25cIixcblx0XCJEaWFnU3RyaXBlXCI6IFwiZGFya1VwXCIsXG5cdFwiRGlhZ0Nyb3NzXCI6IFwiZGFya0dyaWRcIixcblx0XCJUaGlja0RpYWdDcm9zc1wiOiBcImRhcmtUcmVsbGlzXCIsXG5cdFwiVGhpbkhvcnpTdHJpcGVcIjogXCJsaWdodEhvcml6b250YWxcIixcblx0XCJUaGluVmVydFN0cmlwZVwiOiBcImxpZ2h0VmVydGljYWxcIixcblx0XCJUaGluUmV2ZXJzZURpYWdTdHJpcGVcIjogXCJsaWdodERvd25cIixcblx0XCJUaGluSG9yekNyb3NzXCI6IFwibGlnaHRHcmlkXCJcbn07XG5cbi8qIDE4LjguNSBib3JkZXJzIENUX0JvcmRlcnMgKi9cbmZ1bmN0aW9uIHBhcnNlX2JvcmRlcnModCwgc3R5bGVzLCB0aGVtZXMsIG9wdHMpIHtcblx0c3R5bGVzLkJvcmRlcnMgPSBbXTtcblx0dmFyIGJvcmRlciA9IHt9O1xuXHR2YXIgcGFzcyA9IGZhbHNlO1xuXHQodFswXS5tYXRjaCh0YWdyZWdleCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHgpIHtcblx0XHR2YXIgeSA9IHBhcnNleG1sdGFnKHgpO1xuXHRcdHN3aXRjaChzdHJpcF9ucyh5WzBdKSkge1xuXHRcdFx0Y2FzZSAnPGJvcmRlcnMnOiBjYXNlICc8Ym9yZGVycz4nOiBjYXNlICc8L2JvcmRlcnM+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguNCBib3JkZXIgQ1RfQm9yZGVyICovXG5cdFx0XHRjYXNlICc8Ym9yZGVyJzogY2FzZSAnPGJvcmRlcj4nOiBjYXNlICc8Ym9yZGVyLz4nOlxuXHRcdFx0XHRib3JkZXIgPSAvKjo6KCove30vKjo6IDphbnkpKi87XG5cdFx0XHRcdGlmKHkuZGlhZ29uYWxVcCkgYm9yZGVyLmRpYWdvbmFsVXAgPSBwYXJzZXhtbGJvb2woeS5kaWFnb25hbFVwKTtcblx0XHRcdFx0aWYoeS5kaWFnb25hbERvd24pIGJvcmRlci5kaWFnb25hbERvd24gPSBwYXJzZXhtbGJvb2woeS5kaWFnb25hbERvd24pO1xuXHRcdFx0XHRzdHlsZXMuQm9yZGVycy5wdXNoKGJvcmRlcik7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9ib3JkZXI+JzogYnJlYWs7XG5cblx0XHRcdC8qIG5vdGU6IG5vdCBpbiBzcGVjLCBhcHBlYXJzIHRvIGJlIENUX0JvcmRlclByICovXG5cdFx0XHRjYXNlICc8bGVmdC8+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8bGVmdCc6IGNhc2UgJzxsZWZ0Pic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9sZWZ0Pic6IGJyZWFrO1xuXG5cdFx0XHQvKiBub3RlOiBub3QgaW4gc3BlYywgYXBwZWFycyB0byBiZSBDVF9Cb3JkZXJQciAqL1xuXHRcdFx0Y2FzZSAnPHJpZ2h0Lz4nOiBicmVhaztcblx0XHRcdGNhc2UgJzxyaWdodCc6IGNhc2UgJzxyaWdodD4nOiBicmVhaztcblx0XHRcdGNhc2UgJzwvcmlnaHQ+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguNDMgdG9wIENUX0JvcmRlclByICovXG5cdFx0XHRjYXNlICc8dG9wLz4nOiBicmVhaztcblx0XHRcdGNhc2UgJzx0b3AnOiBjYXNlICc8dG9wPic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC90b3A+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguNiBib3R0b20gQ1RfQm9yZGVyUHIgKi9cblx0XHRcdGNhc2UgJzxib3R0b20vPic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGJvdHRvbSc6IGNhc2UgJzxib3R0b20+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8L2JvdHRvbT4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4xMyBkaWFnb25hbCBDVF9Cb3JkZXJQciAqL1xuXHRcdFx0Y2FzZSAnPGRpYWdvbmFsJzogY2FzZSAnPGRpYWdvbmFsPic6IGNhc2UgJzxkaWFnb25hbC8+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8L2RpYWdvbmFsPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjI1IGhvcml6b250YWwgQ1RfQm9yZGVyUHIgKi9cblx0XHRcdGNhc2UgJzxob3Jpem9udGFsJzogY2FzZSAnPGhvcml6b250YWw+JzogY2FzZSAnPGhvcml6b250YWwvPic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9ob3Jpem9udGFsPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjQ0IHZlcnRpY2FsIENUX0JvcmRlclByICovXG5cdFx0XHRjYXNlICc8dmVydGljYWwnOiBjYXNlICc8dmVydGljYWw+JzogY2FzZSAnPHZlcnRpY2FsLz4nOiBicmVhaztcblx0XHRcdGNhc2UgJzwvdmVydGljYWw+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMzcgc3RhcnQgQ1RfQm9yZGVyUHIgKi9cblx0XHRcdGNhc2UgJzxzdGFydCc6IGNhc2UgJzxzdGFydD4nOiBjYXNlICc8c3RhcnQvPic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9zdGFydD4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4xNiBlbmQgQ1RfQm9yZGVyUHIgKi9cblx0XHRcdGNhc2UgJzxlbmQnOiBjYXNlICc8ZW5kPic6IGNhc2UgJzxlbmQvPic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9lbmQ+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguPyBjb2xvciBDVF9Db2xvciAqL1xuXHRcdFx0Y2FzZSAnPGNvbG9yJzogY2FzZSAnPGNvbG9yPic6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGNvbG9yLz4nOiBjYXNlICc8L2NvbG9yPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjEwIGV4dExzdCBDVF9FeHRlbnNpb25MaXN0ID8gKi9cblx0XHRcdGNhc2UgJzxleHRMc3QnOiBjYXNlICc8ZXh0THN0Pic6IGNhc2UgJzwvZXh0THN0Pic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGV4dCc6IHBhc3MgPSB0cnVlOyBicmVhaztcblx0XHRcdGNhc2UgJzwvZXh0Pic6IHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiBpZihvcHRzICYmIG9wdHMuV1RGKSB7XG5cdFx0XHRcdGlmKCFwYXNzKSB0aHJvdyBuZXcgRXJyb3IoJ3VucmVjb2duaXplZCAnICsgeVswXSArICcgaW4gYm9yZGVycycpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG59XG5cbi8qIDE4LjguMjEgZmlsbHMgQ1RfRmlsbHMgKi9cbmZ1bmN0aW9uIHBhcnNlX2ZpbGxzKHQsIHN0eWxlcywgdGhlbWVzLCBvcHRzKSB7XG5cdHN0eWxlcy5GaWxscyA9IFtdO1xuXHR2YXIgZmlsbCA9IHt9O1xuXHR2YXIgcGFzcyA9IGZhbHNlO1xuXHQodFswXS5tYXRjaCh0YWdyZWdleCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHgpIHtcblx0XHR2YXIgeSA9IHBhcnNleG1sdGFnKHgpO1xuXHRcdHN3aXRjaChzdHJpcF9ucyh5WzBdKSkge1xuXHRcdFx0Y2FzZSAnPGZpbGxzJzogY2FzZSAnPGZpbGxzPic6IGNhc2UgJzwvZmlsbHM+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMjAgZmlsbCBDVF9GaWxsICovXG5cdFx0XHRjYXNlICc8ZmlsbD4nOiBjYXNlICc8ZmlsbCc6IGNhc2UgJzxmaWxsLz4nOlxuXHRcdFx0XHRmaWxsID0ge307IHN0eWxlcy5GaWxscy5wdXNoKGZpbGwpOyBicmVhaztcblx0XHRcdGNhc2UgJzwvZmlsbD4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4yNCBncmFkaWVudEZpbGwgQ1RfR3JhZGllbnRGaWxsICovXG5cdFx0XHRjYXNlICc8Z3JhZGllbnRGaWxsPic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGdyYWRpZW50RmlsbCc6XG5cdFx0XHRjYXNlICc8L2dyYWRpZW50RmlsbD4nOiBzdHlsZXMuRmlsbHMucHVzaChmaWxsKTsgZmlsbCA9IHt9OyBicmVhaztcblxuXHRcdFx0LyogMTguOC4zMiBwYXR0ZXJuRmlsbCBDVF9QYXR0ZXJuRmlsbCAqL1xuXHRcdFx0Y2FzZSAnPHBhdHRlcm5GaWxsJzogY2FzZSAnPHBhdHRlcm5GaWxsPic6XG5cdFx0XHRcdGlmKHkucGF0dGVyblR5cGUpIGZpbGwucGF0dGVyblR5cGUgPSB5LnBhdHRlcm5UeXBlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJzxwYXR0ZXJuRmlsbC8+JzogY2FzZSAnPC9wYXR0ZXJuRmlsbD4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4zIGJnQ29sb3IgQ1RfQ29sb3IgKi9cblx0XHRcdGNhc2UgJzxiZ0NvbG9yJzpcblx0XHRcdFx0aWYoIWZpbGwuYmdDb2xvcikgZmlsbC5iZ0NvbG9yID0ge307XG5cdFx0XHRcdGlmKHkuaW5kZXhlZCkgZmlsbC5iZ0NvbG9yLmluZGV4ZWQgPSBwYXJzZUludCh5LmluZGV4ZWQsIDEwKTtcblx0XHRcdFx0aWYoeS50aGVtZSkgZmlsbC5iZ0NvbG9yLnRoZW1lID0gcGFyc2VJbnQoeS50aGVtZSwgMTApO1xuXHRcdFx0XHRpZih5LnRpbnQpIGZpbGwuYmdDb2xvci50aW50ID0gcGFyc2VGbG9hdCh5LnRpbnQpO1xuXHRcdFx0XHQvKiBFeGNlbCB1c2VzIEFSR0Igc3RyaW5ncyAqL1xuXHRcdFx0XHRpZih5LnJnYikgZmlsbC5iZ0NvbG9yLnJnYiA9IHkucmdiLnNsaWNlKC02KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICc8YmdDb2xvci8+JzogY2FzZSAnPC9iZ0NvbG9yPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjE5IGZnQ29sb3IgQ1RfQ29sb3IgKi9cblx0XHRcdGNhc2UgJzxmZ0NvbG9yJzpcblx0XHRcdFx0aWYoIWZpbGwuZmdDb2xvcikgZmlsbC5mZ0NvbG9yID0ge307XG5cdFx0XHRcdGlmKHkudGhlbWUpIGZpbGwuZmdDb2xvci50aGVtZSA9IHBhcnNlSW50KHkudGhlbWUsIDEwKTtcblx0XHRcdFx0aWYoeS50aW50KSBmaWxsLmZnQ29sb3IudGludCA9IHBhcnNlRmxvYXQoeS50aW50KTtcblx0XHRcdFx0LyogRXhjZWwgdXNlcyBBUkdCIHN0cmluZ3MgKi9cblx0XHRcdFx0aWYoeS5yZ2IgIT0gbnVsbCkgZmlsbC5mZ0NvbG9yLnJnYiA9IHkucmdiLnNsaWNlKC02KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICc8ZmdDb2xvci8+JzogY2FzZSAnPC9mZ0NvbG9yPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjM4IHN0b3AgQ1RfR3JhZGllbnRTdG9wICovXG5cdFx0XHRjYXNlICc8c3RvcCc6IGNhc2UgJzxzdG9wLz4nOiBicmVhaztcblx0XHRcdGNhc2UgJzwvc3RvcD4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4/IGNvbG9yIENUX0NvbG9yICovXG5cdFx0XHRjYXNlICc8Y29sb3InOiBjYXNlICc8Y29sb3IvPic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9jb2xvcj4nOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4xMCBleHRMc3QgQ1RfRXh0ZW5zaW9uTGlzdCA/ICovXG5cdFx0XHRjYXNlICc8ZXh0THN0JzogY2FzZSAnPGV4dExzdD4nOiBjYXNlICc8L2V4dExzdD4nOiBicmVhaztcblx0XHRcdGNhc2UgJzxleHQnOiBwYXNzID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L2V4dD4nOiBwYXNzID0gZmFsc2U7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogaWYob3B0cyAmJiBvcHRzLldURikge1xuXHRcdFx0XHRpZighcGFzcykgdGhyb3cgbmV3IEVycm9yKCd1bnJlY29nbml6ZWQgJyArIHlbMF0gKyAnIGluIGZpbGxzJyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9KTtcbn1cblxuLyogMTguOC4yMyBmb250cyBDVF9Gb250cyAqL1xuZnVuY3Rpb24gcGFyc2VfZm9udHModCwgc3R5bGVzLCB0aGVtZXMsIG9wdHMpIHtcblx0c3R5bGVzLkZvbnRzID0gW107XG5cdHZhciBmb250ID0ge307XG5cdHZhciBwYXNzID0gZmFsc2U7XG5cdCh0WzBdLm1hdGNoKHRhZ3JlZ2V4KXx8W10pLmZvckVhY2goZnVuY3Rpb24oeCkge1xuXHRcdHZhciB5ID0gcGFyc2V4bWx0YWcoeCk7XG5cdFx0c3dpdGNoKHN0cmlwX25zKHlbMF0pKSB7XG5cdFx0XHRjYXNlICc8Zm9udHMnOiBjYXNlICc8Zm9udHM+JzogY2FzZSAnPC9mb250cz4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4yMiBmb250IENUX0ZvbnQgKi9cblx0XHRcdGNhc2UgJzxmb250JzogY2FzZSAnPGZvbnQ+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8L2ZvbnQ+JzogY2FzZSAnPGZvbnQvPic6XG5cdFx0XHRcdHN0eWxlcy5Gb250cy5wdXNoKGZvbnQpO1xuXHRcdFx0XHRmb250ID0ge307XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjI5IG5hbWUgQ1RfRm9udE5hbWUgKi9cblx0XHRcdGNhc2UgJzxuYW1lJzogaWYoeS52YWwpIGZvbnQubmFtZSA9IHV0ZjhyZWFkKHkudmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8bmFtZS8+JzogY2FzZSAnPC9uYW1lPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjIgIGIgQ1RfQm9vbGVhblByb3BlcnR5ICovXG5cdFx0XHRjYXNlICc8Yic6IGZvbnQuYm9sZCA9IHkudmFsID8gcGFyc2V4bWxib29sKHkudmFsKSA6IDE7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGIvPic6IGZvbnQuYm9sZCA9IDE7IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjI2IGkgQ1RfQm9vbGVhblByb3BlcnR5ICovXG5cdFx0XHRjYXNlICc8aSc6IGZvbnQuaXRhbGljID0geS52YWwgPyBwYXJzZXhtbGJvb2woeS52YWwpIDogMTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8aS8+JzogZm9udC5pdGFsaWMgPSAxOyBicmVhaztcblxuXHRcdFx0LyogMTguNC4xMyB1IENUX1VuZGVybGluZVByb3BlcnR5ICovXG5cdFx0XHRjYXNlICc8dSc6XG5cdFx0XHRcdHN3aXRjaCh5LnZhbCkge1xuXHRcdFx0XHRcdGNhc2UgXCJub25lXCI6IGZvbnQudW5kZXJsaW5lID0gMHgwMDsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcInNpbmdsZVwiOiBmb250LnVuZGVybGluZSA9IDB4MDE7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgXCJkb3VibGVcIjogZm9udC51bmRlcmxpbmUgPSAweDAyOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIFwic2luZ2xlQWNjb3VudGluZ1wiOiBmb250LnVuZGVybGluZSA9IDB4MjE7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgXCJkb3VibGVBY2NvdW50aW5nXCI6IGZvbnQudW5kZXJsaW5lID0gMHgyMjsgYnJlYWs7XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRjYXNlICc8dS8+JzogZm9udC51bmRlcmxpbmUgPSAxOyBicmVhaztcblxuXHRcdFx0LyogMTguNC4xMCBzdHJpa2UgQ1RfQm9vbGVhblByb3BlcnR5ICovXG5cdFx0XHRjYXNlICc8c3RyaWtlJzogZm9udC5zdHJpa2UgPSB5LnZhbCA/IHBhcnNleG1sYm9vbCh5LnZhbCkgOiAxOyBicmVhaztcblx0XHRcdGNhc2UgJzxzdHJpa2UvPic6IGZvbnQuc3RyaWtlID0gMTsgYnJlYWs7XG5cblx0XHRcdC8qIDE4LjQuMiAgb3V0bGluZSBDVF9Cb29sZWFuUHJvcGVydHkgKi9cblx0XHRcdGNhc2UgJzxvdXRsaW5lJzogZm9udC5vdXRsaW5lID0geS52YWwgPyBwYXJzZXhtbGJvb2woeS52YWwpIDogMTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8b3V0bGluZS8+JzogZm9udC5vdXRsaW5lID0gMTsgYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMzYgc2hhZG93IENUX0Jvb2xlYW5Qcm9wZXJ0eSAqL1xuXHRcdFx0Y2FzZSAnPHNoYWRvdyc6IGZvbnQuc2hhZG93ID0geS52YWwgPyBwYXJzZXhtbGJvb2woeS52YWwpIDogMTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8c2hhZG93Lz4nOiBmb250LnNoYWRvdyA9IDE7IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjEyIGNvbmRlbnNlIENUX0Jvb2xlYW5Qcm9wZXJ0eSAqL1xuXHRcdFx0Y2FzZSAnPGNvbmRlbnNlJzogZm9udC5jb25kZW5zZSA9IHkudmFsID8gcGFyc2V4bWxib29sKHkudmFsKSA6IDE7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGNvbmRlbnNlLz4nOiBmb250LmNvbmRlbnNlID0gMTsgYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMTcgZXh0ZW5kIENUX0Jvb2xlYW5Qcm9wZXJ0eSAqL1xuXHRcdFx0Y2FzZSAnPGV4dGVuZCc6IGZvbnQuZXh0ZW5kID0geS52YWwgPyBwYXJzZXhtbGJvb2woeS52YWwpIDogMTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8ZXh0ZW5kLz4nOiBmb250LmV4dGVuZCA9IDE7IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC40LjExIHN6IENUX0ZvbnRTaXplICovXG5cdFx0XHRjYXNlICc8c3onOiBpZih5LnZhbCkgZm9udC5zeiA9ICt5LnZhbDsgYnJlYWs7XG5cdFx0XHRjYXNlICc8c3ovPic6IGNhc2UgJzwvc3o+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjQuMTQgdmVydEFsaWduIENUX1ZlcnRpY2FsQWxpZ25Gb250UHJvcGVydHkgKi9cblx0XHRcdGNhc2UgJzx2ZXJ0QWxpZ24nOiBpZih5LnZhbCkgZm9udC52ZXJ0QWxpZ24gPSB5LnZhbDsgYnJlYWs7XG5cdFx0XHRjYXNlICc8dmVydEFsaWduLz4nOiBjYXNlICc8L3ZlcnRBbGlnbj4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4xOCBmYW1pbHkgQ1RfRm9udEZhbWlseSAqL1xuXHRcdFx0Y2FzZSAnPGZhbWlseSc6IGlmKHkudmFsKSBmb250LmZhbWlseSA9IHBhcnNlSW50KHkudmFsLDEwKTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8ZmFtaWx5Lz4nOiBjYXNlICc8L2ZhbWlseT4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4zNSBzY2hlbWUgQ1RfRm9udFNjaGVtZSAqL1xuXHRcdFx0Y2FzZSAnPHNjaGVtZSc6IGlmKHkudmFsKSBmb250LnNjaGVtZSA9IHkudmFsOyBicmVhaztcblx0XHRcdGNhc2UgJzxzY2hlbWUvPic6IGNhc2UgJzwvc2NoZW1lPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC40LjEgY2hhcnNldCBDVF9JbnRQcm9wZXJ0eSAqL1xuXHRcdFx0Y2FzZSAnPGNoYXJzZXQnOlxuXHRcdFx0XHRpZih5LnZhbCA9PSAnMScpIGJyZWFrO1xuXHRcdFx0XHR5LmNvZGVwYWdlID0gQ1MyQ1BbcGFyc2VJbnQoeS52YWwsIDEwKV07XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4/Lj8gY29sb3IgQ1RfQ29sb3IgKi9cblx0XHRcdGNhc2UgJzxjb2xvcic6XG5cdFx0XHRcdGlmKCFmb250LmNvbG9yKSBmb250LmNvbG9yID0ge307XG5cdFx0XHRcdGlmKHkuYXV0bykgZm9udC5jb2xvci5hdXRvID0gcGFyc2V4bWxib29sKHkuYXV0byk7XG5cblx0XHRcdFx0aWYoeS5yZ2IpIGZvbnQuY29sb3IucmdiID0geS5yZ2Iuc2xpY2UoLTYpO1xuXHRcdFx0XHRlbHNlIGlmKHkuaW5kZXhlZCkge1xuXHRcdFx0XHRcdGZvbnQuY29sb3IuaW5kZXggPSBwYXJzZUludCh5LmluZGV4ZWQsIDEwKTtcblx0XHRcdFx0XHR2YXIgaWN2ID0gWExTSWN2W2ZvbnQuY29sb3IuaW5kZXhdO1xuXHRcdFx0XHRcdGlmKGZvbnQuY29sb3IuaW5kZXggPT0gODEpIGljdiA9IFhMU0ljdlsxXTtcblx0XHRcdFx0XHRpZighaWN2KSBpY3YgPSBYTFNJY3ZbMV07IC8vdGhyb3cgbmV3IEVycm9yKHgpOyAvLyBub3RlOiAyMDYgaXMgdmFsaWRcblx0XHRcdFx0XHRmb250LmNvbG9yLnJnYiA9IGljdlswXS50b1N0cmluZygxNikgKyBpY3ZbMV0udG9TdHJpbmcoMTYpICsgaWN2WzJdLnRvU3RyaW5nKDE2KTtcblx0XHRcdFx0fSBlbHNlIGlmKHkudGhlbWUpIHtcblx0XHRcdFx0XHRmb250LmNvbG9yLnRoZW1lID0gcGFyc2VJbnQoeS50aGVtZSwgMTApO1xuXHRcdFx0XHRcdGlmKHkudGludCkgZm9udC5jb2xvci50aW50ID0gcGFyc2VGbG9hdCh5LnRpbnQpO1xuXHRcdFx0XHRcdGlmKHkudGhlbWUgJiYgdGhlbWVzLnRoZW1lRWxlbWVudHMgJiYgdGhlbWVzLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lKSB7XG5cdFx0XHRcdFx0XHRmb250LmNvbG9yLnJnYiA9IHJnYl90aW50KHRoZW1lcy50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVtmb250LmNvbG9yLnRoZW1lXS5yZ2IsIGZvbnQuY29sb3IudGludCB8fCAwKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJzxjb2xvci8+JzogY2FzZSAnPC9jb2xvcj4nOiBicmVhaztcblxuXHRcdFx0Lyogbm90ZTogc29tZXRpbWVzIG1jOkFsdGVybmF0ZUNvbnRlbnQgYXBwZWFycyBiYXJlICovXG5cdFx0XHRjYXNlICc8QWx0ZXJuYXRlQ29udGVudCc6IHBhc3MgPSB0cnVlOyBicmVhaztcblx0XHRcdGNhc2UgJzwvQWx0ZXJuYXRlQ29udGVudD4nOiBwYXNzID0gZmFsc2U7IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjEwIGV4dExzdCBDVF9FeHRlbnNpb25MaXN0ID8gKi9cblx0XHRcdGNhc2UgJzxleHRMc3QnOiBjYXNlICc8ZXh0THN0Pic6IGNhc2UgJzwvZXh0THN0Pic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGV4dCc6IHBhc3MgPSB0cnVlOyBicmVhaztcblx0XHRcdGNhc2UgJzwvZXh0Pic6IHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiBpZihvcHRzICYmIG9wdHMuV1RGKSB7XG5cdFx0XHRcdGlmKCFwYXNzKSB0aHJvdyBuZXcgRXJyb3IoJ3VucmVjb2duaXplZCAnICsgeVswXSArICcgaW4gZm9udHMnKTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xufVxuXG4vKiAxOC44LjMxIG51bUZtdHMgQ1RfTnVtRm10cyAqL1xuZnVuY3Rpb24gcGFyc2VfbnVtRm10cyh0LCBzdHlsZXMsIG9wdHMpIHtcblx0c3R5bGVzLk51bWJlckZtdCA9IFtdO1xuXHR2YXIgay8qQXJyYXk8bnVtYmVyPiovID0gKGtleXModGFibGVfZm10KS8qOmFueSovKTtcblx0Zm9yKHZhciBpPTA7IGkgPCBrLmxlbmd0aDsgKytpKSBzdHlsZXMuTnVtYmVyRm10W2tbaV1dID0gdGFibGVfZm10W2tbaV1dO1xuXHR2YXIgbSA9IHRbMF0ubWF0Y2godGFncmVnZXgpO1xuXHRpZighbSkgcmV0dXJuO1xuXHRmb3IoaT0wOyBpIDwgbS5sZW5ndGg7ICsraSkge1xuXHRcdHZhciB5ID0gcGFyc2V4bWx0YWcobVtpXSk7XG5cdFx0c3dpdGNoKHN0cmlwX25zKHlbMF0pKSB7XG5cdFx0XHRjYXNlICc8bnVtRm10cyc6IGNhc2UgJzwvbnVtRm10cz4nOiBjYXNlICc8bnVtRm10cy8+JzogY2FzZSAnPG51bUZtdHM+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8bnVtRm10Jzoge1xuXHRcdFx0XHR2YXIgZj11bmVzY2FwZXhtbCh1dGY4cmVhZCh5LmZvcm1hdENvZGUpKSwgaj1wYXJzZUludCh5Lm51bUZtdElkLDEwKTtcblx0XHRcdFx0c3R5bGVzLk51bWJlckZtdFtqXSA9IGY7XG5cdFx0XHRcdGlmKGo+MCkge1xuXHRcdFx0XHRcdGlmKGogPiAweDE4OCkge1xuXHRcdFx0XHRcdFx0Zm9yKGogPSAweDE4ODsgaiA+IDB4M2M7IC0taikgaWYoc3R5bGVzLk51bWJlckZtdFtqXSA9PSBudWxsKSBicmVhaztcblx0XHRcdFx0XHRcdHN0eWxlcy5OdW1iZXJGbXRbal0gPSBmO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRTU0ZfbG9hZChmLGopO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9udW1GbXQ+JzogYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiBpZihvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKCd1bnJlY29nbml6ZWQgJyArIHlbMF0gKyAnIGluIG51bUZtdHMnKTtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gd3JpdGVfbnVtRm10cyhORi8qOntbbjpudW1iZXJ8c3RyaW5nXTpzdHJpbmd9Ki8vKjo6LCBvcHRzKi8pIHtcblx0dmFyIG8gPSBbXCI8bnVtRm10cz5cIl07XG5cdFtbNSw4XSxbMjMsMjZdLFs0MSw0NF0sWy8qNjMqLzUwLC8qNjZdLFsxNjQsKi8zOTJdXS5mb3JFYWNoKGZ1bmN0aW9uKHIpIHtcblx0XHRmb3IodmFyIGkgPSByWzBdOyBpIDw9IHJbMV07ICsraSkgaWYoTkZbaV0gIT0gbnVsbCkgb1tvLmxlbmd0aF0gPSAod3JpdGV4dGFnKCdudW1GbXQnLG51bGwse251bUZtdElkOmksZm9ybWF0Q29kZTplc2NhcGV4bWwoTkZbaV0pfSkpO1xuXHR9KTtcblx0aWYoby5sZW5ndGggPT09IDEpIHJldHVybiBcIlwiO1xuXHRvW28ubGVuZ3RoXSA9IChcIjwvbnVtRm10cz5cIik7XG5cdG9bMF0gPSB3cml0ZXh0YWcoJ251bUZtdHMnLCBudWxsLCB7IGNvdW50Om8ubGVuZ3RoLTIgfSkucmVwbGFjZShcIi8+XCIsIFwiPlwiKTtcblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cblxuLyogMTguOC4xMCBjZWxsWGZzIENUX0NlbGxYZnMgKi9cbnZhciBjZWxsWEZfdWludCA9IFsgXCJudW1GbXRJZFwiLCBcImZpbGxJZFwiLCBcImZvbnRJZFwiLCBcImJvcmRlcklkXCIsIFwieGZJZFwiIF07XG52YXIgY2VsbFhGX2Jvb2wgPSBbIFwiYXBwbHlBbGlnbm1lbnRcIiwgXCJhcHBseUJvcmRlclwiLCBcImFwcGx5RmlsbFwiLCBcImFwcGx5Rm9udFwiLCBcImFwcGx5TnVtYmVyRm9ybWF0XCIsIFwiYXBwbHlQcm90ZWN0aW9uXCIsIFwicGl2b3RCdXR0b25cIiwgXCJxdW90ZVByZWZpeFwiIF07XG5mdW5jdGlvbiBwYXJzZV9jZWxsWGZzKHQsIHN0eWxlcywgb3B0cykge1xuXHRzdHlsZXMuQ2VsbFhmID0gW107XG5cdHZhciB4Zjtcblx0dmFyIHBhc3MgPSBmYWxzZTtcblx0KHRbMF0ubWF0Y2godGFncmVnZXgpfHxbXSkuZm9yRWFjaChmdW5jdGlvbih4KSB7XG5cdFx0dmFyIHkgPSBwYXJzZXhtbHRhZyh4KSwgaSA9IDA7XG5cdFx0c3dpdGNoKHN0cmlwX25zKHlbMF0pKSB7XG5cdFx0XHRjYXNlICc8Y2VsbFhmcyc6IGNhc2UgJzxjZWxsWGZzPic6IGNhc2UgJzxjZWxsWGZzLz4nOiBjYXNlICc8L2NlbGxYZnM+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguNDUgeGYgQ1RfWGYgKi9cblx0XHRcdGNhc2UgJzx4Zic6IGNhc2UgJzx4Zi8+Jzpcblx0XHRcdFx0eGYgPSB5O1xuXHRcdFx0XHRkZWxldGUgeGZbMF07XG5cdFx0XHRcdGZvcihpID0gMDsgaSA8IGNlbGxYRl91aW50Lmxlbmd0aDsgKytpKSBpZih4ZltjZWxsWEZfdWludFtpXV0pXG5cdFx0XHRcdFx0eGZbY2VsbFhGX3VpbnRbaV1dID0gcGFyc2VJbnQoeGZbY2VsbFhGX3VpbnRbaV1dLCAxMCk7XG5cdFx0XHRcdGZvcihpID0gMDsgaSA8IGNlbGxYRl9ib29sLmxlbmd0aDsgKytpKSBpZih4ZltjZWxsWEZfYm9vbFtpXV0pXG5cdFx0XHRcdFx0eGZbY2VsbFhGX2Jvb2xbaV1dID0gcGFyc2V4bWxib29sKHhmW2NlbGxYRl9ib29sW2ldXSk7XG5cdFx0XHRcdGlmKHN0eWxlcy5OdW1iZXJGbXQgJiYgeGYubnVtRm10SWQgPiAweDE4OCkge1xuXHRcdFx0XHRcdGZvcihpID0gMHgxODg7IGkgPiAweDNjOyAtLWkpIGlmKHN0eWxlcy5OdW1iZXJGbXRbeGYubnVtRm10SWRdID09IHN0eWxlcy5OdW1iZXJGbXRbaV0pIHsgeGYubnVtRm10SWQgPSBpOyBicmVhazsgfVxuXHRcdFx0XHR9XG5cdFx0XHRcdHN0eWxlcy5DZWxsWGYucHVzaCh4Zik7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC94Zj4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4xIGFsaWdubWVudCBDVF9DZWxsQWxpZ25tZW50ICovXG5cdFx0XHRjYXNlICc8YWxpZ25tZW50JzogY2FzZSAnPGFsaWdubWVudC8+Jzpcblx0XHRcdFx0dmFyIGFsaWdubWVudCA9IHt9O1xuXHRcdFx0XHRpZih5LnZlcnRpY2FsKSBhbGlnbm1lbnQudmVydGljYWwgPSB5LnZlcnRpY2FsO1xuXHRcdFx0XHRpZih5Lmhvcml6b250YWwpIGFsaWdubWVudC5ob3Jpem9udGFsID0geS5ob3Jpem9udGFsO1xuXHRcdFx0XHRpZih5LnRleHRSb3RhdGlvbiAhPSBudWxsKSBhbGlnbm1lbnQudGV4dFJvdGF0aW9uID0geS50ZXh0Um90YXRpb247XG5cdFx0XHRcdGlmKHkuaW5kZW50KSBhbGlnbm1lbnQuaW5kZW50ID0geS5pbmRlbnQ7XG5cdFx0XHRcdGlmKHkud3JhcFRleHQpIGFsaWdubWVudC53cmFwVGV4dCA9IHBhcnNleG1sYm9vbCh5LndyYXBUZXh0KTtcblx0XHRcdFx0eGYuYWxpZ25tZW50ID0gYWxpZ25tZW50O1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJzwvYWxpZ25tZW50Pic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjMzIHByb3RlY3Rpb24gQ1RfQ2VsbFByb3RlY3Rpb24gKi9cblx0XHRcdGNhc2UgJzxwcm90ZWN0aW9uJzpcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICc8L3Byb3RlY3Rpb24+JzogY2FzZSAnPHByb3RlY3Rpb24vPic6IGJyZWFrO1xuXG5cdFx0XHQvKiBub3RlOiBzb21ldGltZXMgbWM6QWx0ZXJuYXRlQ29udGVudCBhcHBlYXJzIGJhcmUgKi9cblx0XHRcdGNhc2UgJzxBbHRlcm5hdGVDb250ZW50JzogcGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9BbHRlcm5hdGVDb250ZW50Pic6IHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMTAgZXh0THN0IENUX0V4dGVuc2lvbkxpc3QgPyAqL1xuXHRcdFx0Y2FzZSAnPGV4dExzdCc6IGNhc2UgJzxleHRMc3Q+JzogY2FzZSAnPC9leHRMc3Q+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8ZXh0JzogcGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9leHQ+JzogcGFzcyA9IGZhbHNlOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6IGlmKG9wdHMgJiYgb3B0cy5XVEYpIHtcblx0XHRcdFx0aWYoIXBhc3MpIHRocm93IG5ldyBFcnJvcigndW5yZWNvZ25pemVkICcgKyB5WzBdICsgJyBpbiBjZWxsWGZzJyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9KTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfY2VsbFhmcyhjZWxsWGZzKS8qOnN0cmluZyovIHtcblx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0b1tvLmxlbmd0aF0gPSAod3JpdGV4dGFnKCdjZWxsWGZzJyxudWxsKSk7XG5cdGNlbGxYZnMuZm9yRWFjaChmdW5jdGlvbihjKSB7XG5cdFx0b1tvLmxlbmd0aF0gPSAod3JpdGV4dGFnKCd4ZicsIG51bGwsIGMpKTtcblx0fSk7XG5cdG9bby5sZW5ndGhdID0gKFwiPC9jZWxsWGZzPlwiKTtcblx0aWYoby5sZW5ndGggPT09IDIpIHJldHVybiBcIlwiO1xuXHRvWzBdID0gd3JpdGV4dGFnKCdjZWxsWGZzJyxudWxsLCB7Y291bnQ6by5sZW5ndGgtMn0pLnJlcGxhY2UoXCIvPlwiLFwiPlwiKTtcblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cblxuLyogMTguOCBTdHlsZXMgQ1RfU3R5bGVzaGVldCovXG52YXIgcGFyc2Vfc3R5X3htbD0gLyojX19QVVJFX18qLyhmdW5jdGlvbiBtYWtlX3BzdHl4KCkge1xudmFyIG51bUZtdFJlZ2V4ID0gLzwoPzpcXHcrOik/bnVtRm10cyhbXj5dKik+W1xcU1xcc10qPzxcXC8oPzpcXHcrOik/bnVtRm10cz4vO1xudmFyIGNlbGxYZlJlZ2V4ID0gLzwoPzpcXHcrOik/Y2VsbFhmcyhbXj5dKik+W1xcU1xcc10qPzxcXC8oPzpcXHcrOik/Y2VsbFhmcz4vO1xudmFyIGZpbGxzUmVnZXggPSAvPCg/Olxcdys6KT9maWxscyhbXj5dKik+W1xcU1xcc10qPzxcXC8oPzpcXHcrOik/ZmlsbHM+LztcbnZhciBmb250c1JlZ2V4ID0gLzwoPzpcXHcrOik/Zm9udHMoW14+XSopPltcXFNcXHNdKj88XFwvKD86XFx3KzopP2ZvbnRzPi87XG52YXIgYm9yZGVyc1JlZ2V4ID0gLzwoPzpcXHcrOik/Ym9yZGVycyhbXj5dKik+W1xcU1xcc10qPzxcXC8oPzpcXHcrOik/Ym9yZGVycz4vO1xuXG5yZXR1cm4gZnVuY3Rpb24gcGFyc2Vfc3R5X3htbChkYXRhLCB0aGVtZXMsIG9wdHMpIHtcblx0dmFyIHN0eWxlcyA9IHt9O1xuXHRpZighZGF0YSkgcmV0dXJuIHN0eWxlcztcblx0ZGF0YSA9IGRhdGEucmVwbGFjZSgvPCEtLShbXFxzXFxTXSo/KS0tPi9tZyxcIlwiKS5yZXBsYWNlKC88IURPQ1RZUEVbXlxcW10qXFxbW15cXF1dKlxcXT4vZ20sXCJcIik7XG5cdC8qIDE4LjguMzkgc3R5bGVTaGVldCBDVF9TdHlsZXNoZWV0ICovXG5cdHZhciB0O1xuXG5cdC8qIDE4LjguMzEgbnVtRm10cyBDVF9OdW1GbXRzID8gKi9cblx0aWYoKHQ9ZGF0YS5tYXRjaChudW1GbXRSZWdleCkpKSBwYXJzZV9udW1GbXRzKHQsIHN0eWxlcywgb3B0cyk7XG5cblx0LyogMTguOC4yMyBmb250cyBDVF9Gb250cyA/ICovXG5cdGlmKCh0PWRhdGEubWF0Y2goZm9udHNSZWdleCkpKSBwYXJzZV9mb250cyh0LCBzdHlsZXMsIHRoZW1lcywgb3B0cyk7XG5cblx0LyogMTguOC4yMSBmaWxscyBDVF9GaWxscyA/ICovXG5cdGlmKCh0PWRhdGEubWF0Y2goZmlsbHNSZWdleCkpKSBwYXJzZV9maWxscyh0LCBzdHlsZXMsIHRoZW1lcywgb3B0cyk7XG5cblx0LyogMTguOC41ICBib3JkZXJzIENUX0JvcmRlcnMgPyAqL1xuXHRpZigodD1kYXRhLm1hdGNoKGJvcmRlcnNSZWdleCkpKSBwYXJzZV9ib3JkZXJzKHQsIHN0eWxlcywgdGhlbWVzLCBvcHRzKTtcblxuXHQvKiAxOC44LjkgIGNlbGxTdHlsZVhmcyBDVF9DZWxsU3R5bGVYZnMgPyAqL1xuXHQvKiAxOC44LjggIGNlbGxTdHlsZXMgQ1RfQ2VsbFN0eWxlcyA/ICovXG5cblx0LyogMTguOC4xMCBjZWxsWGZzIENUX0NlbGxYZnMgPyAqL1xuXHRpZigodD1kYXRhLm1hdGNoKGNlbGxYZlJlZ2V4KSkpIHBhcnNlX2NlbGxYZnModCwgc3R5bGVzLCBvcHRzKTtcblxuXHQvKiAxOC44LjE1IGR4ZnMgQ1RfRHhmcyA/ICovXG5cdC8qIDE4LjguNDIgdGFibGVTdHlsZXMgQ1RfVGFibGVTdHlsZXMgPyAqL1xuXHQvKiAxOC44LjExIGNvbG9ycyBDVF9Db2xvcnMgPyAqL1xuXHQvKiAxOC4yLjEwIGV4dExzdCBDVF9FeHRlbnNpb25MaXN0ID8gKi9cblxuXHRyZXR1cm4gc3R5bGVzO1xufTtcbn0pKCk7XG5cbmZ1bmN0aW9uIHdyaXRlX3N0eV94bWwod2IvKjpXb3JrYm9vayovLCBvcHRzKS8qOnN0cmluZyovIHtcblx0dmFyIG8gPSBbWE1MX0hFQURFUiwgd3JpdGV4dGFnKCdzdHlsZVNoZWV0JywgbnVsbCwge1xuXHRcdCd4bWxucyc6IFhNTE5TX21haW5bMF0sXG5cdFx0J3htbG5zOnZ0JzogWE1MTlMudnRcblx0fSldLCB3O1xuXHRpZih3Yi5TU0YgJiYgKHcgPSB3cml0ZV9udW1GbXRzKHdiLlNTRikpICE9IG51bGwpIG9bby5sZW5ndGhdID0gdztcblx0b1tvLmxlbmd0aF0gPSAoJzxmb250cyBjb3VudD1cIjFcIj48Zm9udD48c3ogdmFsPVwiMTJcIi8+PGNvbG9yIHRoZW1lPVwiMVwiLz48bmFtZSB2YWw9XCJDYWxpYnJpXCIvPjxmYW1pbHkgdmFsPVwiMlwiLz48c2NoZW1lIHZhbD1cIm1pbm9yXCIvPjwvZm9udD48L2ZvbnRzPicpO1xuXHRvW28ubGVuZ3RoXSA9ICgnPGZpbGxzIGNvdW50PVwiMlwiPjxmaWxsPjxwYXR0ZXJuRmlsbCBwYXR0ZXJuVHlwZT1cIm5vbmVcIi8+PC9maWxsPjxmaWxsPjxwYXR0ZXJuRmlsbCBwYXR0ZXJuVHlwZT1cImdyYXkxMjVcIi8+PC9maWxsPjwvZmlsbHM+Jyk7XG5cdG9bby5sZW5ndGhdID0gKCc8Ym9yZGVycyBjb3VudD1cIjFcIj48Ym9yZGVyPjxsZWZ0Lz48cmlnaHQvPjx0b3AvPjxib3R0b20vPjxkaWFnb25hbC8+PC9ib3JkZXI+PC9ib3JkZXJzPicpO1xuXHRvW28ubGVuZ3RoXSA9ICgnPGNlbGxTdHlsZVhmcyBjb3VudD1cIjFcIj48eGYgbnVtRm10SWQ9XCIwXCIgZm9udElkPVwiMFwiIGZpbGxJZD1cIjBcIiBib3JkZXJJZD1cIjBcIi8+PC9jZWxsU3R5bGVYZnM+Jyk7XG5cdGlmKCh3ID0gd3JpdGVfY2VsbFhmcyhvcHRzLmNlbGxYZnMpKSkgb1tvLmxlbmd0aF0gPSAodyk7XG5cdG9bby5sZW5ndGhdID0gKCc8Y2VsbFN0eWxlcyBjb3VudD1cIjFcIj48Y2VsbFN0eWxlIG5hbWU9XCJOb3JtYWxcIiB4ZklkPVwiMFwiIGJ1aWx0aW5JZD1cIjBcIi8+PC9jZWxsU3R5bGVzPicpO1xuXHRvW28ubGVuZ3RoXSA9ICgnPGR4ZnMgY291bnQ9XCIwXCIvPicpO1xuXHRvW28ubGVuZ3RoXSA9ICgnPHRhYmxlU3R5bGVzIGNvdW50PVwiMFwiIGRlZmF1bHRUYWJsZVN0eWxlPVwiVGFibGVTdHlsZU1lZGl1bTlcIiBkZWZhdWx0UGl2b3RTdHlsZT1cIlBpdm90U3R5bGVNZWRpdW00XCIvPicpO1xuXG5cdGlmKG8ubGVuZ3RoPjIpeyBvW28ubGVuZ3RoXSA9ICgnPC9zdHlsZVNoZWV0PicpOyBvWzFdPW9bMV0ucmVwbGFjZShcIi8+XCIsXCI+XCIpOyB9XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG4vKiBbTVMtWExTQl0gMi40LjY1NyBCcnRGbXQgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydEZtdChkYXRhLCBsZW5ndGgvKjpudW1iZXIqLykge1xuXHR2YXIgbnVtRm10SWQgPSBkYXRhLnJlYWRfc2hpZnQoMik7XG5cdHZhciBzdEZtdENvZGUgPSBwYXJzZV9YTFdpZGVTdHJpbmcoZGF0YSxsZW5ndGgtMik7XG5cdHJldHVybiBbbnVtRm10SWQsIHN0Rm10Q29kZV07XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRGbXQoaS8qOm51bWJlciovLCBmLyo6c3RyaW5nKi8sIG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDYgKyA0ICogZi5sZW5ndGgpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIGkpO1xuXHR3cml0ZV9YTFdpZGVTdHJpbmcoZiwgbyk7XG5cdHZhciBvdXQgPSAoby5sZW5ndGggPiBvLmwpID8gby5zbGljZSgwLCBvLmwpIDogbztcblx0aWYoby5sID09IG51bGwpIG8ubCA9IG8ubGVuZ3RoO1xuXHRyZXR1cm4gb3V0O1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjY1OSBCcnRGb250IFRPRE8gKi9cbmZ1bmN0aW9uIHBhcnNlX0JydEZvbnQoZGF0YSwgbGVuZ3RoLyo6bnVtYmVyKi8sIG9wdHMpIHtcblx0dmFyIG91dCA9ICh7fS8qOmFueSovKTtcblxuXHRvdXQuc3ogPSBkYXRhLnJlYWRfc2hpZnQoMikgLyAyMDtcblxuXHR2YXIgZ3JiaXQgPSBwYXJzZV9Gb250RmxhZ3MoZGF0YSwgMiwgb3B0cyk7XG5cdGlmKGdyYml0LmZJdGFsaWMpIG91dC5pdGFsaWMgPSAxO1xuXHRpZihncmJpdC5mQ29uZGVuc2UpIG91dC5jb25kZW5zZSA9IDE7XG5cdGlmKGdyYml0LmZFeHRlbmQpIG91dC5leHRlbmQgPSAxO1xuXHRpZihncmJpdC5mU2hhZG93KSBvdXQuc2hhZG93ID0gMTtcblx0aWYoZ3JiaXQuZk91dGxpbmUpIG91dC5vdXRsaW5lID0gMTtcblx0aWYoZ3JiaXQuZlN0cmlrZW91dCkgb3V0LnN0cmlrZSA9IDE7XG5cblx0dmFyIGJscyA9IGRhdGEucmVhZF9zaGlmdCgyKTtcblx0aWYoYmxzID09PSAweDAyQkMpIG91dC5ib2xkID0gMTtcblxuXHRzd2l0Y2goZGF0YS5yZWFkX3NoaWZ0KDIpKSB7XG5cdFx0LyogY2FzZSAwOiBvdXQudmVydEFsaWduID0gXCJiYXNlbGluZVwiOyBicmVhazsgKi9cblx0XHRjYXNlIDE6IG91dC52ZXJ0QWxpZ24gPSBcInN1cGVyc2NyaXB0XCI7IGJyZWFrO1xuXHRcdGNhc2UgMjogb3V0LnZlcnRBbGlnbiA9IFwic3Vic2NyaXB0XCI7IGJyZWFrO1xuXHR9XG5cblx0dmFyIHVuZGVybGluZSA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0aWYodW5kZXJsaW5lICE9IDApIG91dC51bmRlcmxpbmUgPSB1bmRlcmxpbmU7XG5cblx0dmFyIGZhbWlseSA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0aWYoZmFtaWx5ID4gMCkgb3V0LmZhbWlseSA9IGZhbWlseTtcblxuXHR2YXIgYkNoYXJTZXQgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdGlmKGJDaGFyU2V0ID4gMCkgb3V0LmNoYXJzZXQgPSBiQ2hhclNldDtcblxuXHRkYXRhLmwrKztcblx0b3V0LmNvbG9yID0gcGFyc2VfQnJ0Q29sb3IoZGF0YSwgOCk7XG5cblx0c3dpdGNoKGRhdGEucmVhZF9zaGlmdCgxKSkge1xuXHRcdC8qIGNhc2UgMDogb3V0LnNjaGVtZSA9IFwibm9uZVwiOiBicmVhazsgKi9cblx0XHRjYXNlIDE6IG91dC5zY2hlbWUgPSBcIm1ham9yXCI7IGJyZWFrO1xuXHRcdGNhc2UgMjogb3V0LnNjaGVtZSA9IFwibWlub3JcIjsgYnJlYWs7XG5cdH1cblxuXHRvdXQubmFtZSA9IHBhcnNlX1hMV2lkZVN0cmluZyhkYXRhLCBsZW5ndGggLSAyMSk7XG5cblx0cmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydEZvbnQoZm9udC8qOmFueSovLCBvKSB7XG5cdGlmKCFvKSBvID0gbmV3X2J1ZigyNSs0KjMyKTtcblx0by53cml0ZV9zaGlmdCgyLCBmb250LnN6ICogMjApO1xuXHR3cml0ZV9Gb250RmxhZ3MoZm9udCwgbyk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgZm9udC5ib2xkID8gMHgwMkJDIDogMHgwMTkwKTtcblx0dmFyIHNzcyA9IDA7XG5cdGlmKGZvbnQudmVydEFsaWduID09IFwic3VwZXJzY3JpcHRcIikgc3NzID0gMTtcblx0ZWxzZSBpZihmb250LnZlcnRBbGlnbiA9PSBcInN1YnNjcmlwdFwiKSBzc3MgPSAyO1xuXHRvLndyaXRlX3NoaWZ0KDIsIHNzcyk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgZm9udC51bmRlcmxpbmUgfHwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgZm9udC5mYW1pbHkgfHwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgZm9udC5jaGFyc2V0IHx8IDApO1xuXHRvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHR3cml0ZV9CcnRDb2xvcihmb250LmNvbG9yLCBvKTtcblx0dmFyIHNjaGVtZSA9IDA7XG5cdGlmKGZvbnQuc2NoZW1lID09IFwibWFqb3JcIikgc2NoZW1lID0gMTtcblx0aWYoZm9udC5zY2hlbWUgPT0gXCJtaW5vclwiKSBzY2hlbWUgPSAyO1xuXHRvLndyaXRlX3NoaWZ0KDEsIHNjaGVtZSk7XG5cdHdyaXRlX1hMV2lkZVN0cmluZyhmb250Lm5hbWUsIG8pO1xuXHRyZXR1cm4gby5sZW5ndGggPiBvLmwgPyBvLnNsaWNlKDAsIG8ubCkgOiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjY1MCBCcnRGaWxsICovXG52YXIgWExTQkZpbGxQVE5hbWVzID0gW1xuXHRcIm5vbmVcIixcblx0XCJzb2xpZFwiLFxuXHRcIm1lZGl1bUdyYXlcIixcblx0XCJkYXJrR3JheVwiLFxuXHRcImxpZ2h0R3JheVwiLFxuXHRcImRhcmtIb3Jpem9udGFsXCIsXG5cdFwiZGFya1ZlcnRpY2FsXCIsXG5cdFwiZGFya0Rvd25cIixcblx0XCJkYXJrVXBcIixcblx0XCJkYXJrR3JpZFwiLFxuXHRcImRhcmtUcmVsbGlzXCIsXG5cdFwibGlnaHRIb3Jpem9udGFsXCIsXG5cdFwibGlnaHRWZXJ0aWNhbFwiLFxuXHRcImxpZ2h0RG93blwiLFxuXHRcImxpZ2h0VXBcIixcblx0XCJsaWdodEdyaWRcIixcblx0XCJsaWdodFRyZWxsaXNcIixcblx0XCJncmF5MTI1XCIsXG5cdFwiZ3JheTA2MjVcIlxuXTtcbnZhciByZXZfWExTQkZpbGxQVE5hbWVzLyo6RXZlcnROdW1UeXBlKi87XG4vKiBUT0RPOiBncmFkaWVudCBmaWxsIHJlcHJlc2VudGF0aW9uICovXG52YXIgcGFyc2VfQnJ0RmlsbCA9IHBhcnNlbm9vcDtcbmZ1bmN0aW9uIHdyaXRlX0JydEZpbGwoZmlsbCwgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoNCozICsgOCo3ICsgMTYqMSk7XG5cdGlmKCFyZXZfWExTQkZpbGxQVE5hbWVzKSByZXZfWExTQkZpbGxQVE5hbWVzID0gKGV2ZXJ0KFhMU0JGaWxsUFROYW1lcykvKjphbnkqLyk7XG5cdHZhciBmbHMvKjpudW1iZXIqLyA9IHJldl9YTFNCRmlsbFBUTmFtZXNbZmlsbC5wYXR0ZXJuVHlwZV07XG5cdGlmKGZscyA9PSBudWxsKSBmbHMgPSAweDI4O1xuXHRvLndyaXRlX3NoaWZ0KDQsIGZscyk7XG5cdHZhciBqID0gMDtcblx0aWYoZmxzICE9IDB4MjgpIHtcblx0XHQvKiBUT0RPOiBjdXN0b20gRkcgQ29sb3IgKi9cblx0XHR3cml0ZV9CcnRDb2xvcih7YXV0bzoxfSwgbyk7XG5cdFx0LyogVE9ETzogY3VzdG9tIEJHIENvbG9yICovXG5cdFx0d3JpdGVfQnJ0Q29sb3Ioe2F1dG86MX0sIG8pO1xuXG5cdFx0Zm9yKDsgaiA8IDEyOyArK2opIG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdH0gZWxzZSB7XG5cdFx0Zm9yKDsgaiA8IDQ7ICsraikgby53cml0ZV9zaGlmdCg0LCAwKTtcblxuXHRcdGZvcig7IGogPCAxMjsgKytqKSBvLndyaXRlX3NoaWZ0KDQsIDApOyAvKiBUT0RPICovXG5cdFx0LyogaUdyYWRpZW50VHlwZSAqL1xuXHRcdC8qIHhudW1EZWdyZWUgKi9cblx0XHQvKiB4bnVtRmlsbFRvTGVmdCAqL1xuXHRcdC8qIHhudW1GaWxsVG9SaWdodCAqL1xuXHRcdC8qIHhudW1GaWxsVG9Ub3AgKi9cblx0XHQvKiB4bnVtRmlsbFRvQm90dG9tICovXG5cdFx0LyogY051bVN0b3AgKi9cblx0XHQvKiB4ZmlsbEdyYWRpZW50U3RvcCAqL1xuXHR9XG5cdHJldHVybiBvLmxlbmd0aCA+IG8ubCA/IG8uc2xpY2UoMCwgby5sKSA6IG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuODI0IEJydFhGICovXG5mdW5jdGlvbiBwYXJzZV9CcnRYRihkYXRhLCBsZW5ndGgvKjpudW1iZXIqLykge1xuXHR2YXIgdGd0ID0gZGF0YS5sICsgbGVuZ3RoO1xuXHR2YXIgaXhmZVBhcmVudCA9IGRhdGEucmVhZF9zaGlmdCgyKTtcblx0dmFyIGlmbXQgPSBkYXRhLnJlYWRfc2hpZnQoMik7XG5cdGRhdGEubCA9IHRndDtcblx0cmV0dXJuIHtpeGZlOml4ZmVQYXJlbnQsIG51bUZtdElkOmlmbXQgfTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydFhGKGRhdGEsIGl4ZmVQLCBvKSB7XG5cdGlmKCFvKSBvID0gbmV3X2J1ZigxNik7XG5cdG8ud3JpdGVfc2hpZnQoMiwgaXhmZVB8fDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIGRhdGEubnVtRm10SWR8fDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApOyAvKiBpRm9udCAqL1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApOyAvKiBpRmlsbCAqL1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApOyAvKiBpeEJvcmRlciAqL1xuXHRvLndyaXRlX3NoaWZ0KDEsIDApOyAvKiB0cm90ICovXG5cdG8ud3JpdGVfc2hpZnQoMSwgMCk7IC8qIGluZGVudCAqL1xuXHR2YXIgZmxvdyA9IDA7XG5cdG8ud3JpdGVfc2hpZnQoMSwgZmxvdyk7IC8qIGZsYWdzICovXG5cdG8ud3JpdGVfc2hpZnQoMSwgMCk7IC8qIGZsYWdzICovXG5cdG8ud3JpdGVfc2hpZnQoMSwgMCk7IC8qIHhmR3JiaXRBdHIgKi9cblx0by53cml0ZV9zaGlmdCgxLCAwKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjUuNCBCbHhmIFRPRE8gKi9cbmZ1bmN0aW9uIHdyaXRlX0JseGYoZGF0YSwgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoMTApO1xuXHRvLndyaXRlX3NoaWZ0KDEsIDApOyAvKiBkZyAqL1xuXHRvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDApOyAvKiBjb2xvciAqL1xuXHRvLndyaXRlX3NoaWZ0KDQsIDApOyAvKiBjb2xvciAqL1xuXHRyZXR1cm4gbztcbn1cbi8qIFtNUy1YTFNCXSAyLjQuMzAyIEJydEJvcmRlciBUT0RPICovXG52YXIgcGFyc2VfQnJ0Qm9yZGVyID0gcGFyc2Vub29wO1xuZnVuY3Rpb24gd3JpdGVfQnJ0Qm9yZGVyKGJvcmRlciwgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoNTEpO1xuXHRvLndyaXRlX3NoaWZ0KDEsIDApOyAvKiBkaWFnb25hbCAqL1xuXHR3cml0ZV9CbHhmKG51bGwsIG8pOyAvKiB0b3AgKi9cblx0d3JpdGVfQmx4ZihudWxsLCBvKTsgLyogYm90dG9tICovXG5cdHdyaXRlX0JseGYobnVsbCwgbyk7IC8qIGxlZnQgKi9cblx0d3JpdGVfQmx4ZihudWxsLCBvKTsgLyogcmlnaHQgKi9cblx0d3JpdGVfQmx4ZihudWxsLCBvKTsgLyogZGlhZyAqL1xuXHRyZXR1cm4gby5sZW5ndGggPiBvLmwgPyBvLnNsaWNlKDAsIG8ubCkgOiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40Ljc2MyBCcnRTdHlsZSBUT0RPICovXG5mdW5jdGlvbiB3cml0ZV9CcnRTdHlsZShzdHlsZSwgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoMTIrNCoxMCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgc3R5bGUueGZJZCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMSk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgK3N0eWxlLmJ1aWx0aW5JZCk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgMCk7IC8qIGlMZXZlbCAqL1xuXHR3cml0ZV9YTE51bGxhYmxlV2lkZVN0cmluZyhzdHlsZS5uYW1lIHx8IFwiXCIsIG8pO1xuXHRyZXR1cm4gby5sZW5ndGggPiBvLmwgPyBvLnNsaWNlKDAsIG8ubCkgOiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjI3MiBCcnRCZWdpblRhYmxlU3R5bGVzICovXG5mdW5jdGlvbiB3cml0ZV9CcnRCZWdpblRhYmxlU3R5bGVzKGNudCwgZGVmVGFibGVTdHlsZSwgZGVmUGl2b3RTdHlsZSkge1xuXHR2YXIgbyA9IG5ld19idWYoNCsyNTYqMio0KTtcblx0by53cml0ZV9zaGlmdCg0LCBjbnQpO1xuXHR3cml0ZV9YTE51bGxhYmxlV2lkZVN0cmluZyhkZWZUYWJsZVN0eWxlLCBvKTtcblx0d3JpdGVfWExOdWxsYWJsZVdpZGVTdHJpbmcoZGVmUGl2b3RTdHlsZSwgbyk7XG5cdHJldHVybiBvLmxlbmd0aCA+IG8ubCA/IG8uc2xpY2UoMCwgby5sKSA6IG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjEuNy41MCBTdHlsZXMgKi9cbmZ1bmN0aW9uIHBhcnNlX3N0eV9iaW4oZGF0YSwgdGhlbWVzLCBvcHRzKSB7XG5cdHZhciBzdHlsZXMgPSB7fTtcblx0c3R5bGVzLk51bWJlckZtdCA9IChbXS8qOmFueSovKTtcblx0Zm9yKHZhciB5IGluIHRhYmxlX2ZtdCkgc3R5bGVzLk51bWJlckZtdFt5XSA9IHRhYmxlX2ZtdFt5XTtcblxuXHRzdHlsZXMuQ2VsbFhmID0gW107XG5cdHN0eWxlcy5Gb250cyA9IFtdO1xuXHR2YXIgc3RhdGUvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0dmFyIHBhc3MgPSBmYWxzZTtcblx0cmVjb3JkaG9wcGVyKGRhdGEsIGZ1bmN0aW9uIGhvcHBlcl9zdHkodmFsLCBSLCBSVCkge1xuXHRcdHN3aXRjaChSVCkge1xuXHRcdFx0Y2FzZSAweDAwMkM6IC8qIEJydEZtdCAqL1xuXHRcdFx0XHRzdHlsZXMuTnVtYmVyRm10W3ZhbFswXV0gPSB2YWxbMV07IFNTRl9sb2FkKHZhbFsxXSwgdmFsWzBdKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAyQjogLyogQnJ0Rm9udCAqL1xuXHRcdFx0XHRzdHlsZXMuRm9udHMucHVzaCh2YWwpO1xuXHRcdFx0XHRpZih2YWwuY29sb3IudGhlbWUgIT0gbnVsbCAmJiB0aGVtZXMgJiYgdGhlbWVzLnRoZW1lRWxlbWVudHMgJiYgdGhlbWVzLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lKSB7XG5cdFx0XHRcdFx0dmFsLmNvbG9yLnJnYiA9IHJnYl90aW50KHRoZW1lcy50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVt2YWwuY29sb3IudGhlbWVdLnJnYiwgdmFsLmNvbG9yLnRpbnQgfHwgMCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDB4MDQwMTogLyogQnJ0S25vd25Gb250cyAqLyBicmVhaztcblx0XHRcdGNhc2UgMHgwMDJEOiAvKiBCcnRGaWxsICovXG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMkU6IC8qIEJydEJvcmRlciAqL1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMHgwMDJGOiAvKiBCcnRYRiAqL1xuXHRcdFx0XHRpZihzdGF0ZVtzdGF0ZS5sZW5ndGggLSAxXSA9PSAweDAyNjkgLyogQnJ0QmVnaW5DZWxsWEZzICovKSB7XG5cdFx0XHRcdFx0c3R5bGVzLkNlbGxYZi5wdXNoKHZhbCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAzMDogLyogQnJ0U3R5bGUgKi9cblx0XHRcdGNhc2UgMHgwMUZCOiAvKiBCcnREWEYgKi9cblx0XHRcdGNhc2UgMHgwMjNDOiAvKiBCcnRNUlVDb2xvciAqL1xuXHRcdFx0Y2FzZSAweDAxREI6IC8qIEJydEluZGV4ZWRDb2xvciAqL1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDA0OTM6IC8qIEJydERYRjE0ICovXG5cdFx0XHRjYXNlIDB4MDgzNjogLyogQnJ0RFhGMTUgKi9cblx0XHRcdGNhc2UgMHgwNDZBOiAvKiBCcnRTbGljZXJTdHlsZUVsZW1lbnQgKi9cblx0XHRcdGNhc2UgMHgwMjAwOiAvKiBCcnRUYWJsZVN0eWxlRWxlbWVudCAqL1xuXHRcdFx0Y2FzZSAweDA4MkY6IC8qIEJydFRpbWVsaW5lU3R5bGVFbGVtZW50ICovXG5cdFx0XHRjYXNlIDB4MEMwMDogLyogQnJ0VWlkICovXG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDAyMzogLyogQnJ0RlJUQmVnaW4gKi9cblx0XHRcdFx0cGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjQ6IC8qIEJydEZSVEVuZCAqL1xuXHRcdFx0XHRwYXNzID0gZmFsc2U7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjU6IC8qIEJydEFDQmVnaW4gKi9cblx0XHRcdFx0c3RhdGUucHVzaChSVCk7IHBhc3MgPSB0cnVlOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMDI2OiAvKiBCcnRBQ0VuZCAqL1xuXHRcdFx0XHRzdGF0ZS5wb3AoKTsgcGFzcyA9IGZhbHNlOyBicmVhaztcblxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0aWYoUi5UID4gMCkgc3RhdGUucHVzaChSVCk7XG5cdFx0XHRcdGVsc2UgaWYoUi5UIDwgMCkgc3RhdGUucG9wKCk7XG5cdFx0XHRcdGVsc2UgaWYoIXBhc3MgfHwgKG9wdHMuV1RGICYmIHN0YXRlW3N0YXRlLmxlbmd0aC0xXSAhPSAweDAwMjUgLyogQnJ0QUNCZWdpbiAqLykpIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgcmVjb3JkIDB4XCIgKyBSVC50b1N0cmluZygxNikpO1xuXHRcdH1cblx0fSk7XG5cdHJldHVybiBzdHlsZXM7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0ZNVFNfYmluKGJhLCBORi8qOj9TU0ZUYWJsZSovKSB7XG5cdGlmKCFORikgcmV0dXJuO1xuXHR2YXIgY250ID0gMDtcblx0W1s1LDhdLFsyMywyNl0sWzQxLDQ0XSxbLyo2MyovNTAsLyo2Nl0sWzE2NCwqLzM5Ml1dLmZvckVhY2goZnVuY3Rpb24ocikge1xuXHRcdC8qOjogaWYoIU5GKSByZXR1cm47ICovXG5cdFx0Zm9yKHZhciBpID0gclswXTsgaSA8PSByWzFdOyArK2kpIGlmKE5GW2ldICE9IG51bGwpICsrY250O1xuXHR9KTtcblxuXHRpZihjbnQgPT0gMCkgcmV0dXJuO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI2NyAvKiBCcnRCZWdpbkZtdHMgKi8sIHdyaXRlX1VJbnQzMkxFKGNudCkpO1xuXHRbWzUsOF0sWzIzLDI2XSxbNDEsNDRdLFsvKjYzKi81MCwvKjY2XSxbMTY0LCovMzkyXV0uZm9yRWFjaChmdW5jdGlvbihyKSB7XG5cdFx0Lyo6OiBpZighTkYpIHJldHVybjsgKi9cblx0XHRmb3IodmFyIGkgPSByWzBdOyBpIDw9IHJbMV07ICsraSkgaWYoTkZbaV0gIT0gbnVsbCkgd3JpdGVfcmVjb3JkKGJhLCAweDAwMkMgLyogQnJ0Rm10ICovLCB3cml0ZV9CcnRGbXQoaSwgTkZbaV0pKTtcblx0fSk7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjY4IC8qIEJydEVuZEZtdHMgKi8pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9GT05UU19iaW4oYmEvKjo6LCBkYXRhKi8pIHtcblx0dmFyIGNudCA9IDE7XG5cblx0aWYoY250ID09IDApIHJldHVybjtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyNjMgLyogQnJ0QmVnaW5Gb250cyAqLywgd3JpdGVfVUludDMyTEUoY250KSk7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDJCIC8qIEJydEZvbnQgKi8sIHdyaXRlX0JydEZvbnQoe1xuXHRcdHN6OjEyLFxuXHRcdGNvbG9yOiB7dGhlbWU6MX0sXG5cdFx0bmFtZTogXCJDYWxpYnJpXCIsXG5cdFx0ZmFtaWx5OiAyLFxuXHRcdHNjaGVtZTogXCJtaW5vclwiXG5cdH0pKTtcblx0LyogMSo2NTQ5MUJydEZvbnQgW0FDRk9OVFNdICovXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjY0IC8qIEJydEVuZEZvbnRzICovKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfRklMTFNfYmluKGJhLyo6OiwgZGF0YSovKSB7XG5cdHZhciBjbnQgPSAyO1xuXG5cdGlmKGNudCA9PSAwKSByZXR1cm47XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjVCIC8qIEJydEJlZ2luRmlsbHMgKi8sIHdyaXRlX1VJbnQzMkxFKGNudCkpO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDAyRCAvKiBCcnRGaWxsICovLCB3cml0ZV9CcnRGaWxsKHtwYXR0ZXJuVHlwZTpcIm5vbmVcIn0pKTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwMkQgLyogQnJ0RmlsbCAqLywgd3JpdGVfQnJ0RmlsbCh7cGF0dGVyblR5cGU6XCJncmF5MTI1XCJ9KSk7XG5cdC8qIDEqNjU0MzFCcnRGaWxsICovXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjVDIC8qIEJydEVuZEZpbGxzICovKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfQk9SREVSU19iaW4oYmEvKjo6LCBkYXRhKi8pIHtcblx0dmFyIGNudCA9IDE7XG5cblx0aWYoY250ID09IDApIHJldHVybjtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyNjUgLyogQnJ0QmVnaW5Cb3JkZXJzICovLCB3cml0ZV9VSW50MzJMRShjbnQpKTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwMkUgLyogQnJ0Qm9yZGVyICovLCB3cml0ZV9CcnRCb3JkZXIoe30pKTtcblx0LyogMSo2NTQzMEJydEJvcmRlciAqL1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI2NiAvKiBCcnRFbmRCb3JkZXJzICovKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfQ0VMTFNUWUxFWEZTX2JpbihiYS8qOjosIGRhdGEqLykge1xuXHR2YXIgY250ID0gMTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyNzIgLyogQnJ0QmVnaW5DZWxsU3R5bGVYRnMgKi8sIHdyaXRlX1VJbnQzMkxFKGNudCkpO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDAyRiAvKiBCcnRYRiAqLywgd3JpdGVfQnJ0WEYoe1xuXHRcdG51bUZtdElkOiAwLFxuXHRcdGZvbnRJZDogICAwLFxuXHRcdGZpbGxJZDogICAwLFxuXHRcdGJvcmRlcklkOiAwXG5cdH0sIDB4RkZGRikpO1xuXHQvKiAxKjY1NDMwKEJydFhGICpGUlQpICovXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjczIC8qIEJydEVuZENlbGxTdHlsZVhGcyAqLyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0NFTExYRlNfYmluKGJhLCBkYXRhKSB7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjY5IC8qIEJydEJlZ2luQ2VsbFhGcyAqLywgd3JpdGVfVUludDMyTEUoZGF0YS5sZW5ndGgpKTtcblx0ZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGMpIHsgd3JpdGVfcmVjb3JkKGJhLCAweDAwMkYgLyogQnJ0WEYgKi8sIHdyaXRlX0JydFhGKGMsMCkpOyB9KTtcblx0LyogMSo2NTQzMChCcnRYRiAqRlJUKSAqL1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI2QSAvKiBCcnRFbmRDZWxsWEZzICovKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfU1RZTEVTX2JpbihiYS8qOjosIGRhdGEqLykge1xuXHR2YXIgY250ID0gMTtcblxuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI2QiAvKiBCcnRCZWdpblN0eWxlcyAqLywgd3JpdGVfVUludDMyTEUoY250KSk7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDMwIC8qIEJydFN0eWxlICovLCB3cml0ZV9CcnRTdHlsZSh7XG5cdFx0eGZJZDowLFxuXHRcdGJ1aWx0aW5JZDowLFxuXHRcdG5hbWU6XCJOb3JtYWxcIlxuXHR9KSk7XG5cdC8qIDEqNjU0MzAoQnJ0U3R5bGUgKkZSVCkgKi9cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyNkMgLyogQnJ0RW5kU3R5bGVzICovKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfRFhGU19iaW4oYmEvKjo6LCBkYXRhKi8pIHtcblx0dmFyIGNudCA9IDA7XG5cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAxRjkgLyogQnJ0QmVnaW5EWEZzICovLCB3cml0ZV9VSW50MzJMRShjbnQpKTtcblx0LyogKjIxNDc0ODM2NDcoQnJ0RFhGICpGUlQpICovXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMUZBIC8qIEJydEVuZERYRnMgKi8pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9UQUJMRVNUWUxFU19iaW4oYmEvKjo6LCBkYXRhKi8pIHtcblx0dmFyIGNudCA9IDA7XG5cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAxRkMgLyogQnJ0QmVnaW5UYWJsZVN0eWxlcyAqLywgd3JpdGVfQnJ0QmVnaW5UYWJsZVN0eWxlcyhjbnQsIFwiVGFibGVTdHlsZU1lZGl1bTlcIiwgXCJQaXZvdFN0eWxlTWVkaXVtNFwiKSk7XG5cdC8qICpUQUJMRVNUWUxFICovXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMUZEIC8qIEJydEVuZFRhYmxlU3R5bGVzICovKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfQ09MT1JQQUxFVFRFX2JpbigvKjo6YmEsIGRhdGEqLykge1xuXHRyZXR1cm47XG5cdC8qIEJydEJlZ2luQ29sb3JQYWxldHRlIFtJTkRFWEVEQ09MT1JTXSBbTVJVQ09MT1JTXSBCcnRFbmRDb2xvclBhbGV0dGUgKi9cbn1cblxuLyogW01TLVhMU0JdIDIuMS43LjUwIFN0eWxlcyAqL1xuZnVuY3Rpb24gd3JpdGVfc3R5X2Jpbih3Yiwgb3B0cykge1xuXHR2YXIgYmEgPSBidWZfYXJyYXkoKTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAxMTYgLyogQnJ0QmVnaW5TdHlsZVNoZWV0ICovKTtcblx0d3JpdGVfRk1UU19iaW4oYmEsIHdiLlNTRik7XG5cdHdyaXRlX0ZPTlRTX2JpbihiYSwgd2IpO1xuXHR3cml0ZV9GSUxMU19iaW4oYmEsIHdiKTtcblx0d3JpdGVfQk9SREVSU19iaW4oYmEsIHdiKTtcblx0d3JpdGVfQ0VMTFNUWUxFWEZTX2JpbihiYSwgd2IpO1xuXHR3cml0ZV9DRUxMWEZTX2JpbihiYSwgb3B0cy5jZWxsWGZzKTtcblx0d3JpdGVfU1RZTEVTX2JpbihiYSwgd2IpO1xuXHR3cml0ZV9EWEZTX2JpbihiYSwgd2IpO1xuXHR3cml0ZV9UQUJMRVNUWUxFU19iaW4oYmEsIHdiKTtcblx0d3JpdGVfQ09MT1JQQUxFVFRFX2JpbihiYSwgd2IpO1xuXHQvKiBGUlRTVFlMRVNIRUVUKi9cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAxMTcgLyogQnJ0RW5kU3R5bGVTaGVldCAqLyk7XG5cdHJldHVybiBiYS5lbmQoKTtcbn1cbi8qIEV2ZW4gdGhvdWdoIHRoZW1lIGxheW91dCBpcyBkazEgbHQxIGRrMiBsdDIsIHRydWUgb3JkZXIgaXMgbHQxIGRrMSBsdDIgZGsyICovXG52YXIgWExTWFRoZW1lQ2xyU2NoZW1lID0gW1xuXHQnPC9hOmx0MT4nLCAnPC9hOmRrMT4nLCAnPC9hOmx0Mj4nLCAnPC9hOmRrMj4nLFxuXHQnPC9hOmFjY2VudDE+JywgJzwvYTphY2NlbnQyPicsICc8L2E6YWNjZW50Mz4nLFxuXHQnPC9hOmFjY2VudDQ+JywgJzwvYTphY2NlbnQ1PicsICc8L2E6YWNjZW50Nj4nLFxuXHQnPC9hOmhsaW5rPicsICc8L2E6Zm9sSGxpbms+J1xuXTtcbi8qIDIwLjEuNi4yIGNsclNjaGVtZSBDVF9Db2xvclNjaGVtZSAqL1xuZnVuY3Rpb24gcGFyc2VfY2xyU2NoZW1lKHQsIHRoZW1lcywgb3B0cykge1xuXHR0aGVtZXMudGhlbWVFbGVtZW50cy5jbHJTY2hlbWUgPSBbXTtcblx0dmFyIGNvbG9yID0ge307XG5cdCh0WzBdLm1hdGNoKHRhZ3JlZ2V4KXx8W10pLmZvckVhY2goZnVuY3Rpb24oeCkge1xuXHRcdHZhciB5ID0gcGFyc2V4bWx0YWcoeCk7XG5cdFx0c3dpdGNoKHlbMF0pIHtcblx0XHRcdC8qIDIwLjEuNi4yIGNsclNjaGVtZSAoQ29sb3IgU2NoZW1lKSBDVF9Db2xvclNjaGVtZSAqL1xuXHRcdFx0Y2FzZSAnPGE6Y2xyU2NoZW1lJzogY2FzZSAnPC9hOmNsclNjaGVtZT4nOiBicmVhaztcblxuXHRcdFx0LyogMjAuMS4yLjMuMzIgc3JnYkNsciBDVF9TUmdiQ29sb3IgKi9cblx0XHRcdGNhc2UgJzxhOnNyZ2JDbHInOlxuXHRcdFx0XHRjb2xvci5yZ2IgPSB5LnZhbDsgYnJlYWs7XG5cblx0XHRcdC8qIDIwLjEuMi4zLjMzIHN5c0NsciBDVF9TeXN0ZW1Db2xvciAqL1xuXHRcdFx0Y2FzZSAnPGE6c3lzQ2xyJzpcblx0XHRcdFx0Y29sb3IucmdiID0geS5sYXN0Q2xyOyBicmVhaztcblxuXHRcdFx0LyogMjAuMS40LjEuMSBhY2NlbnQxIChBY2NlbnQgMSkgKi9cblx0XHRcdC8qIDIwLjEuNC4xLjIgYWNjZW50MiAoQWNjZW50IDIpICovXG5cdFx0XHQvKiAyMC4xLjQuMS4zIGFjY2VudDMgKEFjY2VudCAzKSAqL1xuXHRcdFx0LyogMjAuMS40LjEuNCBhY2NlbnQ0IChBY2NlbnQgNCkgKi9cblx0XHRcdC8qIDIwLjEuNC4xLjUgYWNjZW50NSAoQWNjZW50IDUpICovXG5cdFx0XHQvKiAyMC4xLjQuMS42IGFjY2VudDYgKEFjY2VudCA2KSAqL1xuXHRcdFx0LyogMjAuMS40LjEuOSBkazEgKERhcmsgMSkgKi9cblx0XHRcdC8qIDIwLjEuNC4xLjEwIGRrMiAoRGFyayAyKSAqL1xuXHRcdFx0LyogMjAuMS40LjEuMTUgZm9sSGxpbmsgKEZvbGxvd2VkIEh5cGVybGluaykgKi9cblx0XHRcdC8qIDIwLjEuNC4xLjE5IGhsaW5rIChIeXBlcmxpbmspICovXG5cdFx0XHQvKiAyMC4xLjQuMS4yMiBsdDEgKExpZ2h0IDEpICovXG5cdFx0XHQvKiAyMC4xLjQuMS4yMyBsdDIgKExpZ2h0IDIpICovXG5cdFx0XHRjYXNlICc8YTpkazE+JzogY2FzZSAnPC9hOmRrMT4nOlxuXHRcdFx0Y2FzZSAnPGE6bHQxPic6IGNhc2UgJzwvYTpsdDE+Jzpcblx0XHRcdGNhc2UgJzxhOmRrMj4nOiBjYXNlICc8L2E6ZGsyPic6XG5cdFx0XHRjYXNlICc8YTpsdDI+JzogY2FzZSAnPC9hOmx0Mj4nOlxuXHRcdFx0Y2FzZSAnPGE6YWNjZW50MT4nOiBjYXNlICc8L2E6YWNjZW50MT4nOlxuXHRcdFx0Y2FzZSAnPGE6YWNjZW50Mj4nOiBjYXNlICc8L2E6YWNjZW50Mj4nOlxuXHRcdFx0Y2FzZSAnPGE6YWNjZW50Mz4nOiBjYXNlICc8L2E6YWNjZW50Mz4nOlxuXHRcdFx0Y2FzZSAnPGE6YWNjZW50ND4nOiBjYXNlICc8L2E6YWNjZW50ND4nOlxuXHRcdFx0Y2FzZSAnPGE6YWNjZW50NT4nOiBjYXNlICc8L2E6YWNjZW50NT4nOlxuXHRcdFx0Y2FzZSAnPGE6YWNjZW50Nj4nOiBjYXNlICc8L2E6YWNjZW50Nj4nOlxuXHRcdFx0Y2FzZSAnPGE6aGxpbms+JzogY2FzZSAnPC9hOmhsaW5rPic6XG5cdFx0XHRjYXNlICc8YTpmb2xIbGluaz4nOiBjYXNlICc8L2E6Zm9sSGxpbms+Jzpcblx0XHRcdFx0aWYgKHlbMF0uY2hhckF0KDEpID09PSAnLycpIHtcblx0XHRcdFx0XHR0aGVtZXMudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbWExTWFRoZW1lQ2xyU2NoZW1lLmluZGV4T2YoeVswXSldID0gY29sb3I7XG5cdFx0XHRcdFx0Y29sb3IgPSB7fTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjb2xvci5uYW1lID0geVswXS5zbGljZSgzLCB5WzBdLmxlbmd0aCAtIDEpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRkZWZhdWx0OiBpZihvcHRzICYmIG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoJ1VucmVjb2duaXplZCAnICsgeVswXSArICcgaW4gY2xyU2NoZW1lJyk7XG5cdFx0fVxuXHR9KTtcbn1cblxuLyogMjAuMS40LjEuMTggZm9udFNjaGVtZSBDVF9Gb250U2NoZW1lICovXG5mdW5jdGlvbiBwYXJzZV9mb250U2NoZW1lKC8qOjp0LCB0aGVtZXMsIG9wdHMqLykgeyB9XG5cbi8qIDIwLjEuNC4xLjE1IGZtdFNjaGVtZSBDVF9TdHlsZU1hdHJpeCAqL1xuZnVuY3Rpb24gcGFyc2VfZm10U2NoZW1lKC8qOjp0LCB0aGVtZXMsIG9wdHMqLykgeyB9XG5cbnZhciBjbHJzcmVnZXggPSAvPGE6Y2xyU2NoZW1lKFtePl0qKT5bXFxzXFxTXSo8XFwvYTpjbHJTY2hlbWU+LztcbnZhciBmbnRzcmVnZXggPSAvPGE6Zm9udFNjaGVtZShbXj5dKik+W1xcc1xcU10qPFxcL2E6Zm9udFNjaGVtZT4vO1xudmFyIGZtdHNyZWdleCA9IC88YTpmbXRTY2hlbWUoW14+XSopPltcXHNcXFNdKjxcXC9hOmZtdFNjaGVtZT4vO1xuXG4vKiAyMC4xLjYuMTAgdGhlbWVFbGVtZW50cyBDVF9CYXNlU3R5bGVzICovXG5mdW5jdGlvbiBwYXJzZV90aGVtZUVsZW1lbnRzKGRhdGEsIHRoZW1lcywgb3B0cykge1xuXHR0aGVtZXMudGhlbWVFbGVtZW50cyA9IHt9O1xuXG5cdHZhciB0O1xuXG5cdFtcblx0XHQvKiBjbHJTY2hlbWUgQ1RfQ29sb3JTY2hlbWUgKi9cblx0XHRbJ2NsclNjaGVtZScsIGNscnNyZWdleCwgcGFyc2VfY2xyU2NoZW1lXSxcblx0XHQvKiBmb250U2NoZW1lIENUX0ZvbnRTY2hlbWUgKi9cblx0XHRbJ2ZvbnRTY2hlbWUnLCBmbnRzcmVnZXgsIHBhcnNlX2ZvbnRTY2hlbWVdLFxuXHRcdC8qIGZtdFNjaGVtZSBDVF9TdHlsZU1hdHJpeCAqL1xuXHRcdFsnZm10U2NoZW1lJywgZm10c3JlZ2V4LCBwYXJzZV9mbXRTY2hlbWVdXG5cdF0uZm9yRWFjaChmdW5jdGlvbihtKSB7XG5cdFx0aWYoISh0PWRhdGEubWF0Y2gobVsxXSkpKSB0aHJvdyBuZXcgRXJyb3IobVswXSArICcgbm90IGZvdW5kIGluIHRoZW1lRWxlbWVudHMnKTtcblx0XHRtWzJdKHQsIHRoZW1lcywgb3B0cyk7XG5cdH0pO1xufVxuXG52YXIgdGhlbWVsdHJlZ2V4ID0gLzxhOnRoZW1lRWxlbWVudHMoW14+XSopPltcXHNcXFNdKjxcXC9hOnRoZW1lRWxlbWVudHM+LztcblxuLyogMTQuMi43IFRoZW1lIFBhcnQgKi9cbmZ1bmN0aW9uIHBhcnNlX3RoZW1lX3htbChkYXRhLyo6c3RyaW5nKi8sIG9wdHMpIHtcblx0LyogMjAuMS42LjkgdGhlbWUgQ1RfT2ZmaWNlU3R5bGVTaGVldCAqL1xuXHRpZighZGF0YSB8fCBkYXRhLmxlbmd0aCA9PT0gMCkgZGF0YSA9IHdyaXRlX3RoZW1lKCk7XG5cblx0dmFyIHQ7XG5cdHZhciB0aGVtZXMgPSB7fTtcblxuXHQvKiB0aGVtZUVsZW1lbnRzIENUX0Jhc2VTdHlsZXMgKi9cblx0aWYoISh0PWRhdGEubWF0Y2godGhlbWVsdHJlZ2V4KSkpIHRocm93IG5ldyBFcnJvcigndGhlbWVFbGVtZW50cyBub3QgZm91bmQgaW4gdGhlbWUnKTtcblx0cGFyc2VfdGhlbWVFbGVtZW50cyh0WzBdLCB0aGVtZXMsIG9wdHMpO1xuXHR0aGVtZXMucmF3ID0gZGF0YTtcblx0cmV0dXJuIHRoZW1lcztcbn1cblxuZnVuY3Rpb24gd3JpdGVfdGhlbWUoVGhlbWVzLCBvcHRzKS8qOnN0cmluZyovIHtcblx0aWYob3B0cyAmJiBvcHRzLnRoZW1lWExTWCkgcmV0dXJuIG9wdHMudGhlbWVYTFNYO1xuXHRpZihUaGVtZXMgJiYgdHlwZW9mIFRoZW1lcy5yYXcgPT0gXCJzdHJpbmdcIikgcmV0dXJuIFRoZW1lcy5yYXc7XG5cdHZhciBvID0gW1hNTF9IRUFERVJdO1xuXHRvW28ubGVuZ3RoXSA9ICc8YTp0aGVtZSB4bWxuczphPVwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL2RyYXdpbmdtbC8yMDA2L21haW5cIiBuYW1lPVwiT2ZmaWNlIFRoZW1lXCI+Jztcblx0b1tvLmxlbmd0aF0gPSAgJzxhOnRoZW1lRWxlbWVudHM+JztcblxuXHRvW28ubGVuZ3RoXSA9ICAgJzxhOmNsclNjaGVtZSBuYW1lPVwiT2ZmaWNlXCI+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6ZGsxPjxhOnN5c0NsciB2YWw9XCJ3aW5kb3dUZXh0XCIgbGFzdENscj1cIjAwMDAwMFwiLz48L2E6ZGsxPic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOmx0MT48YTpzeXNDbHIgdmFsPVwid2luZG93XCIgbGFzdENscj1cIkZGRkZGRlwiLz48L2E6bHQxPic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOmRrMj48YTpzcmdiQ2xyIHZhbD1cIjFGNDk3RFwiLz48L2E6ZGsyPic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOmx0Mj48YTpzcmdiQ2xyIHZhbD1cIkVFRUNFMVwiLz48L2E6bHQyPic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOmFjY2VudDE+PGE6c3JnYkNsciB2YWw9XCI0RjgxQkRcIi8+PC9hOmFjY2VudDE+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6YWNjZW50Mj48YTpzcmdiQ2xyIHZhbD1cIkMwNTA0RFwiLz48L2E6YWNjZW50Mj4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8YTphY2NlbnQzPjxhOnNyZ2JDbHIgdmFsPVwiOUJCQjU5XCIvPjwvYTphY2NlbnQzPic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOmFjY2VudDQ+PGE6c3JnYkNsciB2YWw9XCI4MDY0QTJcIi8+PC9hOmFjY2VudDQ+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6YWNjZW50NT48YTpzcmdiQ2xyIHZhbD1cIjRCQUNDNlwiLz48L2E6YWNjZW50NT4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8YTphY2NlbnQ2PjxhOnNyZ2JDbHIgdmFsPVwiRjc5NjQ2XCIvPjwvYTphY2NlbnQ2Pic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOmhsaW5rPjxhOnNyZ2JDbHIgdmFsPVwiMDAwMEZGXCIvPjwvYTpobGluaz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8YTpmb2xIbGluaz48YTpzcmdiQ2xyIHZhbD1cIjgwMDA4MFwiLz48L2E6Zm9sSGxpbms+Jztcblx0b1tvLmxlbmd0aF0gPSAgICc8L2E6Y2xyU2NoZW1lPic7XG5cblx0b1tvLmxlbmd0aF0gPSAgICc8YTpmb250U2NoZW1lIG5hbWU9XCJPZmZpY2VcIj4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8YTptYWpvckZvbnQ+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmxhdGluIHR5cGVmYWNlPVwiQ2FtYnJpYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6ZWEgdHlwZWZhY2U9XCJcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmNzIHR5cGVmYWNlPVwiXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkpwYW5cIiB0eXBlZmFjZT1cIu+8re+8syDvvLDjgrTjgrfjg4Pjgq9cIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiSGFuZ1wiIHR5cGVmYWNlPVwi66eR7J2AIOqzoOuUlVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJIYW5zXCIgdHlwZWZhY2U9XCLlrovkvZNcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiSGFudFwiIHR5cGVmYWNlPVwi5paw57Sw5piO6auUXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkFyYWJcIiB0eXBlZmFjZT1cIlRpbWVzIE5ldyBSb21hblwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJIZWJyXCIgdHlwZWZhY2U9XCJUaW1lcyBOZXcgUm9tYW5cIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiVGhhaVwiIHR5cGVmYWNlPVwiVGFob21hXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkV0aGlcIiB0eXBlZmFjZT1cIk55YWxhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkJlbmdcIiB0eXBlZmFjZT1cIlZyaW5kYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJHdWpyXCIgdHlwZWZhY2U9XCJTaHJ1dGlcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiS2htclwiIHR5cGVmYWNlPVwiTW9vbEJvcmFuXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIktuZGFcIiB0eXBlZmFjZT1cIlR1bmdhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkd1cnVcIiB0eXBlZmFjZT1cIlJhYXZpXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkNhbnNcIiB0eXBlZmFjZT1cIkV1cGhlbWlhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkNoZXJcIiB0eXBlZmFjZT1cIlBsYW50YWdlbmV0IENoZXJva2VlXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIllpaWlcIiB0eXBlZmFjZT1cIk1pY3Jvc29mdCBZaSBCYWl0aVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJUaWJ0XCIgdHlwZWZhY2U9XCJNaWNyb3NvZnQgSGltYWxheWFcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiVGhhYVwiIHR5cGVmYWNlPVwiTVYgQm9saVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJEZXZhXCIgdHlwZWZhY2U9XCJNYW5nYWxcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiVGVsdVwiIHR5cGVmYWNlPVwiR2F1dGFtaVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJUYW1sXCIgdHlwZWZhY2U9XCJMYXRoYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJTeXJjXCIgdHlwZWZhY2U9XCJFc3RyYW5nZWxvIEVkZXNzYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJPcnlhXCIgdHlwZWZhY2U9XCJLYWxpbmdhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIk1seW1cIiB0eXBlZmFjZT1cIkthcnRpa2FcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiTGFvb1wiIHR5cGVmYWNlPVwiRG9rQ2hhbXBhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIlNpbmhcIiB0eXBlZmFjZT1cIklza29vbGEgUG90YVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJNb25nXCIgdHlwZWZhY2U9XCJNb25nb2xpYW4gQmFpdGlcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiVmlldFwiIHR5cGVmYWNlPVwiVGltZXMgTmV3IFJvbWFuXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIlVpZ2hcIiB0eXBlZmFjZT1cIk1pY3Jvc29mdCBVaWdodXJcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiR2VvclwiIHR5cGVmYWNlPVwiU3lsZmFlblwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8L2E6bWFqb3JGb250Pic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOm1pbm9yRm9udD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6bGF0aW4gdHlwZWZhY2U9XCJDYWxpYnJpXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTplYSB0eXBlZmFjZT1cIlwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Y3MgdHlwZWZhY2U9XCJcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiSnBhblwiIHR5cGVmYWNlPVwi77yt77yzIO+8sOOCtOOCt+ODg+OCr1wiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJIYW5nXCIgdHlwZWZhY2U9XCLrp5HsnYAg6rOg65SVXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkhhbnNcIiB0eXBlZmFjZT1cIuWui+S9k1wiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJIYW50XCIgdHlwZWZhY2U9XCLmlrDntLDmmI7pq5RcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiQXJhYlwiIHR5cGVmYWNlPVwiQXJpYWxcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiSGViclwiIHR5cGVmYWNlPVwiQXJpYWxcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiVGhhaVwiIHR5cGVmYWNlPVwiVGFob21hXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkV0aGlcIiB0eXBlZmFjZT1cIk55YWxhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkJlbmdcIiB0eXBlZmFjZT1cIlZyaW5kYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJHdWpyXCIgdHlwZWZhY2U9XCJTaHJ1dGlcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiS2htclwiIHR5cGVmYWNlPVwiRGF1blBlbmhcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiS25kYVwiIHR5cGVmYWNlPVwiVHVuZ2FcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiR3VydVwiIHR5cGVmYWNlPVwiUmFhdmlcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiQ2Fuc1wiIHR5cGVmYWNlPVwiRXVwaGVtaWFcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiQ2hlclwiIHR5cGVmYWNlPVwiUGxhbnRhZ2VuZXQgQ2hlcm9rZWVcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiWWlpaVwiIHR5cGVmYWNlPVwiTWljcm9zb2Z0IFlpIEJhaXRpXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIlRpYnRcIiB0eXBlZmFjZT1cIk1pY3Jvc29mdCBIaW1hbGF5YVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJUaGFhXCIgdHlwZWZhY2U9XCJNViBCb2xpXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkRldmFcIiB0eXBlZmFjZT1cIk1hbmdhbFwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJUZWx1XCIgdHlwZWZhY2U9XCJHYXV0YW1pXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIlRhbWxcIiB0eXBlZmFjZT1cIkxhdGhhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIlN5cmNcIiB0eXBlZmFjZT1cIkVzdHJhbmdlbG8gRWRlc3NhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIk9yeWFcIiB0eXBlZmFjZT1cIkthbGluZ2FcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiTWx5bVwiIHR5cGVmYWNlPVwiS2FydGlrYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJMYW9vXCIgdHlwZWZhY2U9XCJEb2tDaGFtcGFcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiU2luaFwiIHR5cGVmYWNlPVwiSXNrb29sYSBQb3RhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIk1vbmdcIiB0eXBlZmFjZT1cIk1vbmdvbGlhbiBCYWl0aVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJWaWV0XCIgdHlwZWZhY2U9XCJBcmlhbFwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJVaWdoXCIgdHlwZWZhY2U9XCJNaWNyb3NvZnQgVWlnaHVyXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkdlb3JcIiB0eXBlZmFjZT1cIlN5bGZhZW5cIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPC9hOm1pbm9yRm9udD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgJzwvYTpmb250U2NoZW1lPic7XG5cblx0b1tvLmxlbmd0aF0gPSAgICc8YTpmbXRTY2hlbWUgbmFtZT1cIk9mZmljZVwiPic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOmZpbGxTdHlsZUxzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiLz48L2E6c29saWRGaWxsPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpncmFkRmlsbCByb3RXaXRoU2hhcGU9XCIxXCI+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8YTpnc0xzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgICc8YTpncyBwb3M9XCIwXCI+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCI+PGE6dGludCB2YWw9XCI1MDAwMFwiLz48YTpzYXRNb2QgdmFsPVwiMzAwMDAwXCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPic7XG5cdG9bby5sZW5ndGhdID0gICAgICAgJzxhOmdzIHBvcz1cIjM1MDAwXCI+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCI+PGE6dGludCB2YWw9XCIzNzAwMFwiLz48YTpzYXRNb2QgdmFsPVwiMzAwMDAwXCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPic7XG5cdG9bby5sZW5ndGhdID0gICAgICAgJzxhOmdzIHBvcz1cIjEwMDAwMFwiPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiPjxhOnRpbnQgdmFsPVwiMTUwMDBcIi8+PGE6c2F0TW9kIHZhbD1cIjM1MDAwMFwiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgJzwvYTpnc0xzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgJzxhOmxpbiBhbmc9XCIxNjIwMDAwMFwiIHNjYWxlZD1cIjFcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzwvYTpncmFkRmlsbD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Z3JhZEZpbGwgcm90V2l0aFNoYXBlPVwiMVwiPic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPGE6Z3NMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICAnPGE6Z3MgcG9zPVwiMFwiPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiPjxhOnRpbnQgdmFsPVwiMTAwMDAwXCIvPjxhOnNoYWRlIHZhbD1cIjEwMDAwMFwiLz48YTpzYXRNb2QgdmFsPVwiMTMwMDAwXCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPic7XG5cdG9bby5sZW5ndGhdID0gICAgICAgJzxhOmdzIHBvcz1cIjEwMDAwMFwiPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiPjxhOnRpbnQgdmFsPVwiNTAwMDBcIi8+PGE6c2hhZGUgdmFsPVwiMTAwMDAwXCIvPjxhOnNhdE1vZCB2YWw9XCIzNTAwMDBcIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8L2E6Z3NMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8YTpsaW4gYW5nPVwiMTYyMDAwMDBcIiBzY2FsZWQ9XCIwXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8L2E6Z3JhZEZpbGw+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPC9hOmZpbGxTdHlsZUxzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8YTpsblN0eWxlTHN0Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpsbiB3PVwiOTUyNVwiIGNhcD1cImZsYXRcIiBjbXBkPVwic25nXCIgYWxnbj1cImN0clwiPjxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIj48YTpzaGFkZSB2YWw9XCI5NTAwMFwiLz48YTpzYXRNb2QgdmFsPVwiMTA1MDAwXCIvPjwvYTpzY2hlbWVDbHI+PC9hOnNvbGlkRmlsbD48YTpwcnN0RGFzaCB2YWw9XCJzb2xpZFwiLz48L2E6bG4+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmxuIHc9XCIyNTQwMFwiIGNhcD1cImZsYXRcIiBjbXBkPVwic25nXCIgYWxnbj1cImN0clwiPjxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIi8+PC9hOnNvbGlkRmlsbD48YTpwcnN0RGFzaCB2YWw9XCJzb2xpZFwiLz48L2E6bG4+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmxuIHc9XCIzODEwMFwiIGNhcD1cImZsYXRcIiBjbXBkPVwic25nXCIgYWxnbj1cImN0clwiPjxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIi8+PC9hOnNvbGlkRmlsbD48YTpwcnN0RGFzaCB2YWw9XCJzb2xpZFwiLz48L2E6bG4+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPC9hOmxuU3R5bGVMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6ZWZmZWN0U3R5bGVMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmVmZmVjdFN0eWxlPic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPGE6ZWZmZWN0THN0Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICAgJzxhOm91dGVyU2hkdyBibHVyUmFkPVwiNDAwMDBcIiBkaXN0PVwiMjAwMDBcIiBkaXI9XCI1NDAwMDAwXCIgcm90V2l0aFNoYXBlPVwiMFwiPjxhOnNyZ2JDbHIgdmFsPVwiMDAwMDAwXCI+PGE6YWxwaGEgdmFsPVwiMzgwMDBcIi8+PC9hOnNyZ2JDbHI+PC9hOm91dGVyU2hkdz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgJzwvYTplZmZlY3RMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzwvYTplZmZlY3RTdHlsZT4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6ZWZmZWN0U3R5bGU+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8YTplZmZlY3RMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICAnPGE6b3V0ZXJTaGR3IGJsdXJSYWQ9XCI0MDAwMFwiIGRpc3Q9XCIyMzAwMFwiIGRpcj1cIjU0MDAwMDBcIiByb3RXaXRoU2hhcGU9XCIwXCI+PGE6c3JnYkNsciB2YWw9XCIwMDAwMDBcIj48YTphbHBoYSB2YWw9XCIzNTAwMFwiLz48L2E6c3JnYkNscj48L2E6b3V0ZXJTaGR3Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPC9hOmVmZmVjdExzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPC9hOmVmZmVjdFN0eWxlPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTplZmZlY3RTdHlsZT4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgJzxhOmVmZmVjdExzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgICc8YTpvdXRlclNoZHcgYmx1clJhZD1cIjQwMDAwXCIgZGlzdD1cIjIzMDAwXCIgZGlyPVwiNTQwMDAwMFwiIHJvdFdpdGhTaGFwZT1cIjBcIj48YTpzcmdiQ2xyIHZhbD1cIjAwMDAwMFwiPjxhOmFscGhhIHZhbD1cIjM1MDAwXCIvPjwvYTpzcmdiQ2xyPjwvYTpvdXRlclNoZHc+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8L2E6ZWZmZWN0THN0Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPGE6c2NlbmUzZD48YTpjYW1lcmEgcHJzdD1cIm9ydGhvZ3JhcGhpY0Zyb250XCI+PGE6cm90IGxhdD1cIjBcIiBsb249XCIwXCIgcmV2PVwiMFwiLz48L2E6Y2FtZXJhPjxhOmxpZ2h0UmlnIHJpZz1cInRocmVlUHRcIiBkaXI9XCJ0XCI+PGE6cm90IGxhdD1cIjBcIiBsb249XCIwXCIgcmV2PVwiMTIwMDAwMFwiLz48L2E6bGlnaHRSaWc+PC9hOnNjZW5lM2Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8YTpzcDNkPjxhOmJldmVsVCB3PVwiNjM1MDBcIiBoPVwiMjU0MDBcIi8+PC9hOnNwM2Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzwvYTplZmZlY3RTdHlsZT4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8L2E6ZWZmZWN0U3R5bGVMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6YmdGaWxsU3R5bGVMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIi8+PC9hOnNvbGlkRmlsbD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Z3JhZEZpbGwgcm90V2l0aFNoYXBlPVwiMVwiPic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPGE6Z3NMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICAnPGE6Z3MgcG9zPVwiMFwiPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiPjxhOnRpbnQgdmFsPVwiNDAwMDBcIi8+PGE6c2F0TW9kIHZhbD1cIjM1MDAwMFwiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgICc8YTpncyBwb3M9XCI0MDAwMFwiPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiPjxhOnRpbnQgdmFsPVwiNDUwMDBcIi8+PGE6c2hhZGUgdmFsPVwiOTkwMDBcIi8+PGE6c2F0TW9kIHZhbD1cIjM1MDAwMFwiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgICc8YTpncyBwb3M9XCIxMDAwMDBcIj48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIj48YTpzaGFkZSB2YWw9XCIyMDAwMFwiLz48YTpzYXRNb2QgdmFsPVwiMjU1MDAwXCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPC9hOmdzTHN0Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPGE6cGF0aCBwYXRoPVwiY2lyY2xlXCI+PGE6ZmlsbFRvUmVjdCBsPVwiNTAwMDBcIiB0PVwiLTgwMDAwXCIgcj1cIjUwMDAwXCIgYj1cIjE4MDAwMFwiLz48L2E6cGF0aD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPC9hOmdyYWRGaWxsPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpncmFkRmlsbCByb3RXaXRoU2hhcGU9XCIxXCI+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8YTpnc0xzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgICc8YTpncyBwb3M9XCIwXCI+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCI+PGE6dGludCB2YWw9XCI4MDAwMFwiLz48YTpzYXRNb2QgdmFsPVwiMzAwMDAwXCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPic7XG5cdG9bby5sZW5ndGhdID0gICAgICAgJzxhOmdzIHBvcz1cIjEwMDAwMFwiPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiPjxhOnNoYWRlIHZhbD1cIjMwMDAwXCIvPjxhOnNhdE1vZCB2YWw9XCIyMDAwMDBcIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8L2E6Z3NMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8YTpwYXRoIHBhdGg9XCJjaXJjbGVcIj48YTpmaWxsVG9SZWN0IGw9XCI1MDAwMFwiIHQ9XCI1MDAwMFwiIHI9XCI1MDAwMFwiIGI9XCI1MDAwMFwiLz48L2E6cGF0aD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPC9hOmdyYWRGaWxsPic7XG5cdG9bby5sZW5ndGhdID0gICAgJzwvYTpiZ0ZpbGxTdHlsZUxzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgJzwvYTpmbXRTY2hlbWU+Jztcblx0b1tvLmxlbmd0aF0gPSAgJzwvYTp0aGVtZUVsZW1lbnRzPic7XG5cblx0b1tvLmxlbmd0aF0gPSAgJzxhOm9iamVjdERlZmF1bHRzPic7XG5cdG9bby5sZW5ndGhdID0gICAnPGE6c3BEZWY+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6c3BQci8+PGE6Ym9keVByLz48YTpsc3RTdHlsZS8+PGE6c3R5bGU+PGE6bG5SZWYgaWR4PVwiMVwiPjxhOnNjaGVtZUNsciB2YWw9XCJhY2NlbnQxXCIvPjwvYTpsblJlZj48YTpmaWxsUmVmIGlkeD1cIjNcIj48YTpzY2hlbWVDbHIgdmFsPVwiYWNjZW50MVwiLz48L2E6ZmlsbFJlZj48YTplZmZlY3RSZWYgaWR4PVwiMlwiPjxhOnNjaGVtZUNsciB2YWw9XCJhY2NlbnQxXCIvPjwvYTplZmZlY3RSZWY+PGE6Zm9udFJlZiBpZHg9XCJtaW5vclwiPjxhOnNjaGVtZUNsciB2YWw9XCJsdDFcIi8+PC9hOmZvbnRSZWY+PC9hOnN0eWxlPic7XG5cdG9bby5sZW5ndGhdID0gICAnPC9hOnNwRGVmPic7XG5cdG9bby5sZW5ndGhdID0gICAnPGE6bG5EZWY+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6c3BQci8+PGE6Ym9keVByLz48YTpsc3RTdHlsZS8+PGE6c3R5bGU+PGE6bG5SZWYgaWR4PVwiMlwiPjxhOnNjaGVtZUNsciB2YWw9XCJhY2NlbnQxXCIvPjwvYTpsblJlZj48YTpmaWxsUmVmIGlkeD1cIjBcIj48YTpzY2hlbWVDbHIgdmFsPVwiYWNjZW50MVwiLz48L2E6ZmlsbFJlZj48YTplZmZlY3RSZWYgaWR4PVwiMVwiPjxhOnNjaGVtZUNsciB2YWw9XCJhY2NlbnQxXCIvPjwvYTplZmZlY3RSZWY+PGE6Zm9udFJlZiBpZHg9XCJtaW5vclwiPjxhOnNjaGVtZUNsciB2YWw9XCJ0eDFcIi8+PC9hOmZvbnRSZWY+PC9hOnN0eWxlPic7XG5cdG9bby5sZW5ndGhdID0gICAnPC9hOmxuRGVmPic7XG5cdG9bby5sZW5ndGhdID0gICc8L2E6b2JqZWN0RGVmYXVsdHM+Jztcblx0b1tvLmxlbmd0aF0gPSAgJzxhOmV4dHJhQ2xyU2NoZW1lTHN0Lz4nO1xuXHRvW28ubGVuZ3RoXSA9ICc8L2E6dGhlbWU+Jztcblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cbi8qIFtNUy1YTFNdIDIuNC4zMjYgVE9ETzogcGF5bG9hZCBpcyBhIHppcCBmaWxlICovXG5mdW5jdGlvbiBwYXJzZV9UaGVtZShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGVuZCA9IGJsb2IubCArIGxlbmd0aDtcblx0dmFyIGR3VGhlbWVWZXJzaW9uID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRpZihkd1RoZW1lVmVyc2lvbiA9PT0gMTI0MjI2KSByZXR1cm47XG5cdGlmKCFvcHRzLmNlbGxTdHlsZXMpIHsgYmxvYi5sID0gZW5kOyByZXR1cm47IH1cblx0dmFyIGRhdGEgPSBibG9iLnNsaWNlKGJsb2IubCk7XG5cdGJsb2IubCA9IGVuZDtcblx0dmFyIHppcDsgdHJ5IHsgemlwID0gemlwX3JlYWQoZGF0YSwge3R5cGU6IFwiYXJyYXlcIn0pOyB9IGNhdGNoKGUpIHsgcmV0dXJuOyB9XG5cdHZhciB0aGVtZVhNTCA9IGdldHppcHN0cih6aXAsIFwidGhlbWUvdGhlbWUvdGhlbWUxLnhtbFwiLCB0cnVlKTtcblx0aWYoIXRoZW1lWE1MKSByZXR1cm47XG5cdHJldHVybiBwYXJzZV90aGVtZV94bWwodGhlbWVYTUwsIG9wdHMpO1xufVxuXG4vKiAyLjUuNDkgKi9cbmZ1bmN0aW9uIHBhcnNlX0NvbG9yVGhlbWUoYmxvYi8qOjosIGxlbmd0aCovKSB7IHJldHVybiBibG9iLnJlYWRfc2hpZnQoNCk7IH1cblxuLyogMi41LjE1NSAqL1xuZnVuY3Rpb24gcGFyc2VfRnVsbENvbG9yRXh0KGJsb2IvKjo6LCBsZW5ndGgqLykge1xuXHR2YXIgbyA9IHt9O1xuXHRvLnhjbHJUeXBlID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRvLm5UaW50U2hhZGUgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHN3aXRjaChvLnhjbHJUeXBlKSB7XG5cdFx0Y2FzZSAwOiBibG9iLmwgKz0gNDsgYnJlYWs7XG5cdFx0Y2FzZSAxOiBvLnhjbHJWYWx1ZSA9IHBhcnNlX0ljdlhGKGJsb2IsIDQpOyBicmVhaztcblx0XHRjYXNlIDI6IG8ueGNsclZhbHVlID0gcGFyc2VfTG9uZ1JHQkEoYmxvYiwgNCk7IGJyZWFrO1xuXHRcdGNhc2UgMzogby54Y2xyVmFsdWUgPSBwYXJzZV9Db2xvclRoZW1lKGJsb2IsIDQpOyBicmVhaztcblx0XHRjYXNlIDQ6IGJsb2IubCArPSA0OyBicmVhaztcblx0fVxuXHRibG9iLmwgKz0gODtcblx0cmV0dXJuIG87XG59XG5cbi8qIDIuNS4xNjQgVE9ETzogcmVhZCA3IGJpdHMqL1xuZnVuY3Rpb24gcGFyc2VfSWN2WEYoYmxvYiwgbGVuZ3RoKSB7XG5cdHJldHVybiBwYXJzZW5vb3AoYmxvYiwgbGVuZ3RoKTtcbn1cblxuLyogMi41LjI4MCAqL1xuZnVuY3Rpb24gcGFyc2VfWEZFeHRHcmFkaWVudChibG9iLCBsZW5ndGgpIHtcblx0cmV0dXJuIHBhcnNlbm9vcChibG9iLCBsZW5ndGgpO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTA4ICovXG5mdW5jdGlvbiBwYXJzZV9FeHRQcm9wKGJsb2IvKjo6LCBsZW5ndGgqLykvKjpBcnJheTxhbnk+Ki8ge1xuXHR2YXIgZXh0VHlwZSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGNiID0gYmxvYi5yZWFkX3NoaWZ0KDIpIC0gNDtcblx0dmFyIG8gPSBbZXh0VHlwZV07XG5cdHN3aXRjaChleHRUeXBlKSB7XG5cdFx0Y2FzZSAweDA0OiBjYXNlIDB4MDU6IGNhc2UgMHgwNzogY2FzZSAweDA4OlxuXHRcdGNhc2UgMHgwOTogY2FzZSAweDBBOiBjYXNlIDB4MEI6IGNhc2UgMHgwRDpcblx0XHRcdG9bMV0gPSBwYXJzZV9GdWxsQ29sb3JFeHQoYmxvYiwgY2IpOyBicmVhaztcblx0XHRjYXNlIDB4MDY6IG9bMV0gPSBwYXJzZV9YRkV4dEdyYWRpZW50KGJsb2IsIGNiKTsgYnJlYWs7XG5cdFx0Y2FzZSAweDBFOiBjYXNlIDB4MEY6IG9bMV0gPSBibG9iLnJlYWRfc2hpZnQoY2IgPT09IDEgPyAxIDogMik7IGJyZWFrO1xuXHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIlVucmVjb2duaXplZCBFeHRQcm9wIHR5cGU6IFwiICsgZXh0VHlwZSArIFwiIFwiICsgY2IpO1xuXHR9XG5cdHJldHVybiBvO1xufVxuXG4vKiAyLjQuMzU1ICovXG5mdW5jdGlvbiBwYXJzZV9YRkV4dChibG9iLCBsZW5ndGgpIHtcblx0dmFyIGVuZCA9IGJsb2IubCArIGxlbmd0aDtcblx0YmxvYi5sICs9IDI7XG5cdHZhciBpeGZlID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gMjtcblx0dmFyIGNleHRzID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgZXh0Lyo6QU9BKi8gPSBbXTtcblx0d2hpbGUoY2V4dHMtLSA+IDApIGV4dC5wdXNoKHBhcnNlX0V4dFByb3AoYmxvYiwgZW5kLWJsb2IubCkpO1xuXHRyZXR1cm4ge2l4ZmU6aXhmZSwgZXh0OmV4dH07XG59XG5cbi8qIHhmIGlzIGFuIFhGLCBzZWUgcGFyc2VfWEZFeHQgZm9yIHhmZXh0ICovXG5mdW5jdGlvbiB1cGRhdGVfeGZleHQoeGYsIHhmZXh0KSB7XG5cdHhmZXh0LmZvckVhY2goZnVuY3Rpb24oeGZlKSB7XG5cdFx0c3dpdGNoKHhmZVswXSkgeyAvKiAyLjUuMTA4IGV4dFByb3BEYXRhICovXG5cdFx0XHRjYXNlIDB4MDQ6IGJyZWFrOyAvKiBmb3JlZ3JvdW5kIGNvbG9yICovXG5cdFx0XHRjYXNlIDB4MDU6IGJyZWFrOyAvKiBiYWNrZ3JvdW5kIGNvbG9yICovXG5cdFx0XHRjYXNlIDB4MDY6IGJyZWFrOyAvKiBncmFkaWVudCBmaWxsICovXG5cdFx0XHRjYXNlIDB4MDc6IGJyZWFrOyAvKiB0b3AgY2VsbCBib3JkZXIgY29sb3IgKi9cblx0XHRcdGNhc2UgMHgwODogYnJlYWs7IC8qIGJvdHRvbSBjZWxsIGJvcmRlciBjb2xvciAqL1xuXHRcdFx0Y2FzZSAweDA5OiBicmVhazsgLyogbGVmdCBjZWxsIGJvcmRlciBjb2xvciAqL1xuXHRcdFx0Y2FzZSAweDBhOiBicmVhazsgLyogcmlnaHQgY2VsbCBib3JkZXIgY29sb3IgKi9cblx0XHRcdGNhc2UgMHgwYjogYnJlYWs7IC8qIGRpYWdvbmFsIGNlbGwgYm9yZGVyIGNvbG9yICovXG5cdFx0XHRjYXNlIDB4MGQ6IC8qIHRleHQgY29sb3IgKi9cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDB4MGU6IGJyZWFrOyAvKiBmb250IHNjaGVtZSAqL1xuXHRcdFx0Y2FzZSAweDBmOiBicmVhazsgLyogaW5kZW50YXRpb24gbGV2ZWwgKi9cblx0XHR9XG5cdH0pO1xufVxuXG5mdW5jdGlvbiBwYXJzZV9CcnRNZHRpbmZvKGRhdGEsIGxlbmd0aCkge1xuICByZXR1cm4ge1xuICAgIGZsYWdzOiBkYXRhLnJlYWRfc2hpZnQoNCksXG4gICAgdmVyc2lvbjogZGF0YS5yZWFkX3NoaWZ0KDQpLFxuICAgIG5hbWU6IHBhcnNlX1hMV2lkZVN0cmluZyhkYXRhLCBsZW5ndGggLSA4KVxuICB9O1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0TWR0aW5mbyhkYXRhKSB7XG4gIHZhciBvID0gbmV3X2J1ZigxMiArIDIgKiBkYXRhLm5hbWUubGVuZ3RoKTtcbiAgby53cml0ZV9zaGlmdCg0LCBkYXRhLmZsYWdzKTtcbiAgby53cml0ZV9zaGlmdCg0LCBkYXRhLnZlcnNpb24pO1xuICB3cml0ZV9YTFdpZGVTdHJpbmcoZGF0YS5uYW1lLCBvKTtcbiAgcmV0dXJuIG8uc2xpY2UoMCwgby5sKTtcbn1cbmZ1bmN0aW9uIHBhcnNlX0JydE1kYihkYXRhKSB7XG4gIHZhciBvdXQgPSBbXTtcbiAgdmFyIGNudCA9IGRhdGEucmVhZF9zaGlmdCg0KTtcbiAgd2hpbGUgKGNudC0tID4gMClcbiAgICBvdXQucHVzaChbZGF0YS5yZWFkX3NoaWZ0KDQpLCBkYXRhLnJlYWRfc2hpZnQoNCldKTtcbiAgcmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydE1kYihtZGIpIHtcbiAgdmFyIG8gPSBuZXdfYnVmKDQgKyA4ICogbWRiLmxlbmd0aCk7XG4gIG8ud3JpdGVfc2hpZnQoNCwgbWRiLmxlbmd0aCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbWRiLmxlbmd0aDsgKytpKSB7XG4gICAgby53cml0ZV9zaGlmdCg0LCBtZGJbaV1bMF0pO1xuICAgIG8ud3JpdGVfc2hpZnQoNCwgbWRiW2ldWzFdKTtcbiAgfVxuICByZXR1cm4gbztcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydEJlZ2luRXNmbWQoY250LCBuYW1lKSB7XG4gIHZhciBvID0gbmV3X2J1Zig4ICsgMiAqIG5hbWUubGVuZ3RoKTtcbiAgby53cml0ZV9zaGlmdCg0LCBjbnQpO1xuICB3cml0ZV9YTFdpZGVTdHJpbmcobmFtZSwgbyk7XG4gIHJldHVybiBvLnNsaWNlKDAsIG8ubCk7XG59XG5mdW5jdGlvbiBwYXJzZV9CcnRCZWdpbkVzbWRiKGRhdGEpIHtcbiAgZGF0YS5sICs9IDQ7XG4gIHJldHVybiBkYXRhLnJlYWRfc2hpZnQoNCkgIT0gMDtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydEJlZ2luRXNtZGIoY250LCBjbSkge1xuICB2YXIgbyA9IG5ld19idWYoOCk7XG4gIG8ud3JpdGVfc2hpZnQoNCwgY250KTtcbiAgby53cml0ZV9zaGlmdCg0LCBjbSA/IDEgOiAwKTtcbiAgcmV0dXJuIG87XG59XG5mdW5jdGlvbiBwYXJzZV94bG1ldGFfYmluKGRhdGEsIG5hbWUsIF9vcHRzKSB7XG4gIHZhciBvdXQgPSB7IFR5cGVzOiBbXSwgQ2VsbDogW10sIFZhbHVlOiBbXSB9O1xuICB2YXIgb3B0cyA9IF9vcHRzIHx8IHt9O1xuICB2YXIgc3RhdGUgPSBbXTtcbiAgdmFyIHBhc3MgPSBmYWxzZTtcbiAgdmFyIG1ldGF0eXBlID0gMjtcbiAgcmVjb3JkaG9wcGVyKGRhdGEsIGZ1bmN0aW9uKHZhbCwgUiwgUlQpIHtcbiAgICBzd2l0Y2ggKFJUKSB7XG4gICAgICBjYXNlIDMzNTpcbiAgICAgICAgb3V0LlR5cGVzLnB1c2goeyBuYW1lOiB2YWwubmFtZSB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDUxOlxuICAgICAgICB2YWwuZm9yRWFjaChmdW5jdGlvbihyKSB7XG4gICAgICAgICAgaWYgKG1ldGF0eXBlID09IDEpXG4gICAgICAgICAgICBvdXQuQ2VsbC5wdXNoKHsgdHlwZTogb3V0LlR5cGVzW3JbMF0gLSAxXS5uYW1lLCBpbmRleDogclsxXSB9KTtcbiAgICAgICAgICBlbHNlIGlmIChtZXRhdHlwZSA9PSAwKVxuICAgICAgICAgICAgb3V0LlZhbHVlLnB1c2goeyB0eXBlOiBvdXQuVHlwZXNbclswXSAtIDFdLm5hbWUsIGluZGV4OiByWzFdIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDMzNzpcbiAgICAgICAgbWV0YXR5cGUgPSB2YWwgPyAxIDogMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDMzODpcbiAgICAgICAgbWV0YXR5cGUgPSAyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzU6XG4gICAgICAgIHN0YXRlLnB1c2goUlQpO1xuICAgICAgICBwYXNzID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM2OlxuICAgICAgICBzdGF0ZS5wb3AoKTtcbiAgICAgICAgcGFzcyA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChSLlQpIHtcbiAgICAgICAgfSBlbHNlIGlmICghcGFzcyB8fCBvcHRzLldURiAmJiBzdGF0ZVtzdGF0ZS5sZW5ndGggLSAxXSAhPSAzNSlcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIHJlY29yZCAweFwiICsgUlQudG9TdHJpbmcoMTYpKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gb3V0O1xufVxuZnVuY3Rpb24gd3JpdGVfeGxtZXRhX2JpbigpIHtcbiAgdmFyIGJhID0gYnVmX2FycmF5KCk7XG4gIHdyaXRlX3JlY29yZChiYSwgMzMyKTtcbiAgd3JpdGVfcmVjb3JkKGJhLCAzMzQsIHdyaXRlX1VJbnQzMkxFKDEpKTtcbiAgd3JpdGVfcmVjb3JkKGJhLCAzMzUsIHdyaXRlX0JydE1kdGluZm8oe1xuICAgIG5hbWU6IFwiWExEQVBSXCIsXG4gICAgdmVyc2lvbjogMTJlNCxcbiAgICBmbGFnczogMzQ5NjY1NzA3MlxuICB9KSk7XG4gIHdyaXRlX3JlY29yZChiYSwgMzM2KTtcbiAgd3JpdGVfcmVjb3JkKGJhLCAzMzksIHdyaXRlX0JydEJlZ2luRXNmbWQoMSwgXCJYTERBUFJcIikpO1xuICB3cml0ZV9yZWNvcmQoYmEsIDUyKTtcbiAgd3JpdGVfcmVjb3JkKGJhLCAzNSwgd3JpdGVfVUludDMyTEUoNTE0KSk7XG4gIHdyaXRlX3JlY29yZChiYSwgNDA5Niwgd3JpdGVfVUludDMyTEUoMCkpO1xuICB3cml0ZV9yZWNvcmQoYmEsIDQwOTcsIHdyaXRldWludDE2KDEpKTtcbiAgd3JpdGVfcmVjb3JkKGJhLCAzNik7XG4gIHdyaXRlX3JlY29yZChiYSwgNTMpO1xuICB3cml0ZV9yZWNvcmQoYmEsIDM0MCk7XG4gIHdyaXRlX3JlY29yZChiYSwgMzM3LCB3cml0ZV9CcnRCZWdpbkVzbWRiKDEsIHRydWUpKTtcbiAgd3JpdGVfcmVjb3JkKGJhLCA1MSwgd3JpdGVfQnJ0TWRiKFtbMSwgMF1dKSk7XG4gIHdyaXRlX3JlY29yZChiYSwgMzM4KTtcbiAgd3JpdGVfcmVjb3JkKGJhLCAzMzMpO1xuICByZXR1cm4gYmEuZW5kKCk7XG59XG5mdW5jdGlvbiBwYXJzZV94bG1ldGFfeG1sKGRhdGEsIG5hbWUsIG9wdHMpIHtcbiAgdmFyIG91dCA9IHsgVHlwZXM6IFtdLCBDZWxsOiBbXSwgVmFsdWU6IFtdIH07XG4gIGlmICghZGF0YSlcbiAgICByZXR1cm4gb3V0O1xuICB2YXIgcGFzcyA9IGZhbHNlO1xuICB2YXIgbWV0YXR5cGUgPSAyO1xuICB2YXIgbGFzdG1ldGE7XG4gIGRhdGEucmVwbGFjZSh0YWdyZWdleCwgZnVuY3Rpb24oeCkge1xuICAgIHZhciB5ID0gcGFyc2V4bWx0YWcoeCk7XG4gICAgc3dpdGNoIChzdHJpcF9ucyh5WzBdKSkge1xuICAgICAgY2FzZSBcIjw/eG1sXCI6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIjxtZXRhZGF0YVwiOlxuICAgICAgY2FzZSBcIjwvbWV0YWRhdGE+XCI6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIjxtZXRhZGF0YVR5cGVzXCI6XG4gICAgICBjYXNlIFwiPC9tZXRhZGF0YVR5cGVzPlwiOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCI8bWV0YWRhdGFUeXBlXCI6XG4gICAgICAgIG91dC5UeXBlcy5wdXNoKHsgbmFtZTogeS5uYW1lIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCI8L21ldGFkYXRhVHlwZT5cIjpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiPGZ1dHVyZU1ldGFkYXRhXCI6XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgb3V0LlR5cGVzLmxlbmd0aDsgKytqKVxuICAgICAgICAgIGlmIChvdXQuVHlwZXNbal0ubmFtZSA9PSB5Lm5hbWUpXG4gICAgICAgICAgICBsYXN0bWV0YSA9IG91dC5UeXBlc1tqXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiPC9mdXR1cmVNZXRhZGF0YT5cIjpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiPGJrPlwiOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCI8L2JrPlwiOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCI8cmNcIjpcbiAgICAgICAgaWYgKG1ldGF0eXBlID09IDEpXG4gICAgICAgICAgb3V0LkNlbGwucHVzaCh7IHR5cGU6IG91dC5UeXBlc1t5LnQgLSAxXS5uYW1lLCBpbmRleDogK3kudiB9KTtcbiAgICAgICAgZWxzZSBpZiAobWV0YXR5cGUgPT0gMClcbiAgICAgICAgICBvdXQuVmFsdWUucHVzaCh7IHR5cGU6IG91dC5UeXBlc1t5LnQgLSAxXS5uYW1lLCBpbmRleDogK3kudiB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiPC9yYz5cIjpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiPGNlbGxNZXRhZGF0YVwiOlxuICAgICAgICBtZXRhdHlwZSA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIjwvY2VsbE1ldGFkYXRhPlwiOlxuICAgICAgICBtZXRhdHlwZSA9IDI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIjx2YWx1ZU1ldGFkYXRhXCI6XG4gICAgICAgIG1ldGF0eXBlID0gMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiPC92YWx1ZU1ldGFkYXRhPlwiOlxuICAgICAgICBtZXRhdHlwZSA9IDI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIjxleHRMc3RcIjpcbiAgICAgIGNhc2UgXCI8ZXh0THN0PlwiOlxuICAgICAgY2FzZSBcIjwvZXh0THN0PlwiOlxuICAgICAgY2FzZSBcIjxleHRMc3QvPlwiOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCI8ZXh0XCI6XG4gICAgICAgIHBhc3MgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCI8L2V4dD5cIjpcbiAgICAgICAgcGFzcyA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCI8cnZiXCI6XG4gICAgICAgIGlmICghbGFzdG1ldGEpXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGlmICghbGFzdG1ldGEub2Zmc2V0cylcbiAgICAgICAgICBsYXN0bWV0YS5vZmZzZXRzID0gW107XG4gICAgICAgIGxhc3RtZXRhLm9mZnNldHMucHVzaCgreS5pKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAoIXBhc3MgJiYgb3B0cy5XVEYpXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidW5yZWNvZ25pemVkIFwiICsgeVswXSArIFwiIGluIG1ldGFkYXRhXCIpO1xuICAgIH1cbiAgICByZXR1cm4geDtcbiAgfSk7XG4gIHJldHVybiBvdXQ7XG59XG5mdW5jdGlvbiB3cml0ZV94bG1ldGFfeG1sKCkge1xuICB2YXIgbyA9IFtYTUxfSEVBREVSXTtcbiAgby5wdXNoKCc8bWV0YWRhdGEgeG1sbnM9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvc3ByZWFkc2hlZXRtbC8yMDA2L21haW5cIiB4bWxuczp4bHJkPVwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDE3L3JpY2hkYXRhXCIgeG1sbnM6eGRhPVwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDE3L2R5bmFtaWNhcnJheVwiPlxcbiAgPG1ldGFkYXRhVHlwZXMgY291bnQ9XCIxXCI+XFxuICAgIDxtZXRhZGF0YVR5cGUgbmFtZT1cIlhMREFQUlwiIG1pblN1cHBvcnRlZFZlcnNpb249XCIxMjAwMDBcIiBjb3B5PVwiMVwiIHBhc3RlQWxsPVwiMVwiIHBhc3RlVmFsdWVzPVwiMVwiIG1lcmdlPVwiMVwiIHNwbGl0Rmlyc3Q9XCIxXCIgcm93Q29sU2hpZnQ9XCIxXCIgY2xlYXJGb3JtYXRzPVwiMVwiIGNsZWFyQ29tbWVudHM9XCIxXCIgYXNzaWduPVwiMVwiIGNvZXJjZT1cIjFcIiBjZWxsTWV0YT1cIjFcIi8+XFxuICA8L21ldGFkYXRhVHlwZXM+XFxuICA8ZnV0dXJlTWV0YWRhdGEgbmFtZT1cIlhMREFQUlwiIGNvdW50PVwiMVwiPlxcbiAgICA8Yms+XFxuICAgICAgPGV4dExzdD5cXG4gICAgICAgIDxleHQgdXJpPVwie2JkYmI4Y2RjLWZhMWUtNDk2ZS1hODU3LTNjM2YzMGMwMjljM31cIj5cXG4gICAgICAgICAgPHhkYTpkeW5hbWljQXJyYXlQcm9wZXJ0aWVzIGZEeW5hbWljPVwiMVwiIGZDb2xsYXBzZWQ9XCIwXCIvPlxcbiAgICAgICAgPC9leHQ+XFxuICAgICAgPC9leHRMc3Q+XFxuICAgIDwvYms+XFxuICA8L2Z1dHVyZU1ldGFkYXRhPlxcbiAgPGNlbGxNZXRhZGF0YSBjb3VudD1cIjFcIj5cXG4gICAgPGJrPlxcbiAgICAgIDxyYyB0PVwiMVwiIHY9XCIwXCIvPlxcbiAgICA8L2JrPlxcbiAgPC9jZWxsTWV0YWRhdGE+XFxuPC9tZXRhZGF0YT4nKTtcbiAgcmV0dXJuIG8uam9pbihcIlwiKTtcbn1cbi8qIDE4LjYgQ2FsY3VsYXRpb24gQ2hhaW4gKi9cbmZ1bmN0aW9uIHBhcnNlX2NjX3htbChkYXRhLyo6OiwgbmFtZSwgb3B0cyovKS8qOkFycmF5PGFueT4qLyB7XG5cdHZhciBkID0gW107XG5cdGlmKCFkYXRhKSByZXR1cm4gZDtcblx0dmFyIGkgPSAxO1xuXHQoZGF0YS5tYXRjaCh0YWdyZWdleCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHgpIHtcblx0XHR2YXIgeSA9IHBhcnNleG1sdGFnKHgpO1xuXHRcdHN3aXRjaCh5WzBdKSB7XG5cdFx0XHRjYXNlICc8P3htbCc6IGJyZWFrO1xuXHRcdFx0LyogMTguNi4yICBjYWxjQ2hhaW4gQ1RfQ2FsY0NoYWluIDEgKi9cblx0XHRcdGNhc2UgJzxjYWxjQ2hhaW4nOiBjYXNlICc8Y2FsY0NoYWluPic6IGNhc2UgJzwvY2FsY0NoYWluPic6IGJyZWFrO1xuXHRcdFx0LyogMTguNi4xICBjIENUX0NhbGNDZWxsIDEgKi9cblx0XHRcdGNhc2UgJzxjJzogZGVsZXRlIHlbMF07IGlmKHkuaSkgaSA9IHkuaTsgZWxzZSB5LmkgPSBpOyBkLnB1c2goeSk7IGJyZWFrO1xuXHRcdH1cblx0fSk7XG5cdHJldHVybiBkO1xufVxuXG4vL2Z1bmN0aW9uIHdyaXRlX2NjX3htbChkYXRhLCBvcHRzKSB7IH1cblxuLyogW01TLVhMU0JdIDIuNi40LjEgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydENhbGNDaGFpbkl0ZW0kKGRhdGEpIHtcblx0dmFyIG91dCA9IHt9O1xuXHRvdXQuaSA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0dmFyIGNlbGwgPSB7fTtcblx0Y2VsbC5yID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHRjZWxsLmMgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdG91dC5yID0gZW5jb2RlX2NlbGwoY2VsbCk7XG5cdHZhciBmbGFncyA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0aWYoZmxhZ3MgJiAweDIpIG91dC5sID0gJzEnO1xuXHRpZihmbGFncyAmIDB4OCkgb3V0LmEgPSAnMSc7XG5cdHJldHVybiBvdXQ7XG59XG5cbi8qIDE4LjYgQ2FsY3VsYXRpb24gQ2hhaW4gKi9cbmZ1bmN0aW9uIHBhcnNlX2NjX2JpbihkYXRhLCBuYW1lLCBvcHRzKSB7XG5cdHZhciBvdXQgPSBbXTtcblx0dmFyIHBhc3MgPSBmYWxzZTtcblx0cmVjb3JkaG9wcGVyKGRhdGEsIGZ1bmN0aW9uIGhvcHBlcl9jYyh2YWwsIFIsIFJUKSB7XG5cdFx0c3dpdGNoKFJUKSB7XG5cdFx0XHRjYXNlIDB4MDAzRjogLyogJ0JydENhbGNDaGFpbkl0ZW0kJyAqL1xuXHRcdFx0XHRvdXQucHVzaCh2YWwpOyBicmVhaztcblxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0aWYoUi5UKXsvKiBlbXB0eSAqL31cblx0XHRcdFx0ZWxzZSBpZighcGFzcyB8fCBvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCByZWNvcmQgMHhcIiArIFJULnRvU3RyaW5nKDE2KSk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIG91dDtcbn1cblxuLy9mdW5jdGlvbiB3cml0ZV9jY19iaW4oZGF0YSwgb3B0cykgeyB9XG4vKiAxOC4xNCBTdXBwbGVtZW50YXJ5IFdvcmtib29rIERhdGEgKi9cbmZ1bmN0aW9uIHBhcnNlX3hsaW5rX3htbCgvKjo6ZGF0YSwgcmVsLCBuYW1lOnN0cmluZywgX29wdHMqLykge1xuXHQvL3ZhciBvcHRzID0gX29wdHMgfHwge307XG5cdC8vaWYob3B0cy5XVEYpIHRocm93IFwiWExTWCBFeHRlcm5hbCBMaW5rXCI7XG59XG5cbi8qIFtNUy1YTFNCXSAyLjEuNy4yNSBFeHRlcm5hbCBMaW5rICovXG5mdW5jdGlvbiBwYXJzZV94bGlua19iaW4oZGF0YSwgcmVsLCBuYW1lLyo6c3RyaW5nKi8sIF9vcHRzKSB7XG5cdGlmKCFkYXRhKSByZXR1cm4gZGF0YTtcblx0dmFyIG9wdHMgPSBfb3B0cyB8fCB7fTtcblxuXHR2YXIgcGFzcyA9IGZhbHNlLCBlbmQgPSBmYWxzZTtcblxuXHRyZWNvcmRob3BwZXIoZGF0YSwgZnVuY3Rpb24geGxpbmtfcGFyc2UodmFsLCBSLCBSVCkge1xuXHRcdGlmKGVuZCkgcmV0dXJuO1xuXHRcdHN3aXRjaChSVCkge1xuXHRcdFx0Y2FzZSAweDAxNjc6IC8qICdCcnRTdXBUYWJzJyAqL1xuXHRcdFx0Y2FzZSAweDAxNkI6IC8qICdCcnRFeHRlcm5UYWJsZVN0YXJ0JyAqL1xuXHRcdFx0Y2FzZSAweDAxNkM6IC8qICdCcnRFeHRlcm5UYWJsZUVuZCcgKi9cblx0XHRcdGNhc2UgMHgwMTZFOiAvKiAnQnJ0RXh0ZXJuUm93SGRyJyAqL1xuXHRcdFx0Y2FzZSAweDAxNkY6IC8qICdCcnRFeHRlcm5DZWxsQmxhbmsnICovXG5cdFx0XHRjYXNlIDB4MDE3MDogLyogJ0JydEV4dGVybkNlbGxSZWFsJyAqL1xuXHRcdFx0Y2FzZSAweDAxNzE6IC8qICdCcnRFeHRlcm5DZWxsQm9vbCcgKi9cblx0XHRcdGNhc2UgMHgwMTcyOiAvKiAnQnJ0RXh0ZXJuQ2VsbEVycm9yJyAqL1xuXHRcdFx0Y2FzZSAweDAxNzM6IC8qICdCcnRFeHRlcm5DZWxsU3RyaW5nJyAqL1xuXHRcdFx0Y2FzZSAweDAxRDg6IC8qICdCcnRFeHRlcm5WYWx1ZU1ldGEnICovXG5cdFx0XHRjYXNlIDB4MDI0MTogLyogJ0JydFN1cE5hbWVTdGFydCcgKi9cblx0XHRcdGNhc2UgMHgwMjQyOiAvKiAnQnJ0U3VwTmFtZVZhbHVlU3RhcnQnICovXG5cdFx0XHRjYXNlIDB4MDI0MzogLyogJ0JydFN1cE5hbWVWYWx1ZUVuZCcgKi9cblx0XHRcdGNhc2UgMHgwMjQ0OiAvKiAnQnJ0U3VwTmFtZU51bScgKi9cblx0XHRcdGNhc2UgMHgwMjQ1OiAvKiAnQnJ0U3VwTmFtZUVycicgKi9cblx0XHRcdGNhc2UgMHgwMjQ2OiAvKiAnQnJ0U3VwTmFtZVN0JyAqL1xuXHRcdFx0Y2FzZSAweDAyNDc6IC8qICdCcnRTdXBOYW1lTmlsJyAqL1xuXHRcdFx0Y2FzZSAweDAyNDg6IC8qICdCcnRTdXBOYW1lQm9vbCcgKi9cblx0XHRcdGNhc2UgMHgwMjQ5OiAvKiAnQnJ0U3VwTmFtZUZtbGEnICovXG5cdFx0XHRjYXNlIDB4MDI0QTogLyogJ0JydFN1cE5hbWVCaXRzJyAqL1xuXHRcdFx0Y2FzZSAweDAyNEI6IC8qICdCcnRTdXBOYW1lRW5kJyAqL1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDAwMjM6IC8qICdCcnRGUlRCZWdpbicgKi9cblx0XHRcdFx0cGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjQ6IC8qICdCcnRGUlRFbmQnICovXG5cdFx0XHRcdHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGlmKFIuVCl7LyogZW1wdHkgKi99XG5cdFx0XHRcdGVsc2UgaWYoIXBhc3MgfHwgb3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgcmVjb3JkIDB4XCIgKyBSVC50b1N0cmluZygxNikpO1xuXHRcdH1cblx0fSwgb3B0cyk7XG59XG4vKiAyMC41IERyYXdpbmdNTCAtIFNwcmVhZHNoZWV0TUwgRHJhd2luZyAqL1xuLyogMjAuNS4yLjM1IHdzRHIgQ1RfRHJhd2luZyAqL1xuZnVuY3Rpb24gcGFyc2VfZHJhd2luZyhkYXRhLCByZWxzLyo6YW55Ki8pIHtcblx0aWYoIWRhdGEpIHJldHVybiBcIj8/XCI7XG5cdC8qXG5cdCAgQ2hhcnRzaGVldCBEcmF3aW5nOlxuXHQgICAtIDIwLjUuMi4zNSB3c0RyIENUX0RyYXdpbmdcblx0ICAgIC0gMjAuNS4yLjEgIGFic29sdXRlQW5jaG9yIENUX0Fic29sdXRlQW5jaG9yXG5cdCAgICAgLSAyMC41LjIuMTYgZ3JhcGhpY0ZyYW1lIENUX0dyYXBoaWNhbE9iamVjdEZyYW1lXG5cdCAgICAgIC0gMjAuMS4yLjIuMTYgZ3JhcGhpYyBDVF9HcmFwaGljYWxPYmplY3Rcblx0ICAgICAgIC0gMjAuMS4yLjIuMTcgZ3JhcGhpY0RhdGEgQ1RfR3JhcGhpY2FsT2JqZWN0RGF0YVxuICAgICAgICAgIC0gY2hhcnQgcmVmZXJlbmNlXG5cdCAgIHRoZSBhY3R1YWwgdHlwZSBpcyBiYXNlZCBvbiB0aGUgVVJJIG9mIHRoZSBncmFwaGljRGF0YVxuXHRcdFRPRE86IGhhbmRsZSBlbWJlZGRlZCBjaGFydHMgYW5kIG90aGVyIHR5cGVzIG9mIGdyYXBoaWNzXG5cdCovXG5cdHZhciBpZCA9IChkYXRhLm1hdGNoKC88YzpjaGFydCBbXj5dKnI6aWQ9XCIoW15cIl0qKVwiLyl8fFtcIlwiLFwiXCJdKVsxXTtcblxuXHRyZXR1cm4gcmVsc1snIWlkJ11baWRdLlRhcmdldDtcbn1cblxuLyogTC41LjUuMiBTcHJlYWRzaGVldE1MIENvbW1lbnRzICsgVk1MIFNjaGVtYSAqL1xudmFyIF9zaGFwZWlkID0gMTAyNDtcbmZ1bmN0aW9uIHdyaXRlX2NvbW1lbnRzX3ZtbChySWQvKjpudW1iZXIqLywgY29tbWVudHMpIHtcblx0dmFyIGNzaXplID0gWzIxNjAwLCAyMTYwMF07XG5cdC8qIEwuNS4yLjEuMiBQYXRoIEF0dHJpYnV0ZSAqL1xuXHR2YXIgYmJveCA9IFtcIm0wLDBsMFwiLGNzaXplWzFdLGNzaXplWzBdLGNzaXplWzFdLGNzaXplWzBdLFwiMHhlXCJdLmpvaW4oXCIsXCIpO1xuXHR2YXIgbyA9IFtcblx0XHR3cml0ZXh0YWcoXCJ4bWxcIiwgbnVsbCwgeyAneG1sbnM6dic6IFhMTUxOUy52LCAneG1sbnM6byc6IFhMTUxOUy5vLCAneG1sbnM6eCc6IFhMTUxOUy54LCAneG1sbnM6bXYnOiBYTE1MTlMubXYgfSkucmVwbGFjZSgvXFwvPi8sXCI+XCIpLFxuXHRcdHdyaXRleHRhZyhcIm86c2hhcGVsYXlvdXRcIiwgd3JpdGV4dGFnKFwibzppZG1hcFwiLCBudWxsLCB7J3Y6ZXh0JzpcImVkaXRcIiwgJ2RhdGEnOnJJZH0pLCB7J3Y6ZXh0JzpcImVkaXRcIn0pLFxuXHRcdHdyaXRleHRhZyhcInY6c2hhcGV0eXBlXCIsIFtcblx0XHRcdHdyaXRleHRhZyhcInY6c3Ryb2tlXCIsIG51bGwsIHtqb2luc3R5bGU6XCJtaXRlclwifSksXG5cdFx0XHR3cml0ZXh0YWcoXCJ2OnBhdGhcIiwgbnVsbCwge2dyYWRpZW50c2hhcGVvazpcInRcIiwgJ286Y29ubmVjdHR5cGUnOlwicmVjdFwifSlcblx0XHRdLmpvaW4oXCJcIiksIHtpZDpcIl94MDAwMF90MjAyXCIsICdvOnNwdCc6MjAyLCBjb29yZHNpemU6Y3NpemUuam9pbihcIixcIikscGF0aDpiYm94fSlcblx0XTtcblx0d2hpbGUoX3NoYXBlaWQgPCBySWQgKiAxMDAwKSBfc2hhcGVpZCArPSAxMDAwO1xuXG5cdGNvbW1lbnRzLmZvckVhY2goZnVuY3Rpb24oeCkge1xuXHR2YXIgYyA9IGRlY29kZV9jZWxsKHhbMF0pO1xuXHR2YXIgZmlsbG9wdHMgPSAvKjo6KCoveydjb2xvcjInOlwiI0JFRkY4MlwiLCAndHlwZSc6XCJncmFkaWVudFwifS8qOjogOmFueSkqLztcblx0aWYoZmlsbG9wdHMudHlwZSA9PSBcImdyYWRpZW50XCIpIGZpbGxvcHRzLmFuZ2xlID0gXCItMTgwXCI7XG5cdHZhciBmaWxscGFybSA9IGZpbGxvcHRzLnR5cGUgPT0gXCJncmFkaWVudFwiID8gd3JpdGV4dGFnKFwibzpmaWxsXCIsIG51bGwsIHt0eXBlOlwiZ3JhZGllbnRVbnNjYWxlZFwiLCAndjpleHQnOlwidmlld1wifSkgOiBudWxsO1xuXHR2YXIgZmlsbHhtbCA9IHdyaXRleHRhZygndjpmaWxsJywgZmlsbHBhcm0sIGZpbGxvcHRzKTtcblxuXHR2YXIgc2hhZGF0YSA9ICh7b246XCJ0XCIsICdvYnNjdXJlZCc6XCJ0XCJ9Lyo6YW55Ki8pO1xuXHQrK19zaGFwZWlkO1xuXG5cdG8gPSBvLmNvbmNhdChbXG5cdCc8djpzaGFwZScgKyB3eHRfaGVscGVyKHtcblx0XHRpZDonX3gwMDAwX3MnICsgX3NoYXBlaWQsXG5cdFx0dHlwZTpcIiNfeDAwMDBfdDIwMlwiLFxuXHRcdHN0eWxlOlwicG9zaXRpb246YWJzb2x1dGU7IG1hcmdpbi1sZWZ0OjgwcHQ7bWFyZ2luLXRvcDo1cHQ7d2lkdGg6MTA0cHQ7aGVpZ2h0OjY0cHQ7ei1pbmRleDoxMFwiICsgKHhbMV0uaGlkZGVuID8gXCI7dmlzaWJpbGl0eTpoaWRkZW5cIiA6IFwiXCIpICxcblx0XHRmaWxsY29sb3I6XCIjRUNGQUQ0XCIsXG5cdFx0c3Ryb2tlY29sb3I6XCIjZWRlYWExXCJcblx0fSkgKyAnPicsXG5cdFx0ZmlsbHhtbCxcblx0XHR3cml0ZXh0YWcoXCJ2OnNoYWRvd1wiLCBudWxsLCBzaGFkYXRhKSxcblx0XHR3cml0ZXh0YWcoXCJ2OnBhdGhcIiwgbnVsbCwgeydvOmNvbm5lY3R0eXBlJzpcIm5vbmVcIn0pLFxuXHRcdCc8djp0ZXh0Ym94PjxkaXYgc3R5bGU9XCJ0ZXh0LWFsaWduOmxlZnRcIj48L2Rpdj48L3Y6dGV4dGJveD4nLFxuXHRcdCc8eDpDbGllbnREYXRhIE9iamVjdFR5cGU9XCJOb3RlXCI+Jyxcblx0XHRcdCc8eDpNb3ZlV2l0aENlbGxzLz4nLFxuXHRcdFx0Jzx4OlNpemVXaXRoQ2VsbHMvPicsXG5cdFx0XHQvKiBQYXJ0IDQgMTkuNC4yLjMgQW5jaG9yIChBbmNob3IpICovXG5cdFx0XHR3cml0ZXRhZygneDpBbmNob3InLCBbYy5jKzEsIDAsIGMucisxLCAwLCBjLmMrMywgMjAsIGMucis1LCAyMF0uam9pbihcIixcIikpLFxuXHRcdFx0d3JpdGV0YWcoJ3g6QXV0b0ZpbGwnLCBcIkZhbHNlXCIpLFxuXHRcdFx0d3JpdGV0YWcoJ3g6Um93JywgU3RyaW5nKGMucikpLFxuXHRcdFx0d3JpdGV0YWcoJ3g6Q29sdW1uJywgU3RyaW5nKGMuYykpLFxuXHRcdFx0eFsxXS5oaWRkZW4gPyAnJyA6ICc8eDpWaXNpYmxlLz4nLFxuXHRcdCc8L3g6Q2xpZW50RGF0YT4nLFxuXHQnPC92OnNoYXBlPidcblx0XSk7IH0pO1xuXHRvLnB1c2goJzwveG1sPicpO1xuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuZnVuY3Rpb24gc2hlZXRfaW5zZXJ0X2NvbW1lbnRzKHNoZWV0LCBjb21tZW50cy8qOkFycmF5PFJhd0NvbW1lbnQ+Ki8sIHRocmVhZGVkLyo6Ym9vbGVhbiovLCBwZW9wbGUvKjo/QXJyYXk8YW55PiovKSB7XG5cdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkoc2hlZXQpO1xuXHR2YXIgY2VsbC8qOkNlbGwqLztcblx0Y29tbWVudHMuZm9yRWFjaChmdW5jdGlvbihjb21tZW50KSB7XG5cdFx0dmFyIHIgPSBkZWNvZGVfY2VsbChjb21tZW50LnJlZik7XG5cdFx0aWYoZGVuc2UpIHtcblx0XHRcdGlmKCFzaGVldFtyLnJdKSBzaGVldFtyLnJdID0gW107XG5cdFx0XHRjZWxsID0gc2hlZXRbci5yXVtyLmNdO1xuXHRcdH0gZWxzZSBjZWxsID0gc2hlZXRbY29tbWVudC5yZWZdO1xuXHRcdGlmICghY2VsbCkge1xuXHRcdFx0Y2VsbCA9ICh7dDpcInpcIn0vKjphbnkqLyk7XG5cdFx0XHRpZihkZW5zZSkgc2hlZXRbci5yXVtyLmNdID0gY2VsbDtcblx0XHRcdGVsc2Ugc2hlZXRbY29tbWVudC5yZWZdID0gY2VsbDtcblx0XHRcdHZhciByYW5nZSA9IHNhZmVfZGVjb2RlX3JhbmdlKHNoZWV0W1wiIXJlZlwiXXx8XCJCRFdHTzEwMDAwMDE6QTFcIik7XG5cdFx0XHRpZihyYW5nZS5zLnIgPiByLnIpIHJhbmdlLnMuciA9IHIucjtcblx0XHRcdGlmKHJhbmdlLmUuciA8IHIucikgcmFuZ2UuZS5yID0gci5yO1xuXHRcdFx0aWYocmFuZ2Uucy5jID4gci5jKSByYW5nZS5zLmMgPSByLmM7XG5cdFx0XHRpZihyYW5nZS5lLmMgPCByLmMpIHJhbmdlLmUuYyA9IHIuYztcblx0XHRcdHZhciBlbmNvZGVkID0gZW5jb2RlX3JhbmdlKHJhbmdlKTtcblx0XHRcdGlmIChlbmNvZGVkICE9PSBzaGVldFtcIiFyZWZcIl0pIHNoZWV0W1wiIXJlZlwiXSA9IGVuY29kZWQ7XG5cdFx0fVxuXG5cdFx0aWYgKCFjZWxsLmMpIGNlbGwuYyA9IFtdO1xuXHRcdHZhciBvLyo6Q29tbWVudCovID0gKHthOiBjb21tZW50LmF1dGhvciwgdDogY29tbWVudC50LCByOiBjb21tZW50LnIsIFQ6IHRocmVhZGVkfSk7XG5cdFx0aWYoY29tbWVudC5oKSBvLmggPSBjb21tZW50Lmg7XG5cblx0XHQvKiB0aHJlYWRlZCBjb21tZW50cyBhbHdheXMgb3ZlcnJpZGUgKi9cblx0XHRmb3IodmFyIGkgPSBjZWxsLmMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcblx0XHRcdGlmKCF0aHJlYWRlZCAmJiBjZWxsLmNbaV0uVCkgcmV0dXJuO1xuXHRcdFx0aWYodGhyZWFkZWQgJiYgIWNlbGwuY1tpXS5UKSBjZWxsLmMuc3BsaWNlKGksIDEpO1xuXHRcdH1cblx0XHRpZih0aHJlYWRlZCAmJiBwZW9wbGUpIGZvcihpID0gMDsgaSA8IHBlb3BsZS5sZW5ndGg7ICsraSkge1xuXHRcdFx0aWYoby5hID09IHBlb3BsZVtpXS5pZCkgeyBvLmEgPSBwZW9wbGVbaV0ubmFtZSB8fCBvLmE7IGJyZWFrOyB9XG5cdFx0fVxuXHRcdGNlbGwuYy5wdXNoKG8pO1xuXHR9KTtcbn1cblxuLyogMTguNyBDb21tZW50cyAqL1xuZnVuY3Rpb24gcGFyc2VfY29tbWVudHNfeG1sKGRhdGEvKjpzdHJpbmcqLywgb3B0cykvKjpBcnJheTxSYXdDb21tZW50PiovIHtcblx0LyogMTguNy42IENUX0NvbW1lbnRzICovXG5cdGlmKGRhdGEubWF0Y2goLzwoPzpcXHcrOik/Y29tbWVudHMgKlxcLz4vKSkgcmV0dXJuIFtdO1xuXHR2YXIgYXV0aG9ycy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgY29tbWVudExpc3QvKjpBcnJheTxSYXdDb21tZW50PiovID0gW107XG5cdHZhciBhdXRodGFnID0gZGF0YS5tYXRjaCgvPCg/Olxcdys6KT9hdXRob3JzPihbXFxzXFxTXSopPFxcLyg/Olxcdys6KT9hdXRob3JzPi8pO1xuXHRpZihhdXRodGFnICYmIGF1dGh0YWdbMV0pIGF1dGh0YWdbMV0uc3BsaXQoLzxcXC9cXHcqOj9hdXRob3I+LykuZm9yRWFjaChmdW5jdGlvbih4KSB7XG5cdFx0aWYoeCA9PT0gXCJcIiB8fCB4LnRyaW0oKSA9PT0gXCJcIikgcmV0dXJuO1xuXHRcdHZhciBhID0geC5tYXRjaCgvPCg/Olxcdys6KT9hdXRob3JbXj5dKj4oLiopLyk7XG5cdFx0aWYoYSkgYXV0aG9ycy5wdXNoKGFbMV0pO1xuXHR9KTtcblx0dmFyIGNtbnR0YWcgPSBkYXRhLm1hdGNoKC88KD86XFx3KzopP2NvbW1lbnRMaXN0PihbXFxzXFxTXSopPFxcLyg/Olxcdys6KT9jb21tZW50TGlzdD4vKTtcblx0aWYoY21udHRhZyAmJiBjbW50dGFnWzFdKSBjbW50dGFnWzFdLnNwbGl0KC88XFwvXFx3Kjo/Y29tbWVudD4vKS5mb3JFYWNoKGZ1bmN0aW9uKHgpIHtcblx0XHRpZih4ID09PSBcIlwiIHx8IHgudHJpbSgpID09PSBcIlwiKSByZXR1cm47XG5cdFx0dmFyIGNtID0geC5tYXRjaCgvPCg/Olxcdys6KT9jb21tZW50W14+XSo+Lyk7XG5cdFx0aWYoIWNtKSByZXR1cm47XG5cdFx0dmFyIHkgPSBwYXJzZXhtbHRhZyhjbVswXSk7XG5cdFx0dmFyIGNvbW1lbnQvKjpSYXdDb21tZW50Ki8gPSAoeyBhdXRob3I6IHkuYXV0aG9ySWQgJiYgYXV0aG9yc1t5LmF1dGhvcklkXSB8fCBcInNoZWV0anNnaG9zdFwiLCByZWY6IHkucmVmLCBndWlkOiB5Lmd1aWQgfS8qOmFueSovKTtcblx0XHR2YXIgY2VsbCA9IGRlY29kZV9jZWxsKHkucmVmKTtcblx0XHRpZihvcHRzLnNoZWV0Um93cyAmJiBvcHRzLnNoZWV0Um93cyA8PSBjZWxsLnIpIHJldHVybjtcblx0XHR2YXIgdGV4dE1hdGNoID0geC5tYXRjaCgvPCg/Olxcdys6KT90ZXh0PihbXFxzXFxTXSopPFxcLyg/Olxcdys6KT90ZXh0Pi8pO1xuXHRcdHZhciBydCA9ICEhdGV4dE1hdGNoICYmICEhdGV4dE1hdGNoWzFdICYmIHBhcnNlX3NpKHRleHRNYXRjaFsxXSkgfHwge3I6XCJcIix0OlwiXCIsaDpcIlwifTtcblx0XHRjb21tZW50LnIgPSBydC5yO1xuXHRcdGlmKHJ0LnIgPT0gXCI8dD48L3Q+XCIpIHJ0LnQgPSBydC5oID0gXCJcIjtcblx0XHRjb21tZW50LnQgPSAocnQudHx8XCJcIikucmVwbGFjZSgvXFxyXFxuL2csXCJcXG5cIikucmVwbGFjZSgvXFxyL2csXCJcXG5cIik7XG5cdFx0aWYob3B0cy5jZWxsSFRNTCkgY29tbWVudC5oID0gcnQuaDtcblx0XHRjb21tZW50TGlzdC5wdXNoKGNvbW1lbnQpO1xuXHR9KTtcblx0cmV0dXJuIGNvbW1lbnRMaXN0O1xufVxuXG5mdW5jdGlvbiB3cml0ZV9jb21tZW50c194bWwoZGF0YS8qOjosIG9wdHMqLykge1xuXHR2YXIgbyA9IFtYTUxfSEVBREVSLCB3cml0ZXh0YWcoJ2NvbW1lbnRzJywgbnVsbCwgeyAneG1sbnMnOiBYTUxOU19tYWluWzBdIH0pXTtcblxuXHR2YXIgaWF1dGhvci8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRvLnB1c2goXCI8YXV0aG9ycz5cIik7XG5cdGRhdGEuZm9yRWFjaChmdW5jdGlvbih4KSB7IHhbMV0uZm9yRWFjaChmdW5jdGlvbih3KSB7IHZhciBhID0gZXNjYXBleG1sKHcuYSk7XG5cdFx0aWYoaWF1dGhvci5pbmRleE9mKGEpID09IC0xKSB7XG5cdFx0XHRpYXV0aG9yLnB1c2goYSk7XG5cdFx0XHRvLnB1c2goXCI8YXV0aG9yPlwiICsgYSArIFwiPC9hdXRob3I+XCIpO1xuXHRcdH1cblx0XHRpZih3LlQgJiYgdy5JRCAmJiBpYXV0aG9yLmluZGV4T2YoXCJ0Yz1cIiArIHcuSUQpID09IC0xKSB7XG5cdFx0XHRpYXV0aG9yLnB1c2goXCJ0Yz1cIiArIHcuSUQpO1xuXHRcdFx0by5wdXNoKFwiPGF1dGhvcj5cIiArIFwidGM9XCIgKyB3LklEICsgXCI8L2F1dGhvcj5cIik7XG5cdFx0fVxuXHR9KTsgfSk7XG5cdGlmKGlhdXRob3IubGVuZ3RoID09IDApIHsgaWF1dGhvci5wdXNoKFwiU2hlZXRKNVwiKTsgby5wdXNoKFwiPGF1dGhvcj5TaGVldEo1PC9hdXRob3I+XCIpOyB9XG5cdG8ucHVzaChcIjwvYXV0aG9ycz5cIik7XG5cdG8ucHVzaChcIjxjb21tZW50TGlzdD5cIik7XG5cdGRhdGEuZm9yRWFjaChmdW5jdGlvbihkKSB7XG5cdFx0LyogMTguNy4zIENUX0NvbW1lbnQgKi9cblx0XHR2YXIgbGFzdGF1dGhvciA9IDAsIHRzID0gW107XG5cdFx0aWYoZFsxXVswXSAmJiBkWzFdWzBdLlQgJiYgZFsxXVswXS5JRCkgbGFzdGF1dGhvciA9IGlhdXRob3IuaW5kZXhPZihcInRjPVwiICsgZFsxXVswXS5JRCk7XG5cdFx0ZWxzZSBkWzFdLmZvckVhY2goZnVuY3Rpb24oYykge1xuXHRcdFx0aWYoYy5hKSBsYXN0YXV0aG9yID0gaWF1dGhvci5pbmRleE9mKGVzY2FwZXhtbChjLmEpKTtcblx0XHRcdHRzLnB1c2goYy50fHxcIlwiKTtcblx0XHR9KTtcblx0XHRvLnB1c2goJzxjb21tZW50IHJlZj1cIicgKyBkWzBdICsgJ1wiIGF1dGhvcklkPVwiJyArIGxhc3RhdXRob3IgKyAnXCI+PHRleHQ+Jyk7XG5cdFx0aWYodHMubGVuZ3RoIDw9IDEpIG8ucHVzaCh3cml0ZXRhZyhcInRcIiwgZXNjYXBleG1sKHRzWzBdfHxcIlwiKSkpO1xuXHRcdGVsc2Uge1xuXHRcdFx0LyogYmFzZWQgb24gVGhyZWFkZWQgQ29tbWVudHMgLT4gQ29tbWVudHMgcHJvamVjdGlvbiAqL1xuXHRcdFx0dmFyIHQgPSBcIkNvbW1lbnQ6XFxuICAgIFwiICsgKHRzWzBdKSArIFwiXFxuXCI7XG5cdFx0XHRmb3IodmFyIGkgPSAxOyBpIDwgdHMubGVuZ3RoOyArK2kpIHQgKz0gXCJSZXBseTpcXG4gICAgXCIgKyB0c1tpXSArIFwiXFxuXCI7XG5cdFx0XHRvLnB1c2god3JpdGV0YWcoXCJ0XCIsIGVzY2FwZXhtbCh0KSkpO1xuXHRcdH1cblx0XHRvLnB1c2goJzwvdGV4dD48L2NvbW1lbnQ+Jyk7XG5cdH0pO1xuXHRvLnB1c2goXCI8L2NvbW1lbnRMaXN0PlwiKTtcblx0aWYoby5sZW5ndGg+MikgeyBvW28ubGVuZ3RoXSA9ICgnPC9jb21tZW50cz4nKTsgb1sxXT1vWzFdLnJlcGxhY2UoXCIvPlwiLFwiPlwiKTsgfVxuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuXG4vKiBbTVMtWExTWF0gMi4xLjE3ICovXG5mdW5jdGlvbiBwYXJzZV90Y21udF94bWwoZGF0YS8qOnN0cmluZyovLCBvcHRzKS8qOkFycmF5PFJhd0NvbW1lbnQ+Ki8ge1xuXHR2YXIgb3V0ID0gW107XG5cdHZhciBwYXNzID0gZmFsc2UsIGNvbW1lbnQgPSB7fSwgdGlkeCA9IDA7XG5cdGRhdGEucmVwbGFjZSh0YWdyZWdleCwgZnVuY3Rpb24geG1sX3RjbW50KHgsIGlkeCkge1xuXHRcdHZhciB5Lyo6YW55Ki8gPSBwYXJzZXhtbHRhZyh4KTtcblx0XHRzd2l0Y2goc3RyaXBfbnMoeVswXSkpIHtcblx0XHRcdGNhc2UgJzw/eG1sJzogYnJlYWs7XG5cblx0XHRcdC8qIDIuNi4yMDcgVGhyZWFkZWRDb21tZW50cyBDVF9UaHJlYWRlZENvbW1lbnRzICovXG5cdFx0XHRjYXNlICc8VGhyZWFkZWRDb21tZW50cyc6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9UaHJlYWRlZENvbW1lbnRzPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAyLjYuMjA1IHRocmVhZGVkQ29tbWVudCBDVF9UaHJlYWRlZENvbW1lbnQgKi9cblx0XHRcdGNhc2UgJzx0aHJlYWRlZENvbW1lbnQnOiBjb21tZW50ID0ge2F1dGhvcjogeS5wZXJzb25JZCwgZ3VpZDogeS5pZCwgcmVmOiB5LnJlZiwgVDogMX07IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC90aHJlYWRlZENvbW1lbnQ+JzogaWYoY29tbWVudC50ICE9IG51bGwpIG91dC5wdXNoKGNvbW1lbnQpOyBicmVhaztcblxuXHRcdFx0Y2FzZSAnPHRleHQ+JzogY2FzZSAnPHRleHQnOiB0aWR4ID0gaWR4ICsgeC5sZW5ndGg7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC90ZXh0Pic6IGNvbW1lbnQudCA9IGRhdGEuc2xpY2UodGlkeCwgaWR4KS5yZXBsYWNlKC9cXHJcXG4vZywgXCJcXG5cIikucmVwbGFjZSgvXFxyL2csIFwiXFxuXCIpOyBicmVhaztcblxuXHRcdFx0LyogMi42LjIwNiBtZW50aW9ucyBDVF9UaHJlYWRlZENvbW1lbnRNZW50aW9ucyBUT0RPICovXG5cdFx0XHRjYXNlICc8bWVudGlvbnMnOiBjYXNlICc8bWVudGlvbnM+JzogcGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9tZW50aW9ucz4nOiBwYXNzID0gZmFsc2U7IGJyZWFrO1xuXG5cdFx0XHQvKiAyLjYuMjAyIG1lbnRpb24gQ1RfTWVudGlvbiBUT0RPICovXG5cblx0XHRcdC8qIDE4LjIuMTAgZXh0THN0IENUX0V4dGVuc2lvbkxpc3QgPyAqL1xuXHRcdFx0Y2FzZSAnPGV4dExzdCc6IGNhc2UgJzxleHRMc3Q+JzogY2FzZSAnPC9leHRMc3Q+JzogY2FzZSAnPGV4dExzdC8+JzogYnJlYWs7XG5cdFx0XHQvKiAxOC4yLjcgIGV4dCBDVF9FeHRlbnNpb24gKyAqL1xuXHRcdFx0Y2FzZSAnPGV4dCc6IHBhc3M9dHJ1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L2V4dD4nOiBwYXNzPWZhbHNlOyBicmVhaztcblxuXHRcdFx0ZGVmYXVsdDogaWYoIXBhc3MgJiYgb3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcigndW5yZWNvZ25pemVkICcgKyB5WzBdICsgJyBpbiB0aHJlYWRlZCBjb21tZW50cycpO1xuXHRcdH1cblx0XHRyZXR1cm4geDtcblx0fSk7XG5cdHJldHVybiBvdXQ7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3RjbW50X3htbChjb21tZW50cywgcGVvcGxlLCBvcHRzKSB7XG5cdHZhciBvID0gW1hNTF9IRUFERVIsIHdyaXRleHRhZygnVGhyZWFkZWRDb21tZW50cycsIG51bGwsIHsgJ3htbG5zJzogWE1MTlMuVENNTlQgfSkucmVwbGFjZSgvW1xcL10+LywgXCI+XCIpXTtcblx0Y29tbWVudHMuZm9yRWFjaChmdW5jdGlvbihjYXJyKSB7XG5cdFx0dmFyIHJvb3RpZCA9IFwiXCI7XG5cdFx0KGNhcnJbMV0gfHwgW10pLmZvckVhY2goZnVuY3Rpb24oYywgaWR4KSB7XG5cdFx0XHRpZighYy5UKSB7IGRlbGV0ZSBjLklEOyByZXR1cm47IH1cblx0XHRcdGlmKGMuYSAmJiBwZW9wbGUuaW5kZXhPZihjLmEpID09IC0xKSBwZW9wbGUucHVzaChjLmEpO1xuXHRcdFx0dmFyIHRjb3B0cyA9IHtcblx0XHRcdFx0cmVmOiBjYXJyWzBdLFxuXHRcdFx0XHRpZDogXCJ7NTRFRTc5NTEtNzI2Mi00MjAwLTY5NjktXCIgKyAoXCIwMDAwMDAwMDAwMDBcIiArIG9wdHMudGNpZCsrKS5zbGljZSgtMTIpICsgXCJ9XCJcblx0XHRcdH07XG5cdFx0XHRpZihpZHggPT0gMCkgcm9vdGlkID0gdGNvcHRzLmlkO1xuXHRcdFx0ZWxzZSB0Y29wdHMucGFyZW50SWQgPSByb290aWQ7XG5cdFx0XHRjLklEID0gdGNvcHRzLmlkO1xuXHRcdFx0aWYoYy5hKSB0Y29wdHMucGVyc29uSWQgPSBcIns1NEVFNzk1MC03MjYyLTQyMDAtNjk2OS1cIiArIChcIjAwMDAwMDAwMDAwMFwiICsgcGVvcGxlLmluZGV4T2YoYy5hKSkuc2xpY2UoLTEyKSArIFwifVwiO1xuXHRcdFx0by5wdXNoKHdyaXRleHRhZygndGhyZWFkZWRDb21tZW50Jywgd3JpdGV0YWcoJ3RleHQnLCBjLnR8fFwiXCIpLCB0Y29wdHMpKTtcblx0XHR9KTtcblx0fSk7XG5cdG8ucHVzaCgnPC9UaHJlYWRlZENvbW1lbnRzPicpO1xuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuXG4vKiBbTVMtWExTWF0gMi4xLjE4ICovXG5mdW5jdGlvbiBwYXJzZV9wZW9wbGVfeG1sKGRhdGEvKjpzdHJpbmcqLywgb3B0cykge1xuXHR2YXIgb3V0ID0gW107XG5cdHZhciBwYXNzID0gZmFsc2U7XG5cdGRhdGEucmVwbGFjZSh0YWdyZWdleCwgZnVuY3Rpb24geG1sX3RjbW50KHgpIHtcblx0XHR2YXIgeS8qOmFueSovID0gcGFyc2V4bWx0YWcoeCk7XG5cdFx0c3dpdGNoKHN0cmlwX25zKHlbMF0pKSB7XG5cdFx0XHRjYXNlICc8P3htbCc6IGJyZWFrO1xuXG5cdFx0XHQvKiAyLjQuODUgcGVyc29uTGlzdCBDVF9QZXJzb25MaXN0ICovXG5cdFx0XHRjYXNlICc8cGVyc29uTGlzdCc6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9wZXJzb25MaXN0Pic6IGJyZWFrO1xuXG5cdFx0XHQvKiAyLjYuMjAzIHBlcnNvbiBDVF9QZXJzb24gVE9ETzogcHJvdmlkZXJzICovXG5cdFx0XHRjYXNlICc8cGVyc29uJzogb3V0LnB1c2goe25hbWU6IHkuZGlzcGxheW5hbWUsIGlkOiB5LmlkIH0pOyBicmVhaztcblx0XHRcdGNhc2UgJzwvcGVyc29uPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjEwIGV4dExzdCBDVF9FeHRlbnNpb25MaXN0ID8gKi9cblx0XHRcdGNhc2UgJzxleHRMc3QnOiBjYXNlICc8ZXh0THN0Pic6IGNhc2UgJzwvZXh0THN0Pic6IGNhc2UgJzxleHRMc3QvPic6IGJyZWFrO1xuXHRcdFx0LyogMTguMi43ICBleHQgQ1RfRXh0ZW5zaW9uICsgKi9cblx0XHRcdGNhc2UgJzxleHQnOiBwYXNzPXRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9leHQ+JzogcGFzcz1mYWxzZTsgYnJlYWs7XG5cblx0XHRcdGRlZmF1bHQ6IGlmKCFwYXNzICYmIG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoJ3VucmVjb2duaXplZCAnICsgeVswXSArICcgaW4gdGhyZWFkZWQgY29tbWVudHMnKTtcblx0XHR9XG5cdFx0cmV0dXJuIHg7XG5cdH0pO1xuXHRyZXR1cm4gb3V0O1xufVxuZnVuY3Rpb24gd3JpdGVfcGVvcGxlX3htbChwZW9wbGUvKiwgb3B0cyovKSB7XG5cdHZhciBvID0gW1hNTF9IRUFERVIsIHdyaXRleHRhZygncGVyc29uTGlzdCcsIG51bGwsIHtcblx0XHQneG1sbnMnOiBYTUxOUy5UQ01OVCxcblx0XHQneG1sbnM6eCc6IFhNTE5TX21haW5bMF1cblx0fSkucmVwbGFjZSgvW1xcL10+LywgXCI+XCIpXTtcblx0cGVvcGxlLmZvckVhY2goZnVuY3Rpb24ocGVyc29uLCBpZHgpIHtcblx0XHRvLnB1c2god3JpdGV4dGFnKCdwZXJzb24nLCBudWxsLCB7XG5cdFx0XHRkaXNwbGF5TmFtZTogcGVyc29uLFxuXHRcdFx0aWQ6IFwiezU0RUU3OTUwLTcyNjItNDIwMC02OTY5LVwiICsgKFwiMDAwMDAwMDAwMDAwXCIgKyBpZHgpLnNsaWNlKC0xMikgKyBcIn1cIixcblx0XHRcdHVzZXJJZDogcGVyc29uLFxuXHRcdFx0cHJvdmlkZXJJZDogXCJOb25lXCJcblx0XHR9KSk7XG5cdH0pO1xuXHRvLnB1c2goXCI8L3BlcnNvbkxpc3Q+XCIpO1xuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuLyogW01TLVhMU0JdIDIuNC4yOCBCcnRCZWdpbkNvbW1lbnQgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydEJlZ2luQ29tbWVudChkYXRhKSB7XG5cdHZhciBvdXQgPSB7fTtcblx0b3V0LmlhdXRob3IgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdHZhciByZnggPSBwYXJzZV9VbmNoZWNrZWRSZlgoZGF0YSwgMTYpO1xuXHRvdXQucmZ4ID0gcmZ4LnM7XG5cdG91dC5yZWYgPSBlbmNvZGVfY2VsbChyZngucyk7XG5cdGRhdGEubCArPSAxNjsgLyp2YXIgZ3VpZCA9IHBhcnNlX0dVSUQoZGF0YSk7ICovXG5cdHJldHVybiBvdXQ7XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRCZWdpbkNvbW1lbnQoZGF0YSwgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDM2KTtcblx0by53cml0ZV9zaGlmdCg0LCBkYXRhWzFdLmlhdXRob3IpO1xuXHR3cml0ZV9VbmNoZWNrZWRSZlgoKGRhdGFbMF0vKjphbnkqLyksIG8pO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC4zMjcgQnJ0Q29tbWVudEF1dGhvciAqL1xudmFyIHBhcnNlX0JydENvbW1lbnRBdXRob3IgPSBwYXJzZV9YTFdpZGVTdHJpbmc7XG5mdW5jdGlvbiB3cml0ZV9CcnRDb21tZW50QXV0aG9yKGRhdGEpIHsgcmV0dXJuIHdyaXRlX1hMV2lkZVN0cmluZyhkYXRhLnNsaWNlKDAsIDU0KSk7IH1cblxuLyogW01TLVhMU0JdIDIuMS43LjggQ29tbWVudHMgKi9cbmZ1bmN0aW9uIHBhcnNlX2NvbW1lbnRzX2JpbihkYXRhLCBvcHRzKS8qOkFycmF5PFJhd0NvbW1lbnQ+Ki8ge1xuXHR2YXIgb3V0Lyo6QXJyYXk8UmF3Q29tbWVudD4qLyA9IFtdO1xuXHR2YXIgYXV0aG9ycy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgYyA9IHt9O1xuXHR2YXIgcGFzcyA9IGZhbHNlO1xuXHRyZWNvcmRob3BwZXIoZGF0YSwgZnVuY3Rpb24gaG9wcGVyX2NtbnQodmFsLCBSLCBSVCkge1xuXHRcdHN3aXRjaChSVCkge1xuXHRcdFx0Y2FzZSAweDAyNzg6IC8qICdCcnRDb21tZW50QXV0aG9yJyAqL1xuXHRcdFx0XHRhdXRob3JzLnB1c2godmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDI3QjogLyogJ0JydEJlZ2luQ29tbWVudCcgKi9cblx0XHRcdFx0YyA9IHZhbDsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDI3RDogLyogJ0JydENvbW1lbnRUZXh0JyAqL1xuXHRcdFx0XHRjLnQgPSB2YWwudDsgYy5oID0gdmFsLmg7IGMuciA9IHZhbC5yOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMjdDOiAvKiAnQnJ0RW5kQ29tbWVudCcgKi9cblx0XHRcdFx0Yy5hdXRob3IgPSBhdXRob3JzW2MuaWF1dGhvcl07XG5cdFx0XHRcdGRlbGV0ZSAoYy8qOmFueSovKS5pYXV0aG9yO1xuXHRcdFx0XHRpZihvcHRzLnNoZWV0Um93cyAmJiBjLnJmeCAmJiBvcHRzLnNoZWV0Um93cyA8PSBjLnJmeC5yKSBicmVhaztcblx0XHRcdFx0aWYoIWMudCkgYy50ID0gXCJcIjtcblx0XHRcdFx0ZGVsZXRlIGMucmZ4OyBvdXQucHVzaChjKTsgYnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwQzAwOiAvKiAnQnJ0VWlkJyAqL1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDAwMjM6IC8qICdCcnRGUlRCZWdpbicgKi9cblx0XHRcdFx0cGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjQ6IC8qICdCcnRGUlRFbmQnICovXG5cdFx0XHRcdHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAyNTogLyogJ0JydEFDQmVnaW4nICovIGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjY6IC8qICdCcnRBQ0VuZCcgKi8gYnJlYWs7XG5cblxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0aWYoUi5UKXsvKiBlbXB0eSAqL31cblx0XHRcdFx0ZWxzZSBpZighcGFzcyB8fCBvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCByZWNvcmQgMHhcIiArIFJULnRvU3RyaW5nKDE2KSk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gd3JpdGVfY29tbWVudHNfYmluKGRhdGEvKjo6LCBvcHRzKi8pIHtcblx0dmFyIGJhID0gYnVmX2FycmF5KCk7XG5cdHZhciBpYXV0aG9yLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjc0IC8qIEJydEJlZ2luQ29tbWVudHMgKi8pO1xuXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjc2IC8qIEJydEJlZ2luQ29tbWVudEF1dGhvcnMgKi8pO1xuXHRkYXRhLmZvckVhY2goZnVuY3Rpb24oY29tbWVudCkge1xuXHRcdGNvbW1lbnRbMV0uZm9yRWFjaChmdW5jdGlvbihjKSB7XG5cdFx0XHRpZihpYXV0aG9yLmluZGV4T2YoYy5hKSA+IC0xKSByZXR1cm47XG5cdFx0XHRpYXV0aG9yLnB1c2goYy5hLnNsaWNlKDAsNTQpKTtcblx0XHRcdHdyaXRlX3JlY29yZChiYSwgMHgwMjc4IC8qIEJydENvbW1lbnRBdXRob3IgKi8sIHdyaXRlX0JydENvbW1lbnRBdXRob3IoYy5hKSk7XG5cdFx0fSk7XG5cdH0pO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI3NyAvKiBCcnRFbmRDb21tZW50QXV0aG9ycyAqLyk7XG5cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyNzkgLyogQnJ0QmVnaW5Db21tZW50TGlzdCAqLyk7XG5cdGRhdGEuZm9yRWFjaChmdW5jdGlvbihjb21tZW50KSB7XG5cdFx0Y29tbWVudFsxXS5mb3JFYWNoKGZ1bmN0aW9uKGMpIHtcblx0XHRcdGMuaWF1dGhvciA9IGlhdXRob3IuaW5kZXhPZihjLmEpO1xuXHRcdFx0dmFyIHJhbmdlID0ge3M6ZGVjb2RlX2NlbGwoY29tbWVudFswXSksZTpkZWNvZGVfY2VsbChjb21tZW50WzBdKX07XG5cdFx0XHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI3QiAvKiBCcnRCZWdpbkNvbW1lbnQgKi8sIHdyaXRlX0JydEJlZ2luQ29tbWVudChbcmFuZ2UsIGNdKSk7XG5cdFx0XHRpZihjLnQgJiYgYy50Lmxlbmd0aCA+IDApIHdyaXRlX3JlY29yZChiYSwgMHgwMjdEIC8qIEJydENvbW1lbnRUZXh0ICovLCB3cml0ZV9CcnRDb21tZW50VGV4dChjKSk7XG5cdFx0XHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI3QyAvKiBCcnRFbmRDb21tZW50ICovKTtcblx0XHRcdGRlbGV0ZSBjLmlhdXRob3I7XG5cdFx0fSk7XG5cdH0pO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI3QSAvKiBCcnRFbmRDb21tZW50TGlzdCAqLyk7XG5cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyNzUgLyogQnJ0RW5kQ29tbWVudHMgKi8pO1xuXHRyZXR1cm4gYmEuZW5kKCk7XG59XG52YXIgQ1RfVkJBID0gXCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLnZiYVByb2plY3RcIjtcbmZ1bmN0aW9uIG1ha2VfdmJhX3hscyhjZmIpIHtcbiAgdmFyIG5ld2NmYiA9IENGQi51dGlscy5jZmJfbmV3KHsgcm9vdDogXCJSXCIgfSk7XG4gIGNmYi5GdWxsUGF0aHMuZm9yRWFjaChmdW5jdGlvbihwLCBpKSB7XG4gICAgaWYgKHAuc2xpY2UoLTEpID09PSBcIi9cIiB8fCAhcC5tYXRjaCgvX1ZCQV9QUk9KRUNUX0NVUi8pKVxuICAgICAgcmV0dXJuO1xuICAgIHZhciBuZXdwYXRoID0gcC5yZXBsYWNlKC9eW15cXC9dKi8sIFwiUlwiKS5yZXBsYWNlKC9cXC9fVkJBX1BST0pFQ1RfQ1VSXFx1MDAwMCovLCBcIlwiKTtcbiAgICBDRkIudXRpbHMuY2ZiX2FkZChuZXdjZmIsIG5ld3BhdGgsIGNmYi5GaWxlSW5kZXhbaV0uY29udGVudCk7XG4gIH0pO1xuICByZXR1cm4gQ0ZCLndyaXRlKG5ld2NmYik7XG59XG5mdW5jdGlvbiBmaWxsX3ZiYV94bHMoY2ZiLCB2YmEpIHtcbiAgdmJhLkZ1bGxQYXRocy5mb3JFYWNoKGZ1bmN0aW9uKHAsIGkpIHtcbiAgICBpZiAoaSA9PSAwKVxuICAgICAgcmV0dXJuO1xuICAgIHZhciBuZXdwYXRoID0gcC5yZXBsYWNlKC9bXlxcL10qW1xcL10vLCBcIi9fVkJBX1BST0pFQ1RfQ1VSL1wiKTtcbiAgICBpZiAobmV3cGF0aC5zbGljZSgtMSkgIT09IFwiL1wiKVxuICAgICAgQ0ZCLnV0aWxzLmNmYl9hZGQoY2ZiLCBuZXdwYXRoLCB2YmEuRmlsZUluZGV4W2ldLmNvbnRlbnQpO1xuICB9KTtcbn1cbnZhciBWQkFGTVRTID0gW1wieGxzYlwiLCBcInhsc21cIiwgXCJ4bGFtXCIsIFwiYmlmZjhcIiwgXCJ4bGFcIl07XG4vKiBtYWNybyBhbmQgZGlhbG9nIHNoZWV0IHN0dWJzICovXG5mdW5jdGlvbiBwYXJzZV9kc19iaW4oLyo6OmRhdGE6YW55LCBvcHRzLCBpZHg6bnVtYmVyLCByZWxzLCB3YiwgdGhlbWVzLCBzdHlsZXMqLykvKjpXb3Jrc2hlZXQqLyB7IHJldHVybiB7JyF0eXBlJzonZGlhbG9nJ307IH1cbmZ1bmN0aW9uIHBhcnNlX2RzX3htbCgvKjo6ZGF0YTphbnksIG9wdHMsIGlkeDpudW1iZXIsIHJlbHMsIHdiLCB0aGVtZXMsIHN0eWxlcyovKS8qOldvcmtzaGVldCovIHsgcmV0dXJuIHsnIXR5cGUnOidkaWFsb2cnfTsgfVxuZnVuY3Rpb24gcGFyc2VfbXNfYmluKC8qOjpkYXRhOmFueSwgb3B0cywgaWR4Om51bWJlciwgcmVscywgd2IsIHRoZW1lcywgc3R5bGVzKi8pLyo6V29ya3NoZWV0Ki8geyByZXR1cm4geychdHlwZSc6J21hY3JvJ307IH1cbmZ1bmN0aW9uIHBhcnNlX21zX3htbCgvKjo6ZGF0YTphbnksIG9wdHMsIGlkeDpudW1iZXIsIHJlbHMsIHdiLCB0aGVtZXMsIHN0eWxlcyovKS8qOldvcmtzaGVldCovIHsgcmV0dXJuIHsnIXR5cGUnOidtYWNybyd9OyB9XG4vKiBUT0RPOiBpdCB3aWxsIGJlIHVzZWZ1bCB0byBwYXJzZSB0aGUgZnVuY3Rpb24gc3RyICovXG52YXIgcmNfdG9fYTEgPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCl7XG5cdHZhciByY3JlZ2V4ID0gLyhefFteQS1aYS16X10pUihcXFs/LT9cXGQrXFxdfFsxLTldXFxkKnwpQyhcXFs/LT9cXGQrXFxdfFsxLTldXFxkKnwpKD8hW0EtWmEtejAtOV9dKS9nO1xuXHR2YXIgcmNiYXNlLyo6Q2VsbCovID0gKHtyOjAsYzowfS8qOmFueSovKTtcblx0ZnVuY3Rpb24gcmNmdW5jKCQkLCQxLCQyLCQzKSB7XG5cdFx0dmFyIGNSZWwgPSBmYWxzZSwgclJlbCA9IGZhbHNlO1xuXG5cdFx0aWYoJDIubGVuZ3RoID09IDApIHJSZWwgPSB0cnVlO1xuXHRcdGVsc2UgaWYoJDIuY2hhckF0KDApID09IFwiW1wiKSB7IHJSZWwgPSB0cnVlOyAkMiA9ICQyLnNsaWNlKDEsIC0xKTsgfVxuXG5cdFx0aWYoJDMubGVuZ3RoID09IDApIGNSZWwgPSB0cnVlO1xuXHRcdGVsc2UgaWYoJDMuY2hhckF0KDApID09IFwiW1wiKSB7IGNSZWwgPSB0cnVlOyAkMyA9ICQzLnNsaWNlKDEsIC0xKTsgfVxuXG5cdFx0dmFyIFIgPSAkMi5sZW5ndGg+MD9wYXJzZUludCgkMiwxMCl8MDowLCBDID0gJDMubGVuZ3RoPjA/cGFyc2VJbnQoJDMsMTApfDA6MDtcblxuXHRcdGlmKGNSZWwpIEMgKz0gcmNiYXNlLmM7IGVsc2UgLS1DO1xuXHRcdGlmKHJSZWwpIFIgKz0gcmNiYXNlLnI7IGVsc2UgLS1SO1xuXHRcdHJldHVybiAkMSArIChjUmVsID8gXCJcIiA6IFwiJFwiKSArIGVuY29kZV9jb2woQykgKyAoclJlbCA/IFwiXCIgOiBcIiRcIikgKyBlbmNvZGVfcm93KFIpO1xuXHR9XG5cdHJldHVybiBmdW5jdGlvbiByY190b19hMShmc3RyLyo6c3RyaW5nKi8sIGJhc2UvKjpDZWxsKi8pLyo6c3RyaW5nKi8ge1xuXHRcdHJjYmFzZSA9IGJhc2U7XG5cdFx0cmV0dXJuIGZzdHIucmVwbGFjZShyY3JlZ2V4LCByY2Z1bmMpO1xuXHR9O1xufSkoKTtcblxudmFyIGNyZWZyZWdleCA9IC8oXnxbXi5fQS1aMC05XSkoWyRdPykoW0EtWl17MSwyfXxbQS1XXVtBLVpdezJ9fFhbQS1FXVtBLVpdfFhGW0EtRF0pKFskXT8pKDEwWzAtM11cXGR7NH18MTA0WzAtN11cXGR7M318MTA0OFswLTRdXFxkezJ9fDEwNDg1WzAtNl1cXGR8MTA0ODU3WzAtNl18WzEtOV1cXGR7MCw1fSkoPyFbXy5cXChBLVphLXowLTldKS9nO1xudmFyIGExX3RvX3JjID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpe1xuXHRyZXR1cm4gZnVuY3Rpb24gYTFfdG9fcmMoZnN0ci8qOnN0cmluZyovLCBiYXNlLyo6Q2VsbEFkZHJlc3MqLykge1xuXHRcdHJldHVybiBmc3RyLnJlcGxhY2UoY3JlZnJlZ2V4LCBmdW5jdGlvbigkMCwgJDEsICQyLCAkMywgJDQsICQ1KSB7XG5cdFx0XHR2YXIgYyA9IGRlY29kZV9jb2woJDMpIC0gKCQyID8gMCA6IGJhc2UuYyk7XG5cdFx0XHR2YXIgciA9IGRlY29kZV9yb3coJDUpIC0gKCQ0ID8gMCA6IGJhc2Uucik7XG5cdFx0XHR2YXIgUiA9IChyID09IDAgPyBcIlwiIDogISQ0ID8gXCJbXCIgKyByICsgXCJdXCIgOiAocisxKSk7XG5cdFx0XHR2YXIgQyA9IChjID09IDAgPyBcIlwiIDogISQyID8gXCJbXCIgKyBjICsgXCJdXCIgOiAoYysxKSk7XG5cdFx0XHRyZXR1cm4gJDEgKyBcIlJcIiArIFIgKyBcIkNcIiArIEM7XG5cdFx0fSk7XG5cdH07XG59KSgpO1xuXG4vKiBubyBkZWZpbmVkIG5hbWUgY2FuIGNvbGxpZGUgd2l0aCBhIHZhbGlkIGNlbGwgYWRkcmVzcyBBMTpYRkQxMDQ4NTc2IC4uLiBleGNlcHQgTE9HMTAhICovXG5mdW5jdGlvbiBzaGlmdF9mb3JtdWxhX3N0cihmLyo6c3RyaW5nKi8sIGRlbHRhLyo6Q2VsbCovKS8qOnN0cmluZyovIHtcblx0cmV0dXJuIGYucmVwbGFjZShjcmVmcmVnZXgsIGZ1bmN0aW9uKCQwLCAkMSwgJDIsICQzLCAkNCwgJDUpIHtcblx0XHRyZXR1cm4gJDErKCQyPT1cIiRcIiA/ICQyKyQzIDogZW5jb2RlX2NvbChkZWNvZGVfY29sKCQzKStkZWx0YS5jKSkrKCQ0PT1cIiRcIiA/ICQ0KyQ1IDogZW5jb2RlX3JvdyhkZWNvZGVfcm93KCQ1KSArIGRlbHRhLnIpKTtcblx0fSk7XG59XG5cbmZ1bmN0aW9uIHNoaWZ0X2Zvcm11bGFfeGxzeChmLyo6c3RyaW5nKi8sIHJhbmdlLyo6c3RyaW5nKi8sIGNlbGwvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdHZhciByID0gZGVjb2RlX3JhbmdlKHJhbmdlKSwgcyA9IHIucywgYyA9IGRlY29kZV9jZWxsKGNlbGwpO1xuXHR2YXIgZGVsdGEgPSB7cjpjLnIgLSBzLnIsIGM6Yy5jIC0gcy5jfTtcblx0cmV0dXJuIHNoaWZ0X2Zvcm11bGFfc3RyKGYsIGRlbHRhKTtcbn1cblxuLyogVE9ETzogcGFyc2UgZm9ybXVsYSAqL1xuZnVuY3Rpb24gZnV6enlmbWxhKGYvKjpzdHJpbmcqLykvKjpib29sZWFuKi8ge1xuXHRpZihmLmxlbmd0aCA9PSAxKSByZXR1cm4gZmFsc2U7XG5cdHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBfeGxmbihmLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHRyZXR1cm4gZi5yZXBsYWNlKC9feGxmblxcLi9nLFwiXCIpO1xufVxuZnVuY3Rpb24gcGFyc2VyZWFkMShibG9iKSB7IGJsb2IubCs9MTsgcmV0dXJuOyB9XG5cbi8qIFtNUy1YTFNdIDIuNS41MSAqL1xuZnVuY3Rpb24gcGFyc2VfQ29sUmVsVShibG9iLCBsZW5ndGgpIHtcblx0dmFyIGMgPSBibG9iLnJlYWRfc2hpZnQobGVuZ3RoID09IDEgPyAxIDogMik7XG5cdHJldHVybiBbYyAmIDB4M0ZGRiwgKGMgPj4gMTQpICYgMSwgKGMgPj4gMTUpICYgMV07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMTA1IDsgW01TLVhMU0JdIDIuNS45Ny44OSAqL1xuZnVuY3Rpb24gcGFyc2VfUmdjZUFyZWEoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciB3ID0gMjtcblx0aWYob3B0cykge1xuXHRcdGlmKG9wdHMuYmlmZiA+PSAyICYmIG9wdHMuYmlmZiA8PSA1KSByZXR1cm4gcGFyc2VfUmdjZUFyZWFfQklGRjIoYmxvYiwgbGVuZ3RoLCBvcHRzKTtcblx0XHRlbHNlIGlmKG9wdHMuYmlmZiA9PSAxMikgdyA9IDQ7XG5cdH1cblx0dmFyIHI9YmxvYi5yZWFkX3NoaWZ0KHcpLCBSPWJsb2IucmVhZF9zaGlmdCh3KTtcblx0dmFyIGM9cGFyc2VfQ29sUmVsVShibG9iLCAyKTtcblx0dmFyIEM9cGFyc2VfQ29sUmVsVShibG9iLCAyKTtcblx0cmV0dXJuIHsgczp7cjpyLCBjOmNbMF0sIGNSZWw6Y1sxXSwgclJlbDpjWzJdfSwgZTp7cjpSLCBjOkNbMF0sIGNSZWw6Q1sxXSwgclJlbDpDWzJdfSB9O1xufVxuLyogQklGRiAyLTUgZW5jb2RlcyBmbGFncyBpbiB0aGUgcm93IGZpZWxkICovXG5mdW5jdGlvbiBwYXJzZV9SZ2NlQXJlYV9CSUZGMihibG9iLyo6OiwgbGVuZ3RoLCBvcHRzKi8pIHtcblx0dmFyIHI9cGFyc2VfQ29sUmVsVShibG9iLCAyKSwgUj1wYXJzZV9Db2xSZWxVKGJsb2IsIDIpO1xuXHR2YXIgYz1ibG9iLnJlYWRfc2hpZnQoMSk7XG5cdHZhciBDPWJsb2IucmVhZF9zaGlmdCgxKTtcblx0cmV0dXJuIHsgczp7cjpyWzBdLCBjOmMsIGNSZWw6clsxXSwgclJlbDpyWzJdfSwgZTp7cjpSWzBdLCBjOkMsIGNSZWw6UlsxXSwgclJlbDpSWzJdfSB9O1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjEwNSA7IFtNUy1YTFNCXSAyLjUuOTcuOTAgKi9cbmZ1bmN0aW9uIHBhcnNlX1JnY2VBcmVhUmVsKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRpZihvcHRzLmJpZmYgPCA4KSByZXR1cm4gcGFyc2VfUmdjZUFyZWFfQklGRjIoYmxvYiwgbGVuZ3RoLCBvcHRzKTtcblx0dmFyIHI9YmxvYi5yZWFkX3NoaWZ0KG9wdHMuYmlmZiA9PSAxMiA/IDQgOiAyKSwgUj1ibG9iLnJlYWRfc2hpZnQob3B0cy5iaWZmID09IDEyID8gNCA6IDIpO1xuXHR2YXIgYz1wYXJzZV9Db2xSZWxVKGJsb2IsIDIpO1xuXHR2YXIgQz1wYXJzZV9Db2xSZWxVKGJsb2IsIDIpO1xuXHRyZXR1cm4geyBzOntyOnIsIGM6Y1swXSwgY1JlbDpjWzFdLCByUmVsOmNbMl19LCBlOntyOlIsIGM6Q1swXSwgY1JlbDpDWzFdLCByUmVsOkNbMl19IH07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMTA5IDsgW01TLVhMU0JdIDIuNS45Ny45MSAqL1xuZnVuY3Rpb24gcGFyc2VfUmdjZUxvYyhibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0aWYob3B0cyAmJiBvcHRzLmJpZmYgPj0gMiAmJiBvcHRzLmJpZmYgPD0gNSkgcmV0dXJuIHBhcnNlX1JnY2VMb2NfQklGRjIoYmxvYiwgbGVuZ3RoLCBvcHRzKTtcblx0dmFyIHIgPSBibG9iLnJlYWRfc2hpZnQob3B0cyAmJiBvcHRzLmJpZmYgPT0gMTIgPyA0IDogMik7XG5cdHZhciBjID0gcGFyc2VfQ29sUmVsVShibG9iLCAyKTtcblx0cmV0dXJuIHtyOnIsIGM6Y1swXSwgY1JlbDpjWzFdLCByUmVsOmNbMl19O1xufVxuZnVuY3Rpb24gcGFyc2VfUmdjZUxvY19CSUZGMihibG9iLyo6OiwgbGVuZ3RoLCBvcHRzKi8pIHtcblx0dmFyIHIgPSBwYXJzZV9Db2xSZWxVKGJsb2IsIDIpO1xuXHR2YXIgYyA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0cmV0dXJuIHtyOnJbMF0sIGM6YywgY1JlbDpyWzFdLCByUmVsOnJbMl19O1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjEwNywgMi41LjQ3ICovXG5mdW5jdGlvbiBwYXJzZV9SZ2NlRWxmTG9jKGJsb2IvKjo6LCBsZW5ndGgsIG9wdHMqLykge1xuXHR2YXIgciA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGMgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHJldHVybiB7cjpyLCBjOmMgJiAweEZGLCBmUXVvdGVkOiEhKGMgJiAweDQwMDApLCBjUmVsOmM+PjE1LCByUmVsOmM+PjE1IH07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMTExIDsgW01TLVhMU0JdIDIuNS45Ny45MiBUT0RPICovXG5mdW5jdGlvbiBwYXJzZV9SZ2NlTG9jUmVsKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgYmlmZiA9IG9wdHMgJiYgb3B0cy5iaWZmID8gb3B0cy5iaWZmIDogODtcblx0aWYoYmlmZiA+PSAyICYmIGJpZmYgPD0gNSkgcmV0dXJuIHBhcnNlX1JnY2VMb2NSZWxfQklGRjIoYmxvYiwgbGVuZ3RoLCBvcHRzKTtcblx0dmFyIHIgPSBibG9iLnJlYWRfc2hpZnQoYmlmZiA+PSAxMiA/IDQgOiAyKTtcblx0dmFyIGNsID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgY1JlbCA9IChjbCAmIDB4NDAwMCkgPj4gMTQsIHJSZWwgPSAoY2wgJiAweDgwMDApID4+IDE1O1xuXHRjbCAmPSAweDNGRkY7XG5cdGlmKHJSZWwgPT0gMSkgd2hpbGUociA+IDB4N0ZGRkYpIHIgLT0gMHgxMDAwMDA7XG5cdGlmKGNSZWwgPT0gMSkgd2hpbGUoY2wgPiAweDFGRkYpIGNsID0gY2wgLSAweDQwMDA7XG5cdHJldHVybiB7cjpyLGM6Y2wsY1JlbDpjUmVsLHJSZWw6clJlbH07XG59XG5mdW5jdGlvbiBwYXJzZV9SZ2NlTG9jUmVsX0JJRkYyKGJsb2IvKjo6LCBsZW5ndGg6bnVtYmVyLCBvcHRzKi8pIHtcblx0dmFyIHJsID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgYyA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0dmFyIHJSZWwgPSAocmwgJiAweDgwMDApID4+IDE1LCBjUmVsID0gKHJsICYgMHg0MDAwKSA+PiAxNDtcblx0cmwgJj0gMHgzRkZGO1xuXHRpZihyUmVsID09IDEgJiYgcmwgPj0gMHgyMDAwKSBybCA9IHJsIC0gMHg0MDAwO1xuXHRpZihjUmVsID09IDEgJiYgYyA+PSAweDgwKSBjID0gYyAtIDB4MTAwO1xuXHRyZXR1cm4ge3I6cmwsYzpjLGNSZWw6Y1JlbCxyUmVsOnJSZWx9O1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjI3IDsgW01TLVhMU0JdIDIuNS45Ny4xOCAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnQXJlYShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHR5cGUgPSAoYmxvYltibG9iLmwrK10gJiAweDYwKSA+PiA1O1xuXHR2YXIgYXJlYSA9IHBhcnNlX1JnY2VBcmVhKGJsb2IsIG9wdHMuYmlmZiA+PSAyICYmIG9wdHMuYmlmZiA8PSA1ID8gNiA6IDgsIG9wdHMpO1xuXHRyZXR1cm4gW3R5cGUsIGFyZWFdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjI4IDsgW01TLVhMU0JdIDIuNS45Ny4xOSAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnQXJlYTNkKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgdHlwZSA9IChibG9iW2Jsb2IubCsrXSAmIDB4NjApID4+IDU7XG5cdHZhciBpeHRpID0gYmxvYi5yZWFkX3NoaWZ0KDIsICdpJyk7XG5cdHZhciB3ID0gODtcblx0aWYob3B0cykgc3dpdGNoKG9wdHMuYmlmZikge1xuXHRcdGNhc2UgNTogYmxvYi5sICs9IDEyOyB3ID0gNjsgYnJlYWs7XG5cdFx0Y2FzZSAxMjogdyA9IDEyOyBicmVhaztcblx0fVxuXHR2YXIgYXJlYSA9IHBhcnNlX1JnY2VBcmVhKGJsb2IsIHcsIG9wdHMpO1xuXHRyZXR1cm4gW3R5cGUsIGl4dGksIGFyZWFdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjI5IDsgW01TLVhMU0JdIDIuNS45Ny4yMCAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnQXJlYUVycihibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHR5cGUgPSAoYmxvYltibG9iLmwrK10gJiAweDYwKSA+PiA1O1xuXHRibG9iLmwgKz0gb3B0cyAmJiAob3B0cy5iaWZmID4gOCkgPyAxMiA6IChvcHRzLmJpZmYgPCA4ID8gNiA6IDgpO1xuXHRyZXR1cm4gW3R5cGVdO1xufVxuLyogW01TLVhMU10gMi41LjE5OC4zMCA7IFtNUy1YTFNCXSAyLjUuOTcuMjEgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0FyZWFFcnIzZChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHR5cGUgPSAoYmxvYltibG9iLmwrK10gJiAweDYwKSA+PiA1O1xuXHR2YXIgaXh0aSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIHcgPSA4O1xuXHRpZihvcHRzKSBzd2l0Y2gob3B0cy5iaWZmKSB7XG5cdFx0Y2FzZSA1OiBibG9iLmwgKz0gMTI7IHcgPSA2OyBicmVhaztcblx0XHRjYXNlIDEyOiB3ID0gMTI7IGJyZWFrO1xuXHR9XG5cdGJsb2IubCArPSB3O1xuXHRyZXR1cm4gW3R5cGUsIGl4dGldO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjMxIDsgW01TLVhMU0JdIDIuNS45Ny4yMiAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnQXJlYU4oYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciB0eXBlID0gKGJsb2JbYmxvYi5sKytdICYgMHg2MCkgPj4gNTtcblx0dmFyIGFyZWEgPSBwYXJzZV9SZ2NlQXJlYVJlbChibG9iLCBsZW5ndGggLSAxLCBvcHRzKTtcblx0cmV0dXJuIFt0eXBlLCBhcmVhXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4zMiA7IFtNUy1YTFNCXSAyLjUuOTcuMjMgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0FycmF5KGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgdHlwZSA9IChibG9iW2Jsb2IubCsrXSAmIDB4NjApID4+IDU7XG5cdGJsb2IubCArPSBvcHRzLmJpZmYgPT0gMiA/IDYgOiBvcHRzLmJpZmYgPT0gMTIgPyAxNCA6IDc7XG5cdHJldHVybiBbdHlwZV07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMzMgOyBbTVMtWExTQl0gMi41Ljk3LjI0ICovXG5mdW5jdGlvbiBwYXJzZV9QdGdBdHRyQmF4Y2VsKGJsb2IpIHtcblx0dmFyIGJpdFNlbWkgPSBibG9iW2Jsb2IubCsxXSAmIDB4MDE7IC8qIDEgPSB2b2xhdGlsZSAqL1xuXHR2YXIgYml0QmF4Y2VsID0gMTtcblx0YmxvYi5sICs9IDQ7XG5cdHJldHVybiBbYml0U2VtaSwgYml0QmF4Y2VsXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4zNCA7IFtNUy1YTFNCXSAyLjUuOTcuMjUgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0F0dHJDaG9vc2UoYmxvYiwgbGVuZ3RoLCBvcHRzKS8qOkFycmF5PG51bWJlcj4qLyB7XG5cdGJsb2IubCArPTI7XG5cdHZhciBvZmZzZXQgPSBibG9iLnJlYWRfc2hpZnQob3B0cyAmJiBvcHRzLmJpZmYgPT0gMiA/IDEgOiAyKTtcblx0dmFyIG8vKjpBcnJheTxudW1iZXI+Ki8gPSBbXTtcblx0Lyogb2Zmc2V0IGlzIDEgbGVzcyB0aGFuIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgKi9cblx0Zm9yKHZhciBpID0gMDsgaSA8PSBvZmZzZXQ7ICsraSkgby5wdXNoKGJsb2IucmVhZF9zaGlmdChvcHRzICYmIG9wdHMuYmlmZiA9PSAyID8gMSA6IDIpKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMzUgOyBbTVMtWExTQl0gMi41Ljk3LjI2ICovXG5mdW5jdGlvbiBwYXJzZV9QdGdBdHRyR290byhibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGJpdEdvdG8gPSAoYmxvYltibG9iLmwrMV0gJiAweEZGKSA/IDEgOiAwO1xuXHRibG9iLmwgKz0gMjtcblx0cmV0dXJuIFtiaXRHb3RvLCBibG9iLnJlYWRfc2hpZnQob3B0cyAmJiBvcHRzLmJpZmYgPT0gMiA/IDEgOiAyKV07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMzYgOyBbTVMtWExTQl0gMi41Ljk3LjI3ICovXG5mdW5jdGlvbiBwYXJzZV9QdGdBdHRySWYoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBiaXRJZiA9IChibG9iW2Jsb2IubCsxXSAmIDB4RkYpID8gMSA6IDA7XG5cdGJsb2IubCArPSAyO1xuXHRyZXR1cm4gW2JpdElmLCBibG9iLnJlYWRfc2hpZnQob3B0cyAmJiBvcHRzLmJpZmYgPT0gMiA/IDEgOiAyKV07XG59XG5cbi8qIFtNUy1YTFNCXSAyLjUuOTcuMjggKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0F0dHJJZkVycm9yKGJsb2IpIHtcblx0dmFyIGJpdElmID0gKGJsb2JbYmxvYi5sKzFdICYgMHhGRikgPyAxIDogMDtcblx0YmxvYi5sICs9IDI7XG5cdHJldHVybiBbYml0SWYsIGJsb2IucmVhZF9zaGlmdCgyKV07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMzcgOyBbTVMtWExTQl0gMi41Ljk3LjI5ICovXG5mdW5jdGlvbiBwYXJzZV9QdGdBdHRyU2VtaShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGJpdFNlbWkgPSAoYmxvYltibG9iLmwrMV0gJiAweEZGKSA/IDEgOiAwO1xuXHRibG9iLmwgKz0gb3B0cyAmJiBvcHRzLmJpZmYgPT0gMiA/IDMgOiA0O1xuXHRyZXR1cm4gW2JpdFNlbWldO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjQwIDsgW01TLVhMU0JdIDIuNS45Ny4zMiAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnQXR0clNwYWNlVHlwZShibG9iLyo6OiwgbGVuZ3RoKi8pIHtcblx0dmFyIHR5cGUgPSBibG9iLnJlYWRfc2hpZnQoMSksIGNjaCA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0cmV0dXJuIFt0eXBlLCBjY2hdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjM4IDsgW01TLVhMU0JdIDIuNS45Ny4zMCAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnQXR0clNwYWNlKGJsb2IpIHtcblx0YmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRyZXR1cm4gcGFyc2VfUHRnQXR0clNwYWNlVHlwZShibG9iLCAyKTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4zOSA7IFtNUy1YTFNCXSAyLjUuOTcuMzEgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0F0dHJTcGFjZVNlbWkoYmxvYikge1xuXHRibG9iLnJlYWRfc2hpZnQoMik7XG5cdHJldHVybiBwYXJzZV9QdGdBdHRyU3BhY2VUeXBlKGJsb2IsIDIpO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4Ljg0IDsgW01TLVhMU0JdIDIuNS45Ny42OCBUT0RPICovXG5mdW5jdGlvbiBwYXJzZV9QdGdSZWYoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdC8vdmFyIHB0ZyA9IGJsb2JbYmxvYi5sXSAmIDB4MUY7XG5cdHZhciB0eXBlID0gKGJsb2JbYmxvYi5sXSAmIDB4NjApPj41O1xuXHRibG9iLmwgKz0gMTtcblx0dmFyIGxvYyA9IHBhcnNlX1JnY2VMb2MoYmxvYiwgMCwgb3B0cyk7XG5cdHJldHVybiBbdHlwZSwgbG9jXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC44OCA7IFtNUy1YTFNCXSAyLjUuOTcuNzIgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnUmVmTihibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHR5cGUgPSAoYmxvYltibG9iLmxdICYgMHg2MCk+PjU7XG5cdGJsb2IubCArPSAxO1xuXHR2YXIgbG9jID0gcGFyc2VfUmdjZUxvY1JlbChibG9iLCAwLCBvcHRzKTtcblx0cmV0dXJuIFt0eXBlLCBsb2NdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4Ljg1IDsgW01TLVhMU0JdIDIuNS45Ny42OSBUT0RPICovXG5mdW5jdGlvbiBwYXJzZV9QdGdSZWYzZChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHR5cGUgPSAoYmxvYltibG9iLmxdICYgMHg2MCk+PjU7XG5cdGJsb2IubCArPSAxO1xuXHR2YXIgaXh0aSA9IGJsb2IucmVhZF9zaGlmdCgyKTsgLy8gWHRpSW5kZXhcblx0aWYob3B0cyAmJiBvcHRzLmJpZmYgPT0gNSkgYmxvYi5sICs9IDEyO1xuXHR2YXIgbG9jID0gcGFyc2VfUmdjZUxvYyhibG9iLCAwLCBvcHRzKTsgLy8gVE9ETzogb3IgUmdjZUxvY1JlbFxuXHRyZXR1cm4gW3R5cGUsIGl4dGksIGxvY107XG59XG5cblxuLyogW01TLVhMU10gMi41LjE5OC42MiA7IFtNUy1YTFNCXSAyLjUuOTcuNDUgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnRnVuYyhibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0Ly92YXIgcHRnID0gYmxvYltibG9iLmxdICYgMHgxRjtcblx0dmFyIHR5cGUgPSAoYmxvYltibG9iLmxdICYgMHg2MCk+PjU7XG5cdGJsb2IubCArPSAxO1xuXHR2YXIgaWZ0YWIgPSBibG9iLnJlYWRfc2hpZnQob3B0cyAmJiBvcHRzLmJpZmYgPD0gMyA/IDEgOiAyKTtcblx0cmV0dXJuIFtGdGFiQXJnY1tpZnRhYl0sIEZ0YWJbaWZ0YWJdLCB0eXBlXTtcbn1cbi8qIFtNUy1YTFNdIDIuNS4xOTguNjMgOyBbTVMtWExTQl0gMi41Ljk3LjQ2IFRPRE8gKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0Z1bmNWYXIoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciB0eXBlID0gYmxvYltibG9iLmwrK107XG5cdHZhciBjcGFyYW1zID0gYmxvYi5yZWFkX3NoaWZ0KDEpLCB0YWIgPSBvcHRzICYmIG9wdHMuYmlmZiA8PSAzID8gWyh0eXBlID09IDB4NTggPyAtMSA6IDApLCBibG9iLnJlYWRfc2hpZnQoMSldOiBwYXJzZXRhYihibG9iKTtcblx0cmV0dXJuIFtjcGFyYW1zLCAodGFiWzBdID09PSAwID8gRnRhYiA6IENldGFiKVt0YWJbMV1dXTtcbn1cblxuZnVuY3Rpb24gcGFyc2V0YWIoYmxvYikge1xuXHRyZXR1cm4gW2Jsb2JbYmxvYi5sKzFdPj43LCBibG9iLnJlYWRfc2hpZnQoMikgJiAweDdGRkZdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjQxIDsgW01TLVhMU0JdIDIuNS45Ny4zMyAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnQXR0clN1bShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0YmxvYi5sICs9IG9wdHMgJiYgb3B0cy5iaWZmID09IDIgPyAzIDogNDsgcmV0dXJuO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjU4IDsgW01TLVhMU0JdIDIuNS45Ny40MCAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnRXhwKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRibG9iLmwrKztcblx0aWYob3B0cyAmJiBvcHRzLmJpZmYgPT0gMTIpIHJldHVybiBbYmxvYi5yZWFkX3NoaWZ0KDQsICdpJyksIDBdO1xuXHR2YXIgcm93ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgY29sID0gYmxvYi5yZWFkX3NoaWZ0KG9wdHMgJiYgb3B0cy5iaWZmID09IDIgPyAxIDogMik7XG5cdHJldHVybiBbcm93LCBjb2xdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjU3IDsgW01TLVhMU0JdIDIuNS45Ny4zOSAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnRXJyKGJsb2IpIHsgYmxvYi5sKys7IHJldHVybiBCRXJyW2Jsb2IucmVhZF9zaGlmdCgxKV07IH1cblxuLyogW01TLVhMU10gMi41LjE5OC42NiA7IFtNUy1YTFNCXSAyLjUuOTcuNDkgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0ludChibG9iKSB7IGJsb2IubCsrOyByZXR1cm4gYmxvYi5yZWFkX3NoaWZ0KDIpOyB9XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguNDIgOyBbTVMtWExTQl0gMi41Ljk3LjM0ICovXG5mdW5jdGlvbiBwYXJzZV9QdGdCb29sKGJsb2IpIHsgYmxvYi5sKys7IHJldHVybiBibG9iLnJlYWRfc2hpZnQoMSkhPT0wO31cblxuLyogW01TLVhMU10gMi41LjE5OC43OSA7IFtNUy1YTFNCXSAyLjUuOTcuNjMgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z051bShibG9iKSB7IGJsb2IubCsrOyByZXR1cm4gcGFyc2VfWG51bShibG9iLCA4KTsgfVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4Ljg5IDsgW01TLVhMU0JdIDIuNS45Ny43NCAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnU3RyKGJsb2IsIGxlbmd0aCwgb3B0cykgeyBibG9iLmwrKzsgcmV0dXJuIHBhcnNlX1Nob3J0WExVbmljb2RlU3RyaW5nKGJsb2IsIGxlbmd0aC0xLCBvcHRzKTsgfVxuXG4vKiBbTVMtWExTXSAyLjUuMTkyLjExMiArIDIuNS4xOTIuMTF7Myw0LDUsNiw3fSAqL1xuLyogW01TLVhMU0JdIDIuNS45Ny45MyArIDIuNS45Ny45ezQsNSw2LDd9ICovXG5mdW5jdGlvbiBwYXJzZV9TZXJBcihibG9iLCBiaWZmLyo6bnVtYmVyKi8pIHtcblx0dmFyIHZhbCA9IFtibG9iLnJlYWRfc2hpZnQoMSldO1xuXHRpZihiaWZmID09IDEyKSBzd2l0Y2godmFsWzBdKSB7XG5cdFx0Y2FzZSAweDAyOiB2YWxbMF0gPSAweDA0OyBicmVhazsgLyogU2VyQm9vbCAqL1xuXHRcdGNhc2UgMHgwNDogdmFsWzBdID0gMHgxMDsgYnJlYWs7IC8qIFNlckVyciAqL1xuXHRcdGNhc2UgMHgwMDogdmFsWzBdID0gMHgwMTsgYnJlYWs7IC8qIFNlck51bSAqL1xuXHRcdGNhc2UgMHgwMTogdmFsWzBdID0gMHgwMjsgYnJlYWs7IC8qIFNlclN0ciAqL1xuXHR9XG5cdHN3aXRjaCh2YWxbMF0pIHtcblx0XHRjYXNlIDB4MDQ6IC8qIFNlckJvb2wgLS0gYm9vbGVhbiAqL1xuXHRcdFx0dmFsWzFdID0gcGFyc2Vib29sKGJsb2IsIDEpID8gJ1RSVUUnIDogJ0ZBTFNFJztcblx0XHRcdGlmKGJpZmYgIT0gMTIpIGJsb2IubCArPSA3OyBicmVhaztcblx0XHRjYXNlIDB4MjU6IC8qIGFwcGVhcnMgdG8gYmUgYW4gYWxpYXMgKi9cblx0XHRjYXNlIDB4MTA6IC8qIFNlckVyciAtLSBlcnJvciAqL1xuXHRcdFx0dmFsWzFdID0gQkVycltibG9iW2Jsb2IubF1dO1xuXHRcdFx0YmxvYi5sICs9ICgoYmlmZiA9PSAxMikgPyA0IDogOCk7IGJyZWFrO1xuXHRcdGNhc2UgMHgwMDogLyogU2VyTmlsIC0tIGhvbmVzdGx5LCBJJ20gbm90IHN1cmUgaG93IHRvIHJlcHJvZHVjZSB0aGlzICovXG5cdFx0XHRibG9iLmwgKz0gODsgYnJlYWs7XG5cdFx0Y2FzZSAweDAxOiAvKiBTZXJOdW0gLS0gWG51bSAqL1xuXHRcdFx0dmFsWzFdID0gcGFyc2VfWG51bShibG9iLCA4KTsgYnJlYWs7XG5cdFx0Y2FzZSAweDAyOiAvKiBTZXJTdHIgLS0gWExVbmljb2RlU3RyaW5nICg8MjU2IGNoYXJzKSAqL1xuXHRcdFx0dmFsWzFdID0gcGFyc2VfWExVbmljb2RlU3RyaW5nMihibG9iLCAwLCB7YmlmZjpiaWZmID4gMCAmJiBiaWZmIDwgOCA/IDIgOiBiaWZmfSk7IGJyZWFrO1xuXHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIkJhZCBTZXJBcjogXCIgKyB2YWxbMF0pOyAvKiBVbnJlYWNoYWJsZSAqL1xuXHR9XG5cdHJldHVybiB2YWw7XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguNjEgOyBbTVMtWExTQl0gMi41Ljk3LjQ0ICovXG5mdW5jdGlvbiBwYXJzZV9QdGdFeHRyYU1lbShibG9iLCBjY2UsIG9wdHMpIHtcblx0dmFyIGNvdW50ID0gYmxvYi5yZWFkX3NoaWZ0KChvcHRzLmJpZmYgPT0gMTIpID8gNCA6IDIpO1xuXHR2YXIgb3V0Lyo6QXJyYXk8UmFuZ2U+Ki8gPSBbXTtcblx0Zm9yKHZhciBpID0gMDsgaSAhPSBjb3VudDsgKytpKSBvdXQucHVzaCgoKG9wdHMuYmlmZiA9PSAxMikgPyBwYXJzZV9VbmNoZWNrZWRSZlggOiBwYXJzZV9SZWY4VSkoYmxvYiwgOCkpO1xuXHRyZXR1cm4gb3V0O1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjU5IDsgW01TLVhMU0JdIDIuNS45Ny40MSAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnRXh0cmFBcnJheShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHJvd3MgPSAwLCBjb2xzID0gMDtcblx0aWYob3B0cy5iaWZmID09IDEyKSB7XG5cdFx0cm93cyA9IGJsb2IucmVhZF9zaGlmdCg0KTsgLy8gRFJ3XG5cdFx0Y29scyA9IGJsb2IucmVhZF9zaGlmdCg0KTsgLy8gRENvbFxuXHR9IGVsc2Uge1xuXHRcdGNvbHMgPSAxICsgYmxvYi5yZWFkX3NoaWZ0KDEpOyAvL0RDb2xCeXRlVVxuXHRcdHJvd3MgPSAxICsgYmxvYi5yZWFkX3NoaWZ0KDIpOyAvL0RSd1xuXHR9XG5cdGlmKG9wdHMuYmlmZiA+PSAyICYmIG9wdHMuYmlmZiA8IDgpIHsgLS1yb3dzOyBpZigtLWNvbHMgPT0gMCkgY29scyA9IDB4MTAwOyB9XG5cdC8vICRGbG93SWdub3JlXG5cdGZvcih2YXIgaSA9IDAsIG8vKjpBcnJheTxBcnJheTxhbnk+PiovID0gW107IGkgIT0gcm93cyAmJiAob1tpXSA9IFtdKTsgKytpKVxuXHRcdGZvcih2YXIgaiA9IDA7IGogIT0gY29sczsgKytqKSBvW2ldW2pdID0gcGFyc2VfU2VyQXIoYmxvYiwgb3B0cy5iaWZmKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguNzYgOyBbTVMtWExTQl0gMi41Ljk3LjYwICovXG5mdW5jdGlvbiBwYXJzZV9QdGdOYW1lKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgdHlwZSA9IChibG9iLnJlYWRfc2hpZnQoMSkgPj4+IDUpICYgMHgwMztcblx0dmFyIHcgPSAoIW9wdHMgfHwgKG9wdHMuYmlmZiA+PSA4KSkgPyA0IDogMjtcblx0dmFyIG5hbWVpbmRleCA9IGJsb2IucmVhZF9zaGlmdCh3KTtcblx0c3dpdGNoKG9wdHMuYmlmZikge1xuXHRcdGNhc2UgMjogYmxvYi5sICs9IDU7IGJyZWFrO1xuXHRcdGNhc2UgMzogY2FzZSA0OiBibG9iLmwgKz0gODsgYnJlYWs7XG5cdFx0Y2FzZSA1OiBibG9iLmwgKz0gMTI7IGJyZWFrO1xuXHR9XG5cdHJldHVybiBbdHlwZSwgMCwgbmFtZWluZGV4XTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC43NyA7IFtNUy1YTFNCXSAyLjUuOTcuNjEgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z05hbWVYKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRpZihvcHRzLmJpZmYgPT0gNSkgcmV0dXJuIHBhcnNlX1B0Z05hbWVYX0JJRkY1KGJsb2IsIGxlbmd0aCwgb3B0cyk7XG5cdHZhciB0eXBlID0gKGJsb2IucmVhZF9zaGlmdCgxKSA+Pj4gNSkgJiAweDAzO1xuXHR2YXIgaXh0aSA9IGJsb2IucmVhZF9zaGlmdCgyKTsgLy8gWHRpSW5kZXhcblx0dmFyIG5hbWVpbmRleCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0cmV0dXJuIFt0eXBlLCBpeHRpLCBuYW1laW5kZXhdO1xufVxuZnVuY3Rpb24gcGFyc2VfUHRnTmFtZVhfQklGRjUoYmxvYi8qOjosIGxlbmd0aCwgb3B0cyovKSB7XG5cdHZhciB0eXBlID0gKGJsb2IucmVhZF9zaGlmdCgxKSA+Pj4gNSkgJiAweDAzO1xuXHR2YXIgaXh0aSA9IGJsb2IucmVhZF9zaGlmdCgyLCAnaScpOyAvLyBYdGlJbmRleFxuXHRibG9iLmwgKz0gODtcblx0dmFyIG5hbWVpbmRleCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDEyO1xuXHRyZXR1cm4gW3R5cGUsIGl4dGksIG5hbWVpbmRleF07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguNzAgOyBbTVMtWExTQl0gMi41Ljk3LjU0ICovXG5mdW5jdGlvbiBwYXJzZV9QdGdNZW1BcmVhKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgdHlwZSA9IChibG9iLnJlYWRfc2hpZnQoMSkgPj4+IDUpICYgMHgwMztcblx0YmxvYi5sICs9IChvcHRzICYmIG9wdHMuYmlmZiA9PSAyID8gMyA6IDQpO1xuXHR2YXIgY2NlID0gYmxvYi5yZWFkX3NoaWZ0KG9wdHMgJiYgb3B0cy5iaWZmID09IDIgPyAxIDogMik7XG5cdHJldHVybiBbdHlwZSwgY2NlXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC43MiA7IFtNUy1YTFNCXSAyLjUuOTcuNTYgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z01lbUZ1bmMoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciB0eXBlID0gKGJsb2IucmVhZF9zaGlmdCgxKSA+Pj4gNSkgJiAweDAzO1xuXHR2YXIgY2NlID0gYmxvYi5yZWFkX3NoaWZ0KG9wdHMgJiYgb3B0cy5iaWZmID09IDIgPyAxIDogMik7XG5cdHJldHVybiBbdHlwZSwgY2NlXTtcbn1cblxuXG4vKiBbTVMtWExTXSAyLjUuMTk4Ljg2IDsgW01TLVhMU0JdIDIuNS45Ny42OSAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnUmVmRXJyKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgdHlwZSA9IChibG9iLnJlYWRfc2hpZnQoMSkgPj4+IDUpICYgMHgwMztcblx0YmxvYi5sICs9IDQ7XG5cdGlmKG9wdHMuYmlmZiA8IDgpIGJsb2IubC0tO1xuXHRpZihvcHRzLmJpZmYgPT0gMTIpIGJsb2IubCArPSAyO1xuXHRyZXR1cm4gW3R5cGVdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4Ljg3IDsgW01TLVhMU0JdIDIuNS45Ny43MSAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnUmVmRXJyM2QoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciB0eXBlID0gKGJsb2JbYmxvYi5sKytdICYgMHg2MCkgPj4gNTtcblx0dmFyIGl4dGkgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciB3ID0gNDtcblx0aWYob3B0cykgc3dpdGNoKG9wdHMuYmlmZikge1xuXHRcdGNhc2UgNTogdyA9IDE1OyBicmVhaztcblx0XHRjYXNlIDEyOiB3ID0gNjsgYnJlYWs7XG5cdH1cblx0YmxvYi5sICs9IHc7XG5cdHJldHVybiBbdHlwZSwgaXh0aV07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguNzEgOyBbTVMtWExTQl0gMi41Ljk3LjU1ICovXG52YXIgcGFyc2VfUHRnTWVtRXJyID0gcGFyc2Vub29wO1xuLyogW01TLVhMU10gMi41LjE5OC43MyAgOyBbTVMtWExTQl0gMi41Ljk3LjU3ICovXG52YXIgcGFyc2VfUHRnTWVtTm9NZW0gPSBwYXJzZW5vb3A7XG4vKiBbTVMtWExTXSAyLjUuMTk4LjkyICovXG52YXIgcGFyc2VfUHRnVGJsID0gcGFyc2Vub29wO1xuXG5mdW5jdGlvbiBwYXJzZV9QdGdFbGZMb2MoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGJsb2IubCArPSAyO1xuXHRyZXR1cm4gW3BhcnNlX1JnY2VFbGZMb2MoYmxvYiwgNCwgb3B0cyldO1xufVxuZnVuY3Rpb24gcGFyc2VfUHRnRWxmTm9vcChibG9iLyo6OiwgbGVuZ3RoLCBvcHRzKi8pIHtcblx0YmxvYi5sICs9IDY7XG5cdHJldHVybiBbXTtcbn1cbi8qIFtNUy1YTFNdIDIuNS4xOTguNDYgKi9cbnZhciBwYXJzZV9QdGdFbGZDb2wgPSBwYXJzZV9QdGdFbGZMb2M7XG4vKiBbTVMtWExTXSAyLjUuMTk4LjQ3ICovXG52YXIgcGFyc2VfUHRnRWxmQ29sUyA9IHBhcnNlX1B0Z0VsZk5vb3A7XG4vKiBbTVMtWExTXSAyLjUuMTk4LjQ4ICovXG52YXIgcGFyc2VfUHRnRWxmQ29sU1YgPSBwYXJzZV9QdGdFbGZOb29wO1xuLyogW01TLVhMU10gMi41LjE5OC40OSAqL1xudmFyIHBhcnNlX1B0Z0VsZkNvbFYgPSBwYXJzZV9QdGdFbGZMb2M7XG4vKiBbTVMtWExTXSAyLjUuMTk4LjUwICovXG5mdW5jdGlvbiBwYXJzZV9QdGdFbGZMZWwoYmxvYi8qOjosIGxlbmd0aCwgb3B0cyovKSB7XG5cdGJsb2IubCArPSAyO1xuXHRyZXR1cm4gW3BhcnNldWludDE2KGJsb2IpLCBibG9iLnJlYWRfc2hpZnQoMikgJiAweDAxXTtcbn1cbi8qIFtNUy1YTFNdIDIuNS4xOTguNTEgKi9cbnZhciBwYXJzZV9QdGdFbGZSYWRpY2FsID0gcGFyc2VfUHRnRWxmTG9jO1xuLyogW01TLVhMU10gMi41LjE5OC41MiAqL1xudmFyIHBhcnNlX1B0Z0VsZlJhZGljYWxMZWwgPSBwYXJzZV9QdGdFbGZMZWw7XG4vKiBbTVMtWExTXSAyLjUuMTk4LjUzICovXG52YXIgcGFyc2VfUHRnRWxmUmFkaWNhbFMgPSBwYXJzZV9QdGdFbGZOb29wO1xuLyogW01TLVhMU10gMi41LjE5OC41NCAqL1xudmFyIHBhcnNlX1B0Z0VsZlJ3ID0gcGFyc2VfUHRnRWxmTG9jO1xuLyogW01TLVhMU10gMi41LjE5OC41NSAqL1xudmFyIHBhcnNlX1B0Z0VsZlJ3ViA9IHBhcnNlX1B0Z0VsZkxvYztcblxuLyogW01TLVhMU0JdIDIuNS45Ny41MiBUT0RPICovXG52YXIgUHRnTGlzdFJUID0gW1xuXHRcIkRhdGFcIixcblx0XCJBbGxcIixcblx0XCJIZWFkZXJzXCIsXG5cdFwiPz9cIixcblx0XCI/RGF0YTJcIixcblx0XCI/P1wiLFxuXHRcIj9EYXRhSGVhZGVyc1wiLFxuXHRcIj8/XCIsXG5cdFwiVG90YWxzXCIsXG5cdFwiPz9cIixcblx0XCI/P1wiLFxuXHRcIj8/XCIsXG5cdFwiP0RhdGFUb3RhbHNcIixcblx0XCI/P1wiLFxuXHRcIj8/XCIsXG5cdFwiPz9cIixcblx0XCI/Q3VycmVudFwiXG5dO1xuZnVuY3Rpb24gcGFyc2VfUHRnTGlzdChibG9iLyo6OiwgbGVuZ3RoLCBvcHRzKi8pIHtcblx0YmxvYi5sICs9IDI7XG5cdHZhciBpeHRpID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgZmxhZ3MgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBpZHggPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBjID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgQyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIHJ0ID0gUHRnTGlzdFJUWyhmbGFncyA+PiAyKSAmIDB4MUZdO1xuXHRyZXR1cm4ge2l4dGk6IGl4dGksIGNvbHR5cGU6KGZsYWdzJjB4MyksIHJ0OnJ0LCBpZHg6aWR4LCBjOmMsIEM6Q307XG59XG4vKiBbTVMtWExTXSAyLjUuMTk4LjkxIDsgW01TLVhMU0JdIDIuNS45Ny43NiAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnU3hOYW1lKGJsb2IvKjo6LCBsZW5ndGgsIG9wdHMqLykge1xuXHRibG9iLmwgKz0gMjtcblx0cmV0dXJuIFtibG9iLnJlYWRfc2hpZnQoNCldO1xufVxuXG4vKiBbWExTXSBvbGQgc3BlYyAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnU2hlZXQoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGJsb2IubCArPSA1O1xuXHRibG9iLmwgKz0gMjtcblx0YmxvYi5sICs9IChvcHRzLmJpZmYgPT0gMiA/IDEgOiA0KTtcblx0cmV0dXJuIFtcIlBUR1NIRUVUXCJdO1xufVxuZnVuY3Rpb24gcGFyc2VfUHRnRW5kU2hlZXQoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGJsb2IubCArPSAob3B0cy5iaWZmID09IDIgPyA0IDogNSk7XG5cdHJldHVybiBbXCJQVEdFTkRTSEVFVFwiXTtcbn1cbmZ1bmN0aW9uIHBhcnNlX1B0Z01lbUFyZWFOKGJsb2IvKjo6LCBsZW5ndGgsIG9wdHMqLykge1xuXHR2YXIgdHlwZSA9IChibG9iLnJlYWRfc2hpZnQoMSkgPj4+IDUpICYgMHgwMztcblx0dmFyIGNjZSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0cmV0dXJuIFt0eXBlLCBjY2VdO1xufVxuZnVuY3Rpb24gcGFyc2VfUHRnTWVtTm9NZW1OKGJsb2IvKjo6LCBsZW5ndGgsIG9wdHMqLykge1xuXHR2YXIgdHlwZSA9IChibG9iLnJlYWRfc2hpZnQoMSkgPj4+IDUpICYgMHgwMztcblx0dmFyIGNjZSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0cmV0dXJuIFt0eXBlLCBjY2VdO1xufVxuZnVuY3Rpb24gcGFyc2VfUHRnQXR0ck5vb3AoYmxvYi8qOjosIGxlbmd0aCwgb3B0cyovKSB7XG5cdGJsb2IubCArPSA0O1xuXHRyZXR1cm4gWzAsIDBdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjI1IDsgW01TLVhMU0JdIDIuNS45Ny4xNiAqL1xudmFyIFB0Z1R5cGVzID0ge1xuXHQvKjo6WyovMHgwMS8qOjpdKi86IHsgbjonUHRnRXhwJywgZjpwYXJzZV9QdGdFeHAgfSxcblx0Lyo6OlsqLzB4MDIvKjo6XSovOiB7IG46J1B0Z1RibCcsIGY6cGFyc2VfUHRnVGJsIH0sXG5cdC8qOjpbKi8weDAzLyo6Ol0qLzogeyBuOidQdGdBZGQnLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MDQvKjo6XSovOiB7IG46J1B0Z1N1YicsIGY6cGFyc2VyZWFkMSB9LFxuXHQvKjo6WyovMHgwNS8qOjpdKi86IHsgbjonUHRnTXVsJywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDA2Lyo6Ol0qLzogeyBuOidQdGdEaXYnLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MDcvKjo6XSovOiB7IG46J1B0Z1Bvd2VyJywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDA4Lyo6Ol0qLzogeyBuOidQdGdDb25jYXQnLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MDkvKjo6XSovOiB7IG46J1B0Z0x0JywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDBBLyo6Ol0qLzogeyBuOidQdGdMZScsIGY6cGFyc2VyZWFkMSB9LFxuXHQvKjo6WyovMHgwQi8qOjpdKi86IHsgbjonUHRnRXEnLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MEMvKjo6XSovOiB7IG46J1B0Z0dlJywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDBELyo6Ol0qLzogeyBuOidQdGdHdCcsIGY6cGFyc2VyZWFkMSB9LFxuXHQvKjo6WyovMHgwRS8qOjpdKi86IHsgbjonUHRnTmUnLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MEYvKjo6XSovOiB7IG46J1B0Z0lzZWN0JywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDEwLyo6Ol0qLzogeyBuOidQdGdVbmlvbicsIGY6cGFyc2VyZWFkMSB9LFxuXHQvKjo6WyovMHgxMS8qOjpdKi86IHsgbjonUHRnUmFuZ2UnLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MTIvKjo6XSovOiB7IG46J1B0Z1VwbHVzJywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDEzLyo6Ol0qLzogeyBuOidQdGdVbWludXMnLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MTQvKjo6XSovOiB7IG46J1B0Z1BlcmNlbnQnLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MTUvKjo6XSovOiB7IG46J1B0Z1BhcmVuJywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDE2Lyo6Ol0qLzogeyBuOidQdGdNaXNzQXJnJywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDE3Lyo6Ol0qLzogeyBuOidQdGdTdHInLCBmOnBhcnNlX1B0Z1N0ciB9LFxuXHQvKjo6WyovMHgxQS8qOjpdKi86IHsgbjonUHRnU2hlZXQnLCBmOnBhcnNlX1B0Z1NoZWV0IH0sXG5cdC8qOjpbKi8weDFCLyo6Ol0qLzogeyBuOidQdGdFbmRTaGVldCcsIGY6cGFyc2VfUHRnRW5kU2hlZXQgfSxcblx0Lyo6OlsqLzB4MUMvKjo6XSovOiB7IG46J1B0Z0VycicsIGY6cGFyc2VfUHRnRXJyIH0sXG5cdC8qOjpbKi8weDFELyo6Ol0qLzogeyBuOidQdGdCb29sJywgZjpwYXJzZV9QdGdCb29sIH0sXG5cdC8qOjpbKi8weDFFLyo6Ol0qLzogeyBuOidQdGdJbnQnLCBmOnBhcnNlX1B0Z0ludCB9LFxuXHQvKjo6WyovMHgxRi8qOjpdKi86IHsgbjonUHRnTnVtJywgZjpwYXJzZV9QdGdOdW0gfSxcblx0Lyo6OlsqLzB4MjAvKjo6XSovOiB7IG46J1B0Z0FycmF5JywgZjpwYXJzZV9QdGdBcnJheSB9LFxuXHQvKjo6WyovMHgyMS8qOjpdKi86IHsgbjonUHRnRnVuYycsIGY6cGFyc2VfUHRnRnVuYyB9LFxuXHQvKjo6WyovMHgyMi8qOjpdKi86IHsgbjonUHRnRnVuY1ZhcicsIGY6cGFyc2VfUHRnRnVuY1ZhciB9LFxuXHQvKjo6WyovMHgyMy8qOjpdKi86IHsgbjonUHRnTmFtZScsIGY6cGFyc2VfUHRnTmFtZSB9LFxuXHQvKjo6WyovMHgyNC8qOjpdKi86IHsgbjonUHRnUmVmJywgZjpwYXJzZV9QdGdSZWYgfSxcblx0Lyo6OlsqLzB4MjUvKjo6XSovOiB7IG46J1B0Z0FyZWEnLCBmOnBhcnNlX1B0Z0FyZWEgfSxcblx0Lyo6OlsqLzB4MjYvKjo6XSovOiB7IG46J1B0Z01lbUFyZWEnLCBmOnBhcnNlX1B0Z01lbUFyZWEgfSxcblx0Lyo6OlsqLzB4MjcvKjo6XSovOiB7IG46J1B0Z01lbUVycicsIGY6cGFyc2VfUHRnTWVtRXJyIH0sXG5cdC8qOjpbKi8weDI4Lyo6Ol0qLzogeyBuOidQdGdNZW1Ob01lbScsIGY6cGFyc2VfUHRnTWVtTm9NZW0gfSxcblx0Lyo6OlsqLzB4MjkvKjo6XSovOiB7IG46J1B0Z01lbUZ1bmMnLCBmOnBhcnNlX1B0Z01lbUZ1bmMgfSxcblx0Lyo6OlsqLzB4MkEvKjo6XSovOiB7IG46J1B0Z1JlZkVycicsIGY6cGFyc2VfUHRnUmVmRXJyIH0sXG5cdC8qOjpbKi8weDJCLyo6Ol0qLzogeyBuOidQdGdBcmVhRXJyJywgZjpwYXJzZV9QdGdBcmVhRXJyIH0sXG5cdC8qOjpbKi8weDJDLyo6Ol0qLzogeyBuOidQdGdSZWZOJywgZjpwYXJzZV9QdGdSZWZOIH0sXG5cdC8qOjpbKi8weDJELyo6Ol0qLzogeyBuOidQdGdBcmVhTicsIGY6cGFyc2VfUHRnQXJlYU4gfSxcblx0Lyo6OlsqLzB4MkUvKjo6XSovOiB7IG46J1B0Z01lbUFyZWFOJywgZjpwYXJzZV9QdGdNZW1BcmVhTiB9LFxuXHQvKjo6WyovMHgyRi8qOjpdKi86IHsgbjonUHRnTWVtTm9NZW1OJywgZjpwYXJzZV9QdGdNZW1Ob01lbU4gfSxcblx0Lyo6OlsqLzB4MzkvKjo6XSovOiB7IG46J1B0Z05hbWVYJywgZjpwYXJzZV9QdGdOYW1lWCB9LFxuXHQvKjo6WyovMHgzQS8qOjpdKi86IHsgbjonUHRnUmVmM2QnLCBmOnBhcnNlX1B0Z1JlZjNkIH0sXG5cdC8qOjpbKi8weDNCLyo6Ol0qLzogeyBuOidQdGdBcmVhM2QnLCBmOnBhcnNlX1B0Z0FyZWEzZCB9LFxuXHQvKjo6WyovMHgzQy8qOjpdKi86IHsgbjonUHRnUmVmRXJyM2QnLCBmOnBhcnNlX1B0Z1JlZkVycjNkIH0sXG5cdC8qOjpbKi8weDNELyo6Ol0qLzogeyBuOidQdGdBcmVhRXJyM2QnLCBmOnBhcnNlX1B0Z0FyZWFFcnIzZCB9LFxuXHQvKjo6WyovMHhGRi8qOjpdKi86IHt9XG59O1xuLyogVGhlc2UgYXJlIGR1cGxpY2F0ZWQgaW4gdGhlIFB0Z1R5cGVzIHRhYmxlICovXG52YXIgUHRnRHVwZXMgPSB7XG5cdC8qOjpbKi8weDQwLyo6Ol0qLzogMHgyMCwgLyo6OlsqLzB4NjAvKjo6XSovOiAweDIwLFxuXHQvKjo6WyovMHg0MS8qOjpdKi86IDB4MjEsIC8qOjpbKi8weDYxLyo6Ol0qLzogMHgyMSxcblx0Lyo6OlsqLzB4NDIvKjo6XSovOiAweDIyLCAvKjo6WyovMHg2Mi8qOjpdKi86IDB4MjIsXG5cdC8qOjpbKi8weDQzLyo6Ol0qLzogMHgyMywgLyo6OlsqLzB4NjMvKjo6XSovOiAweDIzLFxuXHQvKjo6WyovMHg0NC8qOjpdKi86IDB4MjQsIC8qOjpbKi8weDY0Lyo6Ol0qLzogMHgyNCxcblx0Lyo6OlsqLzB4NDUvKjo6XSovOiAweDI1LCAvKjo6WyovMHg2NS8qOjpdKi86IDB4MjUsXG5cdC8qOjpbKi8weDQ2Lyo6Ol0qLzogMHgyNiwgLyo6OlsqLzB4NjYvKjo6XSovOiAweDI2LFxuXHQvKjo6WyovMHg0Ny8qOjpdKi86IDB4MjcsIC8qOjpbKi8weDY3Lyo6Ol0qLzogMHgyNyxcblx0Lyo6OlsqLzB4NDgvKjo6XSovOiAweDI4LCAvKjo6WyovMHg2OC8qOjpdKi86IDB4MjgsXG5cdC8qOjpbKi8weDQ5Lyo6Ol0qLzogMHgyOSwgLyo6OlsqLzB4NjkvKjo6XSovOiAweDI5LFxuXHQvKjo6WyovMHg0QS8qOjpdKi86IDB4MkEsIC8qOjpbKi8weDZBLyo6Ol0qLzogMHgyQSxcblx0Lyo6OlsqLzB4NEIvKjo6XSovOiAweDJCLCAvKjo6WyovMHg2Qi8qOjpdKi86IDB4MkIsXG5cdC8qOjpbKi8weDRDLyo6Ol0qLzogMHgyQywgLyo6OlsqLzB4NkMvKjo6XSovOiAweDJDLFxuXHQvKjo6WyovMHg0RC8qOjpdKi86IDB4MkQsIC8qOjpbKi8weDZELyo6Ol0qLzogMHgyRCxcblx0Lyo6OlsqLzB4NEUvKjo6XSovOiAweDJFLCAvKjo6WyovMHg2RS8qOjpdKi86IDB4MkUsXG5cdC8qOjpbKi8weDRGLyo6Ol0qLzogMHgyRiwgLyo6OlsqLzB4NkYvKjo6XSovOiAweDJGLFxuXHQvKjo6WyovMHg1OC8qOjpdKi86IDB4MjIsIC8qOjpbKi8weDc4Lyo6Ol0qLzogMHgyMixcblx0Lyo6OlsqLzB4NTkvKjo6XSovOiAweDM5LCAvKjo6WyovMHg3OS8qOjpdKi86IDB4MzksXG5cdC8qOjpbKi8weDVBLyo6Ol0qLzogMHgzQSwgLyo6OlsqLzB4N0EvKjo6XSovOiAweDNBLFxuXHQvKjo6WyovMHg1Qi8qOjpdKi86IDB4M0IsIC8qOjpbKi8weDdCLyo6Ol0qLzogMHgzQixcblx0Lyo6OlsqLzB4NUMvKjo6XSovOiAweDNDLCAvKjo6WyovMHg3Qy8qOjpdKi86IDB4M0MsXG5cdC8qOjpbKi8weDVELyo6Ol0qLzogMHgzRCwgLyo6OlsqLzB4N0QvKjo6XSovOiAweDNEXG59O1xuXG52YXIgUHRnMTggPSB7XG5cdC8qOjpbKi8weDAxLyo6Ol0qLzogeyBuOidQdGdFbGZMZWwnLCBmOnBhcnNlX1B0Z0VsZkxlbCB9LFxuXHQvKjo6WyovMHgwMi8qOjpdKi86IHsgbjonUHRnRWxmUncnLCBmOnBhcnNlX1B0Z0VsZlJ3IH0sXG5cdC8qOjpbKi8weDAzLyo6Ol0qLzogeyBuOidQdGdFbGZDb2wnLCBmOnBhcnNlX1B0Z0VsZkNvbCB9LFxuXHQvKjo6WyovMHgwNi8qOjpdKi86IHsgbjonUHRnRWxmUndWJywgZjpwYXJzZV9QdGdFbGZSd1YgfSxcblx0Lyo6OlsqLzB4MDcvKjo6XSovOiB7IG46J1B0Z0VsZkNvbFYnLCBmOnBhcnNlX1B0Z0VsZkNvbFYgfSxcblx0Lyo6OlsqLzB4MEEvKjo6XSovOiB7IG46J1B0Z0VsZlJhZGljYWwnLCBmOnBhcnNlX1B0Z0VsZlJhZGljYWwgfSxcblx0Lyo6OlsqLzB4MEIvKjo6XSovOiB7IG46J1B0Z0VsZlJhZGljYWxTJywgZjpwYXJzZV9QdGdFbGZSYWRpY2FsUyB9LFxuXHQvKjo6WyovMHgwRC8qOjpdKi86IHsgbjonUHRnRWxmQ29sUycsIGY6cGFyc2VfUHRnRWxmQ29sUyB9LFxuXHQvKjo6WyovMHgwRi8qOjpdKi86IHsgbjonUHRnRWxmQ29sU1YnLCBmOnBhcnNlX1B0Z0VsZkNvbFNWIH0sXG5cdC8qOjpbKi8weDEwLyo6Ol0qLzogeyBuOidQdGdFbGZSYWRpY2FsTGVsJywgZjpwYXJzZV9QdGdFbGZSYWRpY2FsTGVsIH0sXG5cdC8qOjpbKi8weDE5Lyo6Ol0qLzogeyBuOidQdGdMaXN0JywgZjpwYXJzZV9QdGdMaXN0IH0sXG5cdC8qOjpbKi8weDFELyo6Ol0qLzogeyBuOidQdGdTeE5hbWUnLCBmOnBhcnNlX1B0Z1N4TmFtZSB9LFxuXHQvKjo6WyovMHhGRi8qOjpdKi86IHt9XG59O1xudmFyIFB0ZzE5ID0ge1xuXHQvKjo6WyovMHgwMC8qOjpdKi86IHsgbjonUHRnQXR0ck5vb3AnLCBmOnBhcnNlX1B0Z0F0dHJOb29wIH0sXG5cdC8qOjpbKi8weDAxLyo6Ol0qLzogeyBuOidQdGdBdHRyU2VtaScsIGY6cGFyc2VfUHRnQXR0clNlbWkgfSxcblx0Lyo6OlsqLzB4MDIvKjo6XSovOiB7IG46J1B0Z0F0dHJJZicsIGY6cGFyc2VfUHRnQXR0cklmIH0sXG5cdC8qOjpbKi8weDA0Lyo6Ol0qLzogeyBuOidQdGdBdHRyQ2hvb3NlJywgZjpwYXJzZV9QdGdBdHRyQ2hvb3NlIH0sXG5cdC8qOjpbKi8weDA4Lyo6Ol0qLzogeyBuOidQdGdBdHRyR290bycsIGY6cGFyc2VfUHRnQXR0ckdvdG8gfSxcblx0Lyo6OlsqLzB4MTAvKjo6XSovOiB7IG46J1B0Z0F0dHJTdW0nLCBmOnBhcnNlX1B0Z0F0dHJTdW0gfSxcblx0Lyo6OlsqLzB4MjAvKjo6XSovOiB7IG46J1B0Z0F0dHJCYXhjZWwnLCBmOnBhcnNlX1B0Z0F0dHJCYXhjZWwgfSxcblx0Lyo6OlsqLzB4MjEvKjo6XSovOiB7IG46J1B0Z0F0dHJCYXhjZWwnLCBmOnBhcnNlX1B0Z0F0dHJCYXhjZWwgfSxcblx0Lyo6OlsqLzB4NDAvKjo6XSovOiB7IG46J1B0Z0F0dHJTcGFjZScsIGY6cGFyc2VfUHRnQXR0clNwYWNlIH0sXG5cdC8qOjpbKi8weDQxLyo6Ol0qLzogeyBuOidQdGdBdHRyU3BhY2VTZW1pJywgZjpwYXJzZV9QdGdBdHRyU3BhY2VTZW1pIH0sXG5cdC8qOjpbKi8weDgwLyo6Ol0qLzogeyBuOidQdGdBdHRySWZFcnJvcicsIGY6cGFyc2VfUHRnQXR0cklmRXJyb3IgfSxcblx0Lyo6OlsqLzB4RkYvKjo6XSovOiB7fVxufTtcblxuLyogW01TLVhMU10gMi41LjE5OC4xMDMgOyBbTVMtWExTQl0gMi41Ljk3Ljg3ICovXG5mdW5jdGlvbiBwYXJzZV9SZ2JFeHRyYShibG9iLCBsZW5ndGgsIHJnY2UsIG9wdHMpIHtcblx0aWYob3B0cy5iaWZmIDwgOCkgcmV0dXJuIHBhcnNlbm9vcChibG9iLCBsZW5ndGgpO1xuXHR2YXIgdGFyZ2V0ID0gYmxvYi5sICsgbGVuZ3RoO1xuXHR2YXIgbyA9IFtdO1xuXHRmb3IodmFyIGkgPSAwOyBpICE9PSByZ2NlLmxlbmd0aDsgKytpKSB7XG5cdFx0c3dpdGNoKHJnY2VbaV1bMF0pIHtcblx0XHRcdGNhc2UgJ1B0Z0FycmF5JzogLyogUHRnQXJyYXkgLT4gUHRnRXh0cmFBcnJheSAqL1xuXHRcdFx0XHRyZ2NlW2ldWzFdID0gcGFyc2VfUHRnRXh0cmFBcnJheShibG9iLCAwLCBvcHRzKTtcblx0XHRcdFx0by5wdXNoKHJnY2VbaV1bMV0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1B0Z01lbUFyZWEnOiAvKiBQdGdNZW1BcmVhIC0+IFB0Z0V4dHJhTWVtICovXG5cdFx0XHRcdHJnY2VbaV1bMl0gPSBwYXJzZV9QdGdFeHRyYU1lbShibG9iLCByZ2NlW2ldWzFdLCBvcHRzKTtcblx0XHRcdFx0by5wdXNoKHJnY2VbaV1bMl0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1B0Z0V4cCc6IC8qIFB0Z0V4cCAtPiBQdGdFeHRyYUNvbCAqL1xuXHRcdFx0XHRpZihvcHRzICYmIG9wdHMuYmlmZiA9PSAxMikge1xuXHRcdFx0XHRcdHJnY2VbaV1bMV1bMV0gPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdFx0XHRcdFx0by5wdXNoKHJnY2VbaV1bMV0pO1xuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnTGlzdCc6IC8qIFRPRE86IFB0Z0xpc3QgLT4gUHRnRXh0cmFMaXN0ICovXG5cdFx0XHRjYXNlICdQdGdFbGZSYWRpY2FsUyc6IC8qIFRPRE86IFB0Z0VsZlJhZGljYWxTIC0+IFB0Z0V4dHJhRWxmICovXG5cdFx0XHRjYXNlICdQdGdFbGZDb2xTJzogLyogVE9ETzogUHRnRWxmQ29sUyAtPiBQdGdFeHRyYUVsZiAqL1xuXHRcdFx0Y2FzZSAnUHRnRWxmQ29sU1YnOiAvKiBUT0RPOiBQdGdFbGZDb2xTViAtPiBQdGdFeHRyYUVsZiAqL1xuXHRcdFx0XHR0aHJvdyBcIlVuc3VwcG9ydGVkIFwiICsgcmdjZVtpXVswXTtcblx0XHRcdGRlZmF1bHQ6IGJyZWFrO1xuXHRcdH1cblx0fVxuXHRsZW5ndGggPSB0YXJnZXQgLSBibG9iLmw7XG5cdC8qIG5vdGU6IHRoaXMgaXMgdGVjaG5pY2FsbHkgYW4gZXJyb3IgYnV0IEV4Y2VsIGRpc3JlZ2FyZHMgKi9cblx0Ly9pZih0YXJnZXQgIT09IGJsb2IubCAmJiBibG9iLmwgIT09IHRhcmdldCAtIGxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKHRhcmdldCArIFwiICE9IFwiICsgYmxvYi5sKTtcblx0aWYobGVuZ3RoICE9PSAwKSBvLnB1c2gocGFyc2Vub29wKGJsb2IsIGxlbmd0aCkpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4xMDQgOyBbTVMtWExTQl0gMi41Ljk3Ljg4ICovXG5mdW5jdGlvbiBwYXJzZV9SZ2NlKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgdGFyZ2V0ID0gYmxvYi5sICsgbGVuZ3RoO1xuXHR2YXIgUiwgaWQsIHB0Z3MgPSBbXTtcblx0d2hpbGUodGFyZ2V0ICE9IGJsb2IubCkge1xuXHRcdGxlbmd0aCA9IHRhcmdldCAtIGJsb2IubDtcblx0XHRpZCA9IGJsb2JbYmxvYi5sXTtcblx0XHRSID0gUHRnVHlwZXNbaWRdIHx8IFB0Z1R5cGVzW1B0Z0R1cGVzW2lkXV07XG5cdFx0aWYoaWQgPT09IDB4MTggfHwgaWQgPT09IDB4MTkpIFIgPSAoaWQgPT09IDB4MTggPyBQdGcxOCA6IFB0ZzE5KVtibG9iW2Jsb2IubCArIDFdXTtcblx0XHRpZighUiB8fCAhUi5mKSB7IC8qcHRncy5wdXNoKi8ocGFyc2Vub29wKGJsb2IsIGxlbmd0aCkpOyB9XG5cdFx0ZWxzZSB7IHB0Z3MucHVzaChbUi5uLCBSLmYoYmxvYiwgbGVuZ3RoLCBvcHRzKV0pOyB9XG5cdH1cblx0cmV0dXJuIHB0Z3M7XG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeV9hcnJheShmLyo6QXJyYXk8QXJyYXk8c3RyaW5nPj4qLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBmLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIHggPSBmW2ldLCByLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdFx0Zm9yKHZhciBqID0gMDsgaiA8IHgubGVuZ3RoOyArK2opIHtcblx0XHRcdHZhciB5ID0geFtqXTtcblx0XHRcdGlmKHkpIHN3aXRjaCh5WzBdKSB7XG5cdFx0XHRcdC8vIFRPRE86IGhhbmRsZSBlbWJlZGRlZCBxdW90ZXNcblx0XHRcdFx0Y2FzZSAweDAyOlxuXHRcdFx0XHRcdC8qOjogaWYodHlwZW9mIHlbMV0gIT0gJ3N0cmluZycpIHRocm93IFwidW5yZWFjaGFibGVcIjsgKi9cblx0XHRcdFx0XHRyLnB1c2goJ1wiJyArIHlbMV0ucmVwbGFjZSgvXCIvZywnXCJcIicpICsgJ1wiJyk7IGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OiByLnB1c2goeVsxXSk7XG5cdFx0XHR9IGVsc2Ugci5wdXNoKFwiXCIpO1xuXHRcdH1cblx0XHRvLnB1c2goci5qb2luKFwiLFwiKSk7XG5cdH1cblx0cmV0dXJuIG8uam9pbihcIjtcIik7XG59XG5cbi8qIFtNUy1YTFNdIDIuMi4yIDsgW01TLVhMU0JdIDIuMi4yIFRPRE8gKi9cbnZhciBQdGdCaW5PcCA9IHtcblx0UHRnQWRkOiBcIitcIixcblx0UHRnQ29uY2F0OiBcIiZcIixcblx0UHRnRGl2OiBcIi9cIixcblx0UHRnRXE6IFwiPVwiLFxuXHRQdGdHZTogXCI+PVwiLFxuXHRQdGdHdDogXCI+XCIsXG5cdFB0Z0xlOiBcIjw9XCIsXG5cdFB0Z0x0OiBcIjxcIixcblx0UHRnTXVsOiBcIipcIixcblx0UHRnTmU6IFwiPD5cIixcblx0UHRnUG93ZXI6IFwiXlwiLFxuXHRQdGdTdWI6IFwiLVwiXG59O1xuXG4vLyBMaXN0IG9mIGludmFsaWQgY2hhcmFjdGVycyBuZWVkcyB0byBiZSB0ZXN0ZWQgZnVydGhlclxuZnVuY3Rpb24gZm9ybXVsYV9xdW90ZV9zaGVldF9uYW1lKHNuYW1lLyo6c3RyaW5nKi8sIG9wdHMpLyo6c3RyaW5nKi8ge1xuXHRpZighc25hbWUgJiYgIShvcHRzICYmIG9wdHMuYmlmZiA8PSA1ICYmIG9wdHMuYmlmZiA+PSAyKSkgdGhyb3cgbmV3IEVycm9yKFwiZW1wdHkgc2hlZXQgbmFtZVwiKTtcblx0aWYgKC9bXlxcd1xcdTRFMDAtXFx1OUZGRlxcdTMwNDAtXFx1MzBGRl0vLnRlc3Qoc25hbWUpKSByZXR1cm4gXCInXCIgKyBzbmFtZSArIFwiJ1wiO1xuXHRyZXR1cm4gc25hbWU7XG59XG5mdW5jdGlvbiBnZXRfaXh0aV9yYXcoc3VwYm9va3MsIGl4dGkvKjpudW1iZXIqLywgb3B0cykvKjpzdHJpbmcqLyB7XG5cdGlmKCFzdXBib29rcykgcmV0dXJuIFwiU0gzM1RKU0VSUjBcIjtcblx0aWYob3B0cy5iaWZmID4gOCAmJiAoIXN1cGJvb2tzLlhUSSB8fCAhc3VwYm9va3MuWFRJW2l4dGldKSkgcmV0dXJuIHN1cGJvb2tzLlNoZWV0TmFtZXNbaXh0aV07XG5cdGlmKCFzdXBib29rcy5YVEkpIHJldHVybiBcIlNIMzNUSlNFUlI2XCI7XG5cdHZhciBYVEkgPSBzdXBib29rcy5YVElbaXh0aV07XG5cdGlmKG9wdHMuYmlmZiA8IDgpIHtcblx0XHRpZihpeHRpID4gMTAwMDApIGl4dGktPSA2NTUzNjtcblx0XHRpZihpeHRpIDwgMCkgaXh0aSA9IC1peHRpO1xuXHRcdHJldHVybiBpeHRpID09IDAgPyBcIlwiIDogc3VwYm9va3MuWFRJW2l4dGkgLSAxXTtcblx0fVxuXHRpZighWFRJKSByZXR1cm4gXCJTSDMzVEpTRVJSMVwiO1xuXHR2YXIgbyA9IFwiXCI7XG5cdGlmKG9wdHMuYmlmZiA+IDgpIHN3aXRjaChzdXBib29rc1tYVElbMF1dWzBdKSB7XG5cdFx0Y2FzZSAweDAxNjU6IC8qICdCcnRTdXBTZWxmJyAqL1xuXHRcdFx0byA9IFhUSVsxXSA9PSAtMSA/IFwiI1JFRlwiIDogc3VwYm9va3MuU2hlZXROYW1lc1tYVElbMV1dO1xuXHRcdFx0cmV0dXJuIFhUSVsxXSA9PSBYVElbMl0gPyBvIDogbyArIFwiOlwiICsgc3VwYm9va3MuU2hlZXROYW1lc1tYVElbMl1dO1xuXHRcdGNhc2UgMHgwMTY2OiAvKiAnQnJ0U3VwU2FtZScgKi9cblx0XHRcdGlmKG9wdHMuU0lEICE9IG51bGwpIHJldHVybiBzdXBib29rcy5TaGVldE5hbWVzW29wdHMuU0lEXTtcblx0XHRcdHJldHVybiBcIlNIMzNUSlNTQU1FXCIgKyBzdXBib29rc1tYVElbMF1dWzBdO1xuXHRcdGNhc2UgMHgwMTYzOiAvKiAnQnJ0U3VwQm9va1NyYycgKi9cblx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRkZWZhdWx0OiByZXR1cm4gXCJTSDMzVEpTU1JDXCIgKyBzdXBib29rc1tYVElbMF1dWzBdO1xuXHR9XG5cdHN3aXRjaChzdXBib29rc1tYVElbMF1dWzBdWzBdKSB7XG5cdFx0Y2FzZSAweDA0MDE6XG5cdFx0XHRvID0gWFRJWzFdID09IC0xID8gXCIjUkVGXCIgOiAoc3VwYm9va3MuU2hlZXROYW1lc1tYVElbMV1dIHx8IFwiU0gzM1RKU0VSUjNcIik7XG5cdFx0XHRyZXR1cm4gWFRJWzFdID09IFhUSVsyXSA/IG8gOiBvICsgXCI6XCIgKyBzdXBib29rcy5TaGVldE5hbWVzW1hUSVsyXV07XG5cdFx0Y2FzZSAweDNBMDE6IHJldHVybiBzdXBib29rc1tYVElbMF1dLnNsaWNlKDEpLm1hcChmdW5jdGlvbihuYW1lKSB7IHJldHVybiBuYW1lLk5hbWU7IH0pLmpvaW4oXCI7O1wiKTsgLy9yZXR1cm4gXCJTSDMzVEpTRVJSOFwiO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRpZighc3VwYm9va3NbWFRJWzBdXVswXVszXSkgcmV0dXJuIFwiU0gzM1RKU0VSUjJcIjtcblx0XHRcdG8gPSBYVElbMV0gPT0gLTEgPyBcIiNSRUZcIiA6IChzdXBib29rc1tYVElbMF1dWzBdWzNdW1hUSVsxXV0gfHwgXCJTSDMzVEpTRVJSNFwiKTtcblx0XHRcdHJldHVybiBYVElbMV0gPT0gWFRJWzJdID8gbyA6IG8gKyBcIjpcIiArIHN1cGJvb2tzW1hUSVswXV1bMF1bM11bWFRJWzJdXTtcblx0fVxufVxuZnVuY3Rpb24gZ2V0X2l4dGkoc3VwYm9va3MsIGl4dGkvKjpudW1iZXIqLywgb3B0cykvKjpzdHJpbmcqLyB7XG5cdHZhciBpeHRpcmF3ID0gZ2V0X2l4dGlfcmF3KHN1cGJvb2tzLCBpeHRpLCBvcHRzKTtcblx0cmV0dXJuIGl4dGlyYXcgPT0gXCIjUkVGXCIgPyBpeHRpcmF3IDogZm9ybXVsYV9xdW90ZV9zaGVldF9uYW1lKGl4dGlyYXcsIG9wdHMpO1xufVxuZnVuY3Rpb24gc3RyaW5naWZ5X2Zvcm11bGEoZm9ybXVsYS8qQXJyYXk8YW55PiovLCByYW5nZSwgY2VsbC8qOmFueSovLCBzdXBib29rcywgb3B0cykvKjpzdHJpbmcqLyB7XG5cdHZhciBiaWZmID0gKG9wdHMgJiYgb3B0cy5iaWZmKSB8fCA4O1xuXHR2YXIgX3JhbmdlID0gLypyYW5nZSAhPSBudWxsID8gcmFuZ2UgOiovIHtzOntjOjAsIHI6MH0sZTp7YzowLCByOjB9fTtcblx0dmFyIHN0YWNrLyo6QXJyYXk8c3RyaW5nPiovID0gW10sIGUxLCBlMiwgLyo6OnR5cGUsKi8gYy8qOkNlbGxBZGRyZXNzKi8sIGl4dGk9MCwgbmFtZWlkeD0wLCByLCBzbmFtZT1cIlwiO1xuXHRpZighZm9ybXVsYVswXSB8fCAhZm9ybXVsYVswXVswXSkgcmV0dXJuIFwiXCI7XG5cdHZhciBsYXN0X3NwID0gLTEsIHNwID0gXCJcIjtcblx0Zm9yKHZhciBmZiA9IDAsIGZmbGVuID0gZm9ybXVsYVswXS5sZW5ndGg7IGZmIDwgZmZsZW47ICsrZmYpIHtcblx0XHR2YXIgZiA9IGZvcm11bGFbMF1bZmZdO1xuXHRcdHN3aXRjaChmWzBdKSB7XG5cdFx0XHRjYXNlICdQdGdVbWludXMnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjkzICovXG5cdFx0XHRcdHN0YWNrLnB1c2goXCItXCIgKyBzdGFjay5wb3AoKSk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnVXBsdXMnOiAvKiBbTVMtWExTXSAyLjUuMTk4Ljk1ICovXG5cdFx0XHRcdHN0YWNrLnB1c2goXCIrXCIgKyBzdGFjay5wb3AoKSk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnUGVyY2VudCc6IC8qIFtNUy1YTFNdIDIuNS4xOTguODEgKi9cblx0XHRcdFx0c3RhY2sucHVzaChzdGFjay5wb3AoKSArIFwiJVwiKTsgYnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z0FkZCc6ICAgIC8qIFtNUy1YTFNdIDIuNS4xOTguMjYgKi9cblx0XHRcdGNhc2UgJ1B0Z0NvbmNhdCc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNDMgKi9cblx0XHRcdGNhc2UgJ1B0Z0Rpdic6ICAgIC8qIFtNUy1YTFNdIDIuNS4xOTguNDUgKi9cblx0XHRcdGNhc2UgJ1B0Z0VxJzogICAgIC8qIFtNUy1YTFNdIDIuNS4xOTguNTYgKi9cblx0XHRcdGNhc2UgJ1B0Z0dlJzogICAgIC8qIFtNUy1YTFNdIDIuNS4xOTguNjQgKi9cblx0XHRcdGNhc2UgJ1B0Z0d0JzogICAgIC8qIFtNUy1YTFNdIDIuNS4xOTguNjUgKi9cblx0XHRcdGNhc2UgJ1B0Z0xlJzogICAgIC8qIFtNUy1YTFNdIDIuNS4xOTguNjggKi9cblx0XHRcdGNhc2UgJ1B0Z0x0JzogICAgIC8qIFtNUy1YTFNdIDIuNS4xOTguNjkgKi9cblx0XHRcdGNhc2UgJ1B0Z011bCc6ICAgIC8qIFtNUy1YTFNdIDIuNS4xOTguNzUgKi9cblx0XHRcdGNhc2UgJ1B0Z05lJzogICAgIC8qIFtNUy1YTFNdIDIuNS4xOTguNzggKi9cblx0XHRcdGNhc2UgJ1B0Z1Bvd2VyJzogIC8qIFtNUy1YTFNdIDIuNS4xOTguODIgKi9cblx0XHRcdGNhc2UgJ1B0Z1N1Yic6ICAgIC8qIFtNUy1YTFNdIDIuNS4xOTguOTAgKi9cblx0XHRcdFx0ZTEgPSBzdGFjay5wb3AoKTsgZTIgPSBzdGFjay5wb3AoKTtcblx0XHRcdFx0aWYobGFzdF9zcCA+PSAwKSB7XG5cdFx0XHRcdFx0c3dpdGNoKGZvcm11bGFbMF1bbGFzdF9zcF1bMV1bMF0pIHtcblx0XHRcdFx0XHRcdGNhc2UgMDpcblx0XHRcdFx0XHRcdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRcdFx0XHRcdFx0c3AgPSBmaWxsKFwiIFwiLCBmb3JtdWxhWzBdW2xhc3Rfc3BdWzFdWzFdKTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlIDE6XG5cdFx0XHRcdFx0XHRcdC8vICRGbG93SWdub3JlXG5cdFx0XHRcdFx0XHRcdHNwID0gZmlsbChcIlxcclwiLCBmb3JtdWxhWzBdW2xhc3Rfc3BdWzFdWzFdKTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRzcCA9IFwiXCI7XG5cdFx0XHRcdFx0XHRcdC8vICRGbG93SWdub3JlXG5cdFx0XHRcdFx0XHRcdGlmKG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIFB0Z0F0dHJTcGFjZVR5cGUgXCIgKyBmb3JtdWxhWzBdW2xhc3Rfc3BdWzFdWzBdKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZTIgPSBlMiArIHNwO1xuXHRcdFx0XHRcdGxhc3Rfc3AgPSAtMTtcblx0XHRcdFx0fVxuXHRcdFx0XHRzdGFjay5wdXNoKGUyK1B0Z0Jpbk9wW2ZbMF1dK2UxKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z0lzZWN0JzogLyogW01TLVhMU10gMi41LjE5OC42NyAqL1xuXHRcdFx0XHRlMSA9IHN0YWNrLnBvcCgpOyBlMiA9IHN0YWNrLnBvcCgpO1xuXHRcdFx0XHRzdGFjay5wdXNoKGUyK1wiIFwiK2UxKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdQdGdVbmlvbic6IC8qIFtNUy1YTFNdIDIuNS4xOTguOTQgKi9cblx0XHRcdFx0ZTEgPSBzdGFjay5wb3AoKTsgZTIgPSBzdGFjay5wb3AoKTtcblx0XHRcdFx0c3RhY2sucHVzaChlMitcIixcIitlMSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnUmFuZ2UnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjgzICovXG5cdFx0XHRcdGUxID0gc3RhY2sucG9wKCk7IGUyID0gc3RhY2sucG9wKCk7XG5cdFx0XHRcdHN0YWNrLnB1c2goZTIrXCI6XCIrZTEpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnQXR0ckNob29zZSc6IC8qIFtNUy1YTFNdIDIuNS4xOTguMzQgKi9cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdQdGdBdHRyR290byc6IC8qIFtNUy1YTFNdIDIuNS4xOTguMzUgKi9cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdQdGdBdHRySWYnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjM2ICovXG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnQXR0cklmRXJyb3InOiAvKiBbTVMtWExTQl0gMi41Ljk3LjI4ICovXG5cdFx0XHRcdGJyZWFrO1xuXG5cblx0XHRcdGNhc2UgJ1B0Z1JlZic6IC8qIFtNUy1YTFNdIDIuNS4xOTguODQgKi9cblx0XHRcdFx0Lyo6OnR5cGUgPSBmWzFdWzBdOyAqL2MgPSBzaGlmdF9jZWxsX3hscygoZlsxXVsxXS8qOmFueSovKSwgX3JhbmdlLCBvcHRzKTtcblx0XHRcdFx0c3RhY2sucHVzaChlbmNvZGVfY2VsbF94bHMoYywgYmlmZikpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1B0Z1JlZk4nOiAvKiBbTVMtWExTXSAyLjUuMTk4Ljg4ICovXG5cdFx0XHRcdC8qOjp0eXBlID0gZlsxXVswXTsgKi9jID0gY2VsbCA/IHNoaWZ0X2NlbGxfeGxzKChmWzFdWzFdLyo6YW55Ki8pLCBjZWxsLCBvcHRzKSA6IChmWzFdWzFdLyo6YW55Ki8pO1xuXHRcdFx0XHRzdGFjay5wdXNoKGVuY29kZV9jZWxsX3hscyhjLCBiaWZmKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnUmVmM2QnOiAvKiBbTVMtWExTXSAyLjUuMTk4Ljg1ICovXG5cdFx0XHRcdC8qOjp0eXBlID0gZlsxXVswXTsgKi9peHRpID0gLyo6Ok51bWJlcigqL2ZbMV1bMV0vKjo6KSovOyBjID0gc2hpZnRfY2VsbF94bHMoKGZbMV1bMl0vKjphbnkqLyksIF9yYW5nZSwgb3B0cyk7XG5cdFx0XHRcdHNuYW1lID0gZ2V0X2l4dGkoc3VwYm9va3MsIGl4dGksIG9wdHMpO1xuXHRcdFx0XHR2YXIgdyA9IHNuYW1lOyAvKiBJRTkgZmFpbHMgb24gZGVmaW5lZCBuYW1lcyAqLyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG5cdFx0XHRcdHN0YWNrLnB1c2goc25hbWUgKyBcIiFcIiArIGVuY29kZV9jZWxsX3hscyhjLCBiaWZmKSk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdGdW5jJzogLyogW01TLVhMU10gMi41LjE5OC42MiAqL1xuXHRcdFx0Y2FzZSAnUHRnRnVuY1Zhcic6IC8qIFtNUy1YTFNdIDIuNS4xOTguNjMgKi9cblx0XHRcdFx0LyogZlsxXSA9IFthcmdjLCBmdW5jLCB0eXBlXSAqL1xuXHRcdFx0XHR2YXIgYXJnYy8qOm51bWJlciovID0gKGZbMV1bMF0vKjphbnkqLyksIGZ1bmMvKjpzdHJpbmcqLyA9IChmWzFdWzFdLyo6YW55Ki8pO1xuXHRcdFx0XHRpZighYXJnYykgYXJnYyA9IDA7XG5cdFx0XHRcdGFyZ2MgJj0gMHg3Rjtcblx0XHRcdFx0dmFyIGFyZ3MgPSBhcmdjID09IDAgPyBbXSA6IHN0YWNrLnNsaWNlKC1hcmdjKTtcblx0XHRcdFx0c3RhY2subGVuZ3RoIC09IGFyZ2M7XG5cdFx0XHRcdGlmKGZ1bmMgPT09ICdVc2VyJykgZnVuYyA9IGFyZ3Muc2hpZnQoKTtcblx0XHRcdFx0c3RhY2sucHVzaChmdW5jICsgXCIoXCIgKyBhcmdzLmpvaW4oXCIsXCIpICsgXCIpXCIpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnQm9vbCc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNDIgKi9cblx0XHRcdFx0c3RhY2sucHVzaChmWzFdID8gXCJUUlVFXCIgOiBcIkZBTFNFXCIpOyBicmVhaztcblx0XHRcdGNhc2UgJ1B0Z0ludCc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNjYgKi9cblx0XHRcdFx0c3RhY2sucHVzaCgvKjo6U3RyaW5nKCovZlsxXS8qOjopKi8pOyBicmVhaztcblx0XHRcdGNhc2UgJ1B0Z051bSc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNzkgVE9ETzogcHJlY2lzaW9uPyAqL1xuXHRcdFx0XHRzdGFjay5wdXNoKFN0cmluZyhmWzFdKSk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnU3RyJzogLyogW01TLVhMU10gMi41LjE5OC44OSAqL1xuXHRcdFx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdFx0XHRzdGFjay5wdXNoKCdcIicgKyBmWzFdLnJlcGxhY2UoL1wiL2csICdcIlwiJykgKyAnXCInKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdQdGdFcnInOiAvKiBbTVMtWExTXSAyLjUuMTk4LjU3ICovXG5cdFx0XHRcdHN0YWNrLnB1c2goLyo6OlN0cmluZygqL2ZbMV0vKjo6KSovKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdQdGdBcmVhTic6IC8qIFtNUy1YTFNdIDIuNS4xOTguMzEgVE9ETyAqL1xuXHRcdFx0XHQvKjo6dHlwZSA9IGZbMV1bMF07ICovciA9IHNoaWZ0X3JhbmdlX3hscyhmWzFdWzFdLCBjZWxsID8ge3M6Y2VsbH0gOiBfcmFuZ2UsIG9wdHMpO1xuXHRcdFx0XHRzdGFjay5wdXNoKGVuY29kZV9yYW5nZV94bHMoKHIvKjphbnkqLyksIG9wdHMpKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdQdGdBcmVhJzogLyogW01TLVhMU10gMi41LjE5OC4yNyBUT0RPOiBmaXhlZCBwb2ludHMgKi9cblx0XHRcdFx0Lyo6OnR5cGUgPSBmWzFdWzBdOyAqL3IgPSBzaGlmdF9yYW5nZV94bHMoZlsxXVsxXSwgX3JhbmdlLCBvcHRzKTtcblx0XHRcdFx0c3RhY2sucHVzaChlbmNvZGVfcmFuZ2VfeGxzKChyLyo6YW55Ki8pLCBvcHRzKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnQXJlYTNkJzogLyogW01TLVhMU10gMi41LjE5OC4yOCBUT0RPICovXG5cdFx0XHRcdC8qOjp0eXBlID0gZlsxXVswXTsgKi9peHRpID0gLyo6Ok51bWJlcigqL2ZbMV1bMV0vKjo6KSovOyByID0gZlsxXVsyXTtcblx0XHRcdFx0c25hbWUgPSBnZXRfaXh0aShzdXBib29rcywgaXh0aSwgb3B0cyk7XG5cdFx0XHRcdHN0YWNrLnB1c2goc25hbWUgKyBcIiFcIiArIGVuY29kZV9yYW5nZV94bHMoKHIvKjphbnkqLyksIG9wdHMpKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdQdGdBdHRyU3VtJzogLyogW01TLVhMU10gMi41LjE5OC40MSAqL1xuXHRcdFx0XHRzdGFjay5wdXNoKFwiU1VNKFwiICsgc3RhY2sucG9wKCkgKyBcIilcIik7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdBdHRyQmF4Y2VsJzogLyogW01TLVhMU10gMi41LjE5OC4zMyAqL1xuXHRcdFx0Y2FzZSAnUHRnQXR0clNlbWknOiAvKiBbTVMtWExTXSAyLjUuMTk4LjM3ICovXG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdOYW1lJzogLyogW01TLVhMU10gMi41LjE5OC43NiA7IFtNUy1YTFNCXSAyLjUuOTcuNjAgVE9ETzogcmV2aXNpb25zICovXG5cdFx0XHRcdC8qIGZbMV0gPSB0eXBlLCAwLCBuYW1laW5kZXggKi9cblx0XHRcdFx0bmFtZWlkeCA9IChmWzFdWzJdLyo6YW55Ki8pO1xuXHRcdFx0XHR2YXIgbGJsID0gKHN1cGJvb2tzLm5hbWVzfHxbXSlbbmFtZWlkeC0xXSB8fCAoc3VwYm9va3NbMF18fFtdKVtuYW1laWR4XTtcblx0XHRcdFx0dmFyIG5hbWUgPSBsYmwgPyBsYmwuTmFtZSA6IFwiU0gzM1RKU05BTUVcIiArIFN0cmluZyhuYW1laWR4KTtcblx0XHRcdFx0LyogW01TLVhMU0JdIDIuNS45Ny4xMCBGdGFiIC0tIGxhc3QgdmVyaWZpZWQgMjAyMjAyMDQgKi9cblx0XHRcdFx0aWYobmFtZSAmJiBuYW1lLnNsaWNlKDAsNikgPT0gXCJfeGxmbi5cIiAmJiAhb3B0cy54bGZuKSBuYW1lID0gbmFtZS5zbGljZSg2KTtcblx0XHRcdFx0c3RhY2sucHVzaChuYW1lKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z05hbWVYJzogLyogW01TLVhMU10gMi41LjE5OC43NyA7IFtNUy1YTFNCXSAyLjUuOTcuNjEgVE9ETzogcmV2aXNpb25zICovXG5cdFx0XHRcdC8qIGZbMV0gPSB0eXBlLCBpeHRpLCBuYW1laW5kZXggKi9cblx0XHRcdFx0dmFyIGJvb2tpZHgvKjpudW1iZXIqLyA9IChmWzFdWzFdLyo6YW55Ki8pOyBuYW1laWR4ID0gKGZbMV1bMl0vKjphbnkqLyk7IHZhciBleHRlcm5ib29rO1xuXHRcdFx0XHQvKiBUT0RPOiBQcm9wZXJseSBoYW5kbGUgbWlzc2luZyB2YWx1ZXMgLS0gdGhpcyBzaG91bGQgYmUgdXNpbmcgZ2V0X2l4dGlfcmF3IHByaW1hcmlseSAqL1xuXHRcdFx0XHRpZihvcHRzLmJpZmYgPD0gNSkge1xuXHRcdFx0XHRcdGlmKGJvb2tpZHggPCAwKSBib29raWR4ID0gLWJvb2tpZHg7XG5cdFx0XHRcdFx0aWYoc3VwYm9va3NbYm9va2lkeF0pIGV4dGVybmJvb2sgPSBzdXBib29rc1tib29raWR4XVtuYW1laWR4XTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR2YXIgbyA9IFwiXCI7XG5cdFx0XHRcdFx0aWYoKChzdXBib29rc1tib29raWR4XXx8W10pWzBdfHxbXSlbMF0gPT0gMHgzQTAxKXsvKiBlbXB0eSAqL31cblx0XHRcdFx0XHRlbHNlIGlmKCgoc3VwYm9va3NbYm9va2lkeF18fFtdKVswXXx8W10pWzBdID09IDB4MDQwMSl7XG5cdFx0XHRcdFx0XHRpZihzdXBib29rc1tib29raWR4XVtuYW1laWR4XSAmJiBzdXBib29rc1tib29raWR4XVtuYW1laWR4XS5pdGFiID4gMCkge1xuXHRcdFx0XHRcdFx0XHRvID0gc3VwYm9va3MuU2hlZXROYW1lc1tzdXBib29rc1tib29raWR4XVtuYW1laWR4XS5pdGFiLTFdICsgXCIhXCI7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2UgbyA9IHN1cGJvb2tzLlNoZWV0TmFtZXNbbmFtZWlkeC0xXSsgXCIhXCI7XG5cdFx0XHRcdFx0aWYoc3VwYm9va3NbYm9va2lkeF0gJiYgc3VwYm9va3NbYm9va2lkeF1bbmFtZWlkeF0pIG8gKz0gc3VwYm9va3NbYm9va2lkeF1bbmFtZWlkeF0uTmFtZTtcblx0XHRcdFx0XHRlbHNlIGlmKHN1cGJvb2tzWzBdICYmIHN1cGJvb2tzWzBdW25hbWVpZHhdKSBvICs9IHN1cGJvb2tzWzBdW25hbWVpZHhdLk5hbWU7XG5cdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHR2YXIgaXh0aWRhdGEgPSAoZ2V0X2l4dGlfcmF3KHN1cGJvb2tzLCBib29raWR4LCBvcHRzKXx8XCJcIikuc3BsaXQoXCI7O1wiKTtcblx0XHRcdFx0XHRcdGlmKGl4dGlkYXRhW25hbWVpZHggLSAxXSkgbyA9IGl4dGlkYXRhW25hbWVpZHggLSAxXTsgLy8gVE9ETzogY29uZmlybSB0aGlzIGlzIGNvcnJlY3Rcblx0XHRcdFx0XHRcdGVsc2UgbyArPSBcIlNIMzNUSlNFUlJYXCI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHN0YWNrLnB1c2gobyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYoIWV4dGVybmJvb2spIGV4dGVybmJvb2sgPSB7TmFtZTogXCJTSDMzVEpTRVJSWVwifTtcblx0XHRcdFx0c3RhY2sucHVzaChleHRlcm5ib29rLk5hbWUpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnUGFyZW4nOiAvKiBbTVMtWExTXSAyLjUuMTk4LjgwICovXG5cdFx0XHRcdHZhciBscCA9ICcoJywgcnAgPSAnKSc7XG5cdFx0XHRcdGlmKGxhc3Rfc3AgPj0gMCkge1xuXHRcdFx0XHRcdHNwID0gXCJcIjtcblx0XHRcdFx0XHRzd2l0Y2goZm9ybXVsYVswXVtsYXN0X3NwXVsxXVswXSkge1xuXHRcdFx0XHRcdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRcdFx0XHRcdGNhc2UgMjogbHAgPSBmaWxsKFwiIFwiLCBmb3JtdWxhWzBdW2xhc3Rfc3BdWzFdWzFdKSArIGxwOyBicmVhaztcblx0XHRcdFx0XHRcdC8vICRGbG93SWdub3JlXG5cdFx0XHRcdFx0XHRjYXNlIDM6IGxwID0gZmlsbChcIlxcclwiLCBmb3JtdWxhWzBdW2xhc3Rfc3BdWzFdWzFdKSArIGxwOyBicmVhaztcblx0XHRcdFx0XHRcdC8vICRGbG93SWdub3JlXG5cdFx0XHRcdFx0XHRjYXNlIDQ6IHJwID0gZmlsbChcIiBcIiwgZm9ybXVsYVswXVtsYXN0X3NwXVsxXVsxXSkgKyBycDsgYnJlYWs7XG5cdFx0XHRcdFx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdFx0XHRcdFx0Y2FzZSA1OiBycCA9IGZpbGwoXCJcXHJcIiwgZm9ybXVsYVswXVtsYXN0X3NwXVsxXVsxXSkgKyBycDsgYnJlYWs7XG5cdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdFx0XHRcdFx0XHRpZihvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBQdGdBdHRyU3BhY2VUeXBlIFwiICsgZm9ybXVsYVswXVtsYXN0X3NwXVsxXVswXSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGxhc3Rfc3AgPSAtMTtcblx0XHRcdFx0fVxuXHRcdFx0XHRzdGFjay5wdXNoKGxwICsgc3RhY2sucG9wKCkgKyBycCk7IGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdSZWZFcnInOiAvKiBbTVMtWExTXSAyLjUuMTk4Ljg2ICovXG5cdFx0XHRcdHN0YWNrLnB1c2goJyNSRUYhJyk7IGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdSZWZFcnIzZCc6IC8qIFtNUy1YTFNdIDIuNS4xOTguODcgKi9cblx0XHRcdFx0c3RhY2sucHVzaCgnI1JFRiEnKTsgYnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z0V4cCc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNTggVE9ETyAqL1xuXHRcdFx0XHRjID0ge2M6KGZbMV1bMV0vKjphbnkqLykscjooZlsxXVswXS8qOmFueSovKX07XG5cdFx0XHRcdHZhciBxID0gKHtjOiBjZWxsLmMsIHI6Y2VsbC5yfS8qOmFueSovKTtcblx0XHRcdFx0aWYoc3VwYm9va3Muc2hhcmVkZltlbmNvZGVfY2VsbChjKV0pIHtcblx0XHRcdFx0XHR2YXIgcGFyc2VkZiA9IChzdXBib29rcy5zaGFyZWRmW2VuY29kZV9jZWxsKGMpXSk7XG5cdFx0XHRcdFx0c3RhY2sucHVzaChzdHJpbmdpZnlfZm9ybXVsYShwYXJzZWRmLCBfcmFuZ2UsIHEsIHN1cGJvb2tzLCBvcHRzKSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dmFyIGZuZCA9IGZhbHNlO1xuXHRcdFx0XHRcdGZvcihlMT0wO2UxIT1zdXBib29rcy5hcnJheWYubGVuZ3RoOyArK2UxKSB7XG5cdFx0XHRcdFx0XHQvKiBUT0RPOiBzaG91bGQgYmUgc29tZXRoaW5nIGxpa2UgcmFuZ2VfaGFzICovXG5cdFx0XHRcdFx0XHRlMiA9IHN1cGJvb2tzLmFycmF5ZltlMV07XG5cdFx0XHRcdFx0XHRpZihjLmMgPCBlMlswXS5zLmMgfHwgYy5jID4gZTJbMF0uZS5jKSBjb250aW51ZTtcblx0XHRcdFx0XHRcdGlmKGMuciA8IGUyWzBdLnMuciB8fCBjLnIgPiBlMlswXS5lLnIpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0c3RhY2sucHVzaChzdHJpbmdpZnlfZm9ybXVsYShlMlsxXSwgX3JhbmdlLCBxLCBzdXBib29rcywgb3B0cykpO1xuXHRcdFx0XHRcdFx0Zm5kID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZighZm5kKSBzdGFjay5wdXNoKC8qOjpTdHJpbmcoKi9mWzFdLyo6OikqLyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z0FycmF5JzogLyogW01TLVhMU10gMi41LjE5OC4zMiBUT0RPICovXG5cdFx0XHRcdHN0YWNrLnB1c2goXCJ7XCIgKyBzdHJpbmdpZnlfYXJyYXkoLyo6OigqL2ZbMV0vKjo6IDphbnkpKi8pICsgXCJ9XCIpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnTWVtQXJlYSc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNzAgVE9ETzogY29uZmlybSB0aGlzIGlzIGEgbm9uLWRpc3BsYXkgKi9cblx0XHRcdFx0Ly9zdGFjay5wdXNoKFwiKFwiICsgZlsyXS5tYXAoZW5jb2RlX3JhbmdlKS5qb2luKFwiLFwiKSArIFwiKVwiKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z0F0dHJTcGFjZSc6IC8qIFtNUy1YTFNdIDIuNS4xOTguMzggKi9cblx0XHRcdGNhc2UgJ1B0Z0F0dHJTcGFjZVNlbWknOiAvKiBbTVMtWExTXSAyLjUuMTk4LjM5ICovXG5cdFx0XHRcdGxhc3Rfc3AgPSBmZjtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z1RibCc6IC8qIFtNUy1YTFNdIDIuNS4xOTguOTIgVE9ETyAqL1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnTWVtRXJyJzogLyogW01TLVhMU10gMi41LjE5OC43MSAqL1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnTWlzc0FyZyc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNzQgKi9cblx0XHRcdFx0c3RhY2sucHVzaChcIlwiKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z0FyZWFFcnInOiAvKiBbTVMtWExTXSAyLjUuMTk4LjI5ICovXG5cdFx0XHRcdHN0YWNrLnB1c2goXCIjUkVGIVwiKTsgYnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z0FyZWFFcnIzZCc6IC8qIFtNUy1YTFNdIDIuNS4xOTguMzAgKi9cblx0XHRcdFx0c3RhY2sucHVzaChcIiNSRUYhXCIpOyBicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnTGlzdCc6IC8qIFtNUy1YTFNCXSAyLjUuOTcuNTIgKi9cblx0XHRcdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRcdFx0c3RhY2sucHVzaChcIlRhYmxlXCIgKyBmWzFdLmlkeCArIFwiWyNcIiArIGZbMV0ucnQgKyBcIl1cIik7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdNZW1BcmVhTic6XG5cdFx0XHRjYXNlICdQdGdNZW1Ob01lbU4nOlxuXHRcdFx0Y2FzZSAnUHRnQXR0ck5vb3AnOlxuXHRcdFx0Y2FzZSAnUHRnU2hlZXQnOlxuXHRcdFx0Y2FzZSAnUHRnRW5kU2hlZXQnOlxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnTWVtRnVuYyc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNzIgVE9ETyAqL1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1B0Z01lbU5vTWVtJzogLyogW01TLVhMU10gMi41LjE5OC43MyBUT0RPICovXG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdFbGZDb2wnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjQ2ICovXG5cdFx0XHRjYXNlICdQdGdFbGZDb2xTJzogLyogW01TLVhMU10gMi41LjE5OC40NyAqL1xuXHRcdFx0Y2FzZSAnUHRnRWxmQ29sU1YnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjQ4ICovXG5cdFx0XHRjYXNlICdQdGdFbGZDb2xWJzogLyogW01TLVhMU10gMi41LjE5OC40OSAqL1xuXHRcdFx0Y2FzZSAnUHRnRWxmTGVsJzogLyogW01TLVhMU10gMi41LjE5OC41MCAqL1xuXHRcdFx0Y2FzZSAnUHRnRWxmUmFkaWNhbCc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNTEgKi9cblx0XHRcdGNhc2UgJ1B0Z0VsZlJhZGljYWxMZWwnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjUyICovXG5cdFx0XHRjYXNlICdQdGdFbGZSYWRpY2FsUyc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNTMgKi9cblx0XHRcdGNhc2UgJ1B0Z0VsZlJ3JzogLyogW01TLVhMU10gMi41LjE5OC41NCAqL1xuXHRcdFx0Y2FzZSAnUHRnRWxmUndWJzogLyogW01TLVhMU10gMi41LjE5OC41NSAqL1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBFTEZzXCIpO1xuXG5cdFx0XHRjYXNlICdQdGdTeE5hbWUnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjkxIFRPRE8gLS0gZmluZCBhIHRlc3QgY2FzZSAqL1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1VucmVjb2duaXplZCBGb3JtdWxhIFRva2VuOiAnICsgU3RyaW5nKGYpKTtcblx0XHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcignVW5yZWNvZ25pemVkIEZvcm11bGEgVG9rZW46ICcgKyBTdHJpbmcoZikpO1xuXHRcdH1cblx0XHR2YXIgUHRnTm9uRGlzcCA9IFsnUHRnQXR0clNwYWNlJywgJ1B0Z0F0dHJTcGFjZVNlbWknLCAnUHRnQXR0ckdvdG8nXTtcblx0XHRpZihvcHRzLmJpZmYgIT0gMykgaWYobGFzdF9zcCA+PSAwICYmIFB0Z05vbkRpc3AuaW5kZXhPZihmb3JtdWxhWzBdW2ZmXVswXSkgPT0gLTEpIHtcblx0XHRcdGYgPSBmb3JtdWxhWzBdW2xhc3Rfc3BdO1xuXHRcdFx0dmFyIF9sZWZ0ID0gdHJ1ZTtcblx0XHRcdHN3aXRjaChmWzFdWzBdKSB7XG5cdFx0XHRcdC8qIG5vdGU6IHNvbWUgYmFkIFhMU0IgZmlsZXMgb21pdCB0aGUgUHRnUGFyZW4gKi9cblx0XHRcdFx0Y2FzZSA0OiBfbGVmdCA9IGZhbHNlO1xuXHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRcdGNhc2UgMDpcblx0XHRcdFx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdFx0XHRcdHNwID0gZmlsbChcIiBcIiwgZlsxXVsxXSk7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDU6IF9sZWZ0ID0gZmFsc2U7XG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdFx0Y2FzZSAxOlxuXHRcdFx0XHRcdC8vICRGbG93SWdub3JlXG5cdFx0XHRcdFx0c3AgPSBmaWxsKFwiXFxyXCIsIGZbMV1bMV0pOyBicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRzcCA9IFwiXCI7XG5cdFx0XHRcdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRcdFx0XHRpZihvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBQdGdBdHRyU3BhY2VUeXBlIFwiICsgZlsxXVswXSk7XG5cdFx0XHR9XG5cdFx0XHRzdGFjay5wdXNoKChfbGVmdCA/IHNwIDogXCJcIikgKyBzdGFjay5wb3AoKSArIChfbGVmdCA/IFwiXCIgOiBzcCkpO1xuXHRcdFx0bGFzdF9zcCA9IC0xO1xuXHRcdH1cblx0fVxuXHRpZihzdGFjay5sZW5ndGggPiAxICYmIG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoXCJiYWQgZm9ybXVsYSBzdGFja1wiKTtcblx0cmV0dXJuIHN0YWNrWzBdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjEgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfQXJyYXlQYXJzZWRGb3JtdWxhKGJsb2IsIGxlbmd0aCwgb3B0cy8qOjosIHJlZiovKSB7XG5cdHZhciB0YXJnZXQgPSBibG9iLmwgKyBsZW5ndGgsIGxlbiA9IG9wdHMuYmlmZiA9PSAyID8gMSA6IDI7XG5cdHZhciByZ2NiLCBjY2UgPSBibG9iLnJlYWRfc2hpZnQobGVuKTsgLy8gbGVuZ3RoIG9mIHJnY2Vcblx0aWYoY2NlID09IDB4RkZGRikgcmV0dXJuIFtbXSxwYXJzZW5vb3AoYmxvYiwgbGVuZ3RoLTIpXTtcblx0dmFyIHJnY2UgPSBwYXJzZV9SZ2NlKGJsb2IsIGNjZSwgb3B0cyk7XG5cdGlmKGxlbmd0aCAhPT0gY2NlICsgbGVuKSByZ2NiID0gcGFyc2VfUmdiRXh0cmEoYmxvYiwgbGVuZ3RoIC0gY2NlIC0gbGVuLCByZ2NlLCBvcHRzKTtcblx0YmxvYi5sID0gdGFyZ2V0O1xuXHRyZXR1cm4gW3JnY2UsIHJnY2JdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjMgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfWExTQ2VsbFBhcnNlZEZvcm11bGEoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciB0YXJnZXQgPSBibG9iLmwgKyBsZW5ndGgsIGxlbiA9IG9wdHMuYmlmZiA9PSAyID8gMSA6IDI7XG5cdHZhciByZ2NiLCBjY2UgPSBibG9iLnJlYWRfc2hpZnQobGVuKTsgLy8gbGVuZ3RoIG9mIHJnY2Vcblx0aWYoY2NlID09IDB4RkZGRikgcmV0dXJuIFtbXSxwYXJzZW5vb3AoYmxvYiwgbGVuZ3RoLTIpXTtcblx0dmFyIHJnY2UgPSBwYXJzZV9SZ2NlKGJsb2IsIGNjZSwgb3B0cyk7XG5cdGlmKGxlbmd0aCAhPT0gY2NlICsgbGVuKSByZ2NiID0gcGFyc2VfUmdiRXh0cmEoYmxvYiwgbGVuZ3RoIC0gY2NlIC0gbGVuLCByZ2NlLCBvcHRzKTtcblx0YmxvYi5sID0gdGFyZ2V0O1xuXHRyZXR1cm4gW3JnY2UsIHJnY2JdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjIxICovXG5mdW5jdGlvbiBwYXJzZV9OYW1lUGFyc2VkRm9ybXVsYShibG9iLCBsZW5ndGgsIG9wdHMsIGNjZSkge1xuXHR2YXIgdGFyZ2V0ID0gYmxvYi5sICsgbGVuZ3RoO1xuXHR2YXIgcmdjZSA9IHBhcnNlX1JnY2UoYmxvYiwgY2NlLCBvcHRzKTtcblx0dmFyIHJnY2I7XG5cdGlmKHRhcmdldCAhPT0gYmxvYi5sKSByZ2NiID0gcGFyc2VfUmdiRXh0cmEoYmxvYiwgdGFyZ2V0IC0gYmxvYi5sLCByZ2NlLCBvcHRzKTtcblx0cmV0dXJuIFtyZ2NlLCByZ2NiXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4xMTggVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfU2hhcmVkUGFyc2VkRm9ybXVsYShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHRhcmdldCA9IGJsb2IubCArIGxlbmd0aDtcblx0dmFyIHJnY2IsIGNjZSA9IGJsb2IucmVhZF9zaGlmdCgyKTsgLy8gbGVuZ3RoIG9mIHJnY2Vcblx0dmFyIHJnY2UgPSBwYXJzZV9SZ2NlKGJsb2IsIGNjZSwgb3B0cyk7XG5cdGlmKGNjZSA9PSAweEZGRkYpIHJldHVybiBbW10scGFyc2Vub29wKGJsb2IsIGxlbmd0aC0yKV07XG5cdGlmKGxlbmd0aCAhPT0gY2NlICsgMikgcmdjYiA9IHBhcnNlX1JnYkV4dHJhKGJsb2IsIHRhcmdldCAtIGNjZSAtIDIsIHJnY2UsIG9wdHMpO1xuXHRyZXR1cm4gW3JnY2UsIHJnY2JdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTMzIFRPRE86IGhvdyB0byBlbWl0IGVtcHR5IHN0cmluZ3M/ICovXG5mdW5jdGlvbiBwYXJzZV9Gb3JtdWxhVmFsdWUoYmxvYi8qOjosIGxlbmd0aCovKSB7XG5cdHZhciBiO1xuXHRpZihfX3JlYWRVSW50MTZMRShibG9iLGJsb2IubCArIDYpICE9PSAweEZGRkYpIHJldHVybiBbcGFyc2VfWG51bShibG9iKSwnbiddO1xuXHRzd2l0Y2goYmxvYltibG9iLmxdKSB7XG5cdFx0Y2FzZSAweDAwOiBibG9iLmwgKz0gODsgcmV0dXJuIFtcIlN0cmluZ1wiLCAncyddO1xuXHRcdGNhc2UgMHgwMTogYiA9IGJsb2JbYmxvYi5sKzJdID09PSAweDE7IGJsb2IubCArPSA4OyByZXR1cm4gW2IsJ2InXTtcblx0XHRjYXNlIDB4MDI6IGIgPSBibG9iW2Jsb2IubCsyXTsgYmxvYi5sICs9IDg7IHJldHVybiBbYiwnZSddO1xuXHRcdGNhc2UgMHgwMzogYmxvYi5sICs9IDg7IHJldHVybiBbXCJcIiwncyddO1xuXHR9XG5cdHJldHVybiBbXTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0Zvcm11bGFWYWx1ZSh2YWx1ZSkge1xuXHRpZih2YWx1ZSA9PSBudWxsKSB7XG5cdFx0Ly8gQmxhbmsgU3RyaW5nIFZhbHVlXG5cdFx0dmFyIG8gPSBuZXdfYnVmKDgpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgMHgwMyk7XG5cdFx0by53cml0ZV9zaGlmdCgxLCAwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAweEZGRkYpO1xuXHRcdHJldHVybiBvO1xuXHR9IGVsc2UgaWYodHlwZW9mIHZhbHVlID09IFwibnVtYmVyXCIpIHJldHVybiB3cml0ZV9YbnVtKHZhbHVlKTtcblx0cmV0dXJuIHdyaXRlX1hudW0oMCk7XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xMjcgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfRm9ybXVsYShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGVuZCA9IGJsb2IubCArIGxlbmd0aDtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNDZWxsKGJsb2IsIDYpO1xuXHRpZihvcHRzLmJpZmYgPT0gMikgKytibG9iLmw7XG5cdHZhciB2YWwgPSBwYXJzZV9Gb3JtdWxhVmFsdWUoYmxvYiw4KTtcblx0dmFyIGZsYWdzID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRpZihvcHRzLmJpZmYgIT0gMikge1xuXHRcdGJsb2IucmVhZF9zaGlmdCgxKTtcblx0XHRpZihvcHRzLmJpZmYgPj0gNSkge1xuXHRcdFx0Lyp2YXIgY2huID0gKi9ibG9iLnJlYWRfc2hpZnQoNCk7XG5cdFx0fVxuXHR9XG5cdHZhciBjYmYgPSBwYXJzZV9YTFNDZWxsUGFyc2VkRm9ybXVsYShibG9iLCBlbmQgLSBibG9iLmwsIG9wdHMpO1xuXHRyZXR1cm4ge2NlbGw6Y2VsbCwgdmFsOnZhbFswXSwgZm9ybXVsYTpjYmYsIHNoYXJlZDogKGZsYWdzID4+IDMpICYgMSwgdHQ6dmFsWzFdfTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0Zvcm11bGEoY2VsbC8qOkNlbGwqLywgUi8qOm51bWJlciovLCBDLyo6bnVtYmVyKi8sIG9wdHMsIG9zLyo6bnVtYmVyKi8pIHtcblx0Ly8gQ2VsbFxuXHR2YXIgbzEgPSB3cml0ZV9YTFNDZWxsKFIsIEMsIG9zKTtcblxuXHQvLyBGb3JtdWxhVmFsdWVcblx0dmFyIG8yID0gd3JpdGVfRm9ybXVsYVZhbHVlKGNlbGwudik7XG5cblx0Ly8gZmxhZ3MgKyBjYWNoZVxuXHR2YXIgbzMgPSBuZXdfYnVmKDYpO1xuXHR2YXIgZmxhZ3MgPSAweDAxIHwgMHgyMDtcblx0bzMud3JpdGVfc2hpZnQoMiwgZmxhZ3MpO1xuXHRvMy53cml0ZV9zaGlmdCg0LCAwKTtcblxuXHQvLyBDZWxsUGFyc2VkRm9ybXVsYVxuXHR2YXIgYmYgPSBuZXdfYnVmKGNlbGwuYmYubGVuZ3RoKTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IGNlbGwuYmYubGVuZ3RoOyArK2kpIGJmW2ldID0gY2VsbC5iZltpXTtcblxuXHR2YXIgb3V0ID0gYmNvbmNhdChbbzEsIG8yLCBvMywgYmZdKTtcblx0cmV0dXJuIG91dDtcbn1cblxuXG4vKiBYTFNCIFBhcnNlZCBGb3JtdWxhIHJlY29yZHMgaGF2ZSB0aGUgc2FtZSBzaGFwZSAqL1xuZnVuY3Rpb24gcGFyc2VfWExTQlBhcnNlZEZvcm11bGEoZGF0YSwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBjY2UgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdHZhciByZ2NlID0gcGFyc2VfUmdjZShkYXRhLCBjY2UsIG9wdHMpO1xuXHR2YXIgY2IgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdHZhciByZ2NiID0gY2IgPiAwID8gcGFyc2VfUmdiRXh0cmEoZGF0YSwgY2IsIHJnY2UsIG9wdHMpIDogbnVsbDtcblx0cmV0dXJuIFtyZ2NlLCByZ2NiXTtcbn1cblxuLyogW01TLVhMU0JdIDIuNS45Ny4xIEFycmF5UGFyc2VkRm9ybXVsYSAqL1xudmFyIHBhcnNlX1hMU0JBcnJheVBhcnNlZEZvcm11bGEgPSBwYXJzZV9YTFNCUGFyc2VkRm9ybXVsYTtcbi8qIFtNUy1YTFNCXSAyLjUuOTcuNCBDZWxsUGFyc2VkRm9ybXVsYSAqL1xudmFyIHBhcnNlX1hMU0JDZWxsUGFyc2VkRm9ybXVsYSA9IHBhcnNlX1hMU0JQYXJzZWRGb3JtdWxhO1xuLyogW01TLVhMU0JdIDIuNS45Ny44IERWUGFyc2VkRm9ybXVsYSAqL1xuLy92YXIgcGFyc2VfWExTQkRWUGFyc2VkRm9ybXVsYSA9IHBhcnNlX1hMU0JQYXJzZWRGb3JtdWxhO1xuLyogW01TLVhMU0JdIDIuNS45Ny45IEZSVFBhcnNlZEZvcm11bGEgKi9cbi8vdmFyIHBhcnNlX1hMU0JGUlRQYXJzZWRGb3JtdWxhID0gcGFyc2VfWExTQlBhcnNlZEZvcm11bGEyO1xuLyogW01TLVhMU0JdIDIuNS45Ny4xMiBOYW1lUGFyc2VkRm9ybXVsYSAqL1xudmFyIHBhcnNlX1hMU0JOYW1lUGFyc2VkRm9ybXVsYSA9IHBhcnNlX1hMU0JQYXJzZWRGb3JtdWxhO1xuLyogW01TLVhMU0JdIDIuNS45Ny45OCBTaGFyZWRQYXJzZWRGb3JtdWxhICovXG52YXIgcGFyc2VfWExTQlNoYXJlZFBhcnNlZEZvcm11bGEgPSBwYXJzZV9YTFNCUGFyc2VkRm9ybXVsYTtcbnZhciBDZXRhYiA9IHtcbiAgMDogXCJCRUVQXCIsXG4gIDE6IFwiT1BFTlwiLFxuICAyOiBcIk9QRU4uTElOS1NcIixcbiAgMzogXCJDTE9TRS5BTExcIixcbiAgNDogXCJTQVZFXCIsXG4gIDU6IFwiU0FWRS5BU1wiLFxuICA2OiBcIkZJTEUuREVMRVRFXCIsXG4gIDc6IFwiUEFHRS5TRVRVUFwiLFxuICA4OiBcIlBSSU5UXCIsXG4gIDk6IFwiUFJJTlRFUi5TRVRVUFwiLFxuICAxMDogXCJRVUlUXCIsXG4gIDExOiBcIk5FVy5XSU5ET1dcIixcbiAgMTI6IFwiQVJSQU5HRS5BTExcIixcbiAgMTM6IFwiV0lORE9XLlNJWkVcIixcbiAgMTQ6IFwiV0lORE9XLk1PVkVcIixcbiAgMTU6IFwiRlVMTFwiLFxuICAxNjogXCJDTE9TRVwiLFxuICAxNzogXCJSVU5cIixcbiAgMjI6IFwiU0VULlBSSU5ULkFSRUFcIixcbiAgMjM6IFwiU0VULlBSSU5ULlRJVExFU1wiLFxuICAyNDogXCJTRVQuUEFHRS5CUkVBS1wiLFxuICAyNTogXCJSRU1PVkUuUEFHRS5CUkVBS1wiLFxuICAyNjogXCJGT05UXCIsXG4gIDI3OiBcIkRJU1BMQVlcIixcbiAgMjg6IFwiUFJPVEVDVC5ET0NVTUVOVFwiLFxuICAyOTogXCJQUkVDSVNJT05cIixcbiAgMzA6IFwiQTEuUjFDMVwiLFxuICAzMTogXCJDQUxDVUxBVEUuTk9XXCIsXG4gIDMyOiBcIkNBTENVTEFUSU9OXCIsXG4gIDM0OiBcIkRBVEEuRklORFwiLFxuICAzNTogXCJFWFRSQUNUXCIsXG4gIDM2OiBcIkRBVEEuREVMRVRFXCIsXG4gIDM3OiBcIlNFVC5EQVRBQkFTRVwiLFxuICAzODogXCJTRVQuQ1JJVEVSSUFcIixcbiAgMzk6IFwiU09SVFwiLFxuICA0MDogXCJEQVRBLlNFUklFU1wiLFxuICA0MTogXCJUQUJMRVwiLFxuICA0MjogXCJGT1JNQVQuTlVNQkVSXCIsXG4gIDQzOiBcIkFMSUdOTUVOVFwiLFxuICA0NDogXCJTVFlMRVwiLFxuICA0NTogXCJCT1JERVJcIixcbiAgNDY6IFwiQ0VMTC5QUk9URUNUSU9OXCIsXG4gIDQ3OiBcIkNPTFVNTi5XSURUSFwiLFxuICA0ODogXCJVTkRPXCIsXG4gIDQ5OiBcIkNVVFwiLFxuICA1MDogXCJDT1BZXCIsXG4gIDUxOiBcIlBBU1RFXCIsXG4gIDUyOiBcIkNMRUFSXCIsXG4gIDUzOiBcIlBBU1RFLlNQRUNJQUxcIixcbiAgNTQ6IFwiRURJVC5ERUxFVEVcIixcbiAgNTU6IFwiSU5TRVJUXCIsXG4gIDU2OiBcIkZJTEwuUklHSFRcIixcbiAgNTc6IFwiRklMTC5ET1dOXCIsXG4gIDYxOiBcIkRFRklORS5OQU1FXCIsXG4gIDYyOiBcIkNSRUFURS5OQU1FU1wiLFxuICA2MzogXCJGT1JNVUxBLkdPVE9cIixcbiAgNjQ6IFwiRk9STVVMQS5GSU5EXCIsXG4gIDY1OiBcIlNFTEVDVC5MQVNULkNFTExcIixcbiAgNjY6IFwiU0hPVy5BQ1RJVkUuQ0VMTFwiLFxuICA2NzogXCJHQUxMRVJZLkFSRUFcIixcbiAgNjg6IFwiR0FMTEVSWS5CQVJcIixcbiAgNjk6IFwiR0FMTEVSWS5DT0xVTU5cIixcbiAgNzA6IFwiR0FMTEVSWS5MSU5FXCIsXG4gIDcxOiBcIkdBTExFUlkuUElFXCIsXG4gIDcyOiBcIkdBTExFUlkuU0NBVFRFUlwiLFxuICA3MzogXCJDT01CSU5BVElPTlwiLFxuICA3NDogXCJQUkVGRVJSRURcIixcbiAgNzU6IFwiQURELk9WRVJMQVlcIixcbiAgNzY6IFwiR1JJRExJTkVTXCIsXG4gIDc3OiBcIlNFVC5QUkVGRVJSRURcIixcbiAgNzg6IFwiQVhFU1wiLFxuICA3OTogXCJMRUdFTkRcIixcbiAgODA6IFwiQVRUQUNILlRFWFRcIixcbiAgODE6IFwiQURELkFSUk9XXCIsXG4gIDgyOiBcIlNFTEVDVC5DSEFSVFwiLFxuICA4MzogXCJTRUxFQ1QuUExPVC5BUkVBXCIsXG4gIDg0OiBcIlBBVFRFUk5TXCIsXG4gIDg1OiBcIk1BSU4uQ0hBUlRcIixcbiAgODY6IFwiT1ZFUkxBWVwiLFxuICA4NzogXCJTQ0FMRVwiLFxuICA4ODogXCJGT1JNQVQuTEVHRU5EXCIsXG4gIDg5OiBcIkZPUk1BVC5URVhUXCIsXG4gIDkwOiBcIkVESVQuUkVQRUFUXCIsXG4gIDkxOiBcIlBBUlNFXCIsXG4gIDkyOiBcIkpVU1RJRllcIixcbiAgOTM6IFwiSElERVwiLFxuICA5NDogXCJVTkhJREVcIixcbiAgOTU6IFwiV09SS1NQQUNFXCIsXG4gIDk2OiBcIkZPUk1VTEFcIixcbiAgOTc6IFwiRk9STVVMQS5GSUxMXCIsXG4gIDk4OiBcIkZPUk1VTEEuQVJSQVlcIixcbiAgOTk6IFwiREFUQS5GSU5ELk5FWFRcIixcbiAgMTAwOiBcIkRBVEEuRklORC5QUkVWXCIsXG4gIDEwMTogXCJGT1JNVUxBLkZJTkQuTkVYVFwiLFxuICAxMDI6IFwiRk9STVVMQS5GSU5ELlBSRVZcIixcbiAgMTAzOiBcIkFDVElWQVRFXCIsXG4gIDEwNDogXCJBQ1RJVkFURS5ORVhUXCIsXG4gIDEwNTogXCJBQ1RJVkFURS5QUkVWXCIsXG4gIDEwNjogXCJVTkxPQ0tFRC5ORVhUXCIsXG4gIDEwNzogXCJVTkxPQ0tFRC5QUkVWXCIsXG4gIDEwODogXCJDT1BZLlBJQ1RVUkVcIixcbiAgMTA5OiBcIlNFTEVDVFwiLFxuICAxMTA6IFwiREVMRVRFLk5BTUVcIixcbiAgMTExOiBcIkRFTEVURS5GT1JNQVRcIixcbiAgMTEyOiBcIlZMSU5FXCIsXG4gIDExMzogXCJITElORVwiLFxuICAxMTQ6IFwiVlBBR0VcIixcbiAgMTE1OiBcIkhQQUdFXCIsXG4gIDExNjogXCJWU0NST0xMXCIsXG4gIDExNzogXCJIU0NST0xMXCIsXG4gIDExODogXCJBTEVSVFwiLFxuICAxMTk6IFwiTkVXXCIsXG4gIDEyMDogXCJDQU5DRUwuQ09QWVwiLFxuICAxMjE6IFwiU0hPVy5DTElQQk9BUkRcIixcbiAgMTIyOiBcIk1FU1NBR0VcIixcbiAgMTI0OiBcIlBBU1RFLkxJTktcIixcbiAgMTI1OiBcIkFQUC5BQ1RJVkFURVwiLFxuICAxMjY6IFwiREVMRVRFLkFSUk9XXCIsXG4gIDEyNzogXCJST1cuSEVJR0hUXCIsXG4gIDEyODogXCJGT1JNQVQuTU9WRVwiLFxuICAxMjk6IFwiRk9STUFULlNJWkVcIixcbiAgMTMwOiBcIkZPUk1VTEEuUkVQTEFDRVwiLFxuICAxMzE6IFwiU0VORC5LRVlTXCIsXG4gIDEzMjogXCJTRUxFQ1QuU1BFQ0lBTFwiLFxuICAxMzM6IFwiQVBQTFkuTkFNRVNcIixcbiAgMTM0OiBcIlJFUExBQ0UuRk9OVFwiLFxuICAxMzU6IFwiRlJFRVpFLlBBTkVTXCIsXG4gIDEzNjogXCJTSE9XLklORk9cIixcbiAgMTM3OiBcIlNQTElUXCIsXG4gIDEzODogXCJPTi5XSU5ET1dcIixcbiAgMTM5OiBcIk9OLkRBVEFcIixcbiAgMTQwOiBcIkRJU0FCTEUuSU5QVVRcIixcbiAgMTQyOiBcIk9VVExJTkVcIixcbiAgMTQzOiBcIkxJU1QuTkFNRVNcIixcbiAgMTQ0OiBcIkZJTEUuQ0xPU0VcIixcbiAgMTQ1OiBcIlNBVkUuV09SS0JPT0tcIixcbiAgMTQ2OiBcIkRBVEEuRk9STVwiLFxuICAxNDc6IFwiQ09QWS5DSEFSVFwiLFxuICAxNDg6IFwiT04uVElNRVwiLFxuICAxNDk6IFwiV0FJVFwiLFxuICAxNTA6IFwiRk9STUFULkZPTlRcIixcbiAgMTUxOiBcIkZJTEwuVVBcIixcbiAgMTUyOiBcIkZJTEwuTEVGVFwiLFxuICAxNTM6IFwiREVMRVRFLk9WRVJMQVlcIixcbiAgMTU1OiBcIlNIT1JULk1FTlVTXCIsXG4gIDE1OTogXCJTRVQuVVBEQVRFLlNUQVRVU1wiLFxuICAxNjE6IFwiQ09MT1IuUEFMRVRURVwiLFxuICAxNjI6IFwiREVMRVRFLlNUWUxFXCIsXG4gIDE2MzogXCJXSU5ET1cuUkVTVE9SRVwiLFxuICAxNjQ6IFwiV0lORE9XLk1BWElNSVpFXCIsXG4gIDE2NjogXCJDSEFOR0UuTElOS1wiLFxuICAxNjc6IFwiQ0FMQ1VMQVRFLkRPQ1VNRU5UXCIsXG4gIDE2ODogXCJPTi5LRVlcIixcbiAgMTY5OiBcIkFQUC5SRVNUT1JFXCIsXG4gIDE3MDogXCJBUFAuTU9WRVwiLFxuICAxNzE6IFwiQVBQLlNJWkVcIixcbiAgMTcyOiBcIkFQUC5NSU5JTUlaRVwiLFxuICAxNzM6IFwiQVBQLk1BWElNSVpFXCIsXG4gIDE3NDogXCJCUklORy5UTy5GUk9OVFwiLFxuICAxNzU6IFwiU0VORC5UTy5CQUNLXCIsXG4gIDE4NTogXCJNQUlOLkNIQVJULlRZUEVcIixcbiAgMTg2OiBcIk9WRVJMQVkuQ0hBUlQuVFlQRVwiLFxuICAxODc6IFwiU0VMRUNULkVORFwiLFxuICAxODg6IFwiT1BFTi5NQUlMXCIsXG4gIDE4OTogXCJTRU5ELk1BSUxcIixcbiAgMTkwOiBcIlNUQU5EQVJELkZPTlRcIixcbiAgMTkxOiBcIkNPTlNPTElEQVRFXCIsXG4gIDE5MjogXCJTT1JULlNQRUNJQUxcIixcbiAgMTkzOiBcIkdBTExFUlkuM0QuQVJFQVwiLFxuICAxOTQ6IFwiR0FMTEVSWS4zRC5DT0xVTU5cIixcbiAgMTk1OiBcIkdBTExFUlkuM0QuTElORVwiLFxuICAxOTY6IFwiR0FMTEVSWS4zRC5QSUVcIixcbiAgMTk3OiBcIlZJRVcuM0RcIixcbiAgMTk4OiBcIkdPQUwuU0VFS1wiLFxuICAxOTk6IFwiV09SS0dST1VQXCIsXG4gIDIwMDogXCJGSUxMLkdST1VQXCIsXG4gIDIwMTogXCJVUERBVEUuTElOS1wiLFxuICAyMDI6IFwiUFJPTU9URVwiLFxuICAyMDM6IFwiREVNT1RFXCIsXG4gIDIwNDogXCJTSE9XLkRFVEFJTFwiLFxuICAyMDY6IFwiVU5HUk9VUFwiLFxuICAyMDc6IFwiT0JKRUNULlBST1BFUlRJRVNcIixcbiAgMjA4OiBcIlNBVkUuTkVXLk9CSkVDVFwiLFxuICAyMDk6IFwiU0hBUkVcIixcbiAgMjEwOiBcIlNIQVJFLk5BTUVcIixcbiAgMjExOiBcIkRVUExJQ0FURVwiLFxuICAyMTI6IFwiQVBQTFkuU1RZTEVcIixcbiAgMjEzOiBcIkFTU0lHTi5UTy5PQkpFQ1RcIixcbiAgMjE0OiBcIk9CSkVDVC5QUk9URUNUSU9OXCIsXG4gIDIxNTogXCJISURFLk9CSkVDVFwiLFxuICAyMTY6IFwiU0VULkVYVFJBQ1RcIixcbiAgMjE3OiBcIkNSRUFURS5QVUJMSVNIRVJcIixcbiAgMjE4OiBcIlNVQlNDUklCRS5UT1wiLFxuICAyMTk6IFwiQVRUUklCVVRFU1wiLFxuICAyMjA6IFwiU0hPVy5UT09MQkFSXCIsXG4gIDIyMjogXCJQUklOVC5QUkVWSUVXXCIsXG4gIDIyMzogXCJFRElULkNPTE9SXCIsXG4gIDIyNDogXCJTSE9XLkxFVkVMU1wiLFxuICAyMjU6IFwiRk9STUFULk1BSU5cIixcbiAgMjI2OiBcIkZPUk1BVC5PVkVSTEFZXCIsXG4gIDIyNzogXCJPTi5SRUNBTENcIixcbiAgMjI4OiBcIkVESVQuU0VSSUVTXCIsXG4gIDIyOTogXCJERUZJTkUuU1RZTEVcIixcbiAgMjQwOiBcIkxJTkUuUFJJTlRcIixcbiAgMjQzOiBcIkVOVEVSLkRBVEFcIixcbiAgMjQ5OiBcIkdBTExFUlkuUkFEQVJcIixcbiAgMjUwOiBcIk1FUkdFLlNUWUxFU1wiLFxuICAyNTE6IFwiRURJVElPTi5PUFRJT05TXCIsXG4gIDI1MjogXCJQQVNURS5QSUNUVVJFXCIsXG4gIDI1MzogXCJQQVNURS5QSUNUVVJFLkxJTktcIixcbiAgMjU0OiBcIlNQRUxMSU5HXCIsXG4gIDI1NjogXCJaT09NXCIsXG4gIDI1OTogXCJJTlNFUlQuT0JKRUNUXCIsXG4gIDI2MDogXCJXSU5ET1cuTUlOSU1JWkVcIixcbiAgMjY1OiBcIlNPVU5ELk5PVEVcIixcbiAgMjY2OiBcIlNPVU5ELlBMQVlcIixcbiAgMjY3OiBcIkZPUk1BVC5TSEFQRVwiLFxuICAyNjg6IFwiRVhURU5ELlBPTFlHT05cIixcbiAgMjY5OiBcIkZPUk1BVC5BVVRPXCIsXG4gIDI3MjogXCJHQUxMRVJZLjNELkJBUlwiLFxuICAyNzM6IFwiR0FMTEVSWS4zRC5TVVJGQUNFXCIsXG4gIDI3NDogXCJGSUxMLkFVVE9cIixcbiAgMjc2OiBcIkNVU1RPTUlaRS5UT09MQkFSXCIsXG4gIDI3NzogXCJBREQuVE9PTFwiLFxuICAyNzg6IFwiRURJVC5PQkpFQ1RcIixcbiAgMjc5OiBcIk9OLkRPVUJMRUNMSUNLXCIsXG4gIDI4MDogXCJPTi5FTlRSWVwiLFxuICAyODE6IFwiV09SS0JPT0suQUREXCIsXG4gIDI4MjogXCJXT1JLQk9PSy5NT1ZFXCIsXG4gIDI4MzogXCJXT1JLQk9PSy5DT1BZXCIsXG4gIDI4NDogXCJXT1JLQk9PSy5PUFRJT05TXCIsXG4gIDI4NTogXCJTQVZFLldPUktTUEFDRVwiLFxuICAyODg6IFwiQ0hBUlQuV0laQVJEXCIsXG4gIDI4OTogXCJERUxFVEUuVE9PTFwiLFxuICAyOTA6IFwiTU9WRS5UT09MXCIsXG4gIDI5MTogXCJXT1JLQk9PSy5TRUxFQ1RcIixcbiAgMjkyOiBcIldPUktCT09LLkFDVElWQVRFXCIsXG4gIDI5MzogXCJBU1NJR04uVE8uVE9PTFwiLFxuICAyOTU6IFwiQ09QWS5UT09MXCIsXG4gIDI5NjogXCJSRVNFVC5UT09MXCIsXG4gIDI5NzogXCJDT05TVFJBSU4uTlVNRVJJQ1wiLFxuICAyOTg6IFwiUEFTVEUuVE9PTFwiLFxuICAzMDI6IFwiV09SS0JPT0suTkVXXCIsXG4gIDMwNTogXCJTQ0VOQVJJTy5DRUxMU1wiLFxuICAzMDY6IFwiU0NFTkFSSU8uREVMRVRFXCIsXG4gIDMwNzogXCJTQ0VOQVJJTy5BRERcIixcbiAgMzA4OiBcIlNDRU5BUklPLkVESVRcIixcbiAgMzA5OiBcIlNDRU5BUklPLlNIT1dcIixcbiAgMzEwOiBcIlNDRU5BUklPLlNIT1cuTkVYVFwiLFxuICAzMTE6IFwiU0NFTkFSSU8uU1VNTUFSWVwiLFxuICAzMTI6IFwiUElWT1QuVEFCTEUuV0laQVJEXCIsXG4gIDMxMzogXCJQSVZPVC5GSUVMRC5QUk9QRVJUSUVTXCIsXG4gIDMxNDogXCJQSVZPVC5GSUVMRFwiLFxuICAzMTU6IFwiUElWT1QuSVRFTVwiLFxuICAzMTY6IFwiUElWT1QuQURELkZJRUxEU1wiLFxuICAzMTg6IFwiT1BUSU9OUy5DQUxDVUxBVElPTlwiLFxuICAzMTk6IFwiT1BUSU9OUy5FRElUXCIsXG4gIDMyMDogXCJPUFRJT05TLlZJRVdcIixcbiAgMzIxOiBcIkFERElOLk1BTkFHRVJcIixcbiAgMzIyOiBcIk1FTlUuRURJVE9SXCIsXG4gIDMyMzogXCJBVFRBQ0guVE9PTEJBUlNcIixcbiAgMzI0OiBcIlZCQUFjdGl2YXRlXCIsXG4gIDMyNTogXCJPUFRJT05TLkNIQVJUXCIsXG4gIDMyODogXCJWQkEuSU5TRVJULkZJTEVcIixcbiAgMzMwOiBcIlZCQS5QUk9DRURVUkUuREVGSU5JVElPTlwiLFxuICAzMzY6IFwiUk9VVElORy5TTElQXCIsXG4gIDMzODogXCJST1VURS5ET0NVTUVOVFwiLFxuICAzMzk6IFwiTUFJTC5MT0dPTlwiLFxuICAzNDI6IFwiSU5TRVJULlBJQ1RVUkVcIixcbiAgMzQzOiBcIkVESVQuVE9PTFwiLFxuICAzNDQ6IFwiR0FMTEVSWS5ET1VHSE5VVFwiLFxuICAzNTA6IFwiQ0hBUlQuVFJFTkRcIixcbiAgMzUyOiBcIlBJVk9ULklURU0uUFJPUEVSVElFU1wiLFxuICAzNTQ6IFwiV09SS0JPT0suSU5TRVJUXCIsXG4gIDM1NTogXCJPUFRJT05TLlRSQU5TSVRJT05cIixcbiAgMzU2OiBcIk9QVElPTlMuR0VORVJBTFwiLFxuICAzNzA6IFwiRklMVEVSLkFEVkFOQ0VEXCIsXG4gIDM3MzogXCJNQUlMLkFERC5NQUlMRVJcIixcbiAgMzc0OiBcIk1BSUwuREVMRVRFLk1BSUxFUlwiLFxuICAzNzU6IFwiTUFJTC5SRVBMWVwiLFxuICAzNzY6IFwiTUFJTC5SRVBMWS5BTExcIixcbiAgMzc3OiBcIk1BSUwuRk9SV0FSRFwiLFxuICAzNzg6IFwiTUFJTC5ORVhULkxFVFRFUlwiLFxuICAzNzk6IFwiREFUQS5MQUJFTFwiLFxuICAzODA6IFwiSU5TRVJULlRJVExFXCIsXG4gIDM4MTogXCJGT05ULlBST1BFUlRJRVNcIixcbiAgMzgyOiBcIk1BQ1JPLk9QVElPTlNcIixcbiAgMzgzOiBcIldPUktCT09LLkhJREVcIixcbiAgMzg0OiBcIldPUktCT09LLlVOSElERVwiLFxuICAzODU6IFwiV09SS0JPT0suREVMRVRFXCIsXG4gIDM4NjogXCJXT1JLQk9PSy5OQU1FXCIsXG4gIDM4ODogXCJHQUxMRVJZLkNVU1RPTVwiLFxuICAzOTA6IFwiQURELkNIQVJULkFVVE9GT1JNQVRcIixcbiAgMzkxOiBcIkRFTEVURS5DSEFSVC5BVVRPRk9STUFUXCIsXG4gIDM5MjogXCJDSEFSVC5BREQuREFUQVwiLFxuICAzOTM6IFwiQVVUTy5PVVRMSU5FXCIsXG4gIDM5NDogXCJUQUIuT1JERVJcIixcbiAgMzk1OiBcIlNIT1cuRElBTE9HXCIsXG4gIDM5NjogXCJTRUxFQ1QuQUxMXCIsXG4gIDM5NzogXCJVTkdST1VQLlNIRUVUU1wiLFxuICAzOTg6IFwiU1VCVE9UQUwuQ1JFQVRFXCIsXG4gIDM5OTogXCJTVUJUT1RBTC5SRU1PVkVcIixcbiAgNDAwOiBcIlJFTkFNRS5PQkpFQ1RcIixcbiAgNDEyOiBcIldPUktCT09LLlNDUk9MTFwiLFxuICA0MTM6IFwiV09SS0JPT0suTkVYVFwiLFxuICA0MTQ6IFwiV09SS0JPT0suUFJFVlwiLFxuICA0MTU6IFwiV09SS0JPT0suVEFCLlNQTElUXCIsXG4gIDQxNjogXCJGVUxMLlNDUkVFTlwiLFxuICA0MTc6IFwiV09SS0JPT0suUFJPVEVDVFwiLFxuICA0MjA6IFwiU0NST0xMQkFSLlBST1BFUlRJRVNcIixcbiAgNDIxOiBcIlBJVk9ULlNIT1cuUEFHRVNcIixcbiAgNDIyOiBcIlRFWFQuVE8uQ09MVU1OU1wiLFxuICA0MjM6IFwiRk9STUFULkNIQVJUVFlQRVwiLFxuICA0MjQ6IFwiTElOSy5GT1JNQVRcIixcbiAgNDI1OiBcIlRSQUNFUi5ESVNQTEFZXCIsXG4gIDQzMDogXCJUUkFDRVIuTkFWSUdBVEVcIixcbiAgNDMxOiBcIlRSQUNFUi5DTEVBUlwiLFxuICA0MzI6IFwiVFJBQ0VSLkVSUk9SXCIsXG4gIDQzMzogXCJQSVZPVC5GSUVMRC5HUk9VUFwiLFxuICA0MzQ6IFwiUElWT1QuRklFTEQuVU5HUk9VUFwiLFxuICA0MzU6IFwiQ0hFQ0tCT1guUFJPUEVSVElFU1wiLFxuICA0MzY6IFwiTEFCRUwuUFJPUEVSVElFU1wiLFxuICA0Mzc6IFwiTElTVEJPWC5QUk9QRVJUSUVTXCIsXG4gIDQzODogXCJFRElUQk9YLlBST1BFUlRJRVNcIixcbiAgNDM5OiBcIlBJVk9ULlJFRlJFU0hcIixcbiAgNDQwOiBcIkxJTksuQ09NQk9cIixcbiAgNDQxOiBcIk9QRU4uVEVYVFwiLFxuICA0NDI6IFwiSElERS5ESUFMT0dcIixcbiAgNDQzOiBcIlNFVC5ESUFMT0cuRk9DVVNcIixcbiAgNDQ0OiBcIkVOQUJMRS5PQkpFQ1RcIixcbiAgNDQ1OiBcIlBVU0hCVVRUT04uUFJPUEVSVElFU1wiLFxuICA0NDY6IFwiU0VULkRJQUxPRy5ERUZBVUxUXCIsXG4gIDQ0NzogXCJGSUxURVJcIixcbiAgNDQ4OiBcIkZJTFRFUi5TSE9XLkFMTFwiLFxuICA0NDk6IFwiQ0xFQVIuT1VUTElORVwiLFxuICA0NTA6IFwiRlVOQ1RJT04uV0laQVJEXCIsXG4gIDQ1MTogXCJBREQuTElTVC5JVEVNXCIsXG4gIDQ1MjogXCJTRVQuTElTVC5JVEVNXCIsXG4gIDQ1MzogXCJSRU1PVkUuTElTVC5JVEVNXCIsXG4gIDQ1NDogXCJTRUxFQ1QuTElTVC5JVEVNXCIsXG4gIDQ1NTogXCJTRVQuQ09OVFJPTC5WQUxVRVwiLFxuICA0NTY6IFwiU0FWRS5DT1BZLkFTXCIsXG4gIDQ1ODogXCJPUFRJT05TLkxJU1RTLkFERFwiLFxuICA0NTk6IFwiT1BUSU9OUy5MSVNUUy5ERUxFVEVcIixcbiAgNDYwOiBcIlNFUklFUy5BWEVTXCIsXG4gIDQ2MTogXCJTRVJJRVMuWFwiLFxuICA0NjI6IFwiU0VSSUVTLllcIixcbiAgNDYzOiBcIkVSUk9SQkFSLlhcIixcbiAgNDY0OiBcIkVSUk9SQkFSLllcIixcbiAgNDY1OiBcIkZPUk1BVC5DSEFSVFwiLFxuICA0NjY6IFwiU0VSSUVTLk9SREVSXCIsXG4gIDQ2NzogXCJNQUlMLkxPR09GRlwiLFxuICA0Njg6IFwiQ0xFQVIuUk9VVElORy5TTElQXCIsXG4gIDQ2OTogXCJBUFAuQUNUSVZBVEUuTUlDUk9TT0ZUXCIsXG4gIDQ3MDogXCJNQUlMLkVESVQuTUFJTEVSXCIsXG4gIDQ3MTogXCJPTi5TSEVFVFwiLFxuICA0NzI6IFwiU1RBTkRBUkQuV0lEVEhcIixcbiAgNDczOiBcIlNDRU5BUklPLk1FUkdFXCIsXG4gIDQ3NDogXCJTVU1NQVJZLklORk9cIixcbiAgNDc1OiBcIkZJTkQuRklMRVwiLFxuICA0NzY6IFwiQUNUSVZFLkNFTEwuRk9OVFwiLFxuICA0Nzc6IFwiRU5BQkxFLlRJUFdJWkFSRFwiLFxuICA0Nzg6IFwiVkJBLk1BS0UuQURESU5cIixcbiAgNDgwOiBcIklOU0VSVERBVEFUQUJMRVwiLFxuICA0ODE6IFwiV09SS0dST1VQLk9QVElPTlNcIixcbiAgNDgyOiBcIk1BSUwuU0VORC5NQUlMRVJcIixcbiAgNDg1OiBcIkFVVE9DT1JSRUNUXCIsXG4gIDQ4OTogXCJQT1NULkRPQ1VNRU5UXCIsXG4gIDQ5MTogXCJQSUNLTElTVFwiLFxuICA0OTM6IFwiVklFVy5TSE9XXCIsXG4gIDQ5NDogXCJWSUVXLkRFRklORVwiLFxuICA0OTU6IFwiVklFVy5ERUxFVEVcIixcbiAgNTA5OiBcIlNIRUVULkJBQ0tHUk9VTkRcIixcbiAgNTEwOiBcIklOU0VSVC5NQVAuT0JKRUNUXCIsXG4gIDUxMTogXCJPUFRJT05TLk1FTk9OT1wiLFxuICA1MTc6IFwiTVNPQ0hFQ0tTXCIsXG4gIDUxODogXCJOT1JNQUxcIixcbiAgNTE5OiBcIkxBWU9VVFwiLFxuICA1MjA6IFwiUk0uUFJJTlQuQVJFQVwiLFxuICA1MjE6IFwiQ0xFQVIuUFJJTlQuQVJFQVwiLFxuICA1MjI6IFwiQURELlBSSU5ULkFSRUFcIixcbiAgNTIzOiBcIk1PVkUuQlJLXCIsXG4gIDU0NTogXCJISURFQ1VSUi5OT1RFXCIsXG4gIDU0NjogXCJISURFQUxMLk5PVEVTXCIsXG4gIDU0NzogXCJERUxFVEUuTk9URVwiLFxuICA1NDg6IFwiVFJBVkVSU0UuTk9URVNcIixcbiAgNTQ5OiBcIkFDVElWQVRFLk5PVEVTXCIsXG4gIDYyMDogXCJQUk9URUNULlJFVklTSU9OU1wiLFxuICA2MjE6IFwiVU5QUk9URUNULlJFVklTSU9OU1wiLFxuICA2NDc6IFwiT1BUSU9OUy5NRVwiLFxuICA2NTM6IFwiV0VCLlBVQkxJU0hcIixcbiAgNjY3OiBcIk5FV1dFQlFVRVJZXCIsXG4gIDY3MzogXCJQSVZPVC5UQUJMRS5DSEFSVFwiLFxuICA3NTM6IFwiT1BUSU9OUy5TQVZFXCIsXG4gIDc1NTogXCJPUFRJT05TLlNQRUxMXCIsXG4gIDgwODogXCJISURFQUxMLklOS0FOTk9UU1wiXG59O1xudmFyIEZ0YWIgPSB7XG4gIDA6IFwiQ09VTlRcIixcbiAgMTogXCJJRlwiLFxuICAyOiBcIklTTkFcIixcbiAgMzogXCJJU0VSUk9SXCIsXG4gIDQ6IFwiU1VNXCIsXG4gIDU6IFwiQVZFUkFHRVwiLFxuICA2OiBcIk1JTlwiLFxuICA3OiBcIk1BWFwiLFxuICA4OiBcIlJPV1wiLFxuICA5OiBcIkNPTFVNTlwiLFxuICAxMDogXCJOQVwiLFxuICAxMTogXCJOUFZcIixcbiAgMTI6IFwiU1RERVZcIixcbiAgMTM6IFwiRE9MTEFSXCIsXG4gIDE0OiBcIkZJWEVEXCIsXG4gIDE1OiBcIlNJTlwiLFxuICAxNjogXCJDT1NcIixcbiAgMTc6IFwiVEFOXCIsXG4gIDE4OiBcIkFUQU5cIixcbiAgMTk6IFwiUElcIixcbiAgMjA6IFwiU1FSVFwiLFxuICAyMTogXCJFWFBcIixcbiAgMjI6IFwiTE5cIixcbiAgMjM6IFwiTE9HMTBcIixcbiAgMjQ6IFwiQUJTXCIsXG4gIDI1OiBcIklOVFwiLFxuICAyNjogXCJTSUdOXCIsXG4gIDI3OiBcIlJPVU5EXCIsXG4gIDI4OiBcIkxPT0tVUFwiLFxuICAyOTogXCJJTkRFWFwiLFxuICAzMDogXCJSRVBUXCIsXG4gIDMxOiBcIk1JRFwiLFxuICAzMjogXCJMRU5cIixcbiAgMzM6IFwiVkFMVUVcIixcbiAgMzQ6IFwiVFJVRVwiLFxuICAzNTogXCJGQUxTRVwiLFxuICAzNjogXCJBTkRcIixcbiAgMzc6IFwiT1JcIixcbiAgMzg6IFwiTk9UXCIsXG4gIDM5OiBcIk1PRFwiLFxuICA0MDogXCJEQ09VTlRcIixcbiAgNDE6IFwiRFNVTVwiLFxuICA0MjogXCJEQVZFUkFHRVwiLFxuICA0MzogXCJETUlOXCIsXG4gIDQ0OiBcIkRNQVhcIixcbiAgNDU6IFwiRFNUREVWXCIsXG4gIDQ2OiBcIlZBUlwiLFxuICA0NzogXCJEVkFSXCIsXG4gIDQ4OiBcIlRFWFRcIixcbiAgNDk6IFwiTElORVNUXCIsXG4gIDUwOiBcIlRSRU5EXCIsXG4gIDUxOiBcIkxPR0VTVFwiLFxuICA1MjogXCJHUk9XVEhcIixcbiAgNTM6IFwiR09UT1wiLFxuICA1NDogXCJIQUxUXCIsXG4gIDU1OiBcIlJFVFVSTlwiLFxuICA1NjogXCJQVlwiLFxuICA1NzogXCJGVlwiLFxuICA1ODogXCJOUEVSXCIsXG4gIDU5OiBcIlBNVFwiLFxuICA2MDogXCJSQVRFXCIsXG4gIDYxOiBcIk1JUlJcIixcbiAgNjI6IFwiSVJSXCIsXG4gIDYzOiBcIlJBTkRcIixcbiAgNjQ6IFwiTUFUQ0hcIixcbiAgNjU6IFwiREFURVwiLFxuICA2NjogXCJUSU1FXCIsXG4gIDY3OiBcIkRBWVwiLFxuICA2ODogXCJNT05USFwiLFxuICA2OTogXCJZRUFSXCIsXG4gIDcwOiBcIldFRUtEQVlcIixcbiAgNzE6IFwiSE9VUlwiLFxuICA3MjogXCJNSU5VVEVcIixcbiAgNzM6IFwiU0VDT05EXCIsXG4gIDc0OiBcIk5PV1wiLFxuICA3NTogXCJBUkVBU1wiLFxuICA3NjogXCJST1dTXCIsXG4gIDc3OiBcIkNPTFVNTlNcIixcbiAgNzg6IFwiT0ZGU0VUXCIsXG4gIDc5OiBcIkFCU1JFRlwiLFxuICA4MDogXCJSRUxSRUZcIixcbiAgODE6IFwiQVJHVU1FTlRcIixcbiAgODI6IFwiU0VBUkNIXCIsXG4gIDgzOiBcIlRSQU5TUE9TRVwiLFxuICA4NDogXCJFUlJPUlwiLFxuICA4NTogXCJTVEVQXCIsXG4gIDg2OiBcIlRZUEVcIixcbiAgODc6IFwiRUNIT1wiLFxuICA4ODogXCJTRVQuTkFNRVwiLFxuICA4OTogXCJDQUxMRVJcIixcbiAgOTA6IFwiREVSRUZcIixcbiAgOTE6IFwiV0lORE9XU1wiLFxuICA5MjogXCJTRVJJRVNcIixcbiAgOTM6IFwiRE9DVU1FTlRTXCIsXG4gIDk0OiBcIkFDVElWRS5DRUxMXCIsXG4gIDk1OiBcIlNFTEVDVElPTlwiLFxuICA5NjogXCJSRVNVTFRcIixcbiAgOTc6IFwiQVRBTjJcIixcbiAgOTg6IFwiQVNJTlwiLFxuICA5OTogXCJBQ09TXCIsXG4gIDEwMDogXCJDSE9PU0VcIixcbiAgMTAxOiBcIkhMT09LVVBcIixcbiAgMTAyOiBcIlZMT09LVVBcIixcbiAgMTAzOiBcIkxJTktTXCIsXG4gIDEwNDogXCJJTlBVVFwiLFxuICAxMDU6IFwiSVNSRUZcIixcbiAgMTA2OiBcIkdFVC5GT1JNVUxBXCIsXG4gIDEwNzogXCJHRVQuTkFNRVwiLFxuICAxMDg6IFwiU0VULlZBTFVFXCIsXG4gIDEwOTogXCJMT0dcIixcbiAgMTEwOiBcIkVYRUNcIixcbiAgMTExOiBcIkNIQVJcIixcbiAgMTEyOiBcIkxPV0VSXCIsXG4gIDExMzogXCJVUFBFUlwiLFxuICAxMTQ6IFwiUFJPUEVSXCIsXG4gIDExNTogXCJMRUZUXCIsXG4gIDExNjogXCJSSUdIVFwiLFxuICAxMTc6IFwiRVhBQ1RcIixcbiAgMTE4OiBcIlRSSU1cIixcbiAgMTE5OiBcIlJFUExBQ0VcIixcbiAgMTIwOiBcIlNVQlNUSVRVVEVcIixcbiAgMTIxOiBcIkNPREVcIixcbiAgMTIyOiBcIk5BTUVTXCIsXG4gIDEyMzogXCJESVJFQ1RPUllcIixcbiAgMTI0OiBcIkZJTkRcIixcbiAgMTI1OiBcIkNFTExcIixcbiAgMTI2OiBcIklTRVJSXCIsXG4gIDEyNzogXCJJU1RFWFRcIixcbiAgMTI4OiBcIklTTlVNQkVSXCIsXG4gIDEyOTogXCJJU0JMQU5LXCIsXG4gIDEzMDogXCJUXCIsXG4gIDEzMTogXCJOXCIsXG4gIDEzMjogXCJGT1BFTlwiLFxuICAxMzM6IFwiRkNMT1NFXCIsXG4gIDEzNDogXCJGU0laRVwiLFxuICAxMzU6IFwiRlJFQURMTlwiLFxuICAxMzY6IFwiRlJFQURcIixcbiAgMTM3OiBcIkZXUklURUxOXCIsXG4gIDEzODogXCJGV1JJVEVcIixcbiAgMTM5OiBcIkZQT1NcIixcbiAgMTQwOiBcIkRBVEVWQUxVRVwiLFxuICAxNDE6IFwiVElNRVZBTFVFXCIsXG4gIDE0MjogXCJTTE5cIixcbiAgMTQzOiBcIlNZRFwiLFxuICAxNDQ6IFwiRERCXCIsXG4gIDE0NTogXCJHRVQuREVGXCIsXG4gIDE0NjogXCJSRUZURVhUXCIsXG4gIDE0NzogXCJURVhUUkVGXCIsXG4gIDE0ODogXCJJTkRJUkVDVFwiLFxuICAxNDk6IFwiUkVHSVNURVJcIixcbiAgMTUwOiBcIkNBTExcIixcbiAgMTUxOiBcIkFERC5CQVJcIixcbiAgMTUyOiBcIkFERC5NRU5VXCIsXG4gIDE1MzogXCJBREQuQ09NTUFORFwiLFxuICAxNTQ6IFwiRU5BQkxFLkNPTU1BTkRcIixcbiAgMTU1OiBcIkNIRUNLLkNPTU1BTkRcIixcbiAgMTU2OiBcIlJFTkFNRS5DT01NQU5EXCIsXG4gIDE1NzogXCJTSE9XLkJBUlwiLFxuICAxNTg6IFwiREVMRVRFLk1FTlVcIixcbiAgMTU5OiBcIkRFTEVURS5DT01NQU5EXCIsXG4gIDE2MDogXCJHRVQuQ0hBUlQuSVRFTVwiLFxuICAxNjE6IFwiRElBTE9HLkJPWFwiLFxuICAxNjI6IFwiQ0xFQU5cIixcbiAgMTYzOiBcIk1ERVRFUk1cIixcbiAgMTY0OiBcIk1JTlZFUlNFXCIsXG4gIDE2NTogXCJNTVVMVFwiLFxuICAxNjY6IFwiRklMRVNcIixcbiAgMTY3OiBcIklQTVRcIixcbiAgMTY4OiBcIlBQTVRcIixcbiAgMTY5OiBcIkNPVU5UQVwiLFxuICAxNzA6IFwiQ0FOQ0VMLktFWVwiLFxuICAxNzE6IFwiRk9SXCIsXG4gIDE3MjogXCJXSElMRVwiLFxuICAxNzM6IFwiQlJFQUtcIixcbiAgMTc0OiBcIk5FWFRcIixcbiAgMTc1OiBcIklOSVRJQVRFXCIsXG4gIDE3NjogXCJSRVFVRVNUXCIsXG4gIDE3NzogXCJQT0tFXCIsXG4gIDE3ODogXCJFWEVDVVRFXCIsXG4gIDE3OTogXCJURVJNSU5BVEVcIixcbiAgMTgwOiBcIlJFU1RBUlRcIixcbiAgMTgxOiBcIkhFTFBcIixcbiAgMTgyOiBcIkdFVC5CQVJcIixcbiAgMTgzOiBcIlBST0RVQ1RcIixcbiAgMTg0OiBcIkZBQ1RcIixcbiAgMTg1OiBcIkdFVC5DRUxMXCIsXG4gIDE4NjogXCJHRVQuV09SS1NQQUNFXCIsXG4gIDE4NzogXCJHRVQuV0lORE9XXCIsXG4gIDE4ODogXCJHRVQuRE9DVU1FTlRcIixcbiAgMTg5OiBcIkRQUk9EVUNUXCIsXG4gIDE5MDogXCJJU05PTlRFWFRcIixcbiAgMTkxOiBcIkdFVC5OT1RFXCIsXG4gIDE5MjogXCJOT1RFXCIsXG4gIDE5MzogXCJTVERFVlBcIixcbiAgMTk0OiBcIlZBUlBcIixcbiAgMTk1OiBcIkRTVERFVlBcIixcbiAgMTk2OiBcIkRWQVJQXCIsXG4gIDE5NzogXCJUUlVOQ1wiLFxuICAxOTg6IFwiSVNMT0dJQ0FMXCIsXG4gIDE5OTogXCJEQ09VTlRBXCIsXG4gIDIwMDogXCJERUxFVEUuQkFSXCIsXG4gIDIwMTogXCJVTlJFR0lTVEVSXCIsXG4gIDIwNDogXCJVU0RPTExBUlwiLFxuICAyMDU6IFwiRklOREJcIixcbiAgMjA2OiBcIlNFQVJDSEJcIixcbiAgMjA3OiBcIlJFUExBQ0VCXCIsXG4gIDIwODogXCJMRUZUQlwiLFxuICAyMDk6IFwiUklHSFRCXCIsXG4gIDIxMDogXCJNSURCXCIsXG4gIDIxMTogXCJMRU5CXCIsXG4gIDIxMjogXCJST1VORFVQXCIsXG4gIDIxMzogXCJST1VORERPV05cIixcbiAgMjE0OiBcIkFTQ1wiLFxuICAyMTU6IFwiREJDU1wiLFxuICAyMTY6IFwiUkFOS1wiLFxuICAyMTk6IFwiQUREUkVTU1wiLFxuICAyMjA6IFwiREFZUzM2MFwiLFxuICAyMjE6IFwiVE9EQVlcIixcbiAgMjIyOiBcIlZEQlwiLFxuICAyMjM6IFwiRUxTRVwiLFxuICAyMjQ6IFwiRUxTRS5JRlwiLFxuICAyMjU6IFwiRU5ELklGXCIsXG4gIDIyNjogXCJGT1IuQ0VMTFwiLFxuICAyMjc6IFwiTUVESUFOXCIsXG4gIDIyODogXCJTVU1QUk9EVUNUXCIsXG4gIDIyOTogXCJTSU5IXCIsXG4gIDIzMDogXCJDT1NIXCIsXG4gIDIzMTogXCJUQU5IXCIsXG4gIDIzMjogXCJBU0lOSFwiLFxuICAyMzM6IFwiQUNPU0hcIixcbiAgMjM0OiBcIkFUQU5IXCIsXG4gIDIzNTogXCJER0VUXCIsXG4gIDIzNjogXCJDUkVBVEUuT0JKRUNUXCIsXG4gIDIzNzogXCJWT0xBVElMRVwiLFxuICAyMzg6IFwiTEFTVC5FUlJPUlwiLFxuICAyMzk6IFwiQ1VTVE9NLlVORE9cIixcbiAgMjQwOiBcIkNVU1RPTS5SRVBFQVRcIixcbiAgMjQxOiBcIkZPUk1VTEEuQ09OVkVSVFwiLFxuICAyNDI6IFwiR0VULkxJTksuSU5GT1wiLFxuICAyNDM6IFwiVEVYVC5CT1hcIixcbiAgMjQ0OiBcIklORk9cIixcbiAgMjQ1OiBcIkdST1VQXCIsXG4gIDI0NjogXCJHRVQuT0JKRUNUXCIsXG4gIDI0NzogXCJEQlwiLFxuICAyNDg6IFwiUEFVU0VcIixcbiAgMjUxOiBcIlJFU1VNRVwiLFxuICAyNTI6IFwiRlJFUVVFTkNZXCIsXG4gIDI1MzogXCJBREQuVE9PTEJBUlwiLFxuICAyNTQ6IFwiREVMRVRFLlRPT0xCQVJcIixcbiAgMjU1OiBcIlVzZXJcIixcbiAgMjU2OiBcIlJFU0VULlRPT0xCQVJcIixcbiAgMjU3OiBcIkVWQUxVQVRFXCIsXG4gIDI1ODogXCJHRVQuVE9PTEJBUlwiLFxuICAyNTk6IFwiR0VULlRPT0xcIixcbiAgMjYwOiBcIlNQRUxMSU5HLkNIRUNLXCIsXG4gIDI2MTogXCJFUlJPUi5UWVBFXCIsXG4gIDI2MjogXCJBUFAuVElUTEVcIixcbiAgMjYzOiBcIldJTkRPVy5USVRMRVwiLFxuICAyNjQ6IFwiU0FWRS5UT09MQkFSXCIsXG4gIDI2NTogXCJFTkFCTEUuVE9PTFwiLFxuICAyNjY6IFwiUFJFU1MuVE9PTFwiLFxuICAyNjc6IFwiUkVHSVNURVIuSURcIixcbiAgMjY4OiBcIkdFVC5XT1JLQk9PS1wiLFxuICAyNjk6IFwiQVZFREVWXCIsXG4gIDI3MDogXCJCRVRBRElTVFwiLFxuICAyNzE6IFwiR0FNTUFMTlwiLFxuICAyNzI6IFwiQkVUQUlOVlwiLFxuICAyNzM6IFwiQklOT01ESVNUXCIsXG4gIDI3NDogXCJDSElESVNUXCIsXG4gIDI3NTogXCJDSElJTlZcIixcbiAgMjc2OiBcIkNPTUJJTlwiLFxuICAyNzc6IFwiQ09ORklERU5DRVwiLFxuICAyNzg6IFwiQ1JJVEJJTk9NXCIsXG4gIDI3OTogXCJFVkVOXCIsXG4gIDI4MDogXCJFWFBPTkRJU1RcIixcbiAgMjgxOiBcIkZESVNUXCIsXG4gIDI4MjogXCJGSU5WXCIsXG4gIDI4MzogXCJGSVNIRVJcIixcbiAgMjg0OiBcIkZJU0hFUklOVlwiLFxuICAyODU6IFwiRkxPT1JcIixcbiAgMjg2OiBcIkdBTU1BRElTVFwiLFxuICAyODc6IFwiR0FNTUFJTlZcIixcbiAgMjg4OiBcIkNFSUxJTkdcIixcbiAgMjg5OiBcIkhZUEdFT01ESVNUXCIsXG4gIDI5MDogXCJMT0dOT1JNRElTVFwiLFxuICAyOTE6IFwiTE9HSU5WXCIsXG4gIDI5MjogXCJORUdCSU5PTURJU1RcIixcbiAgMjkzOiBcIk5PUk1ESVNUXCIsXG4gIDI5NDogXCJOT1JNU0RJU1RcIixcbiAgMjk1OiBcIk5PUk1JTlZcIixcbiAgMjk2OiBcIk5PUk1TSU5WXCIsXG4gIDI5NzogXCJTVEFOREFSRElaRVwiLFxuICAyOTg6IFwiT0REXCIsXG4gIDI5OTogXCJQRVJNVVRcIixcbiAgMzAwOiBcIlBPSVNTT05cIixcbiAgMzAxOiBcIlRESVNUXCIsXG4gIDMwMjogXCJXRUlCVUxMXCIsXG4gIDMwMzogXCJTVU1YTVkyXCIsXG4gIDMwNDogXCJTVU1YMk1ZMlwiLFxuICAzMDU6IFwiU1VNWDJQWTJcIixcbiAgMzA2OiBcIkNISVRFU1RcIixcbiAgMzA3OiBcIkNPUlJFTFwiLFxuICAzMDg6IFwiQ09WQVJcIixcbiAgMzA5OiBcIkZPUkVDQVNUXCIsXG4gIDMxMDogXCJGVEVTVFwiLFxuICAzMTE6IFwiSU5URVJDRVBUXCIsXG4gIDMxMjogXCJQRUFSU09OXCIsXG4gIDMxMzogXCJSU1FcIixcbiAgMzE0OiBcIlNURVlYXCIsXG4gIDMxNTogXCJTTE9QRVwiLFxuICAzMTY6IFwiVFRFU1RcIixcbiAgMzE3OiBcIlBST0JcIixcbiAgMzE4OiBcIkRFVlNRXCIsXG4gIDMxOTogXCJHRU9NRUFOXCIsXG4gIDMyMDogXCJIQVJNRUFOXCIsXG4gIDMyMTogXCJTVU1TUVwiLFxuICAzMjI6IFwiS1VSVFwiLFxuICAzMjM6IFwiU0tFV1wiLFxuICAzMjQ6IFwiWlRFU1RcIixcbiAgMzI1OiBcIkxBUkdFXCIsXG4gIDMyNjogXCJTTUFMTFwiLFxuICAzMjc6IFwiUVVBUlRJTEVcIixcbiAgMzI4OiBcIlBFUkNFTlRJTEVcIixcbiAgMzI5OiBcIlBFUkNFTlRSQU5LXCIsXG4gIDMzMDogXCJNT0RFXCIsXG4gIDMzMTogXCJUUklNTUVBTlwiLFxuICAzMzI6IFwiVElOVlwiLFxuICAzMzQ6IFwiTU9WSUUuQ09NTUFORFwiLFxuICAzMzU6IFwiR0VULk1PVklFXCIsXG4gIDMzNjogXCJDT05DQVRFTkFURVwiLFxuICAzMzc6IFwiUE9XRVJcIixcbiAgMzM4OiBcIlBJVk9ULkFERC5EQVRBXCIsXG4gIDMzOTogXCJHRVQuUElWT1QuVEFCTEVcIixcbiAgMzQwOiBcIkdFVC5QSVZPVC5GSUVMRFwiLFxuICAzNDE6IFwiR0VULlBJVk9ULklURU1cIixcbiAgMzQyOiBcIlJBRElBTlNcIixcbiAgMzQzOiBcIkRFR1JFRVNcIixcbiAgMzQ0OiBcIlNVQlRPVEFMXCIsXG4gIDM0NTogXCJTVU1JRlwiLFxuICAzNDY6IFwiQ09VTlRJRlwiLFxuICAzNDc6IFwiQ09VTlRCTEFOS1wiLFxuICAzNDg6IFwiU0NFTkFSSU8uR0VUXCIsXG4gIDM0OTogXCJPUFRJT05TLkxJU1RTLkdFVFwiLFxuICAzNTA6IFwiSVNQTVRcIixcbiAgMzUxOiBcIkRBVEVESUZcIixcbiAgMzUyOiBcIkRBVEVTVFJJTkdcIixcbiAgMzUzOiBcIk5VTUJFUlNUUklOR1wiLFxuICAzNTQ6IFwiUk9NQU5cIixcbiAgMzU1OiBcIk9QRU4uRElBTE9HXCIsXG4gIDM1NjogXCJTQVZFLkRJQUxPR1wiLFxuICAzNTc6IFwiVklFVy5HRVRcIixcbiAgMzU4OiBcIkdFVFBJVk9UREFUQVwiLFxuICAzNTk6IFwiSFlQRVJMSU5LXCIsXG4gIDM2MDogXCJQSE9ORVRJQ1wiLFxuICAzNjE6IFwiQVZFUkFHRUFcIixcbiAgMzYyOiBcIk1BWEFcIixcbiAgMzYzOiBcIk1JTkFcIixcbiAgMzY0OiBcIlNUREVWUEFcIixcbiAgMzY1OiBcIlZBUlBBXCIsXG4gIDM2NjogXCJTVERFVkFcIixcbiAgMzY3OiBcIlZBUkFcIixcbiAgMzY4OiBcIkJBSFRURVhUXCIsXG4gIDM2OTogXCJUSEFJREFZT0ZXRUVLXCIsXG4gIDM3MDogXCJUSEFJRElHSVRcIixcbiAgMzcxOiBcIlRIQUlNT05USE9GWUVBUlwiLFxuICAzNzI6IFwiVEhBSU5VTVNPVU5EXCIsXG4gIDM3MzogXCJUSEFJTlVNU1RSSU5HXCIsXG4gIDM3NDogXCJUSEFJU1RSSU5HTEVOR1RIXCIsXG4gIDM3NTogXCJJU1RIQUlESUdJVFwiLFxuICAzNzY6IFwiUk9VTkRCQUhURE9XTlwiLFxuICAzNzc6IFwiUk9VTkRCQUhUVVBcIixcbiAgMzc4OiBcIlRIQUlZRUFSXCIsXG4gIDM3OTogXCJSVERcIixcbiAgMzgwOiBcIkNVQkVWQUxVRVwiLFxuICAzODE6IFwiQ1VCRU1FTUJFUlwiLFxuICAzODI6IFwiQ1VCRU1FTUJFUlBST1BFUlRZXCIsXG4gIDM4MzogXCJDVUJFUkFOS0VETUVNQkVSXCIsXG4gIDM4NDogXCJIRVgyQklOXCIsXG4gIDM4NTogXCJIRVgyREVDXCIsXG4gIDM4NjogXCJIRVgyT0NUXCIsXG4gIDM4NzogXCJERUMyQklOXCIsXG4gIDM4ODogXCJERUMySEVYXCIsXG4gIDM4OTogXCJERUMyT0NUXCIsXG4gIDM5MDogXCJPQ1QyQklOXCIsXG4gIDM5MTogXCJPQ1QySEVYXCIsXG4gIDM5MjogXCJPQ1QyREVDXCIsXG4gIDM5MzogXCJCSU4yREVDXCIsXG4gIDM5NDogXCJCSU4yT0NUXCIsXG4gIDM5NTogXCJCSU4ySEVYXCIsXG4gIDM5NjogXCJJTVNVQlwiLFxuICAzOTc6IFwiSU1ESVZcIixcbiAgMzk4OiBcIklNUE9XRVJcIixcbiAgMzk5OiBcIklNQUJTXCIsXG4gIDQwMDogXCJJTVNRUlRcIixcbiAgNDAxOiBcIklNTE5cIixcbiAgNDAyOiBcIklNTE9HMlwiLFxuICA0MDM6IFwiSU1MT0cxMFwiLFxuICA0MDQ6IFwiSU1TSU5cIixcbiAgNDA1OiBcIklNQ09TXCIsXG4gIDQwNjogXCJJTUVYUFwiLFxuICA0MDc6IFwiSU1BUkdVTUVOVFwiLFxuICA0MDg6IFwiSU1DT05KVUdBVEVcIixcbiAgNDA5OiBcIklNQUdJTkFSWVwiLFxuICA0MTA6IFwiSU1SRUFMXCIsXG4gIDQxMTogXCJDT01QTEVYXCIsXG4gIDQxMjogXCJJTVNVTVwiLFxuICA0MTM6IFwiSU1QUk9EVUNUXCIsXG4gIDQxNDogXCJTRVJJRVNTVU1cIixcbiAgNDE1OiBcIkZBQ1RET1VCTEVcIixcbiAgNDE2OiBcIlNRUlRQSVwiLFxuICA0MTc6IFwiUVVPVElFTlRcIixcbiAgNDE4OiBcIkRFTFRBXCIsXG4gIDQxOTogXCJHRVNURVBcIixcbiAgNDIwOiBcIklTRVZFTlwiLFxuICA0MjE6IFwiSVNPRERcIixcbiAgNDIyOiBcIk1ST1VORFwiLFxuICA0MjM6IFwiRVJGXCIsXG4gIDQyNDogXCJFUkZDXCIsXG4gIDQyNTogXCJCRVNTRUxKXCIsXG4gIDQyNjogXCJCRVNTRUxLXCIsXG4gIDQyNzogXCJCRVNTRUxZXCIsXG4gIDQyODogXCJCRVNTRUxJXCIsXG4gIDQyOTogXCJYSVJSXCIsXG4gIDQzMDogXCJYTlBWXCIsXG4gIDQzMTogXCJQUklDRU1BVFwiLFxuICA0MzI6IFwiWUlFTERNQVRcIixcbiAgNDMzOiBcIklOVFJBVEVcIixcbiAgNDM0OiBcIlJFQ0VJVkVEXCIsXG4gIDQzNTogXCJESVNDXCIsXG4gIDQzNjogXCJQUklDRURJU0NcIixcbiAgNDM3OiBcIllJRUxERElTQ1wiLFxuICA0Mzg6IFwiVEJJTExFUVwiLFxuICA0Mzk6IFwiVEJJTExQUklDRVwiLFxuICA0NDA6IFwiVEJJTExZSUVMRFwiLFxuICA0NDE6IFwiUFJJQ0VcIixcbiAgNDQyOiBcIllJRUxEXCIsXG4gIDQ0MzogXCJET0xMQVJERVwiLFxuICA0NDQ6IFwiRE9MTEFSRlJcIixcbiAgNDQ1OiBcIk5PTUlOQUxcIixcbiAgNDQ2OiBcIkVGRkVDVFwiLFxuICA0NDc6IFwiQ1VNUFJJTkNcIixcbiAgNDQ4OiBcIkNVTUlQTVRcIixcbiAgNDQ5OiBcIkVEQVRFXCIsXG4gIDQ1MDogXCJFT01PTlRIXCIsXG4gIDQ1MTogXCJZRUFSRlJBQ1wiLFxuICA0NTI6IFwiQ09VUERBWUJTXCIsXG4gIDQ1MzogXCJDT1VQREFZU1wiLFxuICA0NTQ6IFwiQ09VUERBWVNOQ1wiLFxuICA0NTU6IFwiQ09VUE5DRFwiLFxuICA0NTY6IFwiQ09VUE5VTVwiLFxuICA0NTc6IFwiQ09VUFBDRFwiLFxuICA0NTg6IFwiRFVSQVRJT05cIixcbiAgNDU5OiBcIk1EVVJBVElPTlwiLFxuICA0NjA6IFwiT0RETFBSSUNFXCIsXG4gIDQ2MTogXCJPRERMWUlFTERcIixcbiAgNDYyOiBcIk9EREZQUklDRVwiLFxuICA0NjM6IFwiT0RERllJRUxEXCIsXG4gIDQ2NDogXCJSQU5EQkVUV0VFTlwiLFxuICA0NjU6IFwiV0VFS05VTVwiLFxuICA0NjY6IFwiQU1PUkRFR1JDXCIsXG4gIDQ2NzogXCJBTU9STElOQ1wiLFxuICA0Njg6IFwiQ09OVkVSVFwiLFxuICA3MjQ6IFwiU0hFRVRKU1wiLFxuICA0Njk6IFwiQUNDUklOVFwiLFxuICA0NzA6IFwiQUNDUklOVE1cIixcbiAgNDcxOiBcIldPUktEQVlcIixcbiAgNDcyOiBcIk5FVFdPUktEQVlTXCIsXG4gIDQ3MzogXCJHQ0RcIixcbiAgNDc0OiBcIk1VTFRJTk9NSUFMXCIsXG4gIDQ3NTogXCJMQ01cIixcbiAgNDc2OiBcIkZWU0NIRURVTEVcIixcbiAgNDc3OiBcIkNVQkVLUElNRU1CRVJcIixcbiAgNDc4OiBcIkNVQkVTRVRcIixcbiAgNDc5OiBcIkNVQkVTRVRDT1VOVFwiLFxuICA0ODA6IFwiSUZFUlJPUlwiLFxuICA0ODE6IFwiQ09VTlRJRlNcIixcbiAgNDgyOiBcIlNVTUlGU1wiLFxuICA0ODM6IFwiQVZFUkFHRUlGXCIsXG4gIDQ4NDogXCJBVkVSQUdFSUZTXCJcbn07XG52YXIgRnRhYkFyZ2MgPSB7XG4gIDI6IDEsXG4gIDM6IDEsXG4gIDEwOiAwLFxuICAxNTogMSxcbiAgMTY6IDEsXG4gIDE3OiAxLFxuICAxODogMSxcbiAgMTk6IDAsXG4gIDIwOiAxLFxuICAyMTogMSxcbiAgMjI6IDEsXG4gIDIzOiAxLFxuICAyNDogMSxcbiAgMjU6IDEsXG4gIDI2OiAxLFxuICAyNzogMixcbiAgMzA6IDIsXG4gIDMxOiAzLFxuICAzMjogMSxcbiAgMzM6IDEsXG4gIDM0OiAwLFxuICAzNTogMCxcbiAgMzg6IDEsXG4gIDM5OiAyLFxuICA0MDogMyxcbiAgNDE6IDMsXG4gIDQyOiAzLFxuICA0MzogMyxcbiAgNDQ6IDMsXG4gIDQ1OiAzLFxuICA0NzogMyxcbiAgNDg6IDIsXG4gIDUzOiAxLFxuICA2MTogMyxcbiAgNjM6IDAsXG4gIDY1OiAzLFxuICA2NjogMyxcbiAgNjc6IDEsXG4gIDY4OiAxLFxuICA2OTogMSxcbiAgNzA6IDEsXG4gIDcxOiAxLFxuICA3MjogMSxcbiAgNzM6IDEsXG4gIDc0OiAwLFxuICA3NTogMSxcbiAgNzY6IDEsXG4gIDc3OiAxLFxuICA3OTogMixcbiAgODA6IDIsXG4gIDgzOiAxLFxuICA4NTogMCxcbiAgODY6IDEsXG4gIDg5OiAwLFxuICA5MDogMSxcbiAgOTQ6IDAsXG4gIDk1OiAwLFxuICA5NzogMixcbiAgOTg6IDEsXG4gIDk5OiAxLFxuICAxMDE6IDMsXG4gIDEwMjogMyxcbiAgMTA1OiAxLFxuICAxMDY6IDEsXG4gIDEwODogMixcbiAgMTExOiAxLFxuICAxMTI6IDEsXG4gIDExMzogMSxcbiAgMTE0OiAxLFxuICAxMTc6IDIsXG4gIDExODogMSxcbiAgMTE5OiA0LFxuICAxMjE6IDEsXG4gIDEyNjogMSxcbiAgMTI3OiAxLFxuICAxMjg6IDEsXG4gIDEyOTogMSxcbiAgMTMwOiAxLFxuICAxMzE6IDEsXG4gIDEzMzogMSxcbiAgMTM0OiAxLFxuICAxMzU6IDEsXG4gIDEzNjogMixcbiAgMTM3OiAyLFxuICAxMzg6IDIsXG4gIDE0MDogMSxcbiAgMTQxOiAxLFxuICAxNDI6IDMsXG4gIDE0MzogNCxcbiAgMTQ0OiA0LFxuICAxNjE6IDEsXG4gIDE2MjogMSxcbiAgMTYzOiAxLFxuICAxNjQ6IDEsXG4gIDE2NTogMixcbiAgMTcyOiAxLFxuICAxNzU6IDIsXG4gIDE3NjogMixcbiAgMTc3OiAzLFxuICAxNzg6IDIsXG4gIDE3OTogMSxcbiAgMTg0OiAxLFxuICAxODY6IDEsXG4gIDE4OTogMyxcbiAgMTkwOiAxLFxuICAxOTU6IDMsXG4gIDE5NjogMyxcbiAgMTk3OiAxLFxuICAxOTg6IDEsXG4gIDE5OTogMyxcbiAgMjAxOiAxLFxuICAyMDc6IDQsXG4gIDIxMDogMyxcbiAgMjExOiAxLFxuICAyMTI6IDIsXG4gIDIxMzogMixcbiAgMjE0OiAxLFxuICAyMTU6IDEsXG4gIDIyNTogMCxcbiAgMjI5OiAxLFxuICAyMzA6IDEsXG4gIDIzMTogMSxcbiAgMjMyOiAxLFxuICAyMzM6IDEsXG4gIDIzNDogMSxcbiAgMjM1OiAzLFxuICAyNDQ6IDEsXG4gIDI0NzogNCxcbiAgMjUyOiAyLFxuICAyNTc6IDEsXG4gIDI2MTogMSxcbiAgMjcxOiAxLFxuICAyNzM6IDQsXG4gIDI3NDogMixcbiAgMjc1OiAyLFxuICAyNzY6IDIsXG4gIDI3NzogMyxcbiAgMjc4OiAzLFxuICAyNzk6IDEsXG4gIDI4MDogMyxcbiAgMjgxOiAzLFxuICAyODI6IDMsXG4gIDI4MzogMSxcbiAgMjg0OiAxLFxuICAyODU6IDIsXG4gIDI4NjogNCxcbiAgMjg3OiAzLFxuICAyODg6IDIsXG4gIDI4OTogNCxcbiAgMjkwOiAzLFxuICAyOTE6IDMsXG4gIDI5MjogMyxcbiAgMjkzOiA0LFxuICAyOTQ6IDEsXG4gIDI5NTogMyxcbiAgMjk2OiAxLFxuICAyOTc6IDMsXG4gIDI5ODogMSxcbiAgMjk5OiAyLFxuICAzMDA6IDMsXG4gIDMwMTogMyxcbiAgMzAyOiA0LFxuICAzMDM6IDIsXG4gIDMwNDogMixcbiAgMzA1OiAyLFxuICAzMDY6IDIsXG4gIDMwNzogMixcbiAgMzA4OiAyLFxuICAzMDk6IDMsXG4gIDMxMDogMixcbiAgMzExOiAyLFxuICAzMTI6IDIsXG4gIDMxMzogMixcbiAgMzE0OiAyLFxuICAzMTU6IDIsXG4gIDMxNjogNCxcbiAgMzI1OiAyLFxuICAzMjY6IDIsXG4gIDMyNzogMixcbiAgMzI4OiAyLFxuICAzMzE6IDIsXG4gIDMzMjogMixcbiAgMzM3OiAyLFxuICAzNDI6IDEsXG4gIDM0MzogMSxcbiAgMzQ2OiAyLFxuICAzNDc6IDEsXG4gIDM1MDogNCxcbiAgMzUxOiAzLFxuICAzNTI6IDEsXG4gIDM1MzogMixcbiAgMzYwOiAxLFxuICAzNjg6IDEsXG4gIDM2OTogMSxcbiAgMzcwOiAxLFxuICAzNzE6IDEsXG4gIDM3MjogMSxcbiAgMzczOiAxLFxuICAzNzQ6IDEsXG4gIDM3NTogMSxcbiAgMzc2OiAxLFxuICAzNzc6IDEsXG4gIDM3ODogMSxcbiAgMzgyOiAzLFxuICAzODU6IDEsXG4gIDM5MjogMSxcbiAgMzkzOiAxLFxuICAzOTY6IDIsXG4gIDM5NzogMixcbiAgMzk4OiAyLFxuICAzOTk6IDEsXG4gIDQwMDogMSxcbiAgNDAxOiAxLFxuICA0MDI6IDEsXG4gIDQwMzogMSxcbiAgNDA0OiAxLFxuICA0MDU6IDEsXG4gIDQwNjogMSxcbiAgNDA3OiAxLFxuICA0MDg6IDEsXG4gIDQwOTogMSxcbiAgNDEwOiAxLFxuICA0MTQ6IDQsXG4gIDQxNTogMSxcbiAgNDE2OiAxLFxuICA0MTc6IDIsXG4gIDQyMDogMSxcbiAgNDIxOiAxLFxuICA0MjI6IDIsXG4gIDQyNDogMSxcbiAgNDI1OiAyLFxuICA0MjY6IDIsXG4gIDQyNzogMixcbiAgNDI4OiAyLFxuICA0MzA6IDMsXG4gIDQzODogMyxcbiAgNDM5OiAzLFxuICA0NDA6IDMsXG4gIDQ0MzogMixcbiAgNDQ0OiAyLFxuICA0NDU6IDIsXG4gIDQ0NjogMixcbiAgNDQ3OiA2LFxuICA0NDg6IDYsXG4gIDQ0OTogMixcbiAgNDUwOiAyLFxuICA0NjQ6IDIsXG4gIDQ2ODogMyxcbiAgNDc2OiAyLFxuICA0Nzk6IDEsXG4gIDQ4MDogMixcbiAgNjU1MzU6IDBcbn07XG4vKiBQYXJ0IDMgVE9ETzogYWN0dWFsbHkgcGFyc2UgZm9ybXVsYWUgKi9cbmZ1bmN0aW9uIG9kc190b19jc2ZfZm9ybXVsYShmLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHRpZihmLnNsaWNlKDAsMykgPT0gXCJvZjpcIikgZiA9IGYuc2xpY2UoMyk7XG5cdC8qIDUuMiBCYXNpYyBFeHByZXNzaW9ucyAqL1xuXHRpZihmLmNoYXJDb2RlQXQoMCkgPT0gNjEpIHtcblx0XHRmID0gZi5zbGljZSgxKTtcblx0XHRpZihmLmNoYXJDb2RlQXQoMCkgPT0gNjEpIGYgPSBmLnNsaWNlKDEpO1xuXHR9XG5cdGYgPSBmLnJlcGxhY2UoL0NPTVxcLk1JQ1JPU09GVFxcLi9nLCBcIlwiKTtcblx0LyogUGFydCAzIFNlY3Rpb24gNS44IFJlZmVyZW5jZXMgKi9cblx0ZiA9IGYucmVwbGFjZSgvXFxbKCg/OlxcLltBLVpdK1swLTldKykoPzo6XFwuW0EtWl0rWzAtOV0rKT8pXFxdL2csIGZ1bmN0aW9uKCQkLCAkMSkgeyByZXR1cm4gJDEucmVwbGFjZSgvXFwuL2csXCJcIik7IH0pO1xuXHQvKiBUT0RPOiBzb21ldGhpbmcgb3RoZXIgdGhhbiB0aGlzICovXG5cdGYgPSBmLnJlcGxhY2UoL1xcWy4oI1tBLVpdKls/IV0pXFxdL2csIFwiJDFcIik7XG5cdHJldHVybiBmLnJlcGxhY2UoL1s7fl0vZyxcIixcIikucmVwbGFjZSgvXFx8L2csXCI7XCIpO1xufVxuXG5mdW5jdGlvbiBjc2ZfdG9fb2RzX2Zvcm11bGEoZi8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0dmFyIG8gPSBcIm9mOj1cIiArIGYucmVwbGFjZShjcmVmcmVnZXgsIFwiJDFbLiQyJDMkNCQ1XVwiKS5yZXBsYWNlKC9cXF06XFxbL2csXCI6XCIpO1xuXHQvKiBUT0RPOiBzb21ldGhpbmcgb3RoZXIgdGhhbiB0aGlzICovXG5cdHJldHVybiBvLnJlcGxhY2UoLzsvZywgXCJ8XCIpLnJlcGxhY2UoLywvZyxcIjtcIik7XG59XG5cbmZ1bmN0aW9uIG9kc190b19jc2ZfM0Qoci8qOnN0cmluZyovKS8qOltzdHJpbmcsIHN0cmluZ10qLyB7XG5cdHZhciBhID0gci5zcGxpdChcIjpcIik7XG5cdHZhciBzID0gYVswXS5zcGxpdChcIi5cIilbMF07XG5cdHJldHVybiBbcywgYVswXS5zcGxpdChcIi5cIilbMV0gKyAoYS5sZW5ndGggPiAxID8gKFwiOlwiICsgKGFbMV0uc3BsaXQoXCIuXCIpWzFdIHx8IGFbMV0uc3BsaXQoXCIuXCIpWzBdKSkgOiBcIlwiKV07XG59XG5cbmZ1bmN0aW9uIGNzZl90b19vZHNfM0Qoci8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0cmV0dXJuIHIucmVwbGFjZSgvXFwuLyxcIiFcIik7XG59XG5cbnZhciBzdHJzID0ge307IC8vIHNoYXJlZCBzdHJpbmdzXG52YXIgX3NzZm9wdHMgPSB7fTsgLy8gc3ByZWFkc2hlZXQgZm9ybWF0dGluZyBvcHRpb25zXG5cblxuLypnbG9iYWwgTWFwICovXG52YXIgYnJvd3Nlcl9oYXNfTWFwID0gdHlwZW9mIE1hcCAhPT0gJ3VuZGVmaW5lZCc7XG5cbmZ1bmN0aW9uIGdldF9zc3RfaWQoc3N0Lyo6U1NUKi8sIHN0ci8qOnN0cmluZyovLCByZXYpLyo6bnVtYmVyKi8ge1xuXHR2YXIgaSA9IDAsIGxlbiA9IHNzdC5sZW5ndGg7XG5cdGlmKHJldikge1xuXHRcdGlmKGJyb3dzZXJfaGFzX01hcCA/IHJldi5oYXMoc3RyKSA6IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyZXYsIHN0cikpIHtcblx0XHRcdHZhciByZXZhcnIgPSBicm93c2VyX2hhc19NYXAgPyByZXYuZ2V0KHN0cikgOiByZXZbc3RyXTtcblx0XHRcdGZvcig7IGkgPCByZXZhcnIubGVuZ3RoOyArK2kpIHtcblx0XHRcdFx0aWYoc3N0W3JldmFycltpXV0udCA9PT0gc3RyKSB7IHNzdC5Db3VudCArKzsgcmV0dXJuIHJldmFycltpXTsgfVxuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIGZvcig7IGkgPCBsZW47ICsraSkge1xuXHRcdGlmKHNzdFtpXS50ID09PSBzdHIpIHsgc3N0LkNvdW50ICsrOyByZXR1cm4gaTsgfVxuXHR9XG5cdHNzdFtsZW5dID0gKHt0OnN0cn0vKjphbnkqLyk7IHNzdC5Db3VudCArKzsgc3N0LlVuaXF1ZSArKztcblx0aWYocmV2KSB7XG5cdFx0aWYoYnJvd3Nlcl9oYXNfTWFwKSB7XG5cdFx0XHRpZighcmV2LmhhcyhzdHIpKSByZXYuc2V0KHN0ciwgW10pO1xuXHRcdFx0cmV2LmdldChzdHIpLnB1c2gobGVuKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyZXYsIHN0cikpIHJldltzdHJdID0gW107XG5cdFx0XHRyZXZbc3RyXS5wdXNoKGxlbik7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBsZW47XG59XG5cbmZ1bmN0aW9uIGNvbF9vYmpfdyhDLyo6bnVtYmVyKi8sIGNvbCkge1xuXHR2YXIgcCA9ICh7bWluOkMrMSxtYXg6QysxfS8qOmFueSovKTtcblx0Lyogd2NoIChjaGFycyksIHdweCAocGl4ZWxzKSAqL1xuXHR2YXIgd2NoID0gLTE7XG5cdGlmKGNvbC5NRFcpIE1EVyA9IGNvbC5NRFc7XG5cdGlmKGNvbC53aWR0aCAhPSBudWxsKSBwLmN1c3RvbVdpZHRoID0gMTtcblx0ZWxzZSBpZihjb2wud3B4ICE9IG51bGwpIHdjaCA9IHB4MmNoYXIoY29sLndweCk7XG5cdGVsc2UgaWYoY29sLndjaCAhPSBudWxsKSB3Y2ggPSBjb2wud2NoO1xuXHRpZih3Y2ggPiAtMSkgeyBwLndpZHRoID0gY2hhcjJ3aWR0aCh3Y2gpOyBwLmN1c3RvbVdpZHRoID0gMTsgfVxuXHRlbHNlIGlmKGNvbC53aWR0aCAhPSBudWxsKSBwLndpZHRoID0gY29sLndpZHRoO1xuXHRpZihjb2wuaGlkZGVuKSBwLmhpZGRlbiA9IHRydWU7XG5cdGlmKGNvbC5sZXZlbCAhPSBudWxsKSB7IHAub3V0bGluZUxldmVsID0gcC5sZXZlbCA9IGNvbC5sZXZlbDsgfVxuXHRyZXR1cm4gcDtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdF9tYXJnaW5zKG1hcmdpbnMvKjpNYXJnaW5zKi8sIG1vZGUvKjo/c3RyaW5nKi8pIHtcblx0aWYoIW1hcmdpbnMpIHJldHVybjtcblx0dmFyIGRlZnMgPSBbMC43LCAwLjcsIDAuNzUsIDAuNzUsIDAuMywgMC4zXTtcblx0aWYobW9kZSA9PSAneGxtbCcpIGRlZnMgPSBbMSwgMSwgMSwgMSwgMC41LCAwLjVdO1xuXHRpZihtYXJnaW5zLmxlZnQgICA9PSBudWxsKSBtYXJnaW5zLmxlZnQgICA9IGRlZnNbMF07XG5cdGlmKG1hcmdpbnMucmlnaHQgID09IG51bGwpIG1hcmdpbnMucmlnaHQgID0gZGVmc1sxXTtcblx0aWYobWFyZ2lucy50b3AgICAgPT0gbnVsbCkgbWFyZ2lucy50b3AgICAgPSBkZWZzWzJdO1xuXHRpZihtYXJnaW5zLmJvdHRvbSA9PSBudWxsKSBtYXJnaW5zLmJvdHRvbSA9IGRlZnNbM107XG5cdGlmKG1hcmdpbnMuaGVhZGVyID09IG51bGwpIG1hcmdpbnMuaGVhZGVyID0gZGVmc1s0XTtcblx0aWYobWFyZ2lucy5mb290ZXIgPT0gbnVsbCkgbWFyZ2lucy5mb290ZXIgPSBkZWZzWzVdO1xufVxuXG5mdW5jdGlvbiBnZXRfY2VsbF9zdHlsZShzdHlsZXMvKjpBcnJheTxhbnk+Ki8sIGNlbGwvKjpDZWxsKi8sIG9wdHMpIHtcblx0dmFyIHogPSBvcHRzLnJldnNzZltjZWxsLnogIT0gbnVsbCA/IGNlbGwueiA6IFwiR2VuZXJhbFwiXTtcblx0dmFyIGkgPSAweDNjLCBsZW4gPSBzdHlsZXMubGVuZ3RoO1xuXHRpZih6ID09IG51bGwgJiYgb3B0cy5zc2YpIHtcblx0XHRmb3IoOyBpIDwgMHgxODg7ICsraSkgaWYob3B0cy5zc2ZbaV0gPT0gbnVsbCkge1xuXHRcdFx0U1NGX2xvYWQoY2VsbC56LCBpKTtcblx0XHRcdC8vICRGbG93SWdub3JlXG5cdFx0XHRvcHRzLnNzZltpXSA9IGNlbGwuejtcblx0XHRcdG9wdHMucmV2c3NmW2NlbGwuel0gPSB6ID0gaTtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXHRmb3IoaSA9IDA7IGkgIT0gbGVuOyArK2kpIGlmKHN0eWxlc1tpXS5udW1GbXRJZCA9PT0geikgcmV0dXJuIGk7XG5cdHN0eWxlc1tsZW5dID0ge1xuXHRcdG51bUZtdElkOnosXG5cdFx0Zm9udElkOjAsXG5cdFx0ZmlsbElkOjAsXG5cdFx0Ym9yZGVySWQ6MCxcblx0XHR4ZklkOjAsXG5cdFx0YXBwbHlOdW1iZXJGb3JtYXQ6MVxuXHR9O1xuXHRyZXR1cm4gbGVuO1xufVxuXG5mdW5jdGlvbiBzYWZlX2Zvcm1hdChwLyo6Q2VsbCovLCBmbXRpZC8qOm51bWJlciovLCBmaWxsaWQvKjo/bnVtYmVyKi8sIG9wdHMsIHRoZW1lcywgc3R5bGVzKSB7XG5cdHRyeSB7XG5cdFx0aWYob3B0cy5jZWxsTkYpIHAueiA9IHRhYmxlX2ZtdFtmbXRpZF07XG5cdH0gY2F0Y2goZSkgeyBpZihvcHRzLldURikgdGhyb3cgZTsgfVxuXHRpZihwLnQgPT09ICd6JyAmJiAhb3B0cy5jZWxsU3R5bGVzKSByZXR1cm47XG5cdGlmKHAudCA9PT0gJ2QnICYmIHR5cGVvZiBwLnYgPT09ICdzdHJpbmcnKSBwLnYgPSBwYXJzZURhdGUocC52KTtcblx0aWYoKCFvcHRzIHx8IG9wdHMuY2VsbFRleHQgIT09IGZhbHNlKSAmJiBwLnQgIT09ICd6JykgdHJ5IHtcblx0XHRpZih0YWJsZV9mbXRbZm10aWRdID09IG51bGwpIFNTRl9sb2FkKFNTRkltcGxpY2l0W2ZtdGlkXSB8fCBcIkdlbmVyYWxcIiwgZm10aWQpO1xuXHRcdGlmKHAudCA9PT0gJ2UnKSBwLncgPSBwLncgfHwgQkVycltwLnZdO1xuXHRcdGVsc2UgaWYoZm10aWQgPT09IDApIHtcblx0XHRcdGlmKHAudCA9PT0gJ24nKSB7XG5cdFx0XHRcdGlmKChwLnZ8MCkgPT09IHAudikgcC53ID0gcC52LnRvU3RyaW5nKDEwKTtcblx0XHRcdFx0ZWxzZSBwLncgPSBTU0ZfZ2VuZXJhbF9udW0ocC52KTtcblx0XHRcdH1cblx0XHRcdGVsc2UgaWYocC50ID09PSAnZCcpIHtcblx0XHRcdFx0dmFyIGRkID0gZGF0ZW51bShwLnYpO1xuXHRcdFx0XHRpZigoZGR8MCkgPT09IGRkKSBwLncgPSBkZC50b1N0cmluZygxMCk7XG5cdFx0XHRcdGVsc2UgcC53ID0gU1NGX2dlbmVyYWxfbnVtKGRkKTtcblx0XHRcdH1cblx0XHRcdGVsc2UgaWYocC52ID09PSB1bmRlZmluZWQpIHJldHVybiBcIlwiO1xuXHRcdFx0ZWxzZSBwLncgPSBTU0ZfZ2VuZXJhbChwLnYsX3NzZm9wdHMpO1xuXHRcdH1cblx0XHRlbHNlIGlmKHAudCA9PT0gJ2QnKSBwLncgPSBTU0ZfZm9ybWF0KGZtdGlkLGRhdGVudW0ocC52KSxfc3Nmb3B0cyk7XG5cdFx0ZWxzZSBwLncgPSBTU0ZfZm9ybWF0KGZtdGlkLHAudixfc3Nmb3B0cyk7XG5cdH0gY2F0Y2goZSkgeyBpZihvcHRzLldURikgdGhyb3cgZTsgfVxuXHRpZighb3B0cy5jZWxsU3R5bGVzKSByZXR1cm47XG5cdGlmKGZpbGxpZCAhPSBudWxsKSB0cnkge1xuXHRcdHAucyA9IHN0eWxlcy5GaWxsc1tmaWxsaWRdO1xuXHRcdGlmIChwLnMuZmdDb2xvciAmJiBwLnMuZmdDb2xvci50aGVtZSAmJiAhcC5zLmZnQ29sb3IucmdiKSB7XG5cdFx0XHRwLnMuZmdDb2xvci5yZ2IgPSByZ2JfdGludCh0aGVtZXMudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbcC5zLmZnQ29sb3IudGhlbWVdLnJnYiwgcC5zLmZnQ29sb3IudGludCB8fCAwKTtcblx0XHRcdGlmKG9wdHMuV1RGKSBwLnMuZmdDb2xvci5yYXdfcmdiID0gdGhlbWVzLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW3Aucy5mZ0NvbG9yLnRoZW1lXS5yZ2I7XG5cdFx0fVxuXHRcdGlmIChwLnMuYmdDb2xvciAmJiBwLnMuYmdDb2xvci50aGVtZSkge1xuXHRcdFx0cC5zLmJnQ29sb3IucmdiID0gcmdiX3RpbnQodGhlbWVzLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW3Aucy5iZ0NvbG9yLnRoZW1lXS5yZ2IsIHAucy5iZ0NvbG9yLnRpbnQgfHwgMCk7XG5cdFx0XHRpZihvcHRzLldURikgcC5zLmJnQ29sb3IucmF3X3JnYiA9IHRoZW1lcy50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVtwLnMuYmdDb2xvci50aGVtZV0ucmdiO1xuXHRcdH1cblx0fSBjYXRjaChlKSB7IGlmKG9wdHMuV1RGICYmIHN0eWxlcy5GaWxscykgdGhyb3cgZTsgfVxufVxuXG5mdW5jdGlvbiBjaGVja193cyh3cy8qOldvcmtzaGVldCovLCBzbmFtZS8qOnN0cmluZyovLCBpLyo6bnVtYmVyKi8pIHtcblx0aWYod3MgJiYgd3NbJyFyZWYnXSkge1xuXHRcdHZhciByYW5nZSA9IHNhZmVfZGVjb2RlX3JhbmdlKHdzWychcmVmJ10pO1xuXHRcdGlmKHJhbmdlLmUuYyA8IHJhbmdlLnMuYyB8fCByYW5nZS5lLnIgPCByYW5nZS5zLnIpIHRocm93IG5ldyBFcnJvcihcIkJhZCByYW5nZSAoXCIgKyBpICsgXCIpOiBcIiArIHdzWychcmVmJ10pO1xuXHR9XG59XG5mdW5jdGlvbiBwYXJzZV93c194bWxfZGltKHdzLyo6V29ya3NoZWV0Ki8sIHMvKjpzdHJpbmcqLykge1xuXHR2YXIgZCA9IHNhZmVfZGVjb2RlX3JhbmdlKHMpO1xuXHRpZihkLnMucjw9ZC5lLnIgJiYgZC5zLmM8PWQuZS5jICYmIGQucy5yPj0wICYmIGQucy5jPj0wKSB3c1tcIiFyZWZcIl0gPSBlbmNvZGVfcmFuZ2UoZCk7XG59XG52YXIgbWVyZ2VjcmVnZXggPSAvPCg/OlxcdzopP21lcmdlQ2VsbCByZWY9XCJbQS1aMC05Ol0rXCJcXHMqW1xcL10/Pi9nO1xudmFyIHNoZWV0ZGF0YXJlZ2V4ID0gLzwoPzpcXHcrOik/c2hlZXREYXRhW14+XSo+KFtcXHNcXFNdKik8XFwvKD86XFx3KzopP3NoZWV0RGF0YT4vO1xudmFyIGhsaW5rcmVnZXggPSAvPCg/OlxcdzopP2h5cGVybGluayBbXj5dKj4vbWc7XG52YXIgZGltcmVnZXggPSAvXCIoXFx3KjpcXHcqKVwiLztcbnZhciBjb2xyZWdleCA9IC88KD86XFx3Oik/Y29sXFxiW14+XSpbXFwvXT8+L2c7XG52YXIgYWZyZWdleCA9IC88KD86XFx3Oik/YXV0b0ZpbHRlcltePl0qKFtcXC9dfD4oW1xcc1xcU10qKTxcXC8oPzpcXHc6KT9hdXRvRmlsdGVyKT4vZztcbnZhciBtYXJnaW5yZWdleD0gLzwoPzpcXHc6KT9wYWdlTWFyZ2luc1tePl0qXFwvPi9nO1xudmFyIHNoZWV0cHJyZWdleCA9IC88KD86XFx3Oik/c2hlZXRQclxcYig/OltePmEtel1bXj5dKik/XFwvPi87XG52YXIgc2hlZXRwcnJlZ2V4Mj0gLzwoPzpcXHc6KT9zaGVldFByW14+XSooPzpbXFwvXXw+KFtcXHNcXFNdKik8XFwvKD86XFx3Oik/c2hlZXRQcik+LztcbnZhciBzdnNyZWdleCA9IC88KD86XFx3Oik/c2hlZXRWaWV3c1tePl0qKD86W1xcL118PihbXFxzXFxTXSopPFxcLyg/OlxcdzopP3NoZWV0Vmlld3MpPi87XG5cbi8qIDE4LjMgV29ya3NoZWV0cyAqL1xuZnVuY3Rpb24gcGFyc2Vfd3NfeG1sKGRhdGEvKjo/c3RyaW5nKi8sIG9wdHMsIGlkeC8qOm51bWJlciovLCByZWxzLCB3Yi8qOldCV0JQcm9wcyovLCB0aGVtZXMsIHN0eWxlcykvKjpXb3Jrc2hlZXQqLyB7XG5cdGlmKCFkYXRhKSByZXR1cm4gZGF0YTtcblx0aWYoIXJlbHMpIHJlbHMgPSB7JyFpZCc6e319O1xuXHRpZihERU5TRSAhPSBudWxsICYmIG9wdHMuZGVuc2UgPT0gbnVsbCkgb3B0cy5kZW5zZSA9IERFTlNFO1xuXG5cdC8qIDE4LjMuMS45OSB3b3Jrc2hlZXQgQ1RfV29ya3NoZWV0ICovXG5cdHZhciBzID0gb3B0cy5kZW5zZSA/IChbXS8qOmFueSovKSA6ICh7fS8qOmFueSovKTtcblx0dmFyIHJlZmd1ZXNzLyo6UmFuZ2UqLyA9ICh7czoge3I6MjAwMDAwMCwgYzoyMDAwMDAwfSwgZToge3I6MCwgYzowfSB9Lyo6YW55Ki8pO1xuXG5cdHZhciBkYXRhMSA9IFwiXCIsIGRhdGEyID0gXCJcIjtcblx0dmFyIG10Y2gvKjo/YW55Ki8gPSBkYXRhLm1hdGNoKHNoZWV0ZGF0YXJlZ2V4KTtcblx0aWYobXRjaCkge1xuXHRcdGRhdGExID0gZGF0YS5zbGljZSgwLCBtdGNoLmluZGV4KTtcblx0XHRkYXRhMiA9IGRhdGEuc2xpY2UobXRjaC5pbmRleCArIG10Y2hbMF0ubGVuZ3RoKTtcblx0fSBlbHNlIGRhdGExID0gZGF0YTIgPSBkYXRhO1xuXG5cdC8qIDE4LjMuMS44MiBzaGVldFByIENUX1NoZWV0UHIgKi9cblx0dmFyIHNoZWV0UHIgPSBkYXRhMS5tYXRjaChzaGVldHBycmVnZXgpO1xuXHRpZihzaGVldFByKSBwYXJzZV93c194bWxfc2hlZXRwcihzaGVldFByWzBdLCBzLCB3YiwgaWR4KTtcblx0ZWxzZSBpZigoc2hlZXRQciA9IGRhdGExLm1hdGNoKHNoZWV0cHJyZWdleDIpKSkgcGFyc2Vfd3NfeG1sX3NoZWV0cHIyKHNoZWV0UHJbMF0sIHNoZWV0UHJbMV18fFwiXCIsIHMsIHdiLCBpZHgsIHN0eWxlcywgdGhlbWVzKTtcblxuXHQvKiAxOC4zLjEuMzUgZGltZW5zaW9uIENUX1NoZWV0RGltZW5zaW9uICovXG5cdHZhciByaWR4ID0gKGRhdGExLm1hdGNoKC88KD86XFx3KjopP2RpbWVuc2lvbi8pfHx7aW5kZXg6LTF9KS5pbmRleDtcblx0aWYocmlkeCA+IDApIHtcblx0XHR2YXIgcmVmID0gZGF0YTEuc2xpY2UocmlkeCxyaWR4KzUwKS5tYXRjaChkaW1yZWdleCk7XG5cdFx0aWYocmVmKSBwYXJzZV93c194bWxfZGltKHMsIHJlZlsxXSk7XG5cdH1cblxuXHQvKiAxOC4zLjEuODggc2hlZXRWaWV3cyBDVF9TaGVldFZpZXdzICovXG5cdHZhciBzdnMgPSBkYXRhMS5tYXRjaChzdnNyZWdleCk7XG5cdGlmKHN2cyAmJiBzdnNbMV0pIHBhcnNlX3dzX3htbF9zaGVldHZpZXdzKHN2c1sxXSwgd2IpO1xuXG5cdC8qIDE4LjMuMS4xNyBjb2xzIENUX0NvbHMgKi9cblx0dmFyIGNvbHVtbnMvKjpBcnJheTxDb2xJbmZvPiovID0gW107XG5cdGlmKG9wdHMuY2VsbFN0eWxlcykge1xuXHRcdC8qIDE4LjMuMS4xMyBjb2wgQ1RfQ29sICovXG5cdFx0dmFyIGNvbHMgPSBkYXRhMS5tYXRjaChjb2xyZWdleCk7XG5cdFx0aWYoY29scykgcGFyc2Vfd3NfeG1sX2NvbHMoY29sdW1ucywgY29scyk7XG5cdH1cblxuXHQvKiAxOC4zLjEuODAgc2hlZXREYXRhIENUX1NoZWV0RGF0YSA/ICovXG5cdGlmKG10Y2gpIHBhcnNlX3dzX3htbF9kYXRhKG10Y2hbMV0sIHMsIG9wdHMsIHJlZmd1ZXNzLCB0aGVtZXMsIHN0eWxlcyk7XG5cblx0LyogMTguMy4xLjIgIGF1dG9GaWx0ZXIgQ1RfQXV0b0ZpbHRlciAqL1xuXHR2YXIgYWZpbHRlciA9IGRhdGEyLm1hdGNoKGFmcmVnZXgpO1xuXHRpZihhZmlsdGVyKSBzWychYXV0b2ZpbHRlciddID0gcGFyc2Vfd3NfeG1sX2F1dG9maWx0ZXIoYWZpbHRlclswXSk7XG5cblx0LyogMTguMy4xLjU1IG1lcmdlQ2VsbHMgQ1RfTWVyZ2VDZWxscyAqL1xuXHR2YXIgbWVyZ2VzLyo6QXJyYXk8UmFuZ2U+Ki8gPSBbXTtcblx0dmFyIF9tZXJnZSA9IGRhdGEyLm1hdGNoKG1lcmdlY3JlZ2V4KTtcblx0aWYoX21lcmdlKSBmb3IocmlkeCA9IDA7IHJpZHggIT0gX21lcmdlLmxlbmd0aDsgKytyaWR4KVxuXHRcdG1lcmdlc1tyaWR4XSA9IHNhZmVfZGVjb2RlX3JhbmdlKF9tZXJnZVtyaWR4XS5zbGljZShfbWVyZ2VbcmlkeF0uaW5kZXhPZihcIlxcXCJcIikrMSkpO1xuXG5cdC8qIDE4LjMuMS40OCBoeXBlcmxpbmtzIENUX0h5cGVybGlua3MgKi9cblx0dmFyIGhsaW5rID0gZGF0YTIubWF0Y2goaGxpbmtyZWdleCk7XG5cdGlmKGhsaW5rKSBwYXJzZV93c194bWxfaGxpbmtzKHMsIGhsaW5rLCByZWxzKTtcblxuXHQvKiAxOC4zLjEuNjIgcGFnZU1hcmdpbnMgQ1RfUGFnZU1hcmdpbnMgKi9cblx0dmFyIG1hcmdpbnMgPSBkYXRhMi5tYXRjaChtYXJnaW5yZWdleCk7XG5cdGlmKG1hcmdpbnMpIHNbJyFtYXJnaW5zJ10gPSBwYXJzZV93c194bWxfbWFyZ2lucyhwYXJzZXhtbHRhZyhtYXJnaW5zWzBdKSk7XG5cblx0aWYoIXNbXCIhcmVmXCJdICYmIHJlZmd1ZXNzLmUuYyA+PSByZWZndWVzcy5zLmMgJiYgcmVmZ3Vlc3MuZS5yID49IHJlZmd1ZXNzLnMucikgc1tcIiFyZWZcIl0gPSBlbmNvZGVfcmFuZ2UocmVmZ3Vlc3MpO1xuXHRpZihvcHRzLnNoZWV0Um93cyA+IDAgJiYgc1tcIiFyZWZcIl0pIHtcblx0XHR2YXIgdG1wcmVmID0gc2FmZV9kZWNvZGVfcmFuZ2Uoc1tcIiFyZWZcIl0pO1xuXHRcdGlmKG9wdHMuc2hlZXRSb3dzIDw9ICt0bXByZWYuZS5yKSB7XG5cdFx0XHR0bXByZWYuZS5yID0gb3B0cy5zaGVldFJvd3MgLSAxO1xuXHRcdFx0aWYodG1wcmVmLmUuciA+IHJlZmd1ZXNzLmUucikgdG1wcmVmLmUuciA9IHJlZmd1ZXNzLmUucjtcblx0XHRcdGlmKHRtcHJlZi5lLnIgPCB0bXByZWYucy5yKSB0bXByZWYucy5yID0gdG1wcmVmLmUucjtcblx0XHRcdGlmKHRtcHJlZi5lLmMgPiByZWZndWVzcy5lLmMpIHRtcHJlZi5lLmMgPSByZWZndWVzcy5lLmM7XG5cdFx0XHRpZih0bXByZWYuZS5jIDwgdG1wcmVmLnMuYykgdG1wcmVmLnMuYyA9IHRtcHJlZi5lLmM7XG5cdFx0XHRzW1wiIWZ1bGxyZWZcIl0gPSBzW1wiIXJlZlwiXTtcblx0XHRcdHNbXCIhcmVmXCJdID0gZW5jb2RlX3JhbmdlKHRtcHJlZik7XG5cdFx0fVxuXHR9XG5cdGlmKGNvbHVtbnMubGVuZ3RoID4gMCkgc1tcIiFjb2xzXCJdID0gY29sdW1ucztcblx0aWYobWVyZ2VzLmxlbmd0aCA+IDApIHNbXCIhbWVyZ2VzXCJdID0gbWVyZ2VzO1xuXHRyZXR1cm4gcztcbn1cblxuZnVuY3Rpb24gd3JpdGVfd3NfeG1sX21lcmdlcyhtZXJnZXMvKjpBcnJheTxSYW5nZT4qLykvKjpzdHJpbmcqLyB7XG5cdGlmKG1lcmdlcy5sZW5ndGggPT09IDApIHJldHVybiBcIlwiO1xuXHR2YXIgbyA9ICc8bWVyZ2VDZWxscyBjb3VudD1cIicgKyBtZXJnZXMubGVuZ3RoICsgJ1wiPic7XG5cdGZvcih2YXIgaSA9IDA7IGkgIT0gbWVyZ2VzLmxlbmd0aDsgKytpKSBvICs9ICc8bWVyZ2VDZWxsIHJlZj1cIicgKyBlbmNvZGVfcmFuZ2UobWVyZ2VzW2ldKSArICdcIi8+Jztcblx0cmV0dXJuIG8gKyAnPC9tZXJnZUNlbGxzPic7XG59XG5cbi8qIDE4LjMuMS44Mi0zIHNoZWV0UHIgQ1RfQ2hhcnRzaGVldFByIC8gQ1RfU2hlZXRQciAqL1xuZnVuY3Rpb24gcGFyc2Vfd3NfeG1sX3NoZWV0cHIoc2hlZXRQci8qOnN0cmluZyovLCBzLCB3Yi8qOldCV0JQcm9wcyovLCBpZHgvKjpudW1iZXIqLykge1xuXHR2YXIgZGF0YSA9IHBhcnNleG1sdGFnKHNoZWV0UHIpO1xuXHRpZighd2IuU2hlZXRzW2lkeF0pIHdiLlNoZWV0c1tpZHhdID0ge307XG5cdGlmKGRhdGEuY29kZU5hbWUpIHdiLlNoZWV0c1tpZHhdLkNvZGVOYW1lID0gdW5lc2NhcGV4bWwodXRmOHJlYWQoZGF0YS5jb2RlTmFtZSkpO1xufVxuZnVuY3Rpb24gcGFyc2Vfd3NfeG1sX3NoZWV0cHIyKHNoZWV0UHIvKjpzdHJpbmcqLywgYm9keS8qOnN0cmluZyovLCBzLCB3Yi8qOldCV0JQcm9wcyovLCBpZHgvKjpudW1iZXIqLykge1xuXHRwYXJzZV93c194bWxfc2hlZXRwcihzaGVldFByLnNsaWNlKDAsIHNoZWV0UHIuaW5kZXhPZihcIj5cIikpLCBzLCB3YiwgaWR4KTtcbn1cbmZ1bmN0aW9uIHdyaXRlX3dzX3htbF9zaGVldHByKHdzLCB3YiwgaWR4LCBvcHRzLCBvKSB7XG5cdHZhciBuZWVkZWQgPSBmYWxzZTtcblx0dmFyIHByb3BzID0ge30sIHBheWxvYWQgPSBudWxsO1xuXHRpZihvcHRzLmJvb2tUeXBlICE9PSAneGxzeCcgJiYgd2IudmJhcmF3KSB7XG5cdFx0dmFyIGNuYW1lID0gd2IuU2hlZXROYW1lc1tpZHhdO1xuXHRcdHRyeSB7IGlmKHdiLldvcmtib29rKSBjbmFtZSA9IHdiLldvcmtib29rLlNoZWV0c1tpZHhdLkNvZGVOYW1lIHx8IGNuYW1lOyB9IGNhdGNoKGUpIHt9XG5cdFx0bmVlZGVkID0gdHJ1ZTtcblx0XHRwcm9wcy5jb2RlTmFtZSA9IHV0Zjh3cml0ZShlc2NhcGV4bWwoY25hbWUpKTtcblx0fVxuXG5cdGlmKHdzICYmIHdzW1wiIW91dGxpbmVcIl0pIHtcblx0XHR2YXIgb3V0bGluZXByb3BzID0ge3N1bW1hcnlCZWxvdzoxLCBzdW1tYXJ5UmlnaHQ6MX07XG5cdFx0aWYod3NbXCIhb3V0bGluZVwiXS5hYm92ZSkgb3V0bGluZXByb3BzLnN1bW1hcnlCZWxvdyA9IDA7XG5cdFx0aWYod3NbXCIhb3V0bGluZVwiXS5sZWZ0KSBvdXRsaW5lcHJvcHMuc3VtbWFyeVJpZ2h0ID0gMDtcblx0XHRwYXlsb2FkID0gKHBheWxvYWR8fFwiXCIpICsgd3JpdGV4dGFnKCdvdXRsaW5lUHInLCBudWxsLCBvdXRsaW5lcHJvcHMpO1xuXHR9XG5cblx0aWYoIW5lZWRlZCAmJiAhcGF5bG9hZCkgcmV0dXJuO1xuXHRvW28ubGVuZ3RoXSA9ICh3cml0ZXh0YWcoJ3NoZWV0UHInLCBwYXlsb2FkLCBwcm9wcykpO1xufVxuXG4vKiAxOC4zLjEuODUgc2hlZXRQcm90ZWN0aW9uIENUX1NoZWV0UHJvdGVjdGlvbiAqL1xudmFyIHNoZWV0cHJvdF9kZWZmYWxzZSA9IFtcIm9iamVjdHNcIiwgXCJzY2VuYXJpb3NcIiwgXCJzZWxlY3RMb2NrZWRDZWxsc1wiLCBcInNlbGVjdFVubG9ja2VkQ2VsbHNcIl07XG52YXIgc2hlZXRwcm90X2RlZnRydWUgPSBbXG5cdFwiZm9ybWF0Q29sdW1uc1wiLCBcImZvcm1hdFJvd3NcIiwgXCJmb3JtYXRDZWxsc1wiLFxuXHRcImluc2VydENvbHVtbnNcIiwgXCJpbnNlcnRSb3dzXCIsIFwiaW5zZXJ0SHlwZXJsaW5rc1wiLFxuXHRcImRlbGV0ZUNvbHVtbnNcIiwgXCJkZWxldGVSb3dzXCIsXG5cdFwic29ydFwiLCBcImF1dG9GaWx0ZXJcIiwgXCJwaXZvdFRhYmxlc1wiXG5dO1xuZnVuY3Rpb24gd3JpdGVfd3NfeG1sX3Byb3RlY3Rpb24oc3ApLyo6c3RyaW5nKi8ge1xuXHQvLyBhbGdvcml0aG1OYW1lLCBoYXNoVmFsdWUsIHNhbHRWYWx1ZSwgc3BpbkNvdW50XG5cdHZhciBvID0gKHtzaGVldDoxfS8qOmFueSovKTtcblx0c2hlZXRwcm90X2RlZmZhbHNlLmZvckVhY2goZnVuY3Rpb24obikgeyBpZihzcFtuXSAhPSBudWxsICYmIHNwW25dKSBvW25dID0gXCIxXCI7IH0pO1xuXHRzaGVldHByb3RfZGVmdHJ1ZS5mb3JFYWNoKGZ1bmN0aW9uKG4pIHsgaWYoc3Bbbl0gIT0gbnVsbCAmJiAhc3Bbbl0pIG9bbl0gPSBcIjBcIjsgfSk7XG5cdC8qIFRPRE86IGFsZ29yaXRobSAqL1xuXHRpZihzcC5wYXNzd29yZCkgby5wYXNzd29yZCA9IGNyeXB0b19DcmVhdGVQYXNzd29yZFZlcmlmaWVyX01ldGhvZDEoc3AucGFzc3dvcmQpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO1xuXHRyZXR1cm4gd3JpdGV4dGFnKCdzaGVldFByb3RlY3Rpb24nLCBudWxsLCBvKTtcbn1cblxuZnVuY3Rpb24gcGFyc2Vfd3NfeG1sX2hsaW5rcyhzLCBkYXRhLyo6QXJyYXk8c3RyaW5nPiovLCByZWxzKSB7XG5cdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkocyk7XG5cdGZvcih2YXIgaSA9IDA7IGkgIT0gZGF0YS5sZW5ndGg7ICsraSkge1xuXHRcdHZhciB2YWwgPSBwYXJzZXhtbHRhZyh1dGY4cmVhZChkYXRhW2ldKSwgdHJ1ZSk7XG5cdFx0aWYoIXZhbC5yZWYpIHJldHVybjtcblx0XHR2YXIgcmVsID0gKChyZWxzIHx8IHt9KVsnIWlkJ118fFtdKVt2YWwuaWRdO1xuXHRcdGlmKHJlbCkge1xuXHRcdFx0dmFsLlRhcmdldCA9IHJlbC5UYXJnZXQ7XG5cdFx0XHRpZih2YWwubG9jYXRpb24pIHZhbC5UYXJnZXQgKz0gXCIjXCIrdW5lc2NhcGV4bWwodmFsLmxvY2F0aW9uKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dmFsLlRhcmdldCA9IFwiI1wiICsgdW5lc2NhcGV4bWwodmFsLmxvY2F0aW9uKTtcblx0XHRcdHJlbCA9IHtUYXJnZXQ6IHZhbC5UYXJnZXQsIFRhcmdldE1vZGU6ICdJbnRlcm5hbCd9O1xuXHRcdH1cblx0XHR2YWwuUmVsID0gcmVsO1xuXHRcdGlmKHZhbC50b29sdGlwKSB7IHZhbC5Ub29sdGlwID0gdmFsLnRvb2x0aXA7IGRlbGV0ZSB2YWwudG9vbHRpcDsgfVxuXHRcdHZhciBybmcgPSBzYWZlX2RlY29kZV9yYW5nZSh2YWwucmVmKTtcblx0XHRmb3IodmFyIFI9cm5nLnMucjtSPD1ybmcuZS5yOysrUikgZm9yKHZhciBDPXJuZy5zLmM7Qzw9cm5nLmUuYzsrK0MpIHtcblx0XHRcdHZhciBhZGRyID0gZW5jb2RlX2NlbGwoe2M6QyxyOlJ9KTtcblx0XHRcdGlmKGRlbnNlKSB7XG5cdFx0XHRcdGlmKCFzW1JdKSBzW1JdID0gW107XG5cdFx0XHRcdGlmKCFzW1JdW0NdKSBzW1JdW0NdID0ge3Q6XCJ6XCIsdjp1bmRlZmluZWR9O1xuXHRcdFx0XHRzW1JdW0NdLmwgPSB2YWw7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpZighc1thZGRyXSkgc1thZGRyXSA9IHt0OlwielwiLHY6dW5kZWZpbmVkfTtcblx0XHRcdFx0c1thZGRyXS5sID0gdmFsO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBwYXJzZV93c194bWxfbWFyZ2lucyhtYXJnaW4pIHtcblx0dmFyIG8gPSB7fTtcblx0W1wibGVmdFwiLCBcInJpZ2h0XCIsIFwidG9wXCIsIFwiYm90dG9tXCIsIFwiaGVhZGVyXCIsIFwiZm9vdGVyXCJdLmZvckVhY2goZnVuY3Rpb24oaykge1xuXHRcdGlmKG1hcmdpbltrXSkgb1trXSA9IHBhcnNlRmxvYXQobWFyZ2luW2tdKTtcblx0fSk7XG5cdHJldHVybiBvO1xufVxuZnVuY3Rpb24gd3JpdGVfd3NfeG1sX21hcmdpbnMobWFyZ2luKS8qOnN0cmluZyovIHtcblx0ZGVmYXVsdF9tYXJnaW5zKG1hcmdpbik7XG5cdHJldHVybiB3cml0ZXh0YWcoJ3BhZ2VNYXJnaW5zJywgbnVsbCwgbWFyZ2luKTtcbn1cblxuZnVuY3Rpb24gcGFyc2Vfd3NfeG1sX2NvbHMoY29sdW1ucywgY29scykge1xuXHR2YXIgc2VlbmNvbCA9IGZhbHNlO1xuXHRmb3IodmFyIGNvbGkgPSAwOyBjb2xpICE9IGNvbHMubGVuZ3RoOyArK2NvbGkpIHtcblx0XHR2YXIgY29sbCA9IHBhcnNleG1sdGFnKGNvbHNbY29saV0sIHRydWUpO1xuXHRcdGlmKGNvbGwuaGlkZGVuKSBjb2xsLmhpZGRlbiA9IHBhcnNleG1sYm9vbChjb2xsLmhpZGRlbik7XG5cdFx0dmFyIGNvbG09cGFyc2VJbnQoY29sbC5taW4sIDEwKS0xLCBjb2xNPXBhcnNlSW50KGNvbGwubWF4LDEwKS0xO1xuXHRcdGlmKGNvbGwub3V0bGluZUxldmVsKSBjb2xsLmxldmVsID0gKCtjb2xsLm91dGxpbmVMZXZlbCB8fCAwKTtcblx0XHRkZWxldGUgY29sbC5taW47IGRlbGV0ZSBjb2xsLm1heDsgY29sbC53aWR0aCA9ICtjb2xsLndpZHRoO1xuXHRcdGlmKCFzZWVuY29sICYmIGNvbGwud2lkdGgpIHsgc2VlbmNvbCA9IHRydWU7IGZpbmRfbWR3X2NvbHcoY29sbC53aWR0aCk7IH1cblx0XHRwcm9jZXNzX2NvbChjb2xsKTtcblx0XHR3aGlsZShjb2xtIDw9IGNvbE0pIGNvbHVtbnNbY29sbSsrXSA9IGR1cChjb2xsKTtcblx0fVxufVxuZnVuY3Rpb24gd3JpdGVfd3NfeG1sX2NvbHMod3MsIGNvbHMpLyo6c3RyaW5nKi8ge1xuXHR2YXIgbyA9IFtcIjxjb2xzPlwiXSwgY29sO1xuXHRmb3IodmFyIGkgPSAwOyBpICE9IGNvbHMubGVuZ3RoOyArK2kpIHtcblx0XHRpZighKGNvbCA9IGNvbHNbaV0pKSBjb250aW51ZTtcblx0XHRvW28ubGVuZ3RoXSA9ICh3cml0ZXh0YWcoJ2NvbCcsIG51bGwsIGNvbF9vYmpfdyhpLCBjb2wpKSk7XG5cdH1cblx0b1tvLmxlbmd0aF0gPSBcIjwvY29scz5cIjtcblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cblxuZnVuY3Rpb24gcGFyc2Vfd3NfeG1sX2F1dG9maWx0ZXIoZGF0YS8qOnN0cmluZyovKSB7XG5cdHZhciBvID0geyByZWY6IChkYXRhLm1hdGNoKC9yZWY9XCIoW15cIl0qKVwiLyl8fFtdKVsxXX07XG5cdHJldHVybiBvO1xufVxuZnVuY3Rpb24gd3JpdGVfd3NfeG1sX2F1dG9maWx0ZXIoZGF0YSwgd3MsIHdiLCBpZHgpLyo6c3RyaW5nKi8ge1xuXHR2YXIgcmVmID0gdHlwZW9mIGRhdGEucmVmID09IFwic3RyaW5nXCIgPyBkYXRhLnJlZiA6IGVuY29kZV9yYW5nZShkYXRhLnJlZik7XG5cdGlmKCF3Yi5Xb3JrYm9vaykgd2IuV29ya2Jvb2sgPSAoe1NoZWV0czpbXX0vKjphbnkqLyk7XG5cdGlmKCF3Yi5Xb3JrYm9vay5OYW1lcykgd2IuV29ya2Jvb2suTmFtZXMgPSBbXTtcblx0dmFyIG5hbWVzLyo6IEFycmF5PGFueT4gKi8gPSB3Yi5Xb3JrYm9vay5OYW1lcztcblx0dmFyIHJhbmdlID0gZGVjb2RlX3JhbmdlKHJlZik7XG5cdGlmKHJhbmdlLnMuciA9PSByYW5nZS5lLnIpIHsgcmFuZ2UuZS5yID0gZGVjb2RlX3JhbmdlKHdzW1wiIXJlZlwiXSkuZS5yOyByZWYgPSBlbmNvZGVfcmFuZ2UocmFuZ2UpOyB9XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7ICsraSkge1xuXHRcdHZhciBuYW1lID0gbmFtZXNbaV07XG5cdFx0aWYobmFtZS5OYW1lICE9ICdfeGxubS5fRmlsdGVyRGF0YWJhc2UnKSBjb250aW51ZTtcblx0XHRpZihuYW1lLlNoZWV0ICE9IGlkeCkgY29udGludWU7XG5cdFx0bmFtZS5SZWYgPSBcIidcIiArIHdiLlNoZWV0TmFtZXNbaWR4XSArIFwiJyFcIiArIHJlZjsgYnJlYWs7XG5cdH1cblx0aWYoaSA9PSBuYW1lcy5sZW5ndGgpIG5hbWVzLnB1c2goeyBOYW1lOiAnX3hsbm0uX0ZpbHRlckRhdGFiYXNlJywgU2hlZXQ6IGlkeCwgUmVmOiBcIidcIiArIHdiLlNoZWV0TmFtZXNbaWR4XSArIFwiJyFcIiArIHJlZiAgfSk7XG5cdHJldHVybiB3cml0ZXh0YWcoXCJhdXRvRmlsdGVyXCIsIG51bGwsIHtyZWY6cmVmfSk7XG59XG5cbi8qIDE4LjMuMS44OCBzaGVldFZpZXdzIENUX1NoZWV0Vmlld3MgKi9cbi8qIDE4LjMuMS44NyBzaGVldFZpZXcgQ1RfU2hlZXRWaWV3ICovXG52YXIgc3ZpZXdyZWdleCA9IC88KD86XFx3Oik/c2hlZXRWaWV3KD86W14+YS16XVtePl0qKT9cXC8/Pi87XG5mdW5jdGlvbiBwYXJzZV93c194bWxfc2hlZXR2aWV3cyhkYXRhLCB3Yi8qOldCV0JQcm9wcyovKSB7XG5cdGlmKCF3Yi5WaWV3cykgd2IuVmlld3MgPSBbe31dO1xuXHQoZGF0YS5tYXRjaChzdmlld3JlZ2V4KXx8W10pLmZvckVhY2goZnVuY3Rpb24oci8qOnN0cmluZyovLCBpLyo6bnVtYmVyKi8pIHtcblx0XHR2YXIgdGFnID0gcGFyc2V4bWx0YWcocik7XG5cdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRpZighd2IuVmlld3NbaV0pIHdiLlZpZXdzW2ldID0ge307XG5cdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRpZigrdGFnLnpvb21TY2FsZSkgd2IuVmlld3NbaV0uem9vbSA9ICt0YWcuem9vbVNjYWxlO1xuXHRcdC8vICRGbG93SWdub3JlXG5cdFx0aWYocGFyc2V4bWxib29sKHRhZy5yaWdodFRvTGVmdCkpIHdiLlZpZXdzW2ldLlJUTCA9IHRydWU7XG5cdH0pO1xufVxuZnVuY3Rpb24gd3JpdGVfd3NfeG1sX3NoZWV0dmlld3Mod3MsIG9wdHMsIGlkeCwgd2IpLyo6c3RyaW5nKi8ge1xuXHR2YXIgc3ZpZXcgPSAoe3dvcmtib29rVmlld0lkOlwiMFwifS8qOmFueSovKTtcblx0Ly8gJEZsb3dJZ25vcmVcblx0aWYoKCgod2J8fHt9KS5Xb3JrYm9va3x8e30pLlZpZXdzfHxbXSlbMF0pIHN2aWV3LnJpZ2h0VG9MZWZ0ID0gd2IuV29ya2Jvb2suVmlld3NbMF0uUlRMID8gXCIxXCIgOiBcIjBcIjtcblx0cmV0dXJuIHdyaXRleHRhZyhcInNoZWV0Vmlld3NcIiwgd3JpdGV4dGFnKFwic2hlZXRWaWV3XCIsIG51bGwsIHN2aWV3KSwge30pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV93c194bWxfY2VsbChjZWxsLyo6Q2VsbCovLCByZWYsIHdzLCBvcHRzLyo6OiwgaWR4LCB3YiovKS8qOnN0cmluZyovIHtcblx0aWYoY2VsbC5jKSB3c1snIWNvbW1lbnRzJ10ucHVzaChbcmVmLCBjZWxsLmNdKTtcblx0aWYoY2VsbC52ID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIGNlbGwuZiAhPT0gXCJzdHJpbmdcIiB8fCBjZWxsLnQgPT09ICd6JyAmJiAhY2VsbC5mKSByZXR1cm4gXCJcIjtcblx0dmFyIHZ2ID0gXCJcIjtcblx0dmFyIG9sZHQgPSBjZWxsLnQsIG9sZHYgPSBjZWxsLnY7XG5cdGlmKGNlbGwudCAhPT0gXCJ6XCIpIHN3aXRjaChjZWxsLnQpIHtcblx0XHRjYXNlICdiJzogdnYgPSBjZWxsLnYgPyBcIjFcIiA6IFwiMFwiOyBicmVhaztcblx0XHRjYXNlICduJzogdnYgPSAnJytjZWxsLnY7IGJyZWFrO1xuXHRcdGNhc2UgJ2UnOiB2diA9IEJFcnJbY2VsbC52XTsgYnJlYWs7XG5cdFx0Y2FzZSAnZCc6XG5cdFx0XHRpZihvcHRzICYmIG9wdHMuY2VsbERhdGVzKSB2diA9IHBhcnNlRGF0ZShjZWxsLnYsIC0xKS50b0lTT1N0cmluZygpO1xuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdGNlbGwgPSBkdXAoY2VsbCk7XG5cdFx0XHRcdGNlbGwudCA9ICduJztcblx0XHRcdFx0dnYgPSAnJysoY2VsbC52ID0gZGF0ZW51bShwYXJzZURhdGUoY2VsbC52KSkpO1xuXHRcdFx0fVxuXHRcdFx0aWYodHlwZW9mIGNlbGwueiA9PT0gJ3VuZGVmaW5lZCcpIGNlbGwueiA9IHRhYmxlX2ZtdFsxNF07XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OiB2diA9IGNlbGwudjsgYnJlYWs7XG5cdH1cblx0dmFyIHYgPSB3cml0ZXRhZygndicsIGVzY2FwZXhtbCh2dikpLCBvID0gKHtyOnJlZn0vKjphbnkqLyk7XG5cdC8qIFRPRE86IGNlbGwgc3R5bGUgKi9cblx0dmFyIG9zID0gZ2V0X2NlbGxfc3R5bGUob3B0cy5jZWxsWGZzLCBjZWxsLCBvcHRzKTtcblx0aWYob3MgIT09IDApIG8ucyA9IG9zO1xuXHRzd2l0Y2goY2VsbC50KSB7XG5cdFx0Y2FzZSAnbic6IGJyZWFrO1xuXHRcdGNhc2UgJ2QnOiBvLnQgPSBcImRcIjsgYnJlYWs7XG5cdFx0Y2FzZSAnYic6IG8udCA9IFwiYlwiOyBicmVhaztcblx0XHRjYXNlICdlJzogby50ID0gXCJlXCI7IGJyZWFrO1xuXHRcdGNhc2UgJ3onOiBicmVhaztcblx0XHRkZWZhdWx0OiBpZihjZWxsLnYgPT0gbnVsbCkgeyBkZWxldGUgY2VsbC50OyBicmVhazsgfVxuXHRcdFx0aWYoY2VsbC52Lmxlbmd0aCA+IDMyNzY3KSB0aHJvdyBuZXcgRXJyb3IoXCJUZXh0IGxlbmd0aCBtdXN0IG5vdCBleGNlZWQgMzI3NjcgY2hhcmFjdGVyc1wiKTtcblx0XHRcdGlmKG9wdHMgJiYgb3B0cy5ib29rU1NUKSB7XG5cdFx0XHRcdHYgPSB3cml0ZXRhZygndicsICcnK2dldF9zc3RfaWQob3B0cy5TdHJpbmdzLCBjZWxsLnYsIG9wdHMucmV2U3RyaW5ncykpO1xuXHRcdFx0XHRvLnQgPSBcInNcIjsgYnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRvLnQgPSBcInN0clwiOyBicmVhaztcblx0fVxuXHRpZihjZWxsLnQgIT0gb2xkdCkgeyBjZWxsLnQgPSBvbGR0OyBjZWxsLnYgPSBvbGR2OyB9XG5cdGlmKHR5cGVvZiBjZWxsLmYgPT0gXCJzdHJpbmdcIiAmJiBjZWxsLmYpIHtcblx0XHR2YXIgZmYgPSBjZWxsLkYgJiYgY2VsbC5GLnNsaWNlKDAsIHJlZi5sZW5ndGgpID09IHJlZiA/IHt0OlwiYXJyYXlcIiwgcmVmOmNlbGwuRn0gOiBudWxsO1xuXHRcdHYgPSB3cml0ZXh0YWcoJ2YnLCBlc2NhcGV4bWwoY2VsbC5mKSwgZmYpICsgKGNlbGwudiAhPSBudWxsID8gdiA6IFwiXCIpO1xuXHR9XG5cdGlmKGNlbGwubCkgd3NbJyFsaW5rcyddLnB1c2goW3JlZiwgY2VsbC5sXSk7XG5cdGlmKGNlbGwuRCkgby5jbSA9IDE7XG5cdHJldHVybiB3cml0ZXh0YWcoJ2MnLCB2LCBvKTtcbn1cblxudmFyIHBhcnNlX3dzX3htbF9kYXRhID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpIHtcblx0dmFyIGNlbGxyZWdleCA9IC88KD86XFx3KzopP2NbIFxcLz5dLywgcm93cmVnZXggPSAvPFxcLyg/Olxcdys6KT9yb3c+Lztcblx0dmFyIHJyZWdleCA9IC9yPVtcIiddKFteXCInXSopW1wiJ10vLCBpc3JlZ2V4ID0gLzwoPzpcXHcrOik/aXM+KFtcXFNcXHNdKj8pPFxcLyg/Olxcdys6KT9pcz4vO1xuXHR2YXIgcmVmcmVnZXggPSAvcmVmPVtcIiddKFteXCInXSopW1wiJ10vO1xuXHR2YXIgbWF0Y2hfdiA9IG1hdGNodGFnKFwidlwiKSwgbWF0Y2hfZiA9IG1hdGNodGFnKFwiZlwiKTtcblxucmV0dXJuIGZ1bmN0aW9uIHBhcnNlX3dzX3htbF9kYXRhKHNkYXRhLyo6c3RyaW5nKi8sIHMsIG9wdHMsIGd1ZXNzLyo6UmFuZ2UqLywgdGhlbWVzLCBzdHlsZXMpIHtcblx0dmFyIHJpID0gMCwgeCA9IFwiXCIsIGNlbGxzLyo6QXJyYXk8c3RyaW5nPiovID0gW10sIGNyZWYvKjo/QXJyYXk8c3RyaW5nPiovID0gW10sIGlkeD0wLCBpPTAsIGNjPTAsIGQ9XCJcIiwgcC8qOmFueSovO1xuXHR2YXIgdGFnLCB0YWdyID0gMCwgdGFnYyA9IDA7XG5cdHZhciBzc3RyLCBmdGFnO1xuXHR2YXIgZm10aWQgPSAwLCBmaWxsaWQgPSAwO1xuXHR2YXIgZG9fZm9ybWF0ID0gQXJyYXkuaXNBcnJheShzdHlsZXMuQ2VsbFhmKSwgY2Y7XG5cdHZhciBhcnJheWYvKjpBcnJheTxbUmFuZ2UsIHN0cmluZ10+Ki8gPSBbXTtcblx0dmFyIHNoYXJlZGYgPSBbXTtcblx0dmFyIGRlbnNlID0gQXJyYXkuaXNBcnJheShzKTtcblx0dmFyIHJvd3MvKjpBcnJheTxSb3dJbmZvPiovID0gW10sIHJvd29iaiA9IHt9LCByb3dyaXRlID0gZmFsc2U7XG5cdHZhciBzaGVldFN0dWJzID0gISFvcHRzLnNoZWV0U3R1YnM7XG5cdGZvcih2YXIgbWFyciA9IHNkYXRhLnNwbGl0KHJvd3JlZ2V4KSwgbXQgPSAwLCBtYXJybGVuID0gbWFyci5sZW5ndGg7IG10ICE9IG1hcnJsZW47ICsrbXQpIHtcblx0XHR4ID0gbWFyclttdF0udHJpbSgpO1xuXHRcdHZhciB4bGVuID0geC5sZW5ndGg7XG5cdFx0aWYoeGxlbiA9PT0gMCkgY29udGludWU7XG5cblx0XHQvKiAxOC4zLjEuNzMgcm93IENUX1JvdyAqL1xuXHRcdHZhciByc3RhcnRpID0gMDtcblx0XHRvdXRhOiBmb3IocmkgPSAwOyByaSA8IHhsZW47ICsrcmkpIHN3aXRjaCgvKnguY2hhckNvZGVBdChyaSkqL3hbcmldKSB7XG5cdFx0XHRjYXNlIFwiPlwiIC8qNjIqLzpcblx0XHRcdFx0aWYoLyp4LmNoYXJDb2RlQXQocmktMSkgIT0gNDcqL3hbcmktMV0gIT0gXCIvXCIpIHsgKytyaTsgYnJlYWsgb3V0YTsgfVxuXHRcdFx0XHRpZihvcHRzICYmIG9wdHMuY2VsbFN0eWxlcykge1xuXHRcdFx0XHRcdC8vIFRPRE86IGF2b2lkIGR1cGxpY2F0aW9uXG5cdFx0XHRcdFx0dGFnID0gcGFyc2V4bWx0YWcoeC5zbGljZShyc3RhcnRpLHJpKSwgdHJ1ZSk7XG5cdFx0XHRcdFx0dGFnciA9IHRhZy5yICE9IG51bGwgPyBwYXJzZUludCh0YWcuciwgMTApIDogdGFncisxOyB0YWdjID0gLTE7XG5cdFx0XHRcdFx0aWYob3B0cy5zaGVldFJvd3MgJiYgb3B0cy5zaGVldFJvd3MgPCB0YWdyKSBjb250aW51ZTtcblx0XHRcdFx0XHRyb3dvYmogPSB7fTsgcm93cml0ZSA9IGZhbHNlO1xuXHRcdFx0XHRcdGlmKHRhZy5odCkgeyByb3dyaXRlID0gdHJ1ZTsgcm93b2JqLmhwdCA9IHBhcnNlRmxvYXQodGFnLmh0KTsgcm93b2JqLmhweCA9IHB0MnB4KHJvd29iai5ocHQpOyB9XG5cdFx0XHRcdFx0aWYodGFnLmhpZGRlbiA9PSBcIjFcIikgeyByb3dyaXRlID0gdHJ1ZTsgcm93b2JqLmhpZGRlbiA9IHRydWU7IH1cblx0XHRcdFx0XHRpZih0YWcub3V0bGluZUxldmVsICE9IG51bGwpIHsgcm93cml0ZSA9IHRydWU7IHJvd29iai5sZXZlbCA9ICt0YWcub3V0bGluZUxldmVsOyB9XG5cdFx0XHRcdFx0aWYocm93cml0ZSkgcm93c1t0YWdyLTFdID0gcm93b2JqO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIjxcIiAvKjYwKi86IHJzdGFydGkgPSByaTsgYnJlYWs7XG5cdFx0fVxuXHRcdGlmKHJzdGFydGkgPj0gcmkpIGJyZWFrO1xuXHRcdHRhZyA9IHBhcnNleG1sdGFnKHguc2xpY2UocnN0YXJ0aSxyaSksIHRydWUpO1xuXHRcdHRhZ3IgPSB0YWcuciAhPSBudWxsID8gcGFyc2VJbnQodGFnLnIsIDEwKSA6IHRhZ3IrMTsgdGFnYyA9IC0xO1xuXHRcdGlmKG9wdHMuc2hlZXRSb3dzICYmIG9wdHMuc2hlZXRSb3dzIDwgdGFncikgY29udGludWU7XG5cdFx0aWYoZ3Vlc3Mucy5yID4gdGFnciAtIDEpIGd1ZXNzLnMuciA9IHRhZ3IgLSAxO1xuXHRcdGlmKGd1ZXNzLmUuciA8IHRhZ3IgLSAxKSBndWVzcy5lLnIgPSB0YWdyIC0gMTtcblxuXHRcdGlmKG9wdHMgJiYgb3B0cy5jZWxsU3R5bGVzKSB7XG5cdFx0XHRyb3dvYmogPSB7fTsgcm93cml0ZSA9IGZhbHNlO1xuXHRcdFx0aWYodGFnLmh0KSB7IHJvd3JpdGUgPSB0cnVlOyByb3dvYmouaHB0ID0gcGFyc2VGbG9hdCh0YWcuaHQpOyByb3dvYmouaHB4ID0gcHQycHgocm93b2JqLmhwdCk7IH1cblx0XHRcdGlmKHRhZy5oaWRkZW4gPT0gXCIxXCIpIHsgcm93cml0ZSA9IHRydWU7IHJvd29iai5oaWRkZW4gPSB0cnVlOyB9XG5cdFx0XHRpZih0YWcub3V0bGluZUxldmVsICE9IG51bGwpIHsgcm93cml0ZSA9IHRydWU7IHJvd29iai5sZXZlbCA9ICt0YWcub3V0bGluZUxldmVsOyB9XG5cdFx0XHRpZihyb3dyaXRlKSByb3dzW3RhZ3ItMV0gPSByb3dvYmo7XG5cdFx0fVxuXG5cdFx0LyogMTguMy4xLjQgYyBDVF9DZWxsICovXG5cdFx0Y2VsbHMgPSB4LnNsaWNlKHJpKS5zcGxpdChjZWxscmVnZXgpO1xuXHRcdGZvcih2YXIgcnNsaWNlID0gMDsgcnNsaWNlICE9IGNlbGxzLmxlbmd0aDsgKytyc2xpY2UpIGlmKGNlbGxzW3JzbGljZV0udHJpbSgpLmNoYXJBdCgwKSAhPSBcIjxcIikgYnJlYWs7XG5cdFx0Y2VsbHMgPSBjZWxscy5zbGljZShyc2xpY2UpO1xuXHRcdGZvcihyaSA9IDA7IHJpICE9IGNlbGxzLmxlbmd0aDsgKytyaSkge1xuXHRcdFx0eCA9IGNlbGxzW3JpXS50cmltKCk7XG5cdFx0XHRpZih4Lmxlbmd0aCA9PT0gMCkgY29udGludWU7XG5cdFx0XHRjcmVmID0geC5tYXRjaChycmVnZXgpOyBpZHggPSByaTsgaT0wOyBjYz0wO1xuXHRcdFx0eCA9IFwiPGMgXCIgKyAoeC5zbGljZSgwLDEpPT1cIjxcIj9cIj5cIjpcIlwiKSArIHg7XG5cdFx0XHRpZihjcmVmICE9IG51bGwgJiYgY3JlZi5sZW5ndGggPT09IDIpIHtcblx0XHRcdFx0aWR4ID0gMDsgZD1jcmVmWzFdO1xuXHRcdFx0XHRmb3IoaT0wOyBpICE9IGQubGVuZ3RoOyArK2kpIHtcblx0XHRcdFx0XHRpZigoY2M9ZC5jaGFyQ29kZUF0KGkpLTY0KSA8IDEgfHwgY2MgPiAyNikgYnJlYWs7XG5cdFx0XHRcdFx0aWR4ID0gMjYqaWR4ICsgY2M7XG5cdFx0XHRcdH1cblx0XHRcdFx0LS1pZHg7XG5cdFx0XHRcdHRhZ2MgPSBpZHg7XG5cdFx0XHR9IGVsc2UgKyt0YWdjO1xuXHRcdFx0Zm9yKGkgPSAwOyBpICE9IHgubGVuZ3RoOyArK2kpIGlmKHguY2hhckNvZGVBdChpKSA9PT0gNjIpIGJyZWFrOyArK2k7XG5cdFx0XHR0YWcgPSBwYXJzZXhtbHRhZyh4LnNsaWNlKDAsaSksIHRydWUpO1xuXHRcdFx0aWYoIXRhZy5yKSB0YWcuciA9IGVuY29kZV9jZWxsKHtyOnRhZ3ItMSwgYzp0YWdjfSk7XG5cdFx0XHRkID0geC5zbGljZShpKTtcblx0XHRcdHAgPSAoe3Q6XCJcIn0vKjphbnkqLyk7XG5cblx0XHRcdGlmKChjcmVmPWQubWF0Y2gobWF0Y2hfdikpIT0gbnVsbCAmJiAvKjo6Y3JlZiAhPSBudWxsICYmICovY3JlZlsxXSAhPT0gJycpIHAudj11bmVzY2FwZXhtbChjcmVmWzFdKTtcblx0XHRcdGlmKG9wdHMuY2VsbEZvcm11bGEpIHtcblx0XHRcdFx0aWYoKGNyZWY9ZC5tYXRjaChtYXRjaF9mKSkhPSBudWxsICYmIC8qOjpjcmVmICE9IG51bGwgJiYgKi9jcmVmWzFdICE9PSAnJykge1xuXHRcdFx0XHRcdC8qIFRPRE86IG1hdGNoIGFnYWluc3QgWExTWEZ1dHVyZUZ1bmN0aW9ucyAqL1xuXHRcdFx0XHRcdHAuZj11bmVzY2FwZXhtbCh1dGY4cmVhZChjcmVmWzFdKSkucmVwbGFjZSgvXFxyXFxuL2csIFwiXFxuXCIpO1xuXHRcdFx0XHRcdGlmKCFvcHRzLnhsZm4pIHAuZiA9IF94bGZuKHAuZik7XG5cdFx0XHRcdFx0aWYoLyo6OmNyZWYgIT0gbnVsbCAmJiBjcmVmWzBdICE9IG51bGwgJiYgKi9jcmVmWzBdLmluZGV4T2YoJ3Q9XCJhcnJheVwiJykgPiAtMSkge1xuXHRcdFx0XHRcdFx0cC5GID0gKGQubWF0Y2gocmVmcmVnZXgpfHxbXSlbMV07XG5cdFx0XHRcdFx0XHRpZihwLkYuaW5kZXhPZihcIjpcIikgPiAtMSkgYXJyYXlmLnB1c2goW3NhZmVfZGVjb2RlX3JhbmdlKHAuRiksIHAuRl0pO1xuXHRcdFx0XHRcdH0gZWxzZSBpZigvKjo6Y3JlZiAhPSBudWxsICYmIGNyZWZbMF0gIT0gbnVsbCAmJiAqL2NyZWZbMF0uaW5kZXhPZigndD1cInNoYXJlZFwiJykgPiAtMSkge1xuXHRcdFx0XHRcdFx0Ly8gVE9ETzogcGFyc2UgZm9ybXVsYVxuXHRcdFx0XHRcdFx0ZnRhZyA9IHBhcnNleG1sdGFnKGNyZWZbMF0pO1xuXHRcdFx0XHRcdFx0dmFyIF9fX2YgPSB1bmVzY2FwZXhtbCh1dGY4cmVhZChjcmVmWzFdKSk7XG5cdFx0XHRcdFx0XHRpZighb3B0cy54bGZuKSBfX19mID0gX3hsZm4oX19fZik7XG5cdFx0XHRcdFx0XHRzaGFyZWRmW3BhcnNlSW50KGZ0YWcuc2ksIDEwKV0gPSBbZnRhZywgX19fZiwgdGFnLnJdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmKChjcmVmPWQubWF0Y2goLzxmW14+XSpcXC8+LykpKSB7XG5cdFx0XHRcdFx0ZnRhZyA9IHBhcnNleG1sdGFnKGNyZWZbMF0pO1xuXHRcdFx0XHRcdGlmKHNoYXJlZGZbZnRhZy5zaV0pIHAuZiA9IHNoaWZ0X2Zvcm11bGFfeGxzeChzaGFyZWRmW2Z0YWcuc2ldWzFdLCBzaGFyZWRmW2Z0YWcuc2ldWzJdLypbMF0ucmVmKi8sIHRhZy5yKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvKiBUT0RPOiBmYWN0b3Igb3V0IGNvbnRhaW5zIGxvZ2ljICovXG5cdFx0XHRcdHZhciBfdGFnID0gZGVjb2RlX2NlbGwodGFnLnIpO1xuXHRcdFx0XHRmb3IoaSA9IDA7IGkgPCBhcnJheWYubGVuZ3RoOyArK2kpXG5cdFx0XHRcdFx0aWYoX3RhZy5yID49IGFycmF5ZltpXVswXS5zLnIgJiYgX3RhZy5yIDw9IGFycmF5ZltpXVswXS5lLnIpXG5cdFx0XHRcdFx0XHRpZihfdGFnLmMgPj0gYXJyYXlmW2ldWzBdLnMuYyAmJiBfdGFnLmMgPD0gYXJyYXlmW2ldWzBdLmUuYylcblx0XHRcdFx0XHRcdFx0cC5GID0gYXJyYXlmW2ldWzFdO1xuXHRcdFx0fVxuXG5cdFx0XHRpZih0YWcudCA9PSBudWxsICYmIHAudiA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGlmKHAuZiB8fCBwLkYpIHtcblx0XHRcdFx0XHRwLnYgPSAwOyBwLnQgPSBcIm5cIjtcblx0XHRcdFx0fSBlbHNlIGlmKCFzaGVldFN0dWJzKSBjb250aW51ZTtcblx0XHRcdFx0ZWxzZSBwLnQgPSBcInpcIjtcblx0XHRcdH1cblx0XHRcdGVsc2UgcC50ID0gdGFnLnQgfHwgXCJuXCI7XG5cdFx0XHRpZihndWVzcy5zLmMgPiB0YWdjKSBndWVzcy5zLmMgPSB0YWdjO1xuXHRcdFx0aWYoZ3Vlc3MuZS5jIDwgdGFnYykgZ3Vlc3MuZS5jID0gdGFnYztcblx0XHRcdC8qIDE4LjE4LjExIHQgU1RfQ2VsbFR5cGUgKi9cblx0XHRcdHN3aXRjaChwLnQpIHtcblx0XHRcdFx0Y2FzZSAnbic6XG5cdFx0XHRcdFx0aWYocC52ID09IFwiXCIgfHwgcC52ID09IG51bGwpIHtcblx0XHRcdFx0XHRcdGlmKCFzaGVldFN0dWJzKSBjb250aW51ZTtcblx0XHRcdFx0XHRcdHAudCA9ICd6Jztcblx0XHRcdFx0XHR9IGVsc2UgcC52ID0gcGFyc2VGbG9hdChwLnYpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdzJzpcblx0XHRcdFx0XHRpZih0eXBlb2YgcC52ID09ICd1bmRlZmluZWQnKSB7XG5cdFx0XHRcdFx0XHRpZighc2hlZXRTdHVicykgY29udGludWU7XG5cdFx0XHRcdFx0XHRwLnQgPSAneic7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHNzdHIgPSBzdHJzW3BhcnNlSW50KHAudiwgMTApXTtcblx0XHRcdFx0XHRcdHAudiA9IHNzdHIudDtcblx0XHRcdFx0XHRcdHAuciA9IHNzdHIucjtcblx0XHRcdFx0XHRcdGlmKG9wdHMuY2VsbEhUTUwpIHAuaCA9IHNzdHIuaDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ3N0cic6XG5cdFx0XHRcdFx0cC50ID0gXCJzXCI7XG5cdFx0XHRcdFx0cC52ID0gKHAudiE9bnVsbCkgPyB1dGY4cmVhZChwLnYpIDogJyc7XG5cdFx0XHRcdFx0aWYob3B0cy5jZWxsSFRNTCkgcC5oID0gZXNjYXBlaHRtbChwLnYpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdpbmxpbmVTdHInOlxuXHRcdFx0XHRcdGNyZWYgPSBkLm1hdGNoKGlzcmVnZXgpO1xuXHRcdFx0XHRcdHAudCA9ICdzJztcblx0XHRcdFx0XHRpZihjcmVmICE9IG51bGwgJiYgKHNzdHIgPSBwYXJzZV9zaShjcmVmWzFdKSkpIHtcblx0XHRcdFx0XHRcdHAudiA9IHNzdHIudDtcblx0XHRcdFx0XHRcdGlmKG9wdHMuY2VsbEhUTUwpIHAuaCA9IHNzdHIuaDtcblx0XHRcdFx0XHR9IGVsc2UgcC52ID0gXCJcIjtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnYic6IHAudiA9IHBhcnNleG1sYm9vbChwLnYpOyBicmVhaztcblx0XHRcdFx0Y2FzZSAnZCc6XG5cdFx0XHRcdFx0aWYob3B0cy5jZWxsRGF0ZXMpIHAudiA9IHBhcnNlRGF0ZShwLnYsIDEpO1xuXHRcdFx0XHRcdGVsc2UgeyBwLnYgPSBkYXRlbnVtKHBhcnNlRGF0ZShwLnYsIDEpKTsgcC50ID0gJ24nOyB9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdC8qIGVycm9yIHN0cmluZyBpbiAudywgbnVtYmVyIGluIC52ICovXG5cdFx0XHRcdGNhc2UgJ2UnOlxuXHRcdFx0XHRcdGlmKCFvcHRzIHx8IG9wdHMuY2VsbFRleHQgIT09IGZhbHNlKSBwLncgPSBwLnY7XG5cdFx0XHRcdFx0cC52ID0gUkJFcnJbcC52XTsgYnJlYWs7XG5cdFx0XHR9XG5cdFx0XHQvKiBmb3JtYXR0aW5nICovXG5cdFx0XHRmbXRpZCA9IGZpbGxpZCA9IDA7XG5cdFx0XHRjZiA9IG51bGw7XG5cdFx0XHRpZihkb19mb3JtYXQgJiYgdGFnLnMgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRjZiA9IHN0eWxlcy5DZWxsWGZbdGFnLnNdO1xuXHRcdFx0XHRpZihjZiAhPSBudWxsKSB7XG5cdFx0XHRcdFx0aWYoY2YubnVtRm10SWQgIT0gbnVsbCkgZm10aWQgPSBjZi5udW1GbXRJZDtcblx0XHRcdFx0XHRpZihvcHRzLmNlbGxTdHlsZXMpIHtcblx0XHRcdFx0XHRcdGlmKGNmLmZpbGxJZCAhPSBudWxsKSBmaWxsaWQgPSBjZi5maWxsSWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRzYWZlX2Zvcm1hdChwLCBmbXRpZCwgZmlsbGlkLCBvcHRzLCB0aGVtZXMsIHN0eWxlcyk7XG5cdFx0XHRpZihvcHRzLmNlbGxEYXRlcyAmJiBkb19mb3JtYXQgJiYgcC50ID09ICduJyAmJiBmbXRfaXNfZGF0ZSh0YWJsZV9mbXRbZm10aWRdKSkgeyBwLnQgPSAnZCc7IHAudiA9IG51bWRhdGUocC52KTsgfVxuXHRcdFx0aWYodGFnLmNtICYmIG9wdHMueGxtZXRhKSB7XG5cdFx0XHRcdHZhciBjbSA9IChvcHRzLnhsbWV0YS5DZWxsfHxbXSlbK3RhZy5jbS0xXTtcblx0XHRcdFx0aWYoY20gJiYgY20udHlwZSA9PSAnWExEQVBSJykgcC5EID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGlmKGRlbnNlKSB7XG5cdFx0XHRcdHZhciBfciA9IGRlY29kZV9jZWxsKHRhZy5yKTtcblx0XHRcdFx0aWYoIXNbX3Iucl0pIHNbX3Iucl0gPSBbXTtcblx0XHRcdFx0c1tfci5yXVtfci5jXSA9IHA7XG5cdFx0XHR9IGVsc2Ugc1t0YWcucl0gPSBwO1xuXHRcdH1cblx0fVxuXHRpZihyb3dzLmxlbmd0aCA+IDApIHNbJyFyb3dzJ10gPSByb3dzO1xufTsgfSkoKTtcblxuZnVuY3Rpb24gd3JpdGVfd3NfeG1sX2RhdGEod3MvKjpXb3Jrc2hlZXQqLywgb3B0cywgaWR4Lyo6bnVtYmVyKi8sIHdiLyo6V29ya2Jvb2sqLy8qOjosIHJlbHMqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvLyo6QXJyYXk8c3RyaW5nPiovID0gW10sIHIvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXSwgcmFuZ2UgPSBzYWZlX2RlY29kZV9yYW5nZSh3c1snIXJlZiddKSwgY2VsbD1cIlwiLCByZWYsIHJyID0gXCJcIiwgY29scy8qOkFycmF5PHN0cmluZz4qLyA9IFtdLCBSPTAsIEM9MCwgcm93cyA9IHdzWychcm93cyddO1xuXHR2YXIgZGVuc2UgPSBBcnJheS5pc0FycmF5KHdzKTtcblx0dmFyIHBhcmFtcyA9ICh7cjpycn0vKjphbnkqLyksIHJvdy8qOlJvd0luZm8qLywgaGVpZ2h0ID0gLTE7XG5cdGZvcihDID0gcmFuZ2Uucy5jOyBDIDw9IHJhbmdlLmUuYzsgKytDKSBjb2xzW0NdID0gZW5jb2RlX2NvbChDKTtcblx0Zm9yKFIgPSByYW5nZS5zLnI7IFIgPD0gcmFuZ2UuZS5yOyArK1IpIHtcblx0XHRyID0gW107XG5cdFx0cnIgPSBlbmNvZGVfcm93KFIpO1xuXHRcdGZvcihDID0gcmFuZ2Uucy5jOyBDIDw9IHJhbmdlLmUuYzsgKytDKSB7XG5cdFx0XHRyZWYgPSBjb2xzW0NdICsgcnI7XG5cdFx0XHR2YXIgX2NlbGwgPSBkZW5zZSA/ICh3c1tSXXx8W10pW0NdOiB3c1tyZWZdO1xuXHRcdFx0aWYoX2NlbGwgPT09IHVuZGVmaW5lZCkgY29udGludWU7XG5cdFx0XHRpZigoY2VsbCA9IHdyaXRlX3dzX3htbF9jZWxsKF9jZWxsLCByZWYsIHdzLCBvcHRzLCBpZHgsIHdiKSkgIT0gbnVsbCkgci5wdXNoKGNlbGwpO1xuXHRcdH1cblx0XHRpZihyLmxlbmd0aCA+IDAgfHwgKHJvd3MgJiYgcm93c1tSXSkpIHtcblx0XHRcdHBhcmFtcyA9ICh7cjpycn0vKjphbnkqLyk7XG5cdFx0XHRpZihyb3dzICYmIHJvd3NbUl0pIHtcblx0XHRcdFx0cm93ID0gcm93c1tSXTtcblx0XHRcdFx0aWYocm93LmhpZGRlbikgcGFyYW1zLmhpZGRlbiA9IDE7XG5cdFx0XHRcdGhlaWdodCA9IC0xO1xuXHRcdFx0XHRpZihyb3cuaHB4KSBoZWlnaHQgPSBweDJwdChyb3cuaHB4KTtcblx0XHRcdFx0ZWxzZSBpZihyb3cuaHB0KSBoZWlnaHQgPSByb3cuaHB0O1xuXHRcdFx0XHRpZihoZWlnaHQgPiAtMSkgeyBwYXJhbXMuaHQgPSBoZWlnaHQ7IHBhcmFtcy5jdXN0b21IZWlnaHQgPSAxOyB9XG5cdFx0XHRcdGlmKHJvdy5sZXZlbCkgeyBwYXJhbXMub3V0bGluZUxldmVsID0gcm93LmxldmVsOyB9XG5cdFx0XHR9XG5cdFx0XHRvW28ubGVuZ3RoXSA9ICh3cml0ZXh0YWcoJ3JvdycsIHIuam9pbihcIlwiKSwgcGFyYW1zKSk7XG5cdFx0fVxuXHR9XG5cdGlmKHJvd3MpIGZvcig7IFIgPCByb3dzLmxlbmd0aDsgKytSKSB7XG5cdFx0aWYocm93cyAmJiByb3dzW1JdKSB7XG5cdFx0XHRwYXJhbXMgPSAoe3I6UisxfS8qOmFueSovKTtcblx0XHRcdHJvdyA9IHJvd3NbUl07XG5cdFx0XHRpZihyb3cuaGlkZGVuKSBwYXJhbXMuaGlkZGVuID0gMTtcblx0XHRcdGhlaWdodCA9IC0xO1xuXHRcdFx0aWYgKHJvdy5ocHgpIGhlaWdodCA9IHB4MnB0KHJvdy5ocHgpO1xuXHRcdFx0ZWxzZSBpZiAocm93LmhwdCkgaGVpZ2h0ID0gcm93LmhwdDtcblx0XHRcdGlmIChoZWlnaHQgPiAtMSkgeyBwYXJhbXMuaHQgPSBoZWlnaHQ7IHBhcmFtcy5jdXN0b21IZWlnaHQgPSAxOyB9XG5cdFx0XHRpZiAocm93LmxldmVsKSB7IHBhcmFtcy5vdXRsaW5lTGV2ZWwgPSByb3cubGV2ZWw7IH1cblx0XHRcdG9bby5sZW5ndGhdID0gKHdyaXRleHRhZygncm93JywgXCJcIiwgcGFyYW1zKSk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3dzX3htbChpZHgvKjpudW1iZXIqLywgb3B0cywgd2IvKjpXb3JrYm9vayovLCByZWxzKS8qOnN0cmluZyovIHtcblx0dmFyIG8gPSBbWE1MX0hFQURFUiwgd3JpdGV4dGFnKCd3b3Jrc2hlZXQnLCBudWxsLCB7XG5cdFx0J3htbG5zJzogWE1MTlNfbWFpblswXSxcblx0XHQneG1sbnM6cic6IFhNTE5TLnJcblx0fSldO1xuXHR2YXIgcyA9IHdiLlNoZWV0TmFtZXNbaWR4XSwgc2lkeCA9IDAsIHJkYXRhID0gXCJcIjtcblx0dmFyIHdzID0gd2IuU2hlZXRzW3NdO1xuXHRpZih3cyA9PSBudWxsKSB3cyA9IHt9O1xuXHR2YXIgcmVmID0gd3NbJyFyZWYnXSB8fCAnQTEnO1xuXHR2YXIgcmFuZ2UgPSBzYWZlX2RlY29kZV9yYW5nZShyZWYpO1xuXHRpZihyYW5nZS5lLmMgPiAweDNGRkYgfHwgcmFuZ2UuZS5yID4gMHhGRkZGRikge1xuXHRcdGlmKG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoXCJSYW5nZSBcIiArIHJlZiArIFwiIGV4Y2VlZHMgZm9ybWF0IGxpbWl0IEExOlhGRDEwNDg1NzZcIik7XG5cdFx0cmFuZ2UuZS5jID0gTWF0aC5taW4ocmFuZ2UuZS5jLCAweDNGRkYpO1xuXHRcdHJhbmdlLmUuciA9IE1hdGgubWluKHJhbmdlLmUuYywgMHhGRkZGRik7XG5cdFx0cmVmID0gZW5jb2RlX3JhbmdlKHJhbmdlKTtcblx0fVxuXHRpZighcmVscykgcmVscyA9IHt9O1xuXHR3c1snIWNvbW1lbnRzJ10gPSBbXTtcblx0dmFyIF9kcmF3aW5nID0gW107XG5cblx0d3JpdGVfd3NfeG1sX3NoZWV0cHIod3MsIHdiLCBpZHgsIG9wdHMsIG8pO1xuXG5cdG9bby5sZW5ndGhdID0gKHdyaXRleHRhZygnZGltZW5zaW9uJywgbnVsbCwgeydyZWYnOiByZWZ9KSk7XG5cblx0b1tvLmxlbmd0aF0gPSB3cml0ZV93c194bWxfc2hlZXR2aWV3cyh3cywgb3B0cywgaWR4LCB3Yik7XG5cblx0LyogVE9ETzogc3RvcmUgaW4gV0IsIHByb2Nlc3Mgc3R5bGVzICovXG5cdGlmKG9wdHMuc2hlZXRGb3JtYXQpIG9bby5sZW5ndGhdID0gKHdyaXRleHRhZygnc2hlZXRGb3JtYXRQcicsIG51bGwsIHtcblx0XHRkZWZhdWx0Um93SGVpZ2h0Om9wdHMuc2hlZXRGb3JtYXQuZGVmYXVsdFJvd0hlaWdodHx8JzE2Jyxcblx0XHRiYXNlQ29sV2lkdGg6b3B0cy5zaGVldEZvcm1hdC5iYXNlQ29sV2lkdGh8fCcxMCcsXG5cdFx0b3V0bGluZUxldmVsUm93Om9wdHMuc2hlZXRGb3JtYXQub3V0bGluZUxldmVsUm93fHwnNydcblx0fSkpO1xuXG5cdGlmKHdzWychY29scyddICE9IG51bGwgJiYgd3NbJyFjb2xzJ10ubGVuZ3RoID4gMCkgb1tvLmxlbmd0aF0gPSAod3JpdGVfd3NfeG1sX2NvbHMod3MsIHdzWychY29scyddKSk7XG5cblx0b1tzaWR4ID0gby5sZW5ndGhdID0gJzxzaGVldERhdGEvPic7XG5cdHdzWychbGlua3MnXSA9IFtdO1xuXHRpZih3c1snIXJlZiddICE9IG51bGwpIHtcblx0XHRyZGF0YSA9IHdyaXRlX3dzX3htbF9kYXRhKHdzLCBvcHRzLCBpZHgsIHdiLCByZWxzKTtcblx0XHRpZihyZGF0YS5sZW5ndGggPiAwKSBvW28ubGVuZ3RoXSA9IChyZGF0YSk7XG5cdH1cblx0aWYoby5sZW5ndGg+c2lkeCsxKSB7IG9bby5sZW5ndGhdID0gKCc8L3NoZWV0RGF0YT4nKTsgb1tzaWR4XT1vW3NpZHhdLnJlcGxhY2UoXCIvPlwiLFwiPlwiKTsgfVxuXG5cdC8qIHNoZWV0Q2FsY1ByICovXG5cblx0aWYod3NbJyFwcm90ZWN0J10pIG9bby5sZW5ndGhdID0gd3JpdGVfd3NfeG1sX3Byb3RlY3Rpb24od3NbJyFwcm90ZWN0J10pO1xuXG5cdC8qIHByb3RlY3RlZFJhbmdlcyAqL1xuXHQvKiBzY2VuYXJpb3MgKi9cblxuXHRpZih3c1snIWF1dG9maWx0ZXInXSAhPSBudWxsKSBvW28ubGVuZ3RoXSA9IHdyaXRlX3dzX3htbF9hdXRvZmlsdGVyKHdzWychYXV0b2ZpbHRlciddLCB3cywgd2IsIGlkeCk7XG5cblx0Lyogc29ydFN0YXRlICovXG5cdC8qIGRhdGFDb25zb2xpZGF0ZSAqL1xuXHQvKiBjdXN0b21TaGVldFZpZXdzICovXG5cblx0aWYod3NbJyFtZXJnZXMnXSAhPSBudWxsICYmIHdzWychbWVyZ2VzJ10ubGVuZ3RoID4gMCkgb1tvLmxlbmd0aF0gPSAod3JpdGVfd3NfeG1sX21lcmdlcyh3c1snIW1lcmdlcyddKSk7XG5cblx0LyogcGhvbmV0aWNQciAqL1xuXHQvKiBjb25kaXRpb25hbEZvcm1hdHRpbmcgKi9cblx0LyogZGF0YVZhbGlkYXRpb25zICovXG5cblx0dmFyIHJlbGMgPSAtMSwgcmVsLCBySWQgPSAtMTtcblx0aWYoLyo6OigqL3dzWychbGlua3MnXS8qOjp8fFtdKSovLmxlbmd0aCA+IDApIHtcblx0XHRvW28ubGVuZ3RoXSA9IFwiPGh5cGVybGlua3M+XCI7XG5cdFx0Lyo6OigqL3dzWychbGlua3MnXS8qOjp8fFtdKSovLmZvckVhY2goZnVuY3Rpb24obCkge1xuXHRcdFx0aWYoIWxbMV0uVGFyZ2V0KSByZXR1cm47XG5cdFx0XHRyZWwgPSAoe1wicmVmXCI6bFswXX0vKjphbnkqLyk7XG5cdFx0XHRpZihsWzFdLlRhcmdldC5jaGFyQXQoMCkgIT0gXCIjXCIpIHtcblx0XHRcdFx0cklkID0gYWRkX3JlbHMocmVscywgLTEsIGVzY2FwZXhtbChsWzFdLlRhcmdldCkucmVwbGFjZSgvIy4qJC8sIFwiXCIpLCBSRUxTLkhMSU5LKTtcblx0XHRcdFx0cmVsW1wicjppZFwiXSA9IFwicklkXCIrcklkO1xuXHRcdFx0fVxuXHRcdFx0aWYoKHJlbGMgPSBsWzFdLlRhcmdldC5pbmRleE9mKFwiI1wiKSkgPiAtMSkgcmVsLmxvY2F0aW9uID0gZXNjYXBleG1sKGxbMV0uVGFyZ2V0LnNsaWNlKHJlbGMrMSkpO1xuXHRcdFx0aWYobFsxXS5Ub29sdGlwKSByZWwudG9vbHRpcCA9IGVzY2FwZXhtbChsWzFdLlRvb2x0aXApO1xuXHRcdFx0b1tvLmxlbmd0aF0gPSB3cml0ZXh0YWcoXCJoeXBlcmxpbmtcIixudWxsLHJlbCk7XG5cdFx0fSk7XG5cdFx0b1tvLmxlbmd0aF0gPSBcIjwvaHlwZXJsaW5rcz5cIjtcblx0fVxuXHRkZWxldGUgd3NbJyFsaW5rcyddO1xuXG5cdC8qIHByaW50T3B0aW9ucyAqL1xuXG5cdGlmKHdzWychbWFyZ2lucyddICE9IG51bGwpIG9bby5sZW5ndGhdID0gIHdyaXRlX3dzX3htbF9tYXJnaW5zKHdzWychbWFyZ2lucyddKTtcblxuXHQvKiBwYWdlU2V0dXAgKi9cblx0LyogaGVhZGVyRm9vdGVyICovXG5cdC8qIHJvd0JyZWFrcyAqL1xuXHQvKiBjb2xCcmVha3MgKi9cblx0LyogY3VzdG9tUHJvcGVydGllcyAqL1xuXHQvKiBjZWxsV2F0Y2hlcyAqL1xuXG5cdGlmKCFvcHRzIHx8IG9wdHMuaWdub3JlRUMgfHwgKG9wdHMuaWdub3JlRUMgPT0gKHZvaWQgMCkpKSBvW28ubGVuZ3RoXSA9IHdyaXRldGFnKFwiaWdub3JlZEVycm9yc1wiLCB3cml0ZXh0YWcoXCJpZ25vcmVkRXJyb3JcIiwgbnVsbCwge251bWJlclN0b3JlZEFzVGV4dDoxLCBzcXJlZjpyZWZ9KSk7XG5cblx0Lyogc21hcnRUYWdzICovXG5cblx0aWYoX2RyYXdpbmcubGVuZ3RoID4gMCkge1xuXHRcdHJJZCA9IGFkZF9yZWxzKHJlbHMsIC0xLCBcIi4uL2RyYXdpbmdzL2RyYXdpbmdcIiArIChpZHgrMSkgKyBcIi54bWxcIiwgUkVMUy5EUkFXKTtcblx0XHRvW28ubGVuZ3RoXSA9IHdyaXRleHRhZyhcImRyYXdpbmdcIiwgbnVsbCwge1wicjppZFwiOlwicklkXCIgKyBySWR9KTtcblx0XHR3c1snIWRyYXdpbmcnXSA9IF9kcmF3aW5nO1xuXHR9XG5cblx0aWYod3NbJyFjb21tZW50cyddLmxlbmd0aCA+IDApIHtcblx0XHRySWQgPSBhZGRfcmVscyhyZWxzLCAtMSwgXCIuLi9kcmF3aW5ncy92bWxEcmF3aW5nXCIgKyAoaWR4KzEpICsgXCIudm1sXCIsIFJFTFMuVk1MKTtcblx0XHRvW28ubGVuZ3RoXSA9IHdyaXRleHRhZyhcImxlZ2FjeURyYXdpbmdcIiwgbnVsbCwge1wicjppZFwiOlwicklkXCIgKyBySWR9KTtcblx0XHR3c1snIWxlZ2FjeSddID0gcklkO1xuXHR9XG5cblx0LyogbGVnYWN5RHJhd2luZ0hGICovXG5cdC8qIHBpY3R1cmUgKi9cblx0Lyogb2xlT2JqZWN0cyAqL1xuXHQvKiBjb250cm9scyAqL1xuXHQvKiB3ZWJQdWJsaXNoSXRlbXMgKi9cblx0LyogdGFibGVQYXJ0cyAqL1xuXHQvKiBleHRMc3QgKi9cblxuXHRpZihvLmxlbmd0aD4xKSB7IG9bby5sZW5ndGhdID0gKCc8L3dvcmtzaGVldD4nKTsgb1sxXT1vWzFdLnJlcGxhY2UoXCIvPlwiLFwiPlwiKTsgfVxuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjcyNiBCcnRSb3dIZHIgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydFJvd0hkcihkYXRhLCBsZW5ndGgpIHtcblx0dmFyIHogPSAoe30vKjphbnkqLyk7XG5cdHZhciB0Z3QgPSBkYXRhLmwgKyBsZW5ndGg7XG5cdHouciA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0ZGF0YS5sICs9IDQ7IC8vIFRPRE86IGl4ZmVcblx0dmFyIG1peVJ3ID0gZGF0YS5yZWFkX3NoaWZ0KDIpO1xuXHRkYXRhLmwgKz0gMTsgLy8gVE9ETzogdG9wL2JvdCBwYWRkaW5nXG5cdHZhciBmbGFncyA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0ZGF0YS5sID0gdGd0O1xuXHRpZihmbGFncyAmIDB4MDcpIHoubGV2ZWwgPSBmbGFncyAmIDB4MDc7XG5cdGlmKGZsYWdzICYgMHgxMCkgei5oaWRkZW4gPSB0cnVlO1xuXHRpZihmbGFncyAmIDB4MjApIHouaHB0ID0gbWl5UncgLyAyMDtcblx0cmV0dXJuIHo7XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRSb3dIZHIoUi8qOm51bWJlciovLCByYW5nZSwgd3MpIHtcblx0dmFyIG8gPSBuZXdfYnVmKDE3KzgqMTYpO1xuXHR2YXIgcm93ID0gKHdzWychcm93cyddfHxbXSlbUl18fHt9O1xuXHRvLndyaXRlX3NoaWZ0KDQsIFIpO1xuXG5cdG8ud3JpdGVfc2hpZnQoNCwgMCk7IC8qIFRPRE86IGl4ZmUgKi9cblxuXHR2YXIgbWl5UncgPSAweDAxNDA7XG5cdGlmKHJvdy5ocHgpIG1peVJ3ID0gcHgycHQocm93LmhweCkgKiAyMDtcblx0ZWxzZSBpZihyb3cuaHB0KSBtaXlSdyA9IHJvdy5ocHQgKiAyMDtcblx0by53cml0ZV9zaGlmdCgyLCBtaXlSdyk7XG5cblx0by53cml0ZV9zaGlmdCgxLCAwKTsgLyogdG9wL2JvdCBwYWRkaW5nICovXG5cblx0dmFyIGZsYWdzID0gMHgwO1xuXHRpZihyb3cubGV2ZWwpIGZsYWdzIHw9IHJvdy5sZXZlbDtcblx0aWYocm93LmhpZGRlbikgZmxhZ3MgfD0gMHgxMDtcblx0aWYocm93LmhweCB8fCByb3cuaHB0KSBmbGFncyB8PSAweDIwO1xuXHRvLndyaXRlX3NoaWZ0KDEsIGZsYWdzKTtcblxuXHRvLndyaXRlX3NoaWZ0KDEsIDApOyAvKiBwaG9uZXRpYyBndWlkZSAqL1xuXG5cdC8qIFtNUy1YTFNCXSAyLjUuOCBCcnRDb2xTcGFuIGV4cGxhaW5zIHRoZSBtZWNoYW5pc20gKi9cblx0dmFyIG5jb2xzcGFuID0gMCwgbGNzID0gby5sO1xuXHRvLmwgKz0gNDtcblxuXHR2YXIgY2FkZHIgPSB7cjpSLCBjOjB9O1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgMTY7ICsraSkge1xuXHRcdGlmKChyYW5nZS5zLmMgPiAoKGkrMSkgPDwgMTApKSB8fCAocmFuZ2UuZS5jIDwgKGkgPDwgMTApKSkgY29udGludWU7XG5cdFx0dmFyIGZpcnN0ID0gLTEsIGxhc3QgPSAtMTtcblx0XHRmb3IodmFyIGogPSAoaTw8MTApOyBqIDwgKChpKzEpPDwxMCk7ICsraikge1xuXHRcdFx0Y2FkZHIuYyA9IGo7XG5cdFx0XHR2YXIgY2VsbCA9IEFycmF5LmlzQXJyYXkod3MpID8gKHdzW2NhZGRyLnJdfHxbXSlbY2FkZHIuY10gOiB3c1tlbmNvZGVfY2VsbChjYWRkcildO1xuXHRcdFx0aWYoY2VsbCkgeyBpZihmaXJzdCA8IDApIGZpcnN0ID0gajsgbGFzdCA9IGo7IH1cblx0XHR9XG5cdFx0aWYoZmlyc3QgPCAwKSBjb250aW51ZTtcblx0XHQrK25jb2xzcGFuO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgZmlyc3QpO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgbGFzdCk7XG5cdH1cblxuXHR2YXIgbCA9IG8ubDtcblx0by5sID0gbGNzO1xuXHRvLndyaXRlX3NoaWZ0KDQsIG5jb2xzcGFuKTtcblx0by5sID0gbDtcblxuXHRyZXR1cm4gby5sZW5ndGggPiBvLmwgPyBvLnNsaWNlKDAsIG8ubCkgOiBvO1xufVxuZnVuY3Rpb24gd3JpdGVfcm93X2hlYWRlcihiYSwgd3MsIHJhbmdlLCBSKSB7XG5cdHZhciBvID0gd3JpdGVfQnJ0Um93SGRyKFIsIHJhbmdlLCB3cyk7XG5cdGlmKChvLmxlbmd0aCA+IDE3KSB8fCAod3NbJyFyb3dzJ118fFtdKVtSXSkgd3JpdGVfcmVjb3JkKGJhLCAweDAwMDAgLyogQnJ0Um93SGRyICovLCBvKTtcbn1cblxuLyogW01TLVhMU0JdIDIuNC44MjAgQnJ0V3NEaW0gKi9cbnZhciBwYXJzZV9CcnRXc0RpbSA9IHBhcnNlX1VuY2hlY2tlZFJmWDtcbnZhciB3cml0ZV9CcnRXc0RpbSA9IHdyaXRlX1VuY2hlY2tlZFJmWDtcblxuLyogW01TLVhMU0JdIDIuNC44MjEgQnJ0V3NGbXRJbmZvICovXG5mdW5jdGlvbiBwYXJzZV9CcnRXc0ZtdEluZm8oLyo6OmRhdGEsIGxlbmd0aCovKSB7XG59XG4vL2Z1bmN0aW9uIHdyaXRlX0JydFdzRm10SW5mbyh3cywgbykgeyB9XG5cbi8qIFtNUy1YTFNCXSAyLjQuODIzIEJydFdzUHJvcCAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0V3NQcm9wKGRhdGEsIGxlbmd0aCkge1xuXHR2YXIgeiA9IHt9O1xuXHR2YXIgZiA9IGRhdGFbZGF0YS5sXTsgKytkYXRhLmw7XG5cdHouYWJvdmUgPSAhKGYgJiAweDQwKTtcblx0ei5sZWZ0ICA9ICEoZiAmIDB4ODApO1xuXHQvKiBUT0RPOiBwdWxsIGZsYWdzICovXG5cdGRhdGEubCArPSAxODtcblx0ei5uYW1lID0gcGFyc2VfWExTQkNvZGVOYW1lKGRhdGEsIGxlbmd0aCAtIDE5KTtcblx0cmV0dXJuIHo7XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRXc1Byb3Aoc3RyLCBvdXRsLCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoODQrNCpzdHIubGVuZ3RoKTtcblx0dmFyIGYgPSAweEMwO1xuXHRpZihvdXRsKSB7XG5cdFx0aWYob3V0bC5hYm92ZSkgZiAmPSB+MHg0MDtcblx0XHRpZihvdXRsLmxlZnQpICBmICY9IH4weDgwO1xuXHR9XG5cdG8ud3JpdGVfc2hpZnQoMSwgZik7XG5cdGZvcih2YXIgaSA9IDE7IGkgPCAzOyArK2kpIG8ud3JpdGVfc2hpZnQoMSwwKTtcblx0d3JpdGVfQnJ0Q29sb3Ioe2F1dG86MX0sIG8pO1xuXHRvLndyaXRlX3NoaWZ0KC00LC0xKTtcblx0by53cml0ZV9zaGlmdCgtNCwtMSk7XG5cdHdyaXRlX1hMU0JDb2RlTmFtZShzdHIsIG8pO1xuXHRyZXR1cm4gby5zbGljZSgwLCBvLmwpO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjMwNiBCcnRDZWxsQmxhbmsgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydENlbGxCbGFuayhkYXRhKSB7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQkNlbGwoZGF0YSk7XG5cdHJldHVybiBbY2VsbF07XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRDZWxsQmxhbmsoY2VsbCwgbmNlbGwsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1Zig4KTtcblx0cmV0dXJuIHdyaXRlX1hMU0JDZWxsKG5jZWxsLCBvKTtcbn1cbmZ1bmN0aW9uIHBhcnNlX0JydFNob3J0QmxhbmsoZGF0YSkge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JTaG9ydENlbGwoZGF0YSk7XG5cdHJldHVybiBbY2VsbF07XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRTaG9ydEJsYW5rKGNlbGwsIG5jZWxsLCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoNCk7XG5cdHJldHVybiB3cml0ZV9YTFNCU2hvcnRDZWxsKG5jZWxsLCBvKTtcbn1cblxuLyogW01TLVhMU0JdIDIuNC4zMDcgQnJ0Q2VsbEJvb2wgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydENlbGxCb29sKGRhdGEpIHtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNCQ2VsbChkYXRhKTtcblx0dmFyIGZCb29sID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHRyZXR1cm4gW2NlbGwsIGZCb29sLCAnYiddO1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0Q2VsbEJvb2woY2VsbCwgbmNlbGwsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1Zig5KTtcblx0d3JpdGVfWExTQkNlbGwobmNlbGwsIG8pO1xuXHRvLndyaXRlX3NoaWZ0KDEsIGNlbGwudiA/IDEgOiAwKTtcblx0cmV0dXJuIG87XG59XG5mdW5jdGlvbiBwYXJzZV9CcnRTaG9ydEJvb2woZGF0YSkge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JTaG9ydENlbGwoZGF0YSk7XG5cdHZhciBmQm9vbCA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0cmV0dXJuIFtjZWxsLCBmQm9vbCwgJ2InXTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydFNob3J0Qm9vbChjZWxsLCBuY2VsbCwgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDUpO1xuXHR3cml0ZV9YTFNCU2hvcnRDZWxsKG5jZWxsLCBvKTtcblx0by53cml0ZV9zaGlmdCgxLCBjZWxsLnYgPyAxIDogMCk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjMwOCBCcnRDZWxsRXJyb3IgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydENlbGxFcnJvcihkYXRhKSB7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQkNlbGwoZGF0YSk7XG5cdHZhciBiRXJyb3IgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdHJldHVybiBbY2VsbCwgYkVycm9yLCAnZSddO1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0Q2VsbEVycm9yKGNlbGwsIG5jZWxsLCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoOSk7XG5cdHdyaXRlX1hMU0JDZWxsKG5jZWxsLCBvKTtcblx0by53cml0ZV9zaGlmdCgxLCBjZWxsLnYpO1xuXHRyZXR1cm4gbztcbn1cbmZ1bmN0aW9uIHBhcnNlX0JydFNob3J0RXJyb3IoZGF0YSkge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JTaG9ydENlbGwoZGF0YSk7XG5cdHZhciBiRXJyb3IgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdHJldHVybiBbY2VsbCwgYkVycm9yLCAnZSddO1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0U2hvcnRFcnJvcihjZWxsLCBuY2VsbCwgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDgpO1xuXHR3cml0ZV9YTFNCU2hvcnRDZWxsKG5jZWxsLCBvKTtcblx0by53cml0ZV9zaGlmdCgxLCBjZWxsLnYpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHRyZXR1cm4gbztcbn1cblxuXG4vKiBbTVMtWExTQl0gMi40LjMxMSBCcnRDZWxsSXNzdCAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0Q2VsbElzc3QoZGF0YSkge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JDZWxsKGRhdGEpO1xuXHR2YXIgaXNzdCA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0cmV0dXJuIFtjZWxsLCBpc3N0LCAncyddO1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0Q2VsbElzc3QoY2VsbCwgbmNlbGwsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1ZigxMik7XG5cdHdyaXRlX1hMU0JDZWxsKG5jZWxsLCBvKTtcblx0by53cml0ZV9zaGlmdCg0LCBuY2VsbC52KTtcblx0cmV0dXJuIG87XG59XG5mdW5jdGlvbiBwYXJzZV9CcnRTaG9ydElzc3QoZGF0YSkge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JTaG9ydENlbGwoZGF0YSk7XG5cdHZhciBpc3N0ID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHRyZXR1cm4gW2NlbGwsIGlzc3QsICdzJ107XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRTaG9ydElzc3QoY2VsbCwgbmNlbGwsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1Zig4KTtcblx0d3JpdGVfWExTQlNob3J0Q2VsbChuY2VsbCwgbyk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgbmNlbGwudik7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjMxMyBCcnRDZWxsUmVhbCAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0Q2VsbFJlYWwoZGF0YSkge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JDZWxsKGRhdGEpO1xuXHR2YXIgdmFsdWUgPSBwYXJzZV9YbnVtKGRhdGEpO1xuXHRyZXR1cm4gW2NlbGwsIHZhbHVlLCAnbiddO1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0Q2VsbFJlYWwoY2VsbCwgbmNlbGwsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1ZigxNik7XG5cdHdyaXRlX1hMU0JDZWxsKG5jZWxsLCBvKTtcblx0d3JpdGVfWG51bShjZWxsLnYsIG8pO1xuXHRyZXR1cm4gbztcbn1cbmZ1bmN0aW9uIHBhcnNlX0JydFNob3J0UmVhbChkYXRhKSB7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQlNob3J0Q2VsbChkYXRhKTtcblx0dmFyIHZhbHVlID0gcGFyc2VfWG51bShkYXRhKTtcblx0cmV0dXJuIFtjZWxsLCB2YWx1ZSwgJ24nXTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydFNob3J0UmVhbChjZWxsLCBuY2VsbCwgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDEyKTtcblx0d3JpdGVfWExTQlNob3J0Q2VsbChuY2VsbCwgbyk7XG5cdHdyaXRlX1hudW0oY2VsbC52LCBvKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuMzE0IEJydENlbGxSayAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0Q2VsbFJrKGRhdGEpIHtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNCQ2VsbChkYXRhKTtcblx0dmFyIHZhbHVlID0gcGFyc2VfUmtOdW1iZXIoZGF0YSk7XG5cdHJldHVybiBbY2VsbCwgdmFsdWUsICduJ107XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRDZWxsUmsoY2VsbCwgbmNlbGwsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1ZigxMik7XG5cdHdyaXRlX1hMU0JDZWxsKG5jZWxsLCBvKTtcblx0d3JpdGVfUmtOdW1iZXIoY2VsbC52LCBvKTtcblx0cmV0dXJuIG87XG59XG5mdW5jdGlvbiBwYXJzZV9CcnRTaG9ydFJrKGRhdGEpIHtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNCU2hvcnRDZWxsKGRhdGEpO1xuXHR2YXIgdmFsdWUgPSBwYXJzZV9Sa051bWJlcihkYXRhKTtcblx0cmV0dXJuIFtjZWxsLCB2YWx1ZSwgJ24nXTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydFNob3J0UmsoY2VsbCwgbmNlbGwsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1Zig4KTtcblx0d3JpdGVfWExTQlNob3J0Q2VsbChuY2VsbCwgbyk7XG5cdHdyaXRlX1JrTnVtYmVyKGNlbGwudiwgbyk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjMyMyBCcnRDZWxsUlN0cmluZyAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0Q2VsbFJTdHJpbmcoZGF0YSkge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JDZWxsKGRhdGEpO1xuXHR2YXIgdmFsdWUgPSBwYXJzZV9SaWNoU3RyKGRhdGEpO1xuXHRyZXR1cm4gW2NlbGwsIHZhbHVlLCAnaXMnXTtcbn1cblxuLyogW01TLVhMU0JdIDIuNC4zMTcgQnJ0Q2VsbFN0ICovXG5mdW5jdGlvbiBwYXJzZV9CcnRDZWxsU3QoZGF0YSkge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JDZWxsKGRhdGEpO1xuXHR2YXIgdmFsdWUgPSBwYXJzZV9YTFdpZGVTdHJpbmcoZGF0YSk7XG5cdHJldHVybiBbY2VsbCwgdmFsdWUsICdzdHInXTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydENlbGxTdChjZWxsLCBuY2VsbCwgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDEyICsgNCAqIGNlbGwudi5sZW5ndGgpO1xuXHR3cml0ZV9YTFNCQ2VsbChuY2VsbCwgbyk7XG5cdHdyaXRlX1hMV2lkZVN0cmluZyhjZWxsLnYsIG8pO1xuXHRyZXR1cm4gby5sZW5ndGggPiBvLmwgPyBvLnNsaWNlKDAsIG8ubCkgOiBvO1xufVxuZnVuY3Rpb24gcGFyc2VfQnJ0U2hvcnRTdChkYXRhKSB7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQlNob3J0Q2VsbChkYXRhKTtcblx0dmFyIHZhbHVlID0gcGFyc2VfWExXaWRlU3RyaW5nKGRhdGEpO1xuXHRyZXR1cm4gW2NlbGwsIHZhbHVlLCAnc3RyJ107XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRTaG9ydFN0KGNlbGwsIG5jZWxsLCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoOCArIDQgKiBjZWxsLnYubGVuZ3RoKTtcblx0d3JpdGVfWExTQlNob3J0Q2VsbChuY2VsbCwgbyk7XG5cdHdyaXRlX1hMV2lkZVN0cmluZyhjZWxsLnYsIG8pO1xuXHRyZXR1cm4gby5sZW5ndGggPiBvLmwgPyBvLnNsaWNlKDAsIG8ubCkgOiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjY1MyBCcnRGbWxhQm9vbCAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0Rm1sYUJvb2woZGF0YSwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBlbmQgPSBkYXRhLmwgKyBsZW5ndGg7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQkNlbGwoZGF0YSk7XG5cdGNlbGwuciA9IG9wdHNbJyFyb3cnXTtcblx0dmFyIHZhbHVlID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHR2YXIgbyA9IFtjZWxsLCB2YWx1ZSwgJ2InXTtcblx0aWYob3B0cy5jZWxsRm9ybXVsYSkge1xuXHRcdGRhdGEubCArPSAyO1xuXHRcdHZhciBmb3JtdWxhID0gcGFyc2VfWExTQkNlbGxQYXJzZWRGb3JtdWxhKGRhdGEsIGVuZCAtIGRhdGEubCwgb3B0cyk7XG5cdFx0b1szXSA9IHN0cmluZ2lmeV9mb3JtdWxhKGZvcm11bGEsIG51bGwvKnJhbmdlKi8sIGNlbGwsIG9wdHMuc3VwYm9va3MsIG9wdHMpOy8qIFRPRE8gKi9cblx0fVxuXHRlbHNlIGRhdGEubCA9IGVuZDtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuNjU0IEJydEZtbGFFcnJvciAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0Rm1sYUVycm9yKGRhdGEsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgZW5kID0gZGF0YS5sICsgbGVuZ3RoO1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JDZWxsKGRhdGEpO1xuXHRjZWxsLnIgPSBvcHRzWychcm93J107XG5cdHZhciB2YWx1ZSA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0dmFyIG8gPSBbY2VsbCwgdmFsdWUsICdlJ107XG5cdGlmKG9wdHMuY2VsbEZvcm11bGEpIHtcblx0XHRkYXRhLmwgKz0gMjtcblx0XHR2YXIgZm9ybXVsYSA9IHBhcnNlX1hMU0JDZWxsUGFyc2VkRm9ybXVsYShkYXRhLCBlbmQgLSBkYXRhLmwsIG9wdHMpO1xuXHRcdG9bM10gPSBzdHJpbmdpZnlfZm9ybXVsYShmb3JtdWxhLCBudWxsLypyYW5nZSovLCBjZWxsLCBvcHRzLnN1cGJvb2tzLCBvcHRzKTsvKiBUT0RPICovXG5cdH1cblx0ZWxzZSBkYXRhLmwgPSBlbmQ7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjY1NSBCcnRGbWxhTnVtICovXG5mdW5jdGlvbiBwYXJzZV9CcnRGbWxhTnVtKGRhdGEsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgZW5kID0gZGF0YS5sICsgbGVuZ3RoO1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JDZWxsKGRhdGEpO1xuXHRjZWxsLnIgPSBvcHRzWychcm93J107XG5cdHZhciB2YWx1ZSA9IHBhcnNlX1hudW0oZGF0YSk7XG5cdHZhciBvID0gW2NlbGwsIHZhbHVlLCAnbiddO1xuXHRpZihvcHRzLmNlbGxGb3JtdWxhKSB7XG5cdFx0ZGF0YS5sICs9IDI7XG5cdFx0dmFyIGZvcm11bGEgPSBwYXJzZV9YTFNCQ2VsbFBhcnNlZEZvcm11bGEoZGF0YSwgZW5kIC0gZGF0YS5sLCBvcHRzKTtcblx0XHRvWzNdID0gc3RyaW5naWZ5X2Zvcm11bGEoZm9ybXVsYSwgbnVsbC8qcmFuZ2UqLywgY2VsbCwgb3B0cy5zdXBib29rcywgb3B0cyk7LyogVE9ETyAqL1xuXHR9XG5cdGVsc2UgZGF0YS5sID0gZW5kO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC42NTYgQnJ0Rm1sYVN0cmluZyAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0Rm1sYVN0cmluZyhkYXRhLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGVuZCA9IGRhdGEubCArIGxlbmd0aDtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNCQ2VsbChkYXRhKTtcblx0Y2VsbC5yID0gb3B0c1snIXJvdyddO1xuXHR2YXIgdmFsdWUgPSBwYXJzZV9YTFdpZGVTdHJpbmcoZGF0YSk7XG5cdHZhciBvID0gW2NlbGwsIHZhbHVlLCAnc3RyJ107XG5cdGlmKG9wdHMuY2VsbEZvcm11bGEpIHtcblx0XHRkYXRhLmwgKz0gMjtcblx0XHR2YXIgZm9ybXVsYSA9IHBhcnNlX1hMU0JDZWxsUGFyc2VkRm9ybXVsYShkYXRhLCBlbmQgLSBkYXRhLmwsIG9wdHMpO1xuXHRcdG9bM10gPSBzdHJpbmdpZnlfZm9ybXVsYShmb3JtdWxhLCBudWxsLypyYW5nZSovLCBjZWxsLCBvcHRzLnN1cGJvb2tzLCBvcHRzKTsvKiBUT0RPICovXG5cdH1cblx0ZWxzZSBkYXRhLmwgPSBlbmQ7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjY4MiBCcnRNZXJnZUNlbGwgKi9cbnZhciBwYXJzZV9CcnRNZXJnZUNlbGwgPSBwYXJzZV9VbmNoZWNrZWRSZlg7XG52YXIgd3JpdGVfQnJ0TWVyZ2VDZWxsID0gd3JpdGVfVW5jaGVja2VkUmZYO1xuLyogW01TLVhMU0JdIDIuNC4xMDcgQnJ0QmVnaW5NZXJnZUNlbGxzICovXG5mdW5jdGlvbiB3cml0ZV9CcnRCZWdpbk1lcmdlQ2VsbHMoY250LCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoNCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgY250KTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuNjYyIEJydEhMaW5rICovXG5mdW5jdGlvbiBwYXJzZV9CcnRITGluayhkYXRhLCBsZW5ndGgvKjo6LCBvcHRzKi8pIHtcblx0dmFyIGVuZCA9IGRhdGEubCArIGxlbmd0aDtcblx0dmFyIHJmeCA9IHBhcnNlX1VuY2hlY2tlZFJmWChkYXRhLCAxNik7XG5cdHZhciByZWxJZCA9IHBhcnNlX1hMTnVsbGFibGVXaWRlU3RyaW5nKGRhdGEpO1xuXHR2YXIgbG9jID0gcGFyc2VfWExXaWRlU3RyaW5nKGRhdGEpO1xuXHR2YXIgdG9vbHRpcCA9IHBhcnNlX1hMV2lkZVN0cmluZyhkYXRhKTtcblx0dmFyIGRpc3BsYXkgPSBwYXJzZV9YTFdpZGVTdHJpbmcoZGF0YSk7XG5cdGRhdGEubCA9IGVuZDtcblx0dmFyIG8gPSAoe3JmeDpyZngsIHJlbElkOnJlbElkLCBsb2M6bG9jLCBkaXNwbGF5OmRpc3BsYXl9Lyo6YW55Ki8pO1xuXHRpZih0b29sdGlwKSBvLlRvb2x0aXAgPSB0b29sdGlwO1xuXHRyZXR1cm4gbztcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydEhMaW5rKGwsIHJJZCkge1xuXHR2YXIgbyA9IG5ld19idWYoNTArNCoobFsxXS5UYXJnZXQubGVuZ3RoICsgKGxbMV0uVG9vbHRpcCB8fCBcIlwiKS5sZW5ndGgpKTtcblx0d3JpdGVfVW5jaGVja2VkUmZYKHtzOmRlY29kZV9jZWxsKGxbMF0pLCBlOmRlY29kZV9jZWxsKGxbMF0pfSwgbyk7XG5cdHdyaXRlX1JlbElEKFwicklkXCIgKyBySWQsIG8pO1xuXHR2YXIgbG9jaWR4ID0gbFsxXS5UYXJnZXQuaW5kZXhPZihcIiNcIik7XG5cdHZhciBsb2MgPSBsb2NpZHggPT0gLTEgPyBcIlwiIDogbFsxXS5UYXJnZXQuc2xpY2UobG9jaWR4KzEpO1xuXHR3cml0ZV9YTFdpZGVTdHJpbmcobG9jIHx8IFwiXCIsIG8pO1xuXHR3cml0ZV9YTFdpZGVTdHJpbmcobFsxXS5Ub29sdGlwIHx8IFwiXCIsIG8pO1xuXHR3cml0ZV9YTFdpZGVTdHJpbmcoXCJcIiwgbyk7XG5cdHJldHVybiBvLnNsaWNlKDAsIG8ubCk7XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuNjkyIEJydFBhbmUgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydFBhbmUoLypkYXRhLCBsZW5ndGgsIG9wdHMqLykge1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjYgQnJ0QXJyRm1sYSAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0QXJyRm1sYShkYXRhLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGVuZCA9IGRhdGEubCArIGxlbmd0aDtcblx0dmFyIHJmeCA9IHBhcnNlX1JmWChkYXRhLCAxNik7XG5cdHZhciBmQWx3YXlzQ2FsYyA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0dmFyIG8gPSBbcmZ4XTsgb1syXSA9IGZBbHdheXNDYWxjO1xuXHRpZihvcHRzLmNlbGxGb3JtdWxhKSB7XG5cdFx0dmFyIGZvcm11bGEgPSBwYXJzZV9YTFNCQXJyYXlQYXJzZWRGb3JtdWxhKGRhdGEsIGVuZCAtIGRhdGEubCwgb3B0cyk7XG5cdFx0b1sxXSA9IGZvcm11bGE7XG5cdH0gZWxzZSBkYXRhLmwgPSBlbmQ7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40Ljc1MCBCcnRTaHJGbWxhICovXG5mdW5jdGlvbiBwYXJzZV9CcnRTaHJGbWxhKGRhdGEsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgZW5kID0gZGF0YS5sICsgbGVuZ3RoO1xuXHR2YXIgcmZ4ID0gcGFyc2VfVW5jaGVja2VkUmZYKGRhdGEsIDE2KTtcblx0dmFyIG8gPSBbcmZ4XTtcblx0aWYob3B0cy5jZWxsRm9ybXVsYSkge1xuXHRcdHZhciBmb3JtdWxhID0gcGFyc2VfWExTQlNoYXJlZFBhcnNlZEZvcm11bGEoZGF0YSwgZW5kIC0gZGF0YS5sLCBvcHRzKTtcblx0XHRvWzFdID0gZm9ybXVsYTtcblx0XHRkYXRhLmwgPSBlbmQ7XG5cdH0gZWxzZSBkYXRhLmwgPSBlbmQ7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjMyMyBCcnRDb2xJbmZvICovXG4vKiBUT0RPOiBvbmNlIFhMUyBDb2xJbmZvIGlzIHNldCwgY29tYmluZSB0aGUgZnVuY3Rpb25zICovXG5mdW5jdGlvbiB3cml0ZV9CcnRDb2xJbmZvKEMvKjpudW1iZXIqLywgY29sLCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoMTgpO1xuXHR2YXIgcCA9IGNvbF9vYmpfdyhDLCBjb2wpO1xuXHRvLndyaXRlX3NoaWZ0KC00LCBDKTtcblx0by53cml0ZV9zaGlmdCgtNCwgQyk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgKHAud2lkdGggfHwgMTApICogMjU2KTtcblx0by53cml0ZV9zaGlmdCg0LCAwLyppeGZlKi8pOyAvLyBzdHlsZVxuXHR2YXIgZmxhZ3MgPSAwO1xuXHRpZihjb2wuaGlkZGVuKSBmbGFncyB8PSAweDAxO1xuXHRpZih0eXBlb2YgcC53aWR0aCA9PSAnbnVtYmVyJykgZmxhZ3MgfD0gMHgwMjtcblx0aWYoY29sLmxldmVsKSBmbGFncyB8PSAoY29sLmxldmVsIDw8IDgpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIGZsYWdzKTsgLy8gYml0IGZsYWdcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuNjc4IEJydE1hcmdpbnMgKi9cbnZhciBCcnRNYXJnaW5LZXlzID0gW1wibGVmdFwiLFwicmlnaHRcIixcInRvcFwiLFwiYm90dG9tXCIsXCJoZWFkZXJcIixcImZvb3RlclwiXTtcbmZ1bmN0aW9uIHBhcnNlX0JydE1hcmdpbnMoZGF0YS8qOjosIGxlbmd0aCwgb3B0cyovKS8qOk1hcmdpbnMqLyB7XG5cdHZhciBtYXJnaW5zID0gKHt9Lyo6YW55Ki8pO1xuXHRCcnRNYXJnaW5LZXlzLmZvckVhY2goZnVuY3Rpb24oaykgeyBtYXJnaW5zW2tdID0gcGFyc2VfWG51bShkYXRhLCA4KTsgfSk7XG5cdHJldHVybiBtYXJnaW5zO1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0TWFyZ2lucyhtYXJnaW5zLyo6TWFyZ2lucyovLCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoNio4KTtcblx0ZGVmYXVsdF9tYXJnaW5zKG1hcmdpbnMpO1xuXHRCcnRNYXJnaW5LZXlzLmZvckVhY2goZnVuY3Rpb24oaykgeyB3cml0ZV9YbnVtKChtYXJnaW5zLyo6YW55Ki8pW2tdLCBvKTsgfSk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjI5OSBCcnRCZWdpbldzVmlldyAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0QmVnaW5Xc1ZpZXcoZGF0YS8qOjosIGxlbmd0aCwgb3B0cyovKSB7XG5cdHZhciBmID0gZGF0YS5yZWFkX3NoaWZ0KDIpO1xuXHRkYXRhLmwgKz0gMjg7XG5cdHJldHVybiB7IFJUTDogZiAmIDB4MjAgfTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydEJlZ2luV3NWaWV3KHdzLCBXb3JrYm9vaywgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDMwKTtcblx0dmFyIGYgPSAweDM5Yztcblx0aWYoKCgoV29ya2Jvb2t8fHt9KS5WaWV3c3x8W10pWzBdfHx7fSkuUlRMKSBmIHw9IDB4MjA7XG5cdG8ud3JpdGVfc2hpZnQoMiwgZik7IC8vIGJpdCBmbGFnXG5cdG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMCk7IC8vIHZpZXcgZmlyc3Qgcm93XG5cdG8ud3JpdGVfc2hpZnQoNCwgMCk7IC8vIHZpZXcgZmlyc3QgY29sXG5cdG8ud3JpdGVfc2hpZnQoMSwgMCk7IC8vIGdyaWRsaW5lIGNvbG9yIElDVlxuXHRvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDEwMCk7IC8vIHpvb20gc2NhbGVcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0by53cml0ZV9zaGlmdCg0LCAwKTsgLy8gd29ya2Jvb2sgdmlldyBpZFxuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC4zMDkgQnJ0Q2VsbElnbm9yZUVDICovXG5mdW5jdGlvbiB3cml0ZV9CcnRDZWxsSWdub3JlRUMocmVmKSB7XG5cdHZhciBvID0gbmV3X2J1ZigyNCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgNCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMSk7XG5cdHdyaXRlX1VuY2hlY2tlZFJmWChyZWYsIG8pO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC43NDggQnJ0U2hlZXRQcm90ZWN0aW9uICovXG5mdW5jdGlvbiB3cml0ZV9CcnRTaGVldFByb3RlY3Rpb24oc3AsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1ZigxNio0KzIpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIHNwLnBhc3N3b3JkID8gY3J5cHRvX0NyZWF0ZVBhc3N3b3JkVmVyaWZpZXJfTWV0aG9kMShzcC5wYXNzd29yZCkgOiAwKTtcblx0by53cml0ZV9zaGlmdCg0LCAxKTsgLy8gdGhpcyByZWNvcmQgc2hvdWxkIG5vdCBiZSB3cml0dGVuIGlmIG5vIHByb3RlY3Rpb25cblx0W1xuXHRcdFtcIm9iamVjdHNcIiwgICAgICAgICAgICAgZmFsc2VdLCAvLyBmT2JqZWN0c1xuXHRcdFtcInNjZW5hcmlvc1wiLCAgICAgICAgICAgZmFsc2VdLCAvLyBmU2NlbmFyaW9zXG5cdFx0W1wiZm9ybWF0Q2VsbHNcIiwgICAgICAgICAgdHJ1ZV0sIC8vIGZGb3JtYXRDZWxsc1xuXHRcdFtcImZvcm1hdENvbHVtbnNcIiwgICAgICAgIHRydWVdLCAvLyBmRm9ybWF0Q29sdW1uc1xuXHRcdFtcImZvcm1hdFJvd3NcIiwgICAgICAgICAgIHRydWVdLCAvLyBmRm9ybWF0Um93c1xuXHRcdFtcImluc2VydENvbHVtbnNcIiwgICAgICAgIHRydWVdLCAvLyBmSW5zZXJ0Q29sdW1uc1xuXHRcdFtcImluc2VydFJvd3NcIiwgICAgICAgICAgIHRydWVdLCAvLyBmSW5zZXJ0Um93c1xuXHRcdFtcImluc2VydEh5cGVybGlua3NcIiwgICAgIHRydWVdLCAvLyBmSW5zZXJ0SHlwZXJsaW5rc1xuXHRcdFtcImRlbGV0ZUNvbHVtbnNcIiwgICAgICAgIHRydWVdLCAvLyBmRGVsZXRlQ29sdW1uc1xuXHRcdFtcImRlbGV0ZVJvd3NcIiwgICAgICAgICAgIHRydWVdLCAvLyBmRGVsZXRlUm93c1xuXHRcdFtcInNlbGVjdExvY2tlZENlbGxzXCIsICAgZmFsc2VdLCAvLyBmU2VsTG9ja2VkQ2VsbHNcblx0XHRbXCJzb3J0XCIsICAgICAgICAgICAgICAgICB0cnVlXSwgLy8gZlNvcnRcblx0XHRbXCJhdXRvRmlsdGVyXCIsICAgICAgICAgICB0cnVlXSwgLy8gZkF1dG9GaWx0ZXJcblx0XHRbXCJwaXZvdFRhYmxlc1wiLCAgICAgICAgICB0cnVlXSwgLy8gZlBpdm90VGFibGVzXG5cdFx0W1wic2VsZWN0VW5sb2NrZWRDZWxsc1wiLCBmYWxzZV0gIC8vIGZTZWxVbmxvY2tlZENlbGxzXG5cdF0uZm9yRWFjaChmdW5jdGlvbihuKSB7XG5cdFx0Lyo6OiBpZihvID09IG51bGwpIHRocm93IFwidW5yZWFjaGFibGVcIjsgKi9cblx0XHRpZihuWzFdKSBvLndyaXRlX3NoaWZ0KDQsIHNwW25bMF1dICE9IG51bGwgJiYgIXNwW25bMF1dID8gMSA6IDApO1xuXHRcdGVsc2UgICAgICBvLndyaXRlX3NoaWZ0KDQsIHNwW25bMF1dICE9IG51bGwgJiYgc3BbblswXV0gPyAwIDogMSk7XG5cdH0pO1xuXHRyZXR1cm4gbztcbn1cblxuZnVuY3Rpb24gcGFyc2VfQnJ0RFZhbCgvKmRhdGEsIGxlbmd0aCwgb3B0cyovKSB7XG59XG5mdW5jdGlvbiBwYXJzZV9CcnREVmFsMTQoLypkYXRhLCBsZW5ndGgsIG9wdHMqLykge1xufVxuLyogW01TLVhMU0JdIDIuMS43LjYxIFdvcmtzaGVldCAqL1xuZnVuY3Rpb24gcGFyc2Vfd3NfYmluKGRhdGEsIF9vcHRzLCBpZHgsIHJlbHMsIHdiLyo6V0JXQlByb3BzKi8sIHRoZW1lcywgc3R5bGVzKS8qOldvcmtzaGVldCovIHtcblx0aWYoIWRhdGEpIHJldHVybiBkYXRhO1xuXHR2YXIgb3B0cyA9IF9vcHRzIHx8IHt9O1xuXHRpZighcmVscykgcmVscyA9IHsnIWlkJzp7fX07XG5cdGlmKERFTlNFICE9IG51bGwgJiYgb3B0cy5kZW5zZSA9PSBudWxsKSBvcHRzLmRlbnNlID0gREVOU0U7XG5cdHZhciBzLyo6V29ya3NoZWV0Ki8gPSAob3B0cy5kZW5zZSA/IFtdIDoge30pO1xuXG5cdHZhciByZWY7XG5cdHZhciByZWZndWVzcyA9IHtzOiB7cjoyMDAwMDAwLCBjOjIwMDAwMDB9LCBlOiB7cjowLCBjOjB9IH07XG5cblx0dmFyIHN0YXRlLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdHZhciBwYXNzID0gZmFsc2UsIGVuZCA9IGZhbHNlO1xuXHR2YXIgcm93LCBwLCBjZiwgUiwgQywgYWRkciwgc3N0ciwgcnIsIGNlbGwvKjpDZWxsKi87XG5cdHZhciBtZXJnZXMvKjpBcnJheTxSYW5nZT4qLyA9IFtdO1xuXHRvcHRzLmJpZmYgPSAxMjtcblx0b3B0c1snIXJvdyddID0gMDtcblxuXHR2YXIgYWkgPSAwLCBhZiA9IGZhbHNlO1xuXG5cdHZhciBhcnJheWYvKjpBcnJheTxbUmFuZ2UsIHN0cmluZ10+Ki8gPSBbXTtcblx0dmFyIHNoYXJlZGYgPSB7fTtcblx0dmFyIHN1cGJvb2tzID0gb3B0cy5zdXBib29rcyB8fCAvKjo6KCovd2IvKjo6IDphbnkpKi8uc3VwYm9va3MgfHwgKFtbXV0vKjphbnkqLyk7XG5cdHN1cGJvb2tzLnNoYXJlZGYgPSBzaGFyZWRmO1xuXHRzdXBib29rcy5hcnJheWYgPSBhcnJheWY7XG5cdHN1cGJvb2tzLlNoZWV0TmFtZXMgPSB3Yi5TaGVldE5hbWVzIHx8IHdiLlNoZWV0cy5tYXAoZnVuY3Rpb24oeCkgeyByZXR1cm4geC5uYW1lOyB9KTtcblx0aWYoIW9wdHMuc3VwYm9va3MpIHtcblx0XHRvcHRzLnN1cGJvb2tzID0gc3VwYm9va3M7XG5cdFx0aWYod2IuTmFtZXMpIGZvcih2YXIgaSA9IDA7IGkgPCB3Yi5OYW1lcy5sZW5ndGg7ICsraSkgc3VwYm9va3NbMF1baSsxXSA9IHdiLk5hbWVzW2ldO1xuXHR9XG5cblx0dmFyIGNvbGluZm8vKjpBcnJheTxDb2xJbmZvPiovID0gW10sIHJvd2luZm8vKjpBcnJheTxSb3dJbmZvPiovID0gW107XG5cdHZhciBzZWVuY29sID0gZmFsc2U7XG5cblx0WExTQlJlY29yZEVudW1bMHgwMDEwXSA9IHsgbjpcIkJydFNob3J0UmVhbFwiLCBmOnBhcnNlX0JydFNob3J0UmVhbCB9O1xuXG5cdHZhciBjbSwgdm07XG5cblx0cmVjb3JkaG9wcGVyKGRhdGEsIGZ1bmN0aW9uIHdzX3BhcnNlKHZhbCwgUlIsIFJUKSB7XG5cdFx0aWYoZW5kKSByZXR1cm47XG5cdFx0c3dpdGNoKFJUKSB7XG5cdFx0XHRjYXNlIDB4MDA5NDogLyogJ0JydFdzRGltJyAqL1xuXHRcdFx0XHRyZWYgPSB2YWw7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMDA6IC8qICdCcnRSb3dIZHInICovXG5cdFx0XHRcdHJvdyA9IHZhbDtcblx0XHRcdFx0aWYob3B0cy5zaGVldFJvd3MgJiYgb3B0cy5zaGVldFJvd3MgPD0gcm93LnIpIGVuZD10cnVlO1xuXHRcdFx0XHRyciA9IGVuY29kZV9yb3coUiA9IHJvdy5yKTtcblx0XHRcdFx0b3B0c1snIXJvdyddID0gcm93LnI7XG5cdFx0XHRcdGlmKHZhbC5oaWRkZW4gfHwgdmFsLmhwdCB8fCB2YWwubGV2ZWwgIT0gbnVsbCkge1xuXHRcdFx0XHRcdGlmKHZhbC5ocHQpIHZhbC5ocHggPSBwdDJweCh2YWwuaHB0KTtcblx0XHRcdFx0XHRyb3dpbmZvW3ZhbC5yXSA9IHZhbDtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDAwMDI6IC8qICdCcnRDZWxsUmsnICovXG5cdFx0XHRjYXNlIDB4MDAwMzogLyogJ0JydENlbGxFcnJvcicgKi9cblx0XHRcdGNhc2UgMHgwMDA0OiAvKiAnQnJ0Q2VsbEJvb2wnICovXG5cdFx0XHRjYXNlIDB4MDAwNTogLyogJ0JydENlbGxSZWFsJyAqL1xuXHRcdFx0Y2FzZSAweDAwMDY6IC8qICdCcnRDZWxsU3QnICovXG5cdFx0XHRjYXNlIDB4MDAwNzogLyogJ0JydENlbGxJc3N0JyAqL1xuXHRcdFx0Y2FzZSAweDAwMDg6IC8qICdCcnRGbWxhU3RyaW5nJyAqL1xuXHRcdFx0Y2FzZSAweDAwMDk6IC8qICdCcnRGbWxhTnVtJyAqL1xuXHRcdFx0Y2FzZSAweDAwMEE6IC8qICdCcnRGbWxhQm9vbCcgKi9cblx0XHRcdGNhc2UgMHgwMDBCOiAvKiAnQnJ0Rm1sYUVycm9yJyAqL1xuXHRcdFx0Y2FzZSAweDAwMEQ6IC8qICdCcnRTaG9ydFJrJyAqL1xuXHRcdFx0Y2FzZSAweDAwMEU6IC8qICdCcnRTaG9ydEVycm9yJyAqL1xuXHRcdFx0Y2FzZSAweDAwMEY6IC8qICdCcnRTaG9ydEJvb2wnICovXG5cdFx0XHRjYXNlIDB4MDAxMDogLyogJ0JydFNob3J0UmVhbCcgKi9cblx0XHRcdGNhc2UgMHgwMDExOiAvKiAnQnJ0U2hvcnRTdCcgKi9cblx0XHRcdGNhc2UgMHgwMDEyOiAvKiAnQnJ0U2hvcnRJc3N0JyAqL1xuXHRcdFx0Y2FzZSAweDAwM0U6IC8qICdCcnRDZWxsUlN0cmluZycgKi9cblx0XHRcdFx0cCA9ICh7dDp2YWxbMl19Lyo6YW55Ki8pO1xuXHRcdFx0XHRzd2l0Y2godmFsWzJdKSB7XG5cdFx0XHRcdFx0Y2FzZSAnbic6IHAudiA9IHZhbFsxXTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncyc6IHNzdHIgPSBzdHJzW3ZhbFsxXV07IHAudiA9IHNzdHIudDsgcC5yID0gc3N0ci5yOyBicmVhaztcblx0XHRcdFx0XHRjYXNlICdiJzogcC52ID0gdmFsWzFdID8gdHJ1ZSA6IGZhbHNlOyBicmVhaztcblx0XHRcdFx0XHRjYXNlICdlJzogcC52ID0gdmFsWzFdOyBpZihvcHRzLmNlbGxUZXh0ICE9PSBmYWxzZSkgcC53ID0gQkVycltwLnZdOyBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzdHInOiBwLnQgPSAncyc7IHAudiA9IHZhbFsxXTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnaXMnOiBwLnQgPSAncyc7IHAudiA9IHZhbFsxXS50OyBicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRpZigoY2YgPSBzdHlsZXMuQ2VsbFhmW3ZhbFswXS5pU3R5bGVSZWZdKSkgc2FmZV9mb3JtYXQocCxjZi5udW1GbXRJZCxudWxsLG9wdHMsIHRoZW1lcywgc3R5bGVzKTtcblx0XHRcdFx0QyA9IHZhbFswXS5jID09IC0xID8gQyArIDEgOiB2YWxbMF0uYztcblx0XHRcdFx0aWYob3B0cy5kZW5zZSkgeyBpZighc1tSXSkgc1tSXSA9IFtdOyBzW1JdW0NdID0gcDsgfVxuXHRcdFx0XHRlbHNlIHNbZW5jb2RlX2NvbChDKSArIHJyXSA9IHA7XG5cdFx0XHRcdGlmKG9wdHMuY2VsbEZvcm11bGEpIHtcblx0XHRcdFx0XHRhZiA9IGZhbHNlO1xuXHRcdFx0XHRcdGZvcihhaSA9IDA7IGFpIDwgYXJyYXlmLmxlbmd0aDsgKythaSkge1xuXHRcdFx0XHRcdFx0dmFyIGFpaSA9IGFycmF5ZlthaV07XG5cdFx0XHRcdFx0XHRpZihyb3cuciA+PSBhaWlbMF0ucy5yICYmIHJvdy5yIDw9IGFpaVswXS5lLnIpXG5cdFx0XHRcdFx0XHRcdGlmKEMgPj0gYWlpWzBdLnMuYyAmJiBDIDw9IGFpaVswXS5lLmMpIHtcblx0XHRcdFx0XHRcdFx0XHRwLkYgPSBlbmNvZGVfcmFuZ2UoYWlpWzBdKTsgYWYgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmKCFhZiAmJiB2YWwubGVuZ3RoID4gMykgcC5mID0gdmFsWzNdO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYocmVmZ3Vlc3Mucy5yID4gcm93LnIpIHJlZmd1ZXNzLnMuciA9IHJvdy5yO1xuXHRcdFx0XHRpZihyZWZndWVzcy5zLmMgPiBDKSByZWZndWVzcy5zLmMgPSBDO1xuXHRcdFx0XHRpZihyZWZndWVzcy5lLnIgPCByb3cucikgcmVmZ3Vlc3MuZS5yID0gcm93LnI7XG5cdFx0XHRcdGlmKHJlZmd1ZXNzLmUuYyA8IEMpIHJlZmd1ZXNzLmUuYyA9IEM7XG5cdFx0XHRcdGlmKG9wdHMuY2VsbERhdGVzICYmIGNmICYmIHAudCA9PSAnbicgJiYgZm10X2lzX2RhdGUodGFibGVfZm10W2NmLm51bUZtdElkXSkpIHtcblx0XHRcdFx0XHR2YXIgX2QgPSBTU0ZfcGFyc2VfZGF0ZV9jb2RlKHAudik7IGlmKF9kKSB7IHAudCA9ICdkJzsgcC52ID0gbmV3IERhdGUoX2QueSwgX2QubS0xLF9kLmQsX2QuSCxfZC5NLF9kLlMsX2QudSk7IH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZihjbSkge1xuXHRcdFx0XHRcdGlmKGNtLnR5cGUgPT0gJ1hMREFQUicpIHAuRCA9IHRydWU7XG5cdFx0XHRcdFx0Y20gPSB2b2lkIDA7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYodm0pIHZtID0gdm9pZCAwO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDAwMDE6IC8qICdCcnRDZWxsQmxhbmsnICovXG5cdFx0XHRjYXNlIDB4MDAwQzogLyogJ0JydFNob3J0QmxhbmsnICovXG5cdFx0XHRcdGlmKCFvcHRzLnNoZWV0U3R1YnMgfHwgcGFzcykgYnJlYWs7XG5cdFx0XHRcdHAgPSAoe3Q6J3onLHY6dm9pZCAwfS8qOmFueSovKTtcblx0XHRcdFx0QyA9IHZhbFswXS5jID09IC0xID8gQyArIDEgOiB2YWxbMF0uYztcblx0XHRcdFx0aWYob3B0cy5kZW5zZSkgeyBpZighc1tSXSkgc1tSXSA9IFtdOyBzW1JdW0NdID0gcDsgfVxuXHRcdFx0XHRlbHNlIHNbZW5jb2RlX2NvbChDKSArIHJyXSA9IHA7XG5cdFx0XHRcdGlmKHJlZmd1ZXNzLnMuciA+IHJvdy5yKSByZWZndWVzcy5zLnIgPSByb3cucjtcblx0XHRcdFx0aWYocmVmZ3Vlc3Mucy5jID4gQykgcmVmZ3Vlc3Mucy5jID0gQztcblx0XHRcdFx0aWYocmVmZ3Vlc3MuZS5yIDwgcm93LnIpIHJlZmd1ZXNzLmUuciA9IHJvdy5yO1xuXHRcdFx0XHRpZihyZWZndWVzcy5lLmMgPCBDKSByZWZndWVzcy5lLmMgPSBDO1xuXHRcdFx0XHRpZihjbSkge1xuXHRcdFx0XHRcdGlmKGNtLnR5cGUgPT0gJ1hMREFQUicpIHAuRCA9IHRydWU7XG5cdFx0XHRcdFx0Y20gPSB2b2lkIDA7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYodm0pIHZtID0gdm9pZCAwO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDAwQjA6IC8qICdCcnRNZXJnZUNlbGwnICovXG5cdFx0XHRcdG1lcmdlcy5wdXNoKHZhbCk7IGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDAzMTogeyAvKiAnQnJ0Q2VsbE1ldGEnICovXG5cdFx0XHRcdGNtID0gKChvcHRzLnhsbWV0YXx8e30pLkNlbGx8fFtdKVt2YWwtMV07XG5cdFx0XHR9IGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDFFRTogLyogJ0JydEhMaW5rJyAqL1xuXHRcdFx0XHR2YXIgcmVsID0gcmVsc1snIWlkJ11bdmFsLnJlbElkXTtcblx0XHRcdFx0aWYocmVsKSB7XG5cdFx0XHRcdFx0dmFsLlRhcmdldCA9IHJlbC5UYXJnZXQ7XG5cdFx0XHRcdFx0aWYodmFsLmxvYykgdmFsLlRhcmdldCArPSBcIiNcIit2YWwubG9jO1xuXHRcdFx0XHRcdHZhbC5SZWwgPSByZWw7XG5cdFx0XHRcdH0gZWxzZSBpZih2YWwucmVsSWQgPT0gJycpIHtcblx0XHRcdFx0XHR2YWwuVGFyZ2V0ID0gXCIjXCIgKyB2YWwubG9jO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZvcihSPXZhbC5yZngucy5yO1I8PXZhbC5yZnguZS5yOysrUikgZm9yKEM9dmFsLnJmeC5zLmM7Qzw9dmFsLnJmeC5lLmM7KytDKSB7XG5cdFx0XHRcdFx0aWYob3B0cy5kZW5zZSkge1xuXHRcdFx0XHRcdFx0aWYoIXNbUl0pIHNbUl0gPSBbXTtcblx0XHRcdFx0XHRcdGlmKCFzW1JdW0NdKSBzW1JdW0NdID0ge3Q6J3onLHY6dW5kZWZpbmVkfTtcblx0XHRcdFx0XHRcdHNbUl1bQ10ubCA9IHZhbDtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0YWRkciA9IGVuY29kZV9jZWxsKHtjOkMscjpSfSk7XG5cdFx0XHRcdFx0XHRpZighc1thZGRyXSkgc1thZGRyXSA9IHt0Oid6Jyx2OnVuZGVmaW5lZH07XG5cdFx0XHRcdFx0XHRzW2FkZHJdLmwgPSB2YWw7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDFBQTogLyogJ0JydEFyckZtbGEnICovXG5cdFx0XHRcdGlmKCFvcHRzLmNlbGxGb3JtdWxhKSBicmVhaztcblx0XHRcdFx0YXJyYXlmLnB1c2godmFsKTtcblx0XHRcdFx0Y2VsbCA9ICgob3B0cy5kZW5zZSA/IHNbUl1bQ10gOiBzW2VuY29kZV9jb2woQykgKyBycl0pLyo6YW55Ki8pO1xuXHRcdFx0XHRjZWxsLmYgPSBzdHJpbmdpZnlfZm9ybXVsYSh2YWxbMV0sIHJlZmd1ZXNzLCB7cjpyb3cuciwgYzpDfSwgc3VwYm9va3MsIG9wdHMpO1xuXHRcdFx0XHRjZWxsLkYgPSBlbmNvZGVfcmFuZ2UodmFsWzBdKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDB4MDFBQjogLyogJ0JydFNockZtbGEnICovXG5cdFx0XHRcdGlmKCFvcHRzLmNlbGxGb3JtdWxhKSBicmVhaztcblx0XHRcdFx0c2hhcmVkZltlbmNvZGVfY2VsbCh2YWxbMF0ucyldID0gdmFsWzFdO1xuXHRcdFx0XHRjZWxsID0gKG9wdHMuZGVuc2UgPyBzW1JdW0NdIDogc1tlbmNvZGVfY29sKEMpICsgcnJdKTtcblx0XHRcdFx0Y2VsbC5mID0gc3RyaW5naWZ5X2Zvcm11bGEodmFsWzFdLCByZWZndWVzcywge3I6cm93LnIsIGM6Q30sIHN1cGJvb2tzLCBvcHRzKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdC8qIGlkZW50aWNhbCB0byAnQ29sSW5mbycgaW4gWExTICovXG5cdFx0XHRjYXNlIDB4MDAzQzogLyogJ0JydENvbEluZm8nICovXG5cdFx0XHRcdGlmKCFvcHRzLmNlbGxTdHlsZXMpIGJyZWFrO1xuXHRcdFx0XHR3aGlsZSh2YWwuZSA+PSB2YWwucykge1xuXHRcdFx0XHRcdGNvbGluZm9bdmFsLmUtLV0gPSB7IHdpZHRoOiB2YWwudy8yNTYsIGhpZGRlbjogISEodmFsLmZsYWdzICYgMHgwMSksIGxldmVsOiB2YWwubGV2ZWwgfTtcblx0XHRcdFx0XHRpZighc2VlbmNvbCkgeyBzZWVuY29sID0gdHJ1ZTsgZmluZF9tZHdfY29sdyh2YWwudy8yNTYpOyB9XG5cdFx0XHRcdFx0cHJvY2Vzc19jb2woY29saW5mb1t2YWwuZSsxXSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMEExOiAvKiAnQnJ0QmVnaW5BRmlsdGVyJyAqL1xuXHRcdFx0XHRzWychYXV0b2ZpbHRlciddID0geyByZWY6ZW5jb2RlX3JhbmdlKHZhbCkgfTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMURDOiAvKiAnQnJ0TWFyZ2lucycgKi9cblx0XHRcdFx0c1snIW1hcmdpbnMnXSA9IHZhbDtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMDkzOiAvKiAnQnJ0V3NQcm9wJyAqL1xuXHRcdFx0XHRpZighd2IuU2hlZXRzW2lkeF0pIHdiLlNoZWV0c1tpZHhdID0ge307XG5cdFx0XHRcdGlmKHZhbC5uYW1lKSB3Yi5TaGVldHNbaWR4XS5Db2RlTmFtZSA9IHZhbC5uYW1lO1xuXHRcdFx0XHRpZih2YWwuYWJvdmUgfHwgdmFsLmxlZnQpIHNbJyFvdXRsaW5lJ10gPSB7IGFib3ZlOiB2YWwuYWJvdmUsIGxlZnQ6IHZhbC5sZWZ0IH07XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDA4OTogLyogJ0JydEJlZ2luV3NWaWV3JyAqL1xuXHRcdFx0XHRpZighd2IuVmlld3MpIHdiLlZpZXdzID0gW3t9XTtcblx0XHRcdFx0aWYoIXdiLlZpZXdzWzBdKSB3Yi5WaWV3c1swXSA9IHt9O1xuXHRcdFx0XHRpZih2YWwuUlRMKSB3Yi5WaWV3c1swXS5SVEwgPSB0cnVlO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDAxRTU6IC8qICdCcnRXc0ZtdEluZm8nICovXG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDA0MDogLyogJ0JydERWYWwnICovXG5cdFx0XHRjYXNlIDB4MDQxRDogLyogJ0JydERWYWwxNCcgKi9cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMDk3OiAvKiAnQnJ0UGFuZScgKi9cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDB4MDA5ODogLyogJ0JydFNlbCcgKi9cblx0XHRcdGNhc2UgMHgwMEFGOiAvKiAnQnJ0QUZpbHRlckRhdGVHcm91cEl0ZW0nICovXG5cdFx0XHRjYXNlIDB4MDI4NDogLyogJ0JydEFjdGl2ZVgnICovXG5cdFx0XHRjYXNlIDB4MDI3MTogLyogJ0JydEJpZ05hbWUnICovXG5cdFx0XHRjYXNlIDB4MDIzMjogLyogJ0JydEJrSGltJyAqL1xuXHRcdFx0Y2FzZSAweDAxOEM6IC8qICdCcnRCcmsnICovXG5cdFx0XHRjYXNlIDB4MDQ1ODogLyogJ0JydENGSWNvbicgKi9cblx0XHRcdGNhc2UgMHgwNDdBOiAvKiAnQnJ0Q0ZSdWxlRXh0JyAqL1xuXHRcdFx0Y2FzZSAweDAxRDc6IC8qICdCcnRDRlZPJyAqL1xuXHRcdFx0Y2FzZSAweDA0MUE6IC8qICdCcnRDRlZPMTQnICovXG5cdFx0XHRjYXNlIDB4MDI4OTogLyogJ0JydENlbGxJZ25vcmVFQycgKi9cblx0XHRcdGNhc2UgMHgwNDUxOiAvKiAnQnJ0Q2VsbElnbm9yZUVDMTQnICovXG5cdFx0XHRjYXNlIDB4MDI0RDogLyogJ0JydENlbGxTbWFydFRhZ1Byb3BlcnR5JyAqL1xuXHRcdFx0Y2FzZSAweDAyNUY6IC8qICdCcnRDZWxsV2F0Y2gnICovXG5cdFx0XHRjYXNlIDB4MDIzNDogLyogJ0JydENvbG9yJyAqL1xuXHRcdFx0Y2FzZSAweDA0MUY6IC8qICdCcnRDb2xvcjE0JyAqL1xuXHRcdFx0Y2FzZSAweDAwQTg6IC8qICdCcnRDb2xvckZpbHRlcicgKi9cblx0XHRcdGNhc2UgMHgwMEFFOiAvKiAnQnJ0Q3VzdG9tRmlsdGVyJyAqL1xuXHRcdFx0Y2FzZSAweDA0OUM6IC8qICdCcnRDdXN0b21GaWx0ZXIxNCcgKi9cblx0XHRcdGNhc2UgMHgwMUYzOiAvKiAnQnJ0RFJlZicgKi9cblx0XHRcdGNhc2UgMHgwMUZCOiAvKiAnQnJ0RFhGJyAqL1xuXHRcdFx0Y2FzZSAweDAyMjY6IC8qICdCcnREcmF3aW5nJyAqL1xuXHRcdFx0Y2FzZSAweDAwQUI6IC8qICdCcnREeW5hbWljRmlsdGVyJyAqL1xuXHRcdFx0Y2FzZSAweDAwQTc6IC8qICdCcnRGaWx0ZXInICovXG5cdFx0XHRjYXNlIDB4MDQ5OTogLyogJ0JydEZpbHRlcjE0JyAqL1xuXHRcdFx0Y2FzZSAweDAwQTk6IC8qICdCcnRJY29uRmlsdGVyJyAqL1xuXHRcdFx0Y2FzZSAweDA0OUQ6IC8qICdCcnRJY29uRmlsdGVyMTQnICovXG5cdFx0XHRjYXNlIDB4MDIyNzogLyogJ0JydExlZ2FjeURyYXdpbmcnICovXG5cdFx0XHRjYXNlIDB4MDIyODogLyogJ0JydExlZ2FjeURyYXdpbmdIRicgKi9cblx0XHRcdGNhc2UgMHgwMjk1OiAvKiAnQnJ0TGlzdFBhcnQnICovXG5cdFx0XHRjYXNlIDB4MDI3RjogLyogJ0JydE9sZU9iamVjdCcgKi9cblx0XHRcdGNhc2UgMHgwMURFOiAvKiAnQnJ0UGFnZVNldHVwJyAqL1xuXHRcdFx0Y2FzZSAweDAyMTk6IC8qICdCcnRQaG9uZXRpY0luZm8nICovXG5cdFx0XHRjYXNlIDB4MDFERDogLyogJ0JydFByaW50T3B0aW9ucycgKi9cblx0XHRcdGNhc2UgMHgwMjE4OiAvKiAnQnJ0UmFuZ2VQcm90ZWN0aW9uJyAqL1xuXHRcdFx0Y2FzZSAweDA0NEY6IC8qICdCcnRSYW5nZVByb3RlY3Rpb24xNCcgKi9cblx0XHRcdGNhc2UgMHgwMkE4OiAvKiAnQnJ0UmFuZ2VQcm90ZWN0aW9uSXNvJyAqL1xuXHRcdFx0Y2FzZSAweDA0NTA6IC8qICdCcnRSYW5nZVByb3RlY3Rpb25Jc28xNCcgKi9cblx0XHRcdGNhc2UgMHgwNDAwOiAvKiAnQnJ0UndEZXNjZW50JyAqL1xuXHRcdFx0Y2FzZSAweDAyOTc6IC8qICdCcnRTaGVldENhbGNQcm9wJyAqL1xuXHRcdFx0Y2FzZSAweDAyMTc6IC8qICdCcnRTaGVldFByb3RlY3Rpb24nICovXG5cdFx0XHRjYXNlIDB4MDJBNjogLyogJ0JydFNoZWV0UHJvdGVjdGlvbklzbycgKi9cblx0XHRcdGNhc2UgMHgwMUY4OiAvKiAnQnJ0U2xjJyAqL1xuXHRcdFx0Y2FzZSAweDA0MTM6IC8qICdCcnRTcGFya2xpbmUnICovXG5cdFx0XHRjYXNlIDB4MDFBQzogLyogJ0JydFRhYmxlJyAqL1xuXHRcdFx0Y2FzZSAweDAwQUE6IC8qICdCcnRUb3AxMEZpbHRlcicgKi9cblx0XHRcdGNhc2UgMHgwQzAwOiAvKiAnQnJ0VWlkJyAqL1xuXHRcdFx0Y2FzZSAweDAwMzI6IC8qICdCcnRWYWx1ZU1ldGEnICovXG5cdFx0XHRjYXNlIDB4MDgxNjogLyogJ0JydFdlYkV4dGVuc2lvbicgKi9cblx0XHRcdGNhc2UgMHgwNDE1OiAvKiAnQnJ0V3NGbXRJbmZvRXgxNCcgKi9cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMDIzOiAvKiAnQnJ0RlJUQmVnaW4nICovXG5cdFx0XHRcdHBhc3MgPSB0cnVlOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMDI0OiAvKiAnQnJ0RlJURW5kJyAqL1xuXHRcdFx0XHRwYXNzID0gZmFsc2U7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjU6IC8qICdCcnRBQ0JlZ2luJyAqL1xuXHRcdFx0XHRzdGF0ZS5wdXNoKFJUKTsgcGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjY6IC8qICdCcnRBQ0VuZCcgKi9cblx0XHRcdFx0c3RhdGUucG9wKCk7IHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGlmKFJSLlQpey8qIGVtcHR5ICovfVxuXHRcdFx0XHRlbHNlIGlmKCFwYXNzIHx8IG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIHJlY29yZCAweFwiICsgUlQudG9TdHJpbmcoMTYpKTtcblx0XHR9XG5cdH0sIG9wdHMpO1xuXG5cdGRlbGV0ZSBvcHRzLnN1cGJvb2tzO1xuXHRkZWxldGUgb3B0c1snIXJvdyddO1xuXG5cdGlmKCFzW1wiIXJlZlwiXSAmJiAocmVmZ3Vlc3Mucy5yIDwgMjAwMDAwMCB8fCByZWYgJiYgKHJlZi5lLnIgPiAwIHx8IHJlZi5lLmMgPiAwIHx8IHJlZi5zLnIgPiAwIHx8IHJlZi5zLmMgPiAwKSkpIHNbXCIhcmVmXCJdID0gZW5jb2RlX3JhbmdlKHJlZiB8fCByZWZndWVzcyk7XG5cdGlmKG9wdHMuc2hlZXRSb3dzICYmIHNbXCIhcmVmXCJdKSB7XG5cdFx0dmFyIHRtcHJlZiA9IHNhZmVfZGVjb2RlX3JhbmdlKHNbXCIhcmVmXCJdKTtcblx0XHRpZihvcHRzLnNoZWV0Um93cyA8PSArdG1wcmVmLmUucikge1xuXHRcdFx0dG1wcmVmLmUuciA9IG9wdHMuc2hlZXRSb3dzIC0gMTtcblx0XHRcdGlmKHRtcHJlZi5lLnIgPiByZWZndWVzcy5lLnIpIHRtcHJlZi5lLnIgPSByZWZndWVzcy5lLnI7XG5cdFx0XHRpZih0bXByZWYuZS5yIDwgdG1wcmVmLnMucikgdG1wcmVmLnMuciA9IHRtcHJlZi5lLnI7XG5cdFx0XHRpZih0bXByZWYuZS5jID4gcmVmZ3Vlc3MuZS5jKSB0bXByZWYuZS5jID0gcmVmZ3Vlc3MuZS5jO1xuXHRcdFx0aWYodG1wcmVmLmUuYyA8IHRtcHJlZi5zLmMpIHRtcHJlZi5zLmMgPSB0bXByZWYuZS5jO1xuXHRcdFx0c1tcIiFmdWxscmVmXCJdID0gc1tcIiFyZWZcIl07XG5cdFx0XHRzW1wiIXJlZlwiXSA9IGVuY29kZV9yYW5nZSh0bXByZWYpO1xuXHRcdH1cblx0fVxuXHRpZihtZXJnZXMubGVuZ3RoID4gMCkgc1tcIiFtZXJnZXNcIl0gPSBtZXJnZXM7XG5cdGlmKGNvbGluZm8ubGVuZ3RoID4gMCkgc1tcIiFjb2xzXCJdID0gY29saW5mbztcblx0aWYocm93aW5mby5sZW5ndGggPiAwKSBzW1wiIXJvd3NcIl0gPSByb3dpbmZvO1xuXHRyZXR1cm4gcztcbn1cblxuLyogVE9ETzogc29tZXRoaW5nIHVzZWZ1bCAtLSB0aGlzIGlzIGEgc3R1YiAqL1xuZnVuY3Rpb24gd3JpdGVfd3NfYmluX2NlbGwoYmEvKjpCdWZBcnJheSovLCBjZWxsLyo6Q2VsbCovLCBSLyo6bnVtYmVyKi8sIEMvKjpudW1iZXIqLywgb3B0cywgd3MvKjpXb3Jrc2hlZXQqLywgbGFzdF9zZWVuLyo6Ym9vbGVhbiovKS8qOmJvb2xlYW4qLyB7XG5cdGlmKGNlbGwudiA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2U7XG5cdHZhciB2diA9IFwiXCI7XG5cdHN3aXRjaChjZWxsLnQpIHtcblx0XHRjYXNlICdiJzogdnYgPSBjZWxsLnYgPyBcIjFcIiA6IFwiMFwiOyBicmVhaztcblx0XHRjYXNlICdkJzogLy8gbm8gQnJ0Q2VsbERhdGUgOihcblx0XHRcdGNlbGwgPSBkdXAoY2VsbCk7XG5cdFx0XHRjZWxsLnogPSBjZWxsLnogfHwgdGFibGVfZm10WzE0XTtcblx0XHRcdGNlbGwudiA9IGRhdGVudW0ocGFyc2VEYXRlKGNlbGwudikpOyBjZWxsLnQgPSAnbic7XG5cdFx0XHRicmVhaztcblx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0Y2FzZSAnbic6IGNhc2UgJ2UnOiB2diA9ICcnK2NlbGwudjsgYnJlYWs7XG5cdFx0ZGVmYXVsdDogdnYgPSBjZWxsLnY7IGJyZWFrO1xuXHR9XG5cdHZhciBvLyo6YW55Ki8gPSAoe3I6UiwgYzpDfS8qOmFueSovKTtcblx0LyogVE9ETzogY2VsbCBzdHlsZSAqL1xuXHRvLnMgPSBnZXRfY2VsbF9zdHlsZShvcHRzLmNlbGxYZnMsIGNlbGwsIG9wdHMpO1xuXHRpZihjZWxsLmwpIHdzWychbGlua3MnXS5wdXNoKFtlbmNvZGVfY2VsbChvKSwgY2VsbC5sXSk7XG5cdGlmKGNlbGwuYykgd3NbJyFjb21tZW50cyddLnB1c2goW2VuY29kZV9jZWxsKG8pLCBjZWxsLmNdKTtcblx0c3dpdGNoKGNlbGwudCkge1xuXHRcdGNhc2UgJ3MnOiBjYXNlICdzdHInOlxuXHRcdFx0aWYob3B0cy5ib29rU1NUKSB7XG5cdFx0XHRcdHZ2ID0gZ2V0X3NzdF9pZChvcHRzLlN0cmluZ3MsIChjZWxsLnYvKjphbnkqLyksIG9wdHMucmV2U3RyaW5ncyk7XG5cdFx0XHRcdG8udCA9IFwic1wiOyBvLnYgPSB2djtcblx0XHRcdFx0aWYobGFzdF9zZWVuKSB3cml0ZV9yZWNvcmQoYmEsIDB4MDAxMiAvKiBCcnRTaG9ydElzc3QgKi8sIHdyaXRlX0JydFNob3J0SXNzdChjZWxsLCBvKSk7XG5cdFx0XHRcdGVsc2Ugd3JpdGVfcmVjb3JkKGJhLCAweDAwMDcgLyogQnJ0Q2VsbElzc3QgKi8sIHdyaXRlX0JydENlbGxJc3N0KGNlbGwsIG8pKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG8udCA9IFwic3RyXCI7XG5cdFx0XHRcdGlmKGxhc3Rfc2Vlbikgd3JpdGVfcmVjb3JkKGJhLCAweDAwMTEgLyogQnJ0U2hvcnRTdCAqLywgd3JpdGVfQnJ0U2hvcnRTdChjZWxsLCBvKSk7XG5cdFx0XHRcdGVsc2Ugd3JpdGVfcmVjb3JkKGJhLCAweDAwMDYgLyogQnJ0Q2VsbFN0ICovLCB3cml0ZV9CcnRDZWxsU3QoY2VsbCwgbykpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0Y2FzZSAnbic6XG5cdFx0XHQvKiBUT0RPOiBkZXRlcm1pbmUgdGhyZXNob2xkIGZvciBSZWFsIHZzIFJLICovXG5cdFx0XHRpZihjZWxsLnYgPT0gKGNlbGwudiB8IDApICYmIGNlbGwudiA+IC0xMDAwICYmIGNlbGwudiA8IDEwMDApIHtcblx0XHRcdFx0aWYobGFzdF9zZWVuKSB3cml0ZV9yZWNvcmQoYmEsIDB4MDAwRCAvKiBCcnRTaG9ydFJrICovLCB3cml0ZV9CcnRTaG9ydFJrKGNlbGwsIG8pKTtcblx0XHRcdFx0ZWxzZSB3cml0ZV9yZWNvcmQoYmEsIDB4MDAwMiAvKiBCcnRDZWxsUmsgKi8sIHdyaXRlX0JydENlbGxSayhjZWxsLCBvKSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpZihsYXN0X3NlZW4pIHdyaXRlX3JlY29yZChiYSwgMHgwMDEwIC8qIEJydFNob3J0UmVhbCAqLywgd3JpdGVfQnJ0U2hvcnRSZWFsKGNlbGwsIG8pKTtcblx0XHRcdFx0ZWxzZSB3cml0ZV9yZWNvcmQoYmEsIDB4MDAwNSAvKiBCcnRDZWxsUmVhbCAqLywgd3JpdGVfQnJ0Q2VsbFJlYWwoY2VsbCwgbykpO1xuXHRcdFx0fSByZXR1cm4gdHJ1ZTtcblx0XHRjYXNlICdiJzpcblx0XHRcdG8udCA9IFwiYlwiO1xuXHRcdFx0aWYobGFzdF9zZWVuKSB3cml0ZV9yZWNvcmQoYmEsIDB4MDAwRiAvKiBCcnRTaG9ydEJvb2wgKi8sIHdyaXRlX0JydFNob3J0Qm9vbChjZWxsLCBvKSk7XG5cdFx0XHRlbHNlIHdyaXRlX3JlY29yZChiYSwgMHgwMDA0IC8qIEJydENlbGxCb29sICovLCB3cml0ZV9CcnRDZWxsQm9vbChjZWxsLCBvKSk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRjYXNlICdlJzpcblx0XHRcdG8udCA9IFwiZVwiO1xuXHRcdFx0aWYobGFzdF9zZWVuKSB3cml0ZV9yZWNvcmQoYmEsIDB4MDAwRSAvKiBCcnRTaG9ydEVycm9yICovLCB3cml0ZV9CcnRTaG9ydEVycm9yKGNlbGwsIG8pKTtcblx0XHRcdGVsc2Ugd3JpdGVfcmVjb3JkKGJhLCAweDAwMDMgLyogQnJ0Q2VsbEVycm9yICovLCB3cml0ZV9CcnRDZWxsRXJyb3IoY2VsbCwgbykpO1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0aWYobGFzdF9zZWVuKSB3cml0ZV9yZWNvcmQoYmEsIDB4MDAwQyAvKiBCcnRTaG9ydEJsYW5rICovLCB3cml0ZV9CcnRTaG9ydEJsYW5rKGNlbGwsIG8pKTtcblx0ZWxzZSB3cml0ZV9yZWNvcmQoYmEsIDB4MDAwMSAvKiBCcnRDZWxsQmxhbmsgKi8sIHdyaXRlX0JydENlbGxCbGFuayhjZWxsLCBvKSk7XG5cdHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9DRUxMVEFCTEUoYmEsIHdzLyo6V29ya3NoZWV0Ki8sIGlkeC8qOm51bWJlciovLCBvcHRzLyo6Oiwgd2I6V29ya2Jvb2sqLykge1xuXHR2YXIgcmFuZ2UgPSBzYWZlX2RlY29kZV9yYW5nZSh3c1snIXJlZiddIHx8IFwiQTFcIiksIHJlZiwgcnIgPSBcIlwiLCBjb2xzLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDkxIC8qIEJydEJlZ2luU2hlZXREYXRhICovKTtcblx0dmFyIGRlbnNlID0gQXJyYXkuaXNBcnJheSh3cyk7XG5cdHZhciBjYXAgPSByYW5nZS5lLnI7XG5cdGlmKHdzWychcm93cyddKSBjYXAgPSBNYXRoLm1heChyYW5nZS5lLnIsIHdzWychcm93cyddLmxlbmd0aCAtIDEpO1xuXHRmb3IodmFyIFIgPSByYW5nZS5zLnI7IFIgPD0gY2FwOyArK1IpIHtcblx0XHRyciA9IGVuY29kZV9yb3coUik7XG5cdFx0LyogW0FDQ0VMTFRBQkxFXSAqL1xuXHRcdC8qIEJydFJvd0hkciAqL1xuXHRcdHdyaXRlX3Jvd19oZWFkZXIoYmEsIHdzLCByYW5nZSwgUik7XG5cdFx0dmFyIGxhc3Rfc2VlbiA9IGZhbHNlO1xuXHRcdGlmKFIgPD0gcmFuZ2UuZS5yKSBmb3IodmFyIEMgPSByYW5nZS5zLmM7IEMgPD0gcmFuZ2UuZS5jOyArK0MpIHtcblx0XHRcdC8qICoxNjM4NENFTEwgKi9cblx0XHRcdGlmKFIgPT09IHJhbmdlLnMucikgY29sc1tDXSA9IGVuY29kZV9jb2woQyk7XG5cdFx0XHRyZWYgPSBjb2xzW0NdICsgcnI7XG5cdFx0XHR2YXIgY2VsbCA9IGRlbnNlID8gKHdzW1JdfHxbXSlbQ10gOiB3c1tyZWZdO1xuXHRcdFx0aWYoIWNlbGwpIHsgbGFzdF9zZWVuID0gZmFsc2U7IGNvbnRpbnVlOyB9XG5cdFx0XHQvKiB3cml0ZSBjZWxsICovXG5cdFx0XHRsYXN0X3NlZW4gPSB3cml0ZV93c19iaW5fY2VsbChiYSwgY2VsbCwgUiwgQywgb3B0cywgd3MsIGxhc3Rfc2Vlbik7XG5cdFx0fVxuXHR9XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDkyIC8qIEJydEVuZFNoZWV0RGF0YSAqLyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX01FUkdFQ0VMTFMoYmEsIHdzLyo6V29ya3NoZWV0Ki8pIHtcblx0aWYoIXdzIHx8ICF3c1snIW1lcmdlcyddKSByZXR1cm47XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMEIxIC8qIEJydEJlZ2luTWVyZ2VDZWxscyAqLywgd3JpdGVfQnJ0QmVnaW5NZXJnZUNlbGxzKHdzWychbWVyZ2VzJ10ubGVuZ3RoKSk7XG5cdHdzWychbWVyZ2VzJ10uZm9yRWFjaChmdW5jdGlvbihtKSB7IHdyaXRlX3JlY29yZChiYSwgMHgwMEIwIC8qIEJydE1lcmdlQ2VsbCAqLywgd3JpdGVfQnJ0TWVyZ2VDZWxsKG0pKTsgfSk7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMEIyIC8qIEJydEVuZE1lcmdlQ2VsbHMgKi8pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9DT0xJTkZPUyhiYSwgd3MvKjpXb3Jrc2hlZXQqLy8qOjosIGlkeDpudW1iZXIsIG9wdHMsIHdiOldvcmtib29rKi8pIHtcblx0aWYoIXdzIHx8ICF3c1snIWNvbHMnXSkgcmV0dXJuO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDE4NiAvKiBCcnRCZWdpbkNvbEluZm9zICovKTtcblx0d3NbJyFjb2xzJ10uZm9yRWFjaChmdW5jdGlvbihtLCBpKSB7IGlmKG0pIHdyaXRlX3JlY29yZChiYSwgMHgwMDNDIC8qICdCcnRDb2xJbmZvJyAqLywgd3JpdGVfQnJ0Q29sSW5mbyhpLCBtKSk7IH0pO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDE4NyAvKiBCcnRFbmRDb2xJbmZvcyAqLyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0lHTk9SRUVDUyhiYSwgd3MvKjpXb3Jrc2hlZXQqLykge1xuXHRpZighd3MgfHwgIXdzWychcmVmJ10pIHJldHVybjtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyODggLyogQnJ0QmVnaW5DZWxsSWdub3JlRUNzICovKTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyODkgLyogQnJ0Q2VsbElnbm9yZUVDICovLCB3cml0ZV9CcnRDZWxsSWdub3JlRUMoc2FmZV9kZWNvZGVfcmFuZ2Uod3NbJyFyZWYnXSkpKTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyOEEgLyogQnJ0RW5kQ2VsbElnbm9yZUVDcyAqLyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0hMSU5LUyhiYSwgd3MvKjpXb3Jrc2hlZXQqLywgcmVscykge1xuXHQvKiAqQnJ0SExpbmsgKi9cblx0d3NbJyFsaW5rcyddLmZvckVhY2goZnVuY3Rpb24obCkge1xuXHRcdGlmKCFsWzFdLlRhcmdldCkgcmV0dXJuO1xuXHRcdHZhciBySWQgPSBhZGRfcmVscyhyZWxzLCAtMSwgbFsxXS5UYXJnZXQucmVwbGFjZSgvIy4qJC8sIFwiXCIpLCBSRUxTLkhMSU5LKTtcblx0XHR3cml0ZV9yZWNvcmQoYmEsIDB4MDFFRSAvKiBCcnRITGluayAqLywgd3JpdGVfQnJ0SExpbmsobCwgcklkKSk7XG5cdH0pO1xuXHRkZWxldGUgd3NbJyFsaW5rcyddO1xufVxuZnVuY3Rpb24gd3JpdGVfTEVHQUNZRFJBV0lORyhiYSwgd3MvKjpXb3Jrc2hlZXQqLywgaWR4Lyo6bnVtYmVyKi8sIHJlbHMpIHtcblx0LyogW0JydExlZ2FjeURyYXdpbmddICovXG5cdGlmKHdzWychY29tbWVudHMnXS5sZW5ndGggPiAwKSB7XG5cdFx0dmFyIHJJZCA9IGFkZF9yZWxzKHJlbHMsIC0xLCBcIi4uL2RyYXdpbmdzL3ZtbERyYXdpbmdcIiArIChpZHgrMSkgKyBcIi52bWxcIiwgUkVMUy5WTUwpO1xuXHRcdHdyaXRlX3JlY29yZChiYSwgMHgwMjI3IC8qIEJydExlZ2FjeURyYXdpbmcgKi8sIHdyaXRlX1JlbElEKFwicklkXCIgKyBySWQpKTtcblx0XHR3c1snIWxlZ2FjeSddID0gcklkO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0FVVE9GSUxURVIoYmEsIHdzLCB3YiwgaWR4KSB7XG5cdGlmKCF3c1snIWF1dG9maWx0ZXInXSkgcmV0dXJuO1xuXHR2YXIgZGF0YSA9IHdzWychYXV0b2ZpbHRlciddO1xuXHR2YXIgcmVmID0gdHlwZW9mIGRhdGEucmVmID09PSBcInN0cmluZ1wiID8gZGF0YS5yZWYgOiBlbmNvZGVfcmFuZ2UoZGF0YS5yZWYpO1xuXG5cdC8qIFVwZGF0ZSBGaWx0ZXJEYXRhYmFzZSBkZWZpbmVkIG5hbWUgZm9yIHRoZSB3b3Jrc2hlZXQgKi9cblx0aWYoIXdiLldvcmtib29rKSB3Yi5Xb3JrYm9vayA9ICh7U2hlZXRzOltdfS8qOmFueSovKTtcblx0aWYoIXdiLldvcmtib29rLk5hbWVzKSB3Yi5Xb3JrYm9vay5OYW1lcyA9IFtdO1xuXHR2YXIgbmFtZXMvKjogQXJyYXk8YW55PiAqLyA9IHdiLldvcmtib29rLk5hbWVzO1xuXHR2YXIgcmFuZ2UgPSBkZWNvZGVfcmFuZ2UocmVmKTtcblx0aWYocmFuZ2Uucy5yID09IHJhbmdlLmUucikgeyByYW5nZS5lLnIgPSBkZWNvZGVfcmFuZ2Uod3NbXCIhcmVmXCJdKS5lLnI7IHJlZiA9IGVuY29kZV9yYW5nZShyYW5nZSk7IH1cblx0Zm9yKHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIG5hbWUgPSBuYW1lc1tpXTtcblx0XHRpZihuYW1lLk5hbWUgIT0gJ194bG5tLl9GaWx0ZXJEYXRhYmFzZScpIGNvbnRpbnVlO1xuXHRcdGlmKG5hbWUuU2hlZXQgIT0gaWR4KSBjb250aW51ZTtcblx0XHRuYW1lLlJlZiA9IFwiJ1wiICsgd2IuU2hlZXROYW1lc1tpZHhdICsgXCInIVwiICsgcmVmOyBicmVhaztcblx0fVxuXHRpZihpID09IG5hbWVzLmxlbmd0aCkgbmFtZXMucHVzaCh7IE5hbWU6ICdfeGxubS5fRmlsdGVyRGF0YWJhc2UnLCBTaGVldDogaWR4LCBSZWY6IFwiJ1wiICsgd2IuU2hlZXROYW1lc1tpZHhdICsgXCInIVwiICsgcmVmICB9KTtcblxuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDBBMSAvKiBCcnRCZWdpbkFGaWx0ZXIgKi8sIHdyaXRlX1VuY2hlY2tlZFJmWChzYWZlX2RlY29kZV9yYW5nZShyZWYpKSk7XG5cdC8qICpGSUxURVJDT0xVTU4gKi9cblx0LyogW1NPUlRTVEFURV0gKi9cblx0LyogQnJ0RW5kQUZpbHRlciAqL1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDBBMiAvKiBCcnRFbmRBRmlsdGVyICovKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfV1NWSUVXUzIoYmEsIHdzLCBXb3JrYm9vaykge1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA4NSAvKiBCcnRCZWdpbldzVmlld3MgKi8pO1xuXHR7IC8qIDEqV1NWSUVXMiAqL1xuXHRcdC8qIFtBQ1VJRF0gKi9cblx0XHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA4OSAvKiBCcnRCZWdpbldzVmlldyAqLywgd3JpdGVfQnJ0QmVnaW5Xc1ZpZXcod3MsIFdvcmtib29rKSk7XG5cdFx0LyogW0JydFBhbmVdICovXG5cdFx0LyogKjRCcnRTZWwgKi9cblx0XHQvKiAqNFNYU0VMRUNUICovXG5cdFx0LyogKkZSVCAqL1xuXHRcdHdyaXRlX3JlY29yZChiYSwgMHgwMDhBIC8qIEJydEVuZFdzVmlldyAqLyk7XG5cdH1cblx0LyogKkZSVCAqL1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA4NiAvKiBCcnRFbmRXc1ZpZXdzICovKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfV1NGTVRJTkZPKC8qOjpiYSwgd3MqLykge1xuXHQvKiBbQUNXU0ZNVElORk9dICovXG5cdC8vIHdyaXRlX3JlY29yZChiYSwgMHgwMUU1IC8qIEJydFdzRm10SW5mbyAqLywgd3JpdGVfQnJ0V3NGbXRJbmZvKHdzKSk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX1NIRUVUUFJPVEVDVChiYSwgd3MpIHtcblx0aWYoIXdzWychcHJvdGVjdCddKSByZXR1cm47XG5cdC8qIFtCcnRTaGVldFByb3RlY3Rpb25Jc29dICovXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjE3IC8qIEJydFNoZWV0UHJvdGVjdGlvbiAqLywgd3JpdGVfQnJ0U2hlZXRQcm90ZWN0aW9uKHdzWychcHJvdGVjdCddKSk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3dzX2JpbihpZHgvKjpudW1iZXIqLywgb3B0cywgd2IvKjpXb3JrYm9vayovLCByZWxzKSB7XG5cdHZhciBiYSA9IGJ1Zl9hcnJheSgpO1xuXHR2YXIgcyA9IHdiLlNoZWV0TmFtZXNbaWR4XSwgd3MgPSB3Yi5TaGVldHNbc10gfHwge307XG5cdHZhciBjLyo6c3RyaW5nKi8gPSBzOyB0cnkgeyBpZih3YiAmJiB3Yi5Xb3JrYm9vaykgYyA9IHdiLldvcmtib29rLlNoZWV0c1tpZHhdLkNvZGVOYW1lIHx8IGM7IH0gY2F0Y2goZSkge31cblx0dmFyIHIgPSBzYWZlX2RlY29kZV9yYW5nZSh3c1snIXJlZiddIHx8IFwiQTFcIik7XG5cdGlmKHIuZS5jID4gMHgzRkZGIHx8IHIuZS5yID4gMHhGRkZGRikge1xuXHRcdGlmKG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoXCJSYW5nZSBcIiArICh3c1snIXJlZiddIHx8IFwiQTFcIikgKyBcIiBleGNlZWRzIGZvcm1hdCBsaW1pdCBBMTpYRkQxMDQ4NTc2XCIpO1xuXHRcdHIuZS5jID0gTWF0aC5taW4oci5lLmMsIDB4M0ZGRik7XG5cdFx0ci5lLnIgPSBNYXRoLm1pbihyLmUuYywgMHhGRkZGRik7XG5cdH1cblx0d3NbJyFsaW5rcyddID0gW107XG5cdC8qIHBhc3NlZCBiYWNrIHRvIHdyaXRlX3ppcCBhbmQgcmVtb3ZlZCB0aGVyZSAqL1xuXHR3c1snIWNvbW1lbnRzJ10gPSBbXTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwODEgLyogQnJ0QmVnaW5TaGVldCAqLyk7XG5cdGlmKHdiLnZiYXJhdyB8fCB3c1snIW91dGxpbmUnXSkgd3JpdGVfcmVjb3JkKGJhLCAweDAwOTMgLyogQnJ0V3NQcm9wICovLCB3cml0ZV9CcnRXc1Byb3AoYywgd3NbJyFvdXRsaW5lJ10pKTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwOTQgLyogQnJ0V3NEaW0gKi8sIHdyaXRlX0JydFdzRGltKHIpKTtcblx0d3JpdGVfV1NWSUVXUzIoYmEsIHdzLCB3Yi5Xb3JrYm9vayk7XG5cdHdyaXRlX1dTRk1USU5GTyhiYSwgd3MpO1xuXHR3cml0ZV9DT0xJTkZPUyhiYSwgd3MsIGlkeCwgb3B0cywgd2IpO1xuXHR3cml0ZV9DRUxMVEFCTEUoYmEsIHdzLCBpZHgsIG9wdHMsIHdiKTtcblx0LyogW0JydFNoZWV0Q2FsY1Byb3BdICovXG5cdHdyaXRlX1NIRUVUUFJPVEVDVChiYSwgd3MpO1xuXHQvKiAqKFtCcnRSYW5nZVByb3RlY3Rpb25Jc29dIEJydFJhbmdlUHJvdGVjdGlvbikgKi9cblx0LyogW1NDRU5NQU5dICovXG5cdHdyaXRlX0FVVE9GSUxURVIoYmEsIHdzLCB3YiwgaWR4KTtcblx0LyogW1NPUlRTVEFURV0gKi9cblx0LyogW0RDT05dICovXG5cdC8qIFtVU0VSU0hWSUVXU10gKi9cblx0d3JpdGVfTUVSR0VDRUxMUyhiYSwgd3MpO1xuXHQvKiBbQnJ0UGhvbmV0aWNJbmZvXSAqL1xuXHQvKiAqQ09ORElUSU9OQUxGT1JNQVRUSU5HICovXG5cdC8qIFtEVkFMU10gKi9cblx0d3JpdGVfSExJTktTKGJhLCB3cywgcmVscyk7XG5cdC8qIFtCcnRQcmludE9wdGlvbnNdICovXG5cdGlmKHdzWychbWFyZ2lucyddKSB3cml0ZV9yZWNvcmQoYmEsIDB4MDFEQyAvKiBCcnRNYXJnaW5zICovLCB3cml0ZV9CcnRNYXJnaW5zKHdzWychbWFyZ2lucyddKSk7XG5cdC8qIFtCcnRQYWdlU2V0dXBdICovXG5cdC8qIFtIRUFERVJGT09URVJdICovXG5cdC8qIFtSV0JSS10gKi9cblx0LyogW0NPTEJSS10gKi9cblx0LyogKkJydEJpZ05hbWUgKi9cblx0LyogW0NFTExXQVRDSEVTXSAqL1xuXHRpZighb3B0cyB8fCBvcHRzLmlnbm9yZUVDIHx8IChvcHRzLmlnbm9yZUVDID09ICh2b2lkIDApKSkgd3JpdGVfSUdOT1JFRUNTKGJhLCB3cyk7XG5cdC8qIFtTTUFSVFRBR1NdICovXG5cdC8qIFtCcnREcmF3aW5nXSAqL1xuXHR3cml0ZV9MRUdBQ1lEUkFXSU5HKGJhLCB3cywgaWR4LCByZWxzKTtcblx0LyogW0JydExlZ2FjeURyYXdpbmdIRl0gKi9cblx0LyogW0JydEJrSGltXSAqL1xuXHQvKiBbT0xFT0JKRUNUU10gKi9cblx0LyogW0FDVElWRVhDT05UUk9MU10gKi9cblx0LyogW1dFQlBVQklURU1TXSAqL1xuXHQvKiBbTElTVFBBUlRTXSAqL1xuXHQvKiBGUlRXT1JLU0hFRVQgKi9cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwODIgLyogQnJ0RW5kU2hlZXQgKi8pO1xuXHRyZXR1cm4gYmEuZW5kKCk7XG59XG5mdW5jdGlvbiBwYXJzZV9DYWNoZShkYXRhLyo6c3RyaW5nKi8pLyo6W0FycmF5PG51bWJlcnxzdHJpbmc+LCBzdHJpbmcsID9zdHJpbmddKi8ge1xuXHR2YXIgY29sLyo6QXJyYXk8bnVtYmVyfHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgbnVtID0gZGF0YS5tYXRjaCgvXjxjOm51bUNhY2hlPi8pO1xuXHR2YXIgZjtcblxuXHQvKiAyMS4yLjIuMTUwIHB0IENUX051bVZhbCAqL1xuXHQoZGF0YS5tYXRjaCgvPGM6cHQgaWR4PVwiKFxcZCopXCI+KC4qPyk8XFwvYzpwdD4vbWcpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihwdCkge1xuXHRcdHZhciBxID0gcHQubWF0Y2goLzxjOnB0IGlkeD1cIihcXGQqPylcIj48Yzp2PiguKik8XFwvYzp2PjxcXC9jOnB0Pi8pO1xuXHRcdGlmKCFxKSByZXR1cm47XG5cdFx0Y29sWytxWzFdXSA9IG51bSA/ICtxWzJdIDogcVsyXTtcblx0fSk7XG5cblx0LyogMjEuMi4yLjcxIGZvcm1hdENvZGUgQ1RfWHN0cmluZyAqL1xuXHR2YXIgbmYgPSB1bmVzY2FwZXhtbCgoZGF0YS5tYXRjaCgvPGM6Zm9ybWF0Q29kZT4oW1xcc1xcU10qPyk8XFwvYzpmb3JtYXRDb2RlPi8pIHx8IFtcIlwiLFwiR2VuZXJhbFwiXSlbMV0pO1xuXG5cdChkYXRhLm1hdGNoKC88YzpmPiguKj8pPFxcL2M6Zj4vbWcpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihGKSB7IGYgPSBGLnJlcGxhY2UoLzwuKj8+L2csXCJcIik7IH0pO1xuXG5cdHJldHVybiBbY29sLCBuZiwgZl07XG59XG5cbi8qIDIxLjIgRHJhd2luZ01MIC0gQ2hhcnRzICovXG5mdW5jdGlvbiBwYXJzZV9jaGFydChkYXRhLyo6P3N0cmluZyovLCBuYW1lLyo6c3RyaW5nKi8sIG9wdHMsIHJlbHMsIHdiLCBjc2hlZXQpIHtcblx0dmFyIGNzLyo6V29ya3NoZWV0Ki8gPSAoKGNzaGVldCB8fCB7XCIhdHlwZVwiOlwiY2hhcnRcIn0pLyo6YW55Ki8pO1xuXHRpZighZGF0YSkgcmV0dXJuIGNzaGVldDtcblx0LyogMjEuMi4yLjI3IGNoYXJ0IENUX0NoYXJ0ICovXG5cblx0dmFyIEMgPSAwLCBSID0gMCwgY29sID0gXCJBXCI7XG5cdHZhciByZWZndWVzcyA9IHtzOiB7cjoyMDAwMDAwLCBjOjIwMDAwMDB9LCBlOiB7cjowLCBjOjB9IH07XG5cblx0LyogMjEuMi4yLjEyMCBudW1DYWNoZSBDVF9OdW1EYXRhICovXG5cdChkYXRhLm1hdGNoKC88YzpudW1DYWNoZT5bXFxzXFxTXSo/PFxcL2M6bnVtQ2FjaGU+L2dtKXx8W10pLmZvckVhY2goZnVuY3Rpb24obmMpIHtcblx0XHR2YXIgY2FjaGUgPSBwYXJzZV9DYWNoZShuYyk7XG5cdFx0cmVmZ3Vlc3Mucy5yID0gcmVmZ3Vlc3Mucy5jID0gMDtcblx0XHRyZWZndWVzcy5lLmMgPSBDO1xuXHRcdGNvbCA9IGVuY29kZV9jb2woQyk7XG5cdFx0Y2FjaGVbMF0uZm9yRWFjaChmdW5jdGlvbihuLGkpIHtcblx0XHRcdGNzW2NvbCArIGVuY29kZV9yb3coaSldID0ge3Q6J24nLCB2Om4sIHo6Y2FjaGVbMV0gfTtcblx0XHRcdFIgPSBpO1xuXHRcdH0pO1xuXHRcdGlmKHJlZmd1ZXNzLmUuciA8IFIpIHJlZmd1ZXNzLmUuciA9IFI7XG5cdFx0KytDO1xuXHR9KTtcblx0aWYoQyA+IDApIGNzW1wiIXJlZlwiXSA9IGVuY29kZV9yYW5nZShyZWZndWVzcyk7XG5cdHJldHVybiBjcztcbn1cbi8qIDE4LjMgV29ya3NoZWV0cyBhbHNvIGNvdmVycyBDaGFydHNoZWV0cyAqL1xuZnVuY3Rpb24gcGFyc2VfY3NfeG1sKGRhdGEvKjo/c3RyaW5nKi8sIG9wdHMsIGlkeC8qOm51bWJlciovLCByZWxzLCB3Yi8qOjosIHRoZW1lcywgc3R5bGVzKi8pLyo6V29ya3NoZWV0Ki8ge1xuXHRpZighZGF0YSkgcmV0dXJuIGRhdGE7XG5cdC8qIDE4LjMuMS4xMiBjaGFydHNoZWV0IENUX0NoYXJ0U2hlZXQgKi9cblx0aWYoIXJlbHMpIHJlbHMgPSB7JyFpZCc6e319O1xuXHR2YXIgcyA9ICh7JyF0eXBlJzpcImNoYXJ0XCIsICchZHJhd2VsJzpudWxsLCAnIXJlbCc6XCJcIn0vKjphbnkqLyk7XG5cdHZhciBtO1xuXG5cdC8qIDE4LjMuMS44MyBzaGVldFByIENUX0NoYXJ0c2hlZXRQciAqL1xuXHR2YXIgc2hlZXRQciA9IGRhdGEubWF0Y2goc2hlZXRwcnJlZ2V4KTtcblx0aWYoc2hlZXRQcikgcGFyc2Vfd3NfeG1sX3NoZWV0cHIoc2hlZXRQclswXSwgcywgd2IsIGlkeCk7XG5cblx0LyogMTguMy4xLjM2IGRyYXdpbmcgQ1RfRHJhd2luZyAqL1xuXHRpZigobSA9IGRhdGEubWF0Y2goL2RyYXdpbmcgcjppZD1cIiguKj8pXCIvKSkpIHNbJyFyZWwnXSA9IG1bMV07XG5cblx0aWYocmVsc1snIWlkJ11bc1snIXJlbCddXSkgc1snIWRyYXdlbCddID0gcmVsc1snIWlkJ11bc1snIXJlbCddXTtcblx0cmV0dXJuIHM7XG59XG5mdW5jdGlvbiB3cml0ZV9jc194bWwoaWR4Lyo6bnVtYmVyKi8sIG9wdHMsIHdiLyo6V29ya2Jvb2sqLywgcmVscykvKjpzdHJpbmcqLyB7XG5cdHZhciBvID0gW1hNTF9IRUFERVIsIHdyaXRleHRhZygnY2hhcnRzaGVldCcsIG51bGwsIHtcblx0XHQneG1sbnMnOiBYTUxOU19tYWluWzBdLFxuXHRcdCd4bWxuczpyJzogWE1MTlMuclxuXHR9KV07XG5cdG9bby5sZW5ndGhdID0gd3JpdGV4dGFnKFwiZHJhd2luZ1wiLCBudWxsLCB7XCJyOmlkXCI6IFwicklkMVwifSk7XG5cdGFkZF9yZWxzKHJlbHMsIC0xLCBcIi4uL2RyYXdpbmdzL2RyYXdpbmdcIiArIChpZHgrMSkgKyBcIi54bWxcIiwgUkVMUy5EUkFXKTtcblx0aWYoby5sZW5ndGg+MikgeyBvW28ubGVuZ3RoXSA9ICgnPC9jaGFydHNoZWV0PicpOyBvWzFdPW9bMV0ucmVwbGFjZShcIi8+XCIsXCI+XCIpOyB9XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuMzMxIEJydENzUHJvcCAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0Q3NQcm9wKGRhdGEsIGxlbmd0aC8qOm51bWJlciovKSB7XG5cdGRhdGEubCArPSAxMDtcblx0dmFyIG5hbWUgPSBwYXJzZV9YTFdpZGVTdHJpbmcoZGF0YSwgbGVuZ3RoIC0gMTApO1xuXHRyZXR1cm4geyBuYW1lOiBuYW1lIH07XG59XG5cbi8qIFtNUy1YTFNCXSAyLjEuNy43IENoYXJ0IFNoZWV0ICovXG5mdW5jdGlvbiBwYXJzZV9jc19iaW4oZGF0YSwgb3B0cywgaWR4Lyo6bnVtYmVyKi8sIHJlbHMsIHdiLyo6OiwgdGhlbWVzLCBzdHlsZXMqLykvKjpXb3Jrc2hlZXQqLyB7XG5cdGlmKCFkYXRhKSByZXR1cm4gZGF0YTtcblx0aWYoIXJlbHMpIHJlbHMgPSB7JyFpZCc6e319O1xuXHR2YXIgcyA9IHsnIXR5cGUnOlwiY2hhcnRcIiwgJyFkcmF3ZWwnOm51bGwsICchcmVsJzpcIlwifTtcblx0dmFyIHN0YXRlLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdHZhciBwYXNzID0gZmFsc2U7XG5cdHJlY29yZGhvcHBlcihkYXRhLCBmdW5jdGlvbiBjc19wYXJzZSh2YWwsIFIsIFJUKSB7XG5cdFx0c3dpdGNoKFJUKSB7XG5cblx0XHRcdGNhc2UgMHgwMjI2OiAvKiAnQnJ0RHJhd2luZycgKi9cblx0XHRcdFx0c1snIXJlbCddID0gdmFsOyBicmVhaztcblxuXHRcdFx0Y2FzZSAweDAyOEI6IC8qICdCcnRDc1Byb3AnICovXG5cdFx0XHRcdGlmKCF3Yi5TaGVldHNbaWR4XSkgd2IuU2hlZXRzW2lkeF0gPSB7fTtcblx0XHRcdFx0aWYodmFsLm5hbWUpIHdiLlNoZWV0c1tpZHhdLkNvZGVOYW1lID0gdmFsLm5hbWU7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDIzMjogLyogJ0JydEJrSGltJyAqL1xuXHRcdFx0Y2FzZSAweDAyOEM6IC8qICdCcnRDc1BhZ2VTZXR1cCcgKi9cblx0XHRcdGNhc2UgMHgwMjlEOiAvKiAnQnJ0Q3NQcm90ZWN0aW9uJyAqL1xuXHRcdFx0Y2FzZSAweDAyQTc6IC8qICdCcnRDc1Byb3RlY3Rpb25Jc28nICovXG5cdFx0XHRjYXNlIDB4MDIyNzogLyogJ0JydExlZ2FjeURyYXdpbmcnICovXG5cdFx0XHRjYXNlIDB4MDIyODogLyogJ0JydExlZ2FjeURyYXdpbmdIRicgKi9cblx0XHRcdGNhc2UgMHgwMURDOiAvKiAnQnJ0TWFyZ2lucycgKi9cblx0XHRcdGNhc2UgMHgwQzAwOiAvKiAnQnJ0VWlkJyAqL1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDAwMjM6IC8qICdCcnRGUlRCZWdpbicgKi9cblx0XHRcdFx0cGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjQ6IC8qICdCcnRGUlRFbmQnICovXG5cdFx0XHRcdHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAyNTogLyogJ0JydEFDQmVnaW4nICovXG5cdFx0XHRcdHN0YXRlLnB1c2goUlQpOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMDI2OiAvKiAnQnJ0QUNFbmQnICovXG5cdFx0XHRcdHN0YXRlLnBvcCgpOyBicmVhaztcblxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0aWYoUi5UID4gMCkgc3RhdGUucHVzaChSVCk7XG5cdFx0XHRcdGVsc2UgaWYoUi5UIDwgMCkgc3RhdGUucG9wKCk7XG5cdFx0XHRcdGVsc2UgaWYoIXBhc3MgfHwgb3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgcmVjb3JkIDB4XCIgKyBSVC50b1N0cmluZygxNikpO1xuXHRcdH1cblx0fSwgb3B0cyk7XG5cblx0aWYocmVsc1snIWlkJ11bc1snIXJlbCddXSkgc1snIWRyYXdlbCddID0gcmVsc1snIWlkJ11bc1snIXJlbCddXTtcblx0cmV0dXJuIHM7XG59XG5mdW5jdGlvbiB3cml0ZV9jc19iaW4oLyo6OmlkeDpudW1iZXIsIG9wdHMsIHdiOldvcmtib29rLCByZWxzKi8pIHtcblx0dmFyIGJhID0gYnVmX2FycmF5KCk7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDgxIC8qIEJydEJlZ2luU2hlZXQgKi8pO1xuXHQvKiBbQnJ0Q3NQcm9wXSAqL1xuXHQvKiBDU1ZJRVdTICovXG5cdC8qIFtbQnJ0Q3NQcm90ZWN0aW9uSXNvXSBCcnRDc1Byb3RlY3Rpb25dICovXG5cdC8qIFtVU0VSQ1NWSUVXU10gKi9cblx0LyogW0JydE1hcmdpbnNdICovXG5cdC8qIFtCcnRDc1BhZ2VTZXR1cF0gKi9cblx0LyogW0hFQURFUkZPT1RFUl0gKi9cblx0LyogQnJ0RHJhd2luZyAqL1xuXHQvKiBbQnJ0TGVnYWN5RHJhd2luZ10gKi9cblx0LyogW0JydExlZ2FjeURyYXdpbmdIRl0gKi9cblx0LyogW0JydEJrSGltXSAqL1xuXHQvKiBbV0VCUFVCSVRFTVNdICovXG5cdC8qIEZSVENIQVJUU0hFRVQgKi9cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwODIgLyogQnJ0RW5kU2hlZXQgKi8pO1xuXHRyZXR1cm4gYmEuZW5kKCk7XG59XG4vKiAxOC4yLjI4IChDVF9Xb3JrYm9va1Byb3RlY3Rpb24pIERlZmF1bHRzICovXG52YXIgV0JQcm9wc0RlZiA9IFtcblx0WydhbGxvd1JlZnJlc2hRdWVyeScsICAgICAgICAgICBmYWxzZSwgXCJib29sXCJdLFxuXHRbJ2F1dG9Db21wcmVzc1BpY3R1cmVzJywgICAgICAgIHRydWUsICBcImJvb2xcIl0sXG5cdFsnYmFja3VwRmlsZScsICAgICAgICAgICAgICAgICAgZmFsc2UsIFwiYm9vbFwiXSxcblx0WydjaGVja0NvbXBhdGliaWxpdHknLCAgICAgICAgICBmYWxzZSwgXCJib29sXCJdLFxuXHRbJ0NvZGVOYW1lJywgICAgICAgICAgICAgICAgICAgICcnXSxcblx0WydkYXRlMTkwNCcsICAgICAgICAgICAgICAgICAgICBmYWxzZSwgXCJib29sXCJdLFxuXHRbJ2RlZmF1bHRUaGVtZVZlcnNpb24nLCAgICAgICAgIDAsICAgICAgXCJpbnRcIl0sXG5cdFsnZmlsdGVyUHJpdmFjeScsICAgICAgICAgICAgICAgZmFsc2UsIFwiYm9vbFwiXSxcblx0WydoaWRlUGl2b3RGaWVsZExpc3QnLCAgICAgICAgICBmYWxzZSwgXCJib29sXCJdLFxuXHRbJ3Byb21wdGVkU29sdXRpb25zJywgICAgICAgICAgIGZhbHNlLCBcImJvb2xcIl0sXG5cdFsncHVibGlzaEl0ZW1zJywgICAgICAgICAgICAgICAgZmFsc2UsIFwiYm9vbFwiXSxcblx0WydyZWZyZXNoQWxsQ29ubmVjdGlvbnMnLCAgICAgICBmYWxzZSwgXCJib29sXCJdLFxuXHRbJ3NhdmVFeHRlcm5hbExpbmtWYWx1ZXMnLCAgICAgIHRydWUsICBcImJvb2xcIl0sXG5cdFsnc2hvd0JvcmRlclVuc2VsZWN0ZWRUYWJsZXMnLCAgdHJ1ZSwgIFwiYm9vbFwiXSxcblx0WydzaG93SW5rQW5ub3RhdGlvbicsICAgICAgICAgICB0cnVlLCAgXCJib29sXCJdLFxuXHRbJ3Nob3dPYmplY3RzJywgICAgICAgICAgICAgICAgICdhbGwnXSxcblx0WydzaG93UGl2b3RDaGFydEZpbHRlcicsICAgICAgICBmYWxzZSwgXCJib29sXCJdLFxuXHRbJ3VwZGF0ZUxpbmtzJywgJ3VzZXJTZXQnXVxuXTtcblxuLyogMTguMi4zMCAoQ1RfQm9va1ZpZXcpIERlZmF1bHRzICovXG52YXIgV0JWaWV3RGVmID0gW1xuXHRbJ2FjdGl2ZVRhYicsICAgICAgICAgICAgICAgICAgIDAsICAgICAgXCJpbnRcIl0sXG5cdFsnYXV0b0ZpbHRlckRhdGVHcm91cGluZycsICAgICAgdHJ1ZSwgIFwiYm9vbFwiXSxcblx0WydmaXJzdFNoZWV0JywgICAgICAgICAgICAgICAgICAwLCAgICAgIFwiaW50XCJdLFxuXHRbJ21pbmltaXplZCcsICAgICAgICAgICAgICAgICAgIGZhbHNlLCBcImJvb2xcIl0sXG5cdFsnc2hvd0hvcml6b250YWxTY3JvbGwnLCAgICAgICAgdHJ1ZSwgIFwiYm9vbFwiXSxcblx0WydzaG93U2hlZXRUYWJzJywgICAgICAgICAgICAgICB0cnVlLCAgXCJib29sXCJdLFxuXHRbJ3Nob3dWZXJ0aWNhbFNjcm9sbCcsICAgICAgICAgIHRydWUsICBcImJvb2xcIl0sXG5cdFsndGFiUmF0aW8nLCAgICAgICAgICAgICAgICAgICAgNjAwLCAgICBcImludFwiXSxcblx0Wyd2aXNpYmlsaXR5JywgICAgICAgICAgICAgICAgICAndmlzaWJsZSddXG5cdC8vd2luZG93e0hlaWdodCxXaWR0aH0sIHt4LHl9V2luZG93XG5dO1xuXG4vKiAxOC4yLjE5IChDVF9TaGVldCkgRGVmYXVsdHMgKi9cbnZhciBTaGVldERlZiA9IFtcblx0Ly9bJ3N0YXRlJywgJ3Zpc2libGUnXVxuXTtcblxuLyogMTguMi4yICAoQ1RfQ2FsY1ByKSBEZWZhdWx0cyAqL1xudmFyIENhbGNQckRlZiA9IFtcblx0WydjYWxjQ29tcGxldGVkJywgJ3RydWUnXSxcblx0WydjYWxjTW9kZScsICdhdXRvJ10sXG5cdFsnY2FsY09uU2F2ZScsICd0cnVlJ10sXG5cdFsnY29uY3VycmVudENhbGMnLCAndHJ1ZSddLFxuXHRbJ2Z1bGxDYWxjT25Mb2FkJywgJ2ZhbHNlJ10sXG5cdFsnZnVsbFByZWNpc2lvbicsICd0cnVlJ10sXG5cdFsnaXRlcmF0ZScsICdmYWxzZSddLFxuXHRbJ2l0ZXJhdGVDb3VudCcsICcxMDAnXSxcblx0WydpdGVyYXRlRGVsdGEnLCAnMC4wMDEnXSxcblx0WydyZWZNb2RlJywgJ0ExJ11cbl07XG5cbi8qIDE4LjIuMyAoQ1RfQ3VzdG9tV29ya2Jvb2tWaWV3KSBEZWZhdWx0cyAqL1xuLyp2YXIgQ3VzdG9tV0JWaWV3RGVmID0gW1xuXHRbJ2F1dG9VcGRhdGUnLCAnZmFsc2UnXSxcblx0WydjaGFuZ2VzU2F2ZWRXaW4nLCAnZmFsc2UnXSxcblx0WydpbmNsdWRlSGlkZGVuUm93Q29sJywgJ3RydWUnXSxcblx0WydpbmNsdWRlUHJpbnRTZXR0aW5ncycsICd0cnVlJ10sXG5cdFsnbWF4aW1pemVkJywgJ2ZhbHNlJ10sXG5cdFsnbWluaW1pemVkJywgJ2ZhbHNlJ10sXG5cdFsnb25seVN5bmMnLCAnZmFsc2UnXSxcblx0WydwZXJzb25hbFZpZXcnLCAnZmFsc2UnXSxcblx0WydzaG93Q29tbWVudHMnLCAnY29tbUluZGljYXRvciddLFxuXHRbJ3Nob3dGb3JtdWxhQmFyJywgJ3RydWUnXSxcblx0WydzaG93SG9yaXpvbnRhbFNjcm9sbCcsICd0cnVlJ10sXG5cdFsnc2hvd09iamVjdHMnLCAnYWxsJ10sXG5cdFsnc2hvd1NoZWV0VGFicycsICd0cnVlJ10sXG5cdFsnc2hvd1N0YXR1c2JhcicsICd0cnVlJ10sXG5cdFsnc2hvd1ZlcnRpY2FsU2Nyb2xsJywgJ3RydWUnXSxcblx0Wyd0YWJSYXRpbycsICc2MDAnXSxcblx0Wyd4V2luZG93JywgJzAnXSxcblx0Wyd5V2luZG93JywgJzAnXVxuXTsqL1xuXG5mdW5jdGlvbiBwdXNoX2RlZmF1bHRzX2FycmF5KHRhcmdldCwgZGVmYXVsdHMpIHtcblx0Zm9yKHZhciBqID0gMDsgaiAhPSB0YXJnZXQubGVuZ3RoOyArK2opIHsgdmFyIHcgPSB0YXJnZXRbal07XG5cdFx0Zm9yKHZhciBpPTA7IGkgIT0gZGVmYXVsdHMubGVuZ3RoOyArK2kpIHsgdmFyIHogPSBkZWZhdWx0c1tpXTtcblx0XHRcdGlmKHdbelswXV0gPT0gbnVsbCkgd1t6WzBdXSA9IHpbMV07XG5cdFx0XHRlbHNlIHN3aXRjaCh6WzJdKSB7XG5cdFx0XHRjYXNlIFwiYm9vbFwiOiBpZih0eXBlb2Ygd1t6WzBdXSA9PSBcInN0cmluZ1wiKSB3W3pbMF1dID0gcGFyc2V4bWxib29sKHdbelswXV0pOyBicmVhaztcblx0XHRcdGNhc2UgXCJpbnRcIjogaWYodHlwZW9mIHdbelswXV0gPT0gXCJzdHJpbmdcIikgd1t6WzBdXSA9IHBhcnNlSW50KHdbelswXV0sIDEwKTsgYnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5mdW5jdGlvbiBwdXNoX2RlZmF1bHRzKHRhcmdldCwgZGVmYXVsdHMpIHtcblx0Zm9yKHZhciBpID0gMDsgaSAhPSBkZWZhdWx0cy5sZW5ndGg7ICsraSkgeyB2YXIgeiA9IGRlZmF1bHRzW2ldO1xuXHRcdGlmKHRhcmdldFt6WzBdXSA9PSBudWxsKSB0YXJnZXRbelswXV0gPSB6WzFdO1xuXHRcdGVsc2Ugc3dpdGNoKHpbMl0pIHtcblx0XHRcdGNhc2UgXCJib29sXCI6IGlmKHR5cGVvZiB0YXJnZXRbelswXV0gPT0gXCJzdHJpbmdcIikgdGFyZ2V0W3pbMF1dID0gcGFyc2V4bWxib29sKHRhcmdldFt6WzBdXSk7IGJyZWFrO1xuXHRcdFx0Y2FzZSBcImludFwiOiBpZih0eXBlb2YgdGFyZ2V0W3pbMF1dID09IFwic3RyaW5nXCIpIHRhcmdldFt6WzBdXSA9IHBhcnNlSW50KHRhcmdldFt6WzBdXSwgMTApOyBicmVhaztcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gcGFyc2Vfd2JfZGVmYXVsdHMod2IpIHtcblx0cHVzaF9kZWZhdWx0cyh3Yi5XQlByb3BzLCBXQlByb3BzRGVmKTtcblx0cHVzaF9kZWZhdWx0cyh3Yi5DYWxjUHIsIENhbGNQckRlZik7XG5cblx0cHVzaF9kZWZhdWx0c19hcnJheSh3Yi5XQlZpZXcsIFdCVmlld0RlZik7XG5cdHB1c2hfZGVmYXVsdHNfYXJyYXkod2IuU2hlZXRzLCBTaGVldERlZik7XG5cblx0X3NzZm9wdHMuZGF0ZTE5MDQgPSBwYXJzZXhtbGJvb2wod2IuV0JQcm9wcy5kYXRlMTkwNCk7XG59XG5cbmZ1bmN0aW9uIHNhZmUxOTA0KHdiLyo6V29ya2Jvb2sqLykvKjpzdHJpbmcqLyB7XG5cdC8qIFRPRE86IHN0b3JlIGRhdGUxOTA0IHNvbWV3aGVyZSBlbHNlICovXG5cdGlmKCF3Yi5Xb3JrYm9vaykgcmV0dXJuIFwiZmFsc2VcIjtcblx0aWYoIXdiLldvcmtib29rLldCUHJvcHMpIHJldHVybiBcImZhbHNlXCI7XG5cdHJldHVybiBwYXJzZXhtbGJvb2wod2IuV29ya2Jvb2suV0JQcm9wcy5kYXRlMTkwNCkgPyBcInRydWVcIiA6IFwiZmFsc2VcIjtcbn1cblxudmFyIGJhZGNoYXJzID0gLyojX19QVVJFX18qL1wiXVsqP1xcL1xcXFxcIi5zcGxpdChcIlwiKTtcbmZ1bmN0aW9uIGNoZWNrX3dzX25hbWUobi8qOnN0cmluZyovLCBzYWZlLyo6P2Jvb2xlYW4qLykvKjpib29sZWFuKi8ge1xuXHRpZihuLmxlbmd0aCA+IDMxKSB7IGlmKHNhZmUpIHJldHVybiBmYWxzZTsgdGhyb3cgbmV3IEVycm9yKFwiU2hlZXQgbmFtZXMgY2Fubm90IGV4Y2VlZCAzMSBjaGFyc1wiKTsgfVxuXHR2YXIgX2dvb2QgPSB0cnVlO1xuXHRiYWRjaGFycy5mb3JFYWNoKGZ1bmN0aW9uKGMpIHtcblx0XHRpZihuLmluZGV4T2YoYykgPT0gLTEpIHJldHVybjtcblx0XHRpZighc2FmZSkgdGhyb3cgbmV3IEVycm9yKFwiU2hlZXQgbmFtZSBjYW5ub3QgY29udGFpbiA6IFxcXFwgLyA/ICogWyBdXCIpO1xuXHRcdF9nb29kID0gZmFsc2U7XG5cdH0pO1xuXHRyZXR1cm4gX2dvb2Q7XG59XG5mdW5jdGlvbiBjaGVja193Yl9uYW1lcyhOLCBTLCBjb2Rlcykge1xuXHROLmZvckVhY2goZnVuY3Rpb24obixpKSB7XG5cdFx0Y2hlY2tfd3NfbmFtZShuKTtcblx0XHRmb3IodmFyIGogPSAwOyBqIDwgaTsgKytqKSBpZihuID09IE5bal0pIHRocm93IG5ldyBFcnJvcihcIkR1cGxpY2F0ZSBTaGVldCBOYW1lOiBcIiArIG4pO1xuXHRcdGlmKGNvZGVzKSB7XG5cdFx0XHR2YXIgY24gPSAoUyAmJiBTW2ldICYmIFNbaV0uQ29kZU5hbWUpIHx8IG47XG5cdFx0XHRpZihjbi5jaGFyQ29kZUF0KDApID09IDk1ICYmIGNuLmxlbmd0aCA+IDIyKSB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgQ29kZSBOYW1lOiBXb3Jrc2hlZXRcIiArIGNuKTtcblx0XHR9XG5cdH0pO1xufVxuZnVuY3Rpb24gY2hlY2tfd2Iod2IpIHtcblx0aWYoIXdiIHx8ICF3Yi5TaGVldE5hbWVzIHx8ICF3Yi5TaGVldHMpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgV29ya2Jvb2tcIik7XG5cdGlmKCF3Yi5TaGVldE5hbWVzLmxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKFwiV29ya2Jvb2sgaXMgZW1wdHlcIik7XG5cdHZhciBTaGVldHMgPSAod2IuV29ya2Jvb2sgJiYgd2IuV29ya2Jvb2suU2hlZXRzKSB8fCBbXTtcblx0Y2hlY2tfd2JfbmFtZXMod2IuU2hlZXROYW1lcywgU2hlZXRzLCAhIXdiLnZiYXJhdyk7XG5cdGZvcih2YXIgaSA9IDA7IGkgPCB3Yi5TaGVldE5hbWVzLmxlbmd0aDsgKytpKSBjaGVja193cyh3Yi5TaGVldHNbd2IuU2hlZXROYW1lc1tpXV0sIHdiLlNoZWV0TmFtZXNbaV0sIGkpO1xuXHQvKiBUT0RPOiB2YWxpZGF0ZSB3b3JrYm9vayAqL1xufVxuLyogMTguMiBXb3JrYm9vayAqL1xudmFyIHdibnNyZWdleCA9IC88XFx3Kzp3b3JrYm9vay87XG5mdW5jdGlvbiBwYXJzZV93Yl94bWwoZGF0YSwgb3B0cykvKjpXb3JrYm9va0ZpbGUqLyB7XG5cdGlmKCFkYXRhKSB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZmluZCBmaWxlXCIpO1xuXHR2YXIgd2IgPSAvKjo6KCoveyBBcHBWZXJzaW9uOnt9LCBXQlByb3BzOnt9LCBXQlZpZXc6W10sIFNoZWV0czpbXSwgQ2FsY1ByOnt9LCBOYW1lczpbXSwgeG1sbnM6IFwiXCIgfS8qOjopKi87XG5cdHZhciBwYXNzID0gZmFsc2UsIHhtbG5zID0gXCJ4bWxuc1wiO1xuXHR2YXIgZG5hbWUgPSB7fSwgZG5zdGFydCA9IDA7XG5cdGRhdGEucmVwbGFjZSh0YWdyZWdleCwgZnVuY3Rpb24geG1sX3diKHgsIGlkeCkge1xuXHRcdHZhciB5Lyo6YW55Ki8gPSBwYXJzZXhtbHRhZyh4KTtcblx0XHRzd2l0Y2goc3RyaXBfbnMoeVswXSkpIHtcblx0XHRcdGNhc2UgJzw/eG1sJzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMjcgd29ya2Jvb2sgQ1RfV29ya2Jvb2sgMSAqL1xuXHRcdFx0Y2FzZSAnPHdvcmtib29rJzpcblx0XHRcdFx0aWYoeC5tYXRjaCh3Ym5zcmVnZXgpKSB4bWxucyA9IFwieG1sbnNcIiArIHgubWF0Y2goLzwoXFx3Kyk6LylbMV07XG5cdFx0XHRcdHdiLnhtbG5zID0geVt4bWxuc107XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC93b3JrYm9vaz4nOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4xMyBmaWxlVmVyc2lvbiBDVF9GaWxlVmVyc2lvbiA/ICovXG5cdFx0XHRjYXNlICc8ZmlsZVZlcnNpb24nOiBkZWxldGUgeVswXTsgd2IuQXBwVmVyc2lvbiA9IHk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGZpbGVWZXJzaW9uLz4nOiBjYXNlICc8L2ZpbGVWZXJzaW9uPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjEyIGZpbGVTaGFyaW5nIENUX0ZpbGVTaGFyaW5nID8gKi9cblx0XHRcdGNhc2UgJzxmaWxlU2hhcmluZyc6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGZpbGVTaGFyaW5nLz4nOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4yOCB3b3JrYm9va1ByIENUX1dvcmtib29rUHIgPyAqL1xuXHRcdFx0Y2FzZSAnPHdvcmtib29rUHInOlxuXHRcdFx0Y2FzZSAnPHdvcmtib29rUHIvPic6XG5cdFx0XHRcdFdCUHJvcHNEZWYuZm9yRWFjaChmdW5jdGlvbih3KSB7XG5cdFx0XHRcdFx0aWYoeVt3WzBdXSA9PSBudWxsKSByZXR1cm47XG5cdFx0XHRcdFx0c3dpdGNoKHdbMl0pIHtcblx0XHRcdFx0XHRcdGNhc2UgXCJib29sXCI6IHdiLldCUHJvcHNbd1swXV0gPSBwYXJzZXhtbGJvb2woeVt3WzBdXSk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSBcImludFwiOiB3Yi5XQlByb3BzW3dbMF1dID0gcGFyc2VJbnQoeVt3WzBdXSwgMTApOyBicmVhaztcblx0XHRcdFx0XHRcdGRlZmF1bHQ6IHdiLldCUHJvcHNbd1swXV0gPSB5W3dbMF1dO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHRcdGlmKHkuY29kZU5hbWUpIHdiLldCUHJvcHMuQ29kZU5hbWUgPSB1dGY4cmVhZCh5LmNvZGVOYW1lKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICc8L3dvcmtib29rUHI+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMjkgd29ya2Jvb2tQcm90ZWN0aW9uIENUX1dvcmtib29rUHJvdGVjdGlvbiA/ICovXG5cdFx0XHRjYXNlICc8d29ya2Jvb2tQcm90ZWN0aW9uJzpcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICc8d29ya2Jvb2tQcm90ZWN0aW9uLz4nOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4xICBib29rVmlld3MgQ1RfQm9va1ZpZXdzID8gKi9cblx0XHRcdGNhc2UgJzxib29rVmlld3MnOiBjYXNlICc8Ym9va1ZpZXdzPic6IGNhc2UgJzwvYm9va1ZpZXdzPic6IGJyZWFrO1xuXHRcdFx0LyogMTguMi4zMCAgIHdvcmtib29rVmlldyBDVF9Cb29rVmlldyArICovXG5cdFx0XHRjYXNlICc8d29ya2Jvb2tWaWV3JzogY2FzZSAnPHdvcmtib29rVmlldy8+JzogZGVsZXRlIHlbMF07IHdiLldCVmlldy5wdXNoKHkpOyBicmVhaztcblx0XHRcdGNhc2UgJzwvd29ya2Jvb2tWaWV3Pic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjIwIHNoZWV0cyBDVF9TaGVldHMgMSAqL1xuXHRcdFx0Y2FzZSAnPHNoZWV0cyc6IGNhc2UgJzxzaGVldHM+JzogY2FzZSAnPC9zaGVldHM+JzogYnJlYWs7IC8vIGFnZ3JlZ2F0ZSBzaGVldFxuXHRcdFx0LyogMTguMi4xOSAgIHNoZWV0IENUX1NoZWV0ICsgKi9cblx0XHRcdGNhc2UgJzxzaGVldCc6XG5cdFx0XHRcdHN3aXRjaCh5LnN0YXRlKSB7XG5cdFx0XHRcdFx0Y2FzZSBcImhpZGRlblwiOiB5LkhpZGRlbiA9IDE7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgXCJ2ZXJ5SGlkZGVuXCI6IHkuSGlkZGVuID0gMjsgYnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDogeS5IaWRkZW4gPSAwO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGRlbGV0ZSB5LnN0YXRlO1xuXHRcdFx0XHR5Lm5hbWUgPSB1bmVzY2FwZXhtbCh1dGY4cmVhZCh5Lm5hbWUpKTtcblx0XHRcdFx0ZGVsZXRlIHlbMF07IHdiLlNoZWV0cy5wdXNoKHkpOyBicmVhaztcblx0XHRcdGNhc2UgJzwvc2hlZXQ+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMTUgZnVuY3Rpb25Hcm91cHMgQ1RfRnVuY3Rpb25Hcm91cHMgPyAqL1xuXHRcdFx0Y2FzZSAnPGZ1bmN0aW9uR3JvdXBzJzogY2FzZSAnPGZ1bmN0aW9uR3JvdXBzLz4nOiBicmVhaztcblx0XHRcdC8qIDE4LjIuMTQgICBmdW5jdGlvbkdyb3VwIENUX0Z1bmN0aW9uR3JvdXAgKyAqL1xuXHRcdFx0Y2FzZSAnPGZ1bmN0aW9uR3JvdXAnOiBicmVhaztcblxuXHRcdFx0LyogMTguMi45ICBleHRlcm5hbFJlZmVyZW5jZXMgQ1RfRXh0ZXJuYWxSZWZlcmVuY2VzID8gKi9cblx0XHRcdGNhc2UgJzxleHRlcm5hbFJlZmVyZW5jZXMnOiBjYXNlICc8L2V4dGVybmFsUmVmZXJlbmNlcz4nOiBjYXNlICc8ZXh0ZXJuYWxSZWZlcmVuY2VzPic6IGJyZWFrO1xuXHRcdFx0LyogMTguMi44ICAgIGV4dGVybmFsUmVmZXJlbmNlIENUX0V4dGVybmFsUmVmZXJlbmNlICsgKi9cblx0XHRcdGNhc2UgJzxleHRlcm5hbFJlZmVyZW5jZSc6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjYgIGRlZmluZWROYW1lcyBDVF9EZWZpbmVkTmFtZXMgPyAqL1xuXHRcdFx0Y2FzZSAnPGRlZmluZWROYW1lcy8+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8ZGVmaW5lZE5hbWVzPic6IGNhc2UgJzxkZWZpbmVkTmFtZXMnOiBwYXNzPXRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9kZWZpbmVkTmFtZXM+JzogcGFzcz1mYWxzZTsgYnJlYWs7XG5cdFx0XHQvKiAxOC4yLjUgICAgZGVmaW5lZE5hbWUgQ1RfRGVmaW5lZE5hbWUgKyAqL1xuXHRcdFx0Y2FzZSAnPGRlZmluZWROYW1lJzoge1xuXHRcdFx0XHRkbmFtZSA9IHt9O1xuXHRcdFx0XHRkbmFtZS5OYW1lID0gdXRmOHJlYWQoeS5uYW1lKTtcblx0XHRcdFx0aWYoeS5jb21tZW50KSBkbmFtZS5Db21tZW50ID0geS5jb21tZW50O1xuXHRcdFx0XHRpZih5LmxvY2FsU2hlZXRJZCkgZG5hbWUuU2hlZXQgPSAreS5sb2NhbFNoZWV0SWQ7XG5cdFx0XHRcdGlmKHBhcnNleG1sYm9vbCh5LmhpZGRlbnx8XCIwXCIpKSBkbmFtZS5IaWRkZW4gPSB0cnVlO1xuXHRcdFx0XHRkbnN0YXJ0ID0gaWR4ICsgeC5sZW5ndGg7XG5cdFx0XHR9XHRicmVhaztcblx0XHRcdGNhc2UgJzwvZGVmaW5lZE5hbWU+Jzoge1xuXHRcdFx0XHRkbmFtZS5SZWYgPSB1bmVzY2FwZXhtbCh1dGY4cmVhZChkYXRhLnNsaWNlKGRuc3RhcnQsIGlkeCkpKTtcblx0XHRcdFx0d2IuTmFtZXMucHVzaChkbmFtZSk7XG5cdFx0XHR9IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGRlZmluZWROYW1lLz4nOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4yICBjYWxjUHIgQ1RfQ2FsY1ByID8gKi9cblx0XHRcdGNhc2UgJzxjYWxjUHInOiBkZWxldGUgeVswXTsgd2IuQ2FsY1ByID0geTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8Y2FsY1ByLz4nOiBkZWxldGUgeVswXTsgd2IuQ2FsY1ByID0geTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L2NhbGNQcj4nOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4xNiBvbGVTaXplIENUX09sZVNpemUgPyAocmVmIHJlcXVpcmVkKSAqL1xuXHRcdFx0Y2FzZSAnPG9sZVNpemUnOiBicmVhaztcblxuXHRcdFx0LyogMTguMi40ICBjdXN0b21Xb3JrYm9va1ZpZXdzIENUX0N1c3RvbVdvcmtib29rVmlld3MgPyAqL1xuXHRcdFx0Y2FzZSAnPGN1c3RvbVdvcmtib29rVmlld3M+JzogY2FzZSAnPC9jdXN0b21Xb3JrYm9va1ZpZXdzPic6IGNhc2UgJzxjdXN0b21Xb3JrYm9va1ZpZXdzJzogYnJlYWs7XG5cdFx0XHQvKiAxOC4yLjMgIGN1c3RvbVdvcmtib29rVmlldyBDVF9DdXN0b21Xb3JrYm9va1ZpZXcgKyAqL1xuXHRcdFx0Y2FzZSAnPGN1c3RvbVdvcmtib29rVmlldyc6IGNhc2UgJzwvY3VzdG9tV29ya2Jvb2tWaWV3Pic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjE4IHBpdm90Q2FjaGVzIENUX1Bpdm90Q2FjaGVzID8gKi9cblx0XHRcdGNhc2UgJzxwaXZvdENhY2hlcz4nOiBjYXNlICc8L3Bpdm90Q2FjaGVzPic6IGNhc2UgJzxwaXZvdENhY2hlcyc6IGJyZWFrO1xuXHRcdFx0LyogMTguMi4xNyBwaXZvdENhY2hlIENUX1Bpdm90Q2FjaGUgPyAqL1xuXHRcdFx0Y2FzZSAnPHBpdm90Q2FjaGUnOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4yMSBzbWFydFRhZ1ByIENUX1NtYXJ0VGFnUHIgPyAqL1xuXHRcdFx0Y2FzZSAnPHNtYXJ0VGFnUHInOiBjYXNlICc8c21hcnRUYWdQci8+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMjMgc21hcnRUYWdUeXBlcyBDVF9TbWFydFRhZ1R5cGVzID8gKi9cblx0XHRcdGNhc2UgJzxzbWFydFRhZ1R5cGVzJzogY2FzZSAnPHNtYXJ0VGFnVHlwZXM+JzogY2FzZSAnPC9zbWFydFRhZ1R5cGVzPic6IGJyZWFrO1xuXHRcdFx0LyogMTguMi4yMiBzbWFydFRhZ1R5cGUgQ1RfU21hcnRUYWdUeXBlID8gKi9cblx0XHRcdGNhc2UgJzxzbWFydFRhZ1R5cGUnOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4yNCB3ZWJQdWJsaXNoaW5nIENUX1dlYlB1Ymxpc2hpbmcgPyAqL1xuXHRcdFx0Y2FzZSAnPHdlYlB1Ymxpc2hpbmcnOiBjYXNlICc8d2ViUHVibGlzaGluZy8+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMTEgZmlsZVJlY292ZXJ5UHIgQ1RfRmlsZVJlY292ZXJ5UHIgPyAqL1xuXHRcdFx0Y2FzZSAnPGZpbGVSZWNvdmVyeVByJzogY2FzZSAnPGZpbGVSZWNvdmVyeVByLz4nOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4yNiB3ZWJQdWJsaXNoT2JqZWN0cyBDVF9XZWJQdWJsaXNoT2JqZWN0cyA/ICovXG5cdFx0XHRjYXNlICc8d2ViUHVibGlzaE9iamVjdHM+JzogY2FzZSAnPHdlYlB1Ymxpc2hPYmplY3RzJzogY2FzZSAnPC93ZWJQdWJsaXNoT2JqZWN0cz4nOiBicmVhaztcblx0XHRcdC8qIDE4LjIuMjUgd2ViUHVibGlzaE9iamVjdCBDVF9XZWJQdWJsaXNoT2JqZWN0ID8gKi9cblx0XHRcdGNhc2UgJzx3ZWJQdWJsaXNoT2JqZWN0JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMTAgZXh0THN0IENUX0V4dGVuc2lvbkxpc3QgPyAqL1xuXHRcdFx0Y2FzZSAnPGV4dExzdCc6IGNhc2UgJzxleHRMc3Q+JzogY2FzZSAnPC9leHRMc3Q+JzogY2FzZSAnPGV4dExzdC8+JzogYnJlYWs7XG5cdFx0XHQvKiAxOC4yLjcgIGV4dCBDVF9FeHRlbnNpb24gKyAqL1xuXHRcdFx0Y2FzZSAnPGV4dCc6IHBhc3M9dHJ1ZTsgYnJlYWs7IC8vVE9ETzogY2hlY2sgd2l0aCB2ZXJzaW9ucyBvZiBleGNlbFxuXHRcdFx0Y2FzZSAnPC9leHQ+JzogcGFzcz1mYWxzZTsgYnJlYWs7XG5cblx0XHRcdC8qIE90aGVycyAqL1xuXHRcdFx0Y2FzZSAnPEFyY2hJRCc6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPEFsdGVybmF0ZUNvbnRlbnQnOlxuXHRcdFx0Y2FzZSAnPEFsdGVybmF0ZUNvbnRlbnQ+JzogcGFzcz10cnVlOyBicmVhaztcblx0XHRcdGNhc2UgJzwvQWx0ZXJuYXRlQ29udGVudD4nOiBwYXNzPWZhbHNlOyBicmVhaztcblxuXHRcdFx0LyogVE9ETyAqL1xuXHRcdFx0Y2FzZSAnPHJldmlzaW9uUHRyJzogYnJlYWs7XG5cblx0XHRcdGRlZmF1bHQ6IGlmKCFwYXNzICYmIG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoJ3VucmVjb2duaXplZCAnICsgeVswXSArICcgaW4gd29ya2Jvb2snKTtcblx0XHR9XG5cdFx0cmV0dXJuIHg7XG5cdH0pO1xuXHRpZihYTUxOU19tYWluLmluZGV4T2Yod2IueG1sbnMpID09PSAtMSkgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBOYW1lc3BhY2U6IFwiICsgd2IueG1sbnMpO1xuXG5cdHBhcnNlX3diX2RlZmF1bHRzKHdiKTtcblxuXHRyZXR1cm4gd2I7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3diX3htbCh3Yi8qOldvcmtib29rKi8vKjo6LCBvcHRzOj9Xcml0ZU9wdHMqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvID0gW1hNTF9IRUFERVJdO1xuXHRvW28ubGVuZ3RoXSA9IHdyaXRleHRhZygnd29ya2Jvb2snLCBudWxsLCB7XG5cdFx0J3htbG5zJzogWE1MTlNfbWFpblswXSxcblx0XHQvLyd4bWxuczpteCc6IFhNTE5TLm14LFxuXHRcdC8vJ3htbG5zOnMnOiBYTUxOU19tYWluWzBdLFxuXHRcdCd4bWxuczpyJzogWE1MTlMuclxuXHR9KTtcblxuXHR2YXIgd3JpdGVfbmFtZXMgPSAod2IuV29ya2Jvb2sgJiYgKHdiLldvcmtib29rLk5hbWVzfHxbXSkubGVuZ3RoID4gMCk7XG5cblx0LyogZmlsZVZlcnNpb24gKi9cblx0LyogZmlsZVNoYXJpbmcgKi9cblxuXHR2YXIgd29ya2Jvb2tQci8qOmFueSovID0gKHtjb2RlTmFtZTpcIlRoaXNXb3JrYm9va1wifS8qOmFueSovKTtcblx0aWYod2IuV29ya2Jvb2sgJiYgd2IuV29ya2Jvb2suV0JQcm9wcykge1xuXHRcdFdCUHJvcHNEZWYuZm9yRWFjaChmdW5jdGlvbih4KSB7XG5cdFx0XHQvKjo6IGlmKCF3Yi5Xb3JrYm9vayB8fCAhd2IuV29ya2Jvb2suV0JQcm9wcykgdGhyb3cgXCJ1bnJlYWNoYWJsZVwiOyAqL1xuXHRcdFx0aWYoKHdiLldvcmtib29rLldCUHJvcHNbeFswXV0vKjphbnkqLykgPT0gbnVsbCkgcmV0dXJuO1xuXHRcdFx0aWYoKHdiLldvcmtib29rLldCUHJvcHNbeFswXV0vKjphbnkqLykgPT0geFsxXSkgcmV0dXJuO1xuXHRcdFx0d29ya2Jvb2tQclt4WzBdXSA9ICh3Yi5Xb3JrYm9vay5XQlByb3BzW3hbMF1dLyo6YW55Ki8pO1xuXHRcdH0pO1xuXHRcdC8qOjogaWYoIXdiLldvcmtib29rIHx8ICF3Yi5Xb3JrYm9vay5XQlByb3BzKSB0aHJvdyBcInVucmVhY2hhYmxlXCI7ICovXG5cdFx0aWYod2IuV29ya2Jvb2suV0JQcm9wcy5Db2RlTmFtZSkgeyB3b3JrYm9va1ByLmNvZGVOYW1lID0gd2IuV29ya2Jvb2suV0JQcm9wcy5Db2RlTmFtZTsgZGVsZXRlIHdvcmtib29rUHIuQ29kZU5hbWU7IH1cblx0fVxuXHRvW28ubGVuZ3RoXSA9ICh3cml0ZXh0YWcoJ3dvcmtib29rUHInLCBudWxsLCB3b3JrYm9va1ByKSk7XG5cblx0Lyogd29ya2Jvb2tQcm90ZWN0aW9uICovXG5cblx0dmFyIHNoZWV0cyA9IHdiLldvcmtib29rICYmIHdiLldvcmtib29rLlNoZWV0cyB8fCBbXTtcblx0dmFyIGkgPSAwO1xuXG5cdC8qIGJvb2tWaWV3cyBvbmx5IHdyaXR0ZW4gaWYgZmlyc3Qgd29ya3NoZWV0IGlzIGhpZGRlbiAqL1xuXHRpZihzaGVldHMgJiYgc2hlZXRzWzBdICYmICEhc2hlZXRzWzBdLkhpZGRlbikge1xuXHRcdG9bby5sZW5ndGhdID0gXCI8Ym9va1ZpZXdzPlwiO1xuXHRcdGZvcihpID0gMDsgaSAhPSB3Yi5TaGVldE5hbWVzLmxlbmd0aDsgKytpKSB7XG5cdFx0XHRpZighc2hlZXRzW2ldKSBicmVhaztcblx0XHRcdGlmKCFzaGVldHNbaV0uSGlkZGVuKSBicmVhaztcblx0XHR9XG5cdFx0aWYoaSA9PSB3Yi5TaGVldE5hbWVzLmxlbmd0aCkgaSA9IDA7XG5cdFx0b1tvLmxlbmd0aF0gPSAnPHdvcmtib29rVmlldyBmaXJzdFNoZWV0PVwiJyArIGkgKyAnXCIgYWN0aXZlVGFiPVwiJyArIGkgKyAnXCIvPic7XG5cdFx0b1tvLmxlbmd0aF0gPSBcIjwvYm9va1ZpZXdzPlwiO1xuXHR9XG5cblx0b1tvLmxlbmd0aF0gPSBcIjxzaGVldHM+XCI7XG5cdGZvcihpID0gMDsgaSAhPSB3Yi5TaGVldE5hbWVzLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIHNodCA9ICh7bmFtZTplc2NhcGV4bWwod2IuU2hlZXROYW1lc1tpXS5zbGljZSgwLDMxKSl9Lyo6YW55Ki8pO1xuXHRcdHNodC5zaGVldElkID0gXCJcIisoaSsxKTtcblx0XHRzaHRbXCJyOmlkXCJdID0gXCJySWRcIisoaSsxKTtcblx0XHRpZihzaGVldHNbaV0pIHN3aXRjaChzaGVldHNbaV0uSGlkZGVuKSB7XG5cdFx0XHRjYXNlIDE6IHNodC5zdGF0ZSA9IFwiaGlkZGVuXCI7IGJyZWFrO1xuXHRcdFx0Y2FzZSAyOiBzaHQuc3RhdGUgPSBcInZlcnlIaWRkZW5cIjsgYnJlYWs7XG5cdFx0fVxuXHRcdG9bby5sZW5ndGhdID0gKHdyaXRleHRhZygnc2hlZXQnLG51bGwsc2h0KSk7XG5cdH1cblx0b1tvLmxlbmd0aF0gPSBcIjwvc2hlZXRzPlwiO1xuXG5cdC8qIGZ1bmN0aW9uR3JvdXBzICovXG5cdC8qIGV4dGVybmFsUmVmZXJlbmNlcyAqL1xuXG5cdGlmKHdyaXRlX25hbWVzKSB7XG5cdFx0b1tvLmxlbmd0aF0gPSBcIjxkZWZpbmVkTmFtZXM+XCI7XG5cdFx0aWYod2IuV29ya2Jvb2sgJiYgd2IuV29ya2Jvb2suTmFtZXMpIHdiLldvcmtib29rLk5hbWVzLmZvckVhY2goZnVuY3Rpb24obikge1xuXHRcdFx0dmFyIGQvKjphbnkqLyA9IHtuYW1lOm4uTmFtZX07XG5cdFx0XHRpZihuLkNvbW1lbnQpIGQuY29tbWVudCA9IG4uQ29tbWVudDtcblx0XHRcdGlmKG4uU2hlZXQgIT0gbnVsbCkgZC5sb2NhbFNoZWV0SWQgPSBcIlwiK24uU2hlZXQ7XG5cdFx0XHRpZihuLkhpZGRlbikgZC5oaWRkZW4gPSBcIjFcIjtcblx0XHRcdGlmKCFuLlJlZikgcmV0dXJuO1xuXHRcdFx0b1tvLmxlbmd0aF0gPSB3cml0ZXh0YWcoJ2RlZmluZWROYW1lJywgZXNjYXBleG1sKG4uUmVmKSwgZCk7XG5cdFx0fSk7XG5cdFx0b1tvLmxlbmd0aF0gPSBcIjwvZGVmaW5lZE5hbWVzPlwiO1xuXHR9XG5cblx0LyogY2FsY1ByICovXG5cdC8qIG9sZVNpemUgKi9cblx0LyogY3VzdG9tV29ya2Jvb2tWaWV3cyAqL1xuXHQvKiBwaXZvdENhY2hlcyAqL1xuXHQvKiBzbWFydFRhZ1ByICovXG5cdC8qIHNtYXJ0VGFnVHlwZXMgKi9cblx0Lyogd2ViUHVibGlzaGluZyAqL1xuXHQvKiBmaWxlUmVjb3ZlcnlQciAqL1xuXHQvKiB3ZWJQdWJsaXNoT2JqZWN0cyAqL1xuXHQvKiBleHRMc3QgKi9cblxuXHRpZihvLmxlbmd0aD4yKXsgb1tvLmxlbmd0aF0gPSAnPC93b3JrYm9vaz4nOyBvWzFdPW9bMV0ucmVwbGFjZShcIi8+XCIsXCI+XCIpOyB9XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG4vKiBbTVMtWExTQl0gMi40LjMwNCBCcnRCdW5kbGVTaCAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0QnVuZGxlU2goZGF0YSwgbGVuZ3RoLyo6bnVtYmVyKi8pIHtcblx0dmFyIHogPSB7fTtcblx0ei5IaWRkZW4gPSBkYXRhLnJlYWRfc2hpZnQoNCk7IC8vaHNTdGF0ZSBTVF9TaGVldFN0YXRlXG5cdHouaVRhYklEID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHR6LnN0clJlbElEID0gcGFyc2VfUmVsSUQoZGF0YSxsZW5ndGgtOCk7XG5cdHoubmFtZSA9IHBhcnNlX1hMV2lkZVN0cmluZyhkYXRhKTtcblx0cmV0dXJuIHo7XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRCdW5kbGVTaChkYXRhLCBvKSB7XG5cdGlmKCFvKSBvID0gbmV3X2J1ZigxMjcpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIGRhdGEuSGlkZGVuKTtcblx0by53cml0ZV9zaGlmdCg0LCBkYXRhLmlUYWJJRCk7XG5cdHdyaXRlX1JlbElEKGRhdGEuc3RyUmVsSUQsIG8pO1xuXHR3cml0ZV9YTFdpZGVTdHJpbmcoZGF0YS5uYW1lLnNsaWNlKDAsMzEpLCBvKTtcblx0cmV0dXJuIG8ubGVuZ3RoID4gby5sID8gby5zbGljZSgwLCBvLmwpIDogbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC44MTUgQnJ0V2JQcm9wICovXG5mdW5jdGlvbiBwYXJzZV9CcnRXYlByb3AoZGF0YSwgbGVuZ3RoKS8qOldCUHJvcHMqLyB7XG5cdHZhciBvLyo6V0JQcm9wcyovID0gKHt9Lyo6YW55Ki8pO1xuXHR2YXIgZmxhZ3MgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdG8uZGVmYXVsdFRoZW1lVmVyc2lvbiA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0dmFyIHN0ck5hbWUgPSAobGVuZ3RoID4gOCkgPyBwYXJzZV9YTFdpZGVTdHJpbmcoZGF0YSkgOiBcIlwiO1xuXHRpZihzdHJOYW1lLmxlbmd0aCA+IDApIG8uQ29kZU5hbWUgPSBzdHJOYW1lO1xuXHRvLmF1dG9Db21wcmVzc1BpY3R1cmVzID0gISEoZmxhZ3MgJiAweDEwMDAwKTtcblx0by5iYWNrdXBGaWxlID0gISEoZmxhZ3MgJiAweDQwKTtcblx0by5jaGVja0NvbXBhdGliaWxpdHkgPSAhIShmbGFncyAmIDB4MTAwMCk7XG5cdG8uZGF0ZTE5MDQgPSAhIShmbGFncyAmIDB4MDEpO1xuXHRvLmZpbHRlclByaXZhY3kgPSAhIShmbGFncyAmIDB4MDgpO1xuXHRvLmhpZGVQaXZvdEZpZWxkTGlzdCA9ICEhKGZsYWdzICYgMHg0MDApO1xuXHRvLnByb21wdGVkU29sdXRpb25zID0gISEoZmxhZ3MgJiAweDEwKTtcblx0by5wdWJsaXNoSXRlbXMgPSAhIShmbGFncyAmIDB4ODAwKTtcblx0by5yZWZyZXNoQWxsQ29ubmVjdGlvbnMgPSAhIShmbGFncyAmIDB4NDAwMDApO1xuXHRvLnNhdmVFeHRlcm5hbExpbmtWYWx1ZXMgPSAhIShmbGFncyAmIDB4ODApO1xuXHRvLnNob3dCb3JkZXJVbnNlbGVjdGVkVGFibGVzID0gISEoZmxhZ3MgJiAweDA0KTtcblx0by5zaG93SW5rQW5ub3RhdGlvbiA9ICEhKGZsYWdzICYgMHgyMCk7XG5cdG8uc2hvd09iamVjdHMgPSBbXCJhbGxcIiwgXCJwbGFjZWhvbGRlcnNcIiwgXCJub25lXCJdWyhmbGFncyA+PiAxMykgJiAweDAzXTtcblx0by5zaG93UGl2b3RDaGFydEZpbHRlciA9ICEhKGZsYWdzICYgMHg4MDAwKTtcblx0by51cGRhdGVMaW5rcyA9IFtcInVzZXJTZXRcIiwgXCJuZXZlclwiLCBcImFsd2F5c1wiXVsoZmxhZ3MgPj4gOCkgJiAweDAzXTtcblx0cmV0dXJuIG87XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRXYlByb3AoZGF0YS8qOj9XQlByb3BzKi8sIG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDcyKTtcblx0dmFyIGZsYWdzID0gMDtcblx0aWYoZGF0YSkge1xuXHRcdC8qIFRPRE86IG1pcnJvciBwYXJzZV9CcnRXYlByb3AgZmllbGRzICovXG5cdFx0aWYoZGF0YS5maWx0ZXJQcml2YWN5KSBmbGFncyB8PSAweDA4O1xuXHR9XG5cdG8ud3JpdGVfc2hpZnQoNCwgZmxhZ3MpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHR3cml0ZV9YTFNCQ29kZU5hbWUoZGF0YSAmJiBkYXRhLkNvZGVOYW1lIHx8IFwiVGhpc1dvcmtib29rXCIsIG8pO1xuXHRyZXR1cm4gby5zbGljZSgwLCBvLmwpO1xufVxuXG5mdW5jdGlvbiBwYXJzZV9CcnRGUlRBcmNoSUQkKGRhdGEsIGxlbmd0aCkge1xuXHR2YXIgbyA9IHt9O1xuXHRkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdG8uQXJjaElEID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHRkYXRhLmwgKz0gbGVuZ3RoIC0gODtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuNjg3IEJydE5hbWUgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydE5hbWUoZGF0YSwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBlbmQgPSBkYXRhLmwgKyBsZW5ndGg7XG5cdGRhdGEubCArPSA0OyAvL3ZhciBmbGFncyA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0ZGF0YS5sICs9IDE7IC8vdmFyIGNoS2V5ID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHR2YXIgaXRhYiA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0dmFyIG5hbWUgPSBwYXJzZV9YTE5hbWVXaWRlU3RyaW5nKGRhdGEpO1xuXHR2YXIgZm9ybXVsYSA9IHBhcnNlX1hMU0JOYW1lUGFyc2VkRm9ybXVsYShkYXRhLCAwLCBvcHRzKTtcblx0dmFyIGNvbW1lbnQgPSBwYXJzZV9YTE51bGxhYmxlV2lkZVN0cmluZyhkYXRhKTtcblx0Ly9pZigwIC8qIGZQcm9jICovKSB7XG5cdFx0Ly8gdW51c2Vkc3RyaW5nMTogWExOdWxsYWJsZVdpZGVTdHJpbmdcblx0XHQvLyBkZXNjcmlwdGlvbjogWExOdWxsYWJsZVdpZGVTdHJpbmdcblx0XHQvLyBoZWxwVG9waWM6IFhMTnVsbGFibGVXaWRlU3RyaW5nXG5cdFx0Ly8gdW51c2Vkc3RyaW5nMjogWExOdWxsYWJsZVdpZGVTdHJpbmdcblx0Ly99XG5cdGRhdGEubCA9IGVuZDtcblx0dmFyIG91dCA9ICh7TmFtZTpuYW1lLCBQdGc6Zm9ybXVsYX0vKjphbnkqLyk7XG5cdGlmKGl0YWIgPCAweEZGRkZGRkYpIG91dC5TaGVldCA9IGl0YWI7XG5cdGlmKGNvbW1lbnQpIG91dC5Db21tZW50ID0gY29tbWVudDtcblx0cmV0dXJuIG91dDtcbn1cblxuLyogW01TLVhMU0JdIDIuMS43LjYxIFdvcmtib29rICovXG5mdW5jdGlvbiBwYXJzZV93Yl9iaW4oZGF0YSwgb3B0cykvKjpXb3JrYm9va0ZpbGUqLyB7XG5cdHZhciB3YiA9IHsgQXBwVmVyc2lvbjp7fSwgV0JQcm9wczp7fSwgV0JWaWV3OltdLCBTaGVldHM6W10sIENhbGNQcjp7fSwgeG1sbnM6IFwiXCIgfTtcblx0dmFyIHN0YXRlLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdHZhciBwYXNzID0gZmFsc2U7XG5cblx0aWYoIW9wdHMpIG9wdHMgPSB7fTtcblx0b3B0cy5iaWZmID0gMTI7XG5cblx0dmFyIE5hbWVzID0gW107XG5cdHZhciBzdXBib29rcyA9IChbW11dLyo6YW55Ki8pO1xuXHRzdXBib29rcy5TaGVldE5hbWVzID0gW107XG5cdHN1cGJvb2tzLlhUSSA9IFtdO1xuXG5cdFhMU0JSZWNvcmRFbnVtWzB4MDAxMF0gPSB7IG46XCJCcnRGUlRBcmNoSUQkXCIsIGY6cGFyc2VfQnJ0RlJUQXJjaElEJCB9O1xuXG5cdHJlY29yZGhvcHBlcihkYXRhLCBmdW5jdGlvbiBob3BwZXJfd2IodmFsLCBSLCBSVCkge1xuXHRcdHN3aXRjaChSVCkge1xuXHRcdFx0Y2FzZSAweDAwOUM6IC8qICdCcnRCdW5kbGVTaCcgKi9cblx0XHRcdFx0c3VwYm9va3MuU2hlZXROYW1lcy5wdXNoKHZhbC5uYW1lKTtcblx0XHRcdFx0d2IuU2hlZXRzLnB1c2godmFsKTsgYnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMDk5OiAvKiAnQnJ0V2JQcm9wJyAqL1xuXHRcdFx0XHR3Yi5XQlByb3BzID0gdmFsOyBicmVhaztcblxuXHRcdFx0Y2FzZSAweDAwMjc6IC8qICdCcnROYW1lJyAqL1xuXHRcdFx0XHRpZih2YWwuU2hlZXQgIT0gbnVsbCkgb3B0cy5TSUQgPSB2YWwuU2hlZXQ7XG5cdFx0XHRcdHZhbC5SZWYgPSBzdHJpbmdpZnlfZm9ybXVsYSh2YWwuUHRnLCBudWxsLCBudWxsLCBzdXBib29rcywgb3B0cyk7XG5cdFx0XHRcdGRlbGV0ZSBvcHRzLlNJRDtcblx0XHRcdFx0ZGVsZXRlIHZhbC5QdGc7XG5cdFx0XHRcdE5hbWVzLnB1c2godmFsKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDB4MDQwQzogLyogJ0JydE5hbWVFeHQnICovIGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDE2NTogLyogJ0JydFN1cFNlbGYnICovXG5cdFx0XHRjYXNlIDB4MDE2NjogLyogJ0JydFN1cFNhbWUnICovXG5cdFx0XHRjYXNlIDB4MDE2MzogLyogJ0JydFN1cEJvb2tTcmMnICovXG5cdFx0XHRjYXNlIDB4MDI5QjogLyogJ0JydFN1cEFkZGluJyAqL1xuXHRcdFx0XHRpZighc3VwYm9va3NbMF0ubGVuZ3RoKSBzdXBib29rc1swXSA9IFtSVCwgdmFsXTtcblx0XHRcdFx0ZWxzZSBzdXBib29rcy5wdXNoKFtSVCwgdmFsXSk7XG5cdFx0XHRcdHN1cGJvb2tzW3N1cGJvb2tzLmxlbmd0aCAtIDFdLlhUSSA9IFtdO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMHgwMTZBOiAvKiAnQnJ0RXh0ZXJuU2hlZXQnICovXG5cdFx0XHRcdGlmKHN1cGJvb2tzLmxlbmd0aCA9PT0gMCkgeyBzdXBib29rc1swXSA9IFtdOyBzdXBib29rc1swXS5YVEkgPSBbXTsgfVxuXHRcdFx0XHRzdXBib29rc1tzdXBib29rcy5sZW5ndGggLSAxXS5YVEkgPSBzdXBib29rc1tzdXBib29rcy5sZW5ndGggLSAxXS5YVEkuY29uY2F0KHZhbCk7XG5cdFx0XHRcdHN1cGJvb2tzLlhUSSA9IHN1cGJvb2tzLlhUSS5jb25jYXQodmFsKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDB4MDE2OTogLyogJ0JydFBsYWNlaG9sZGVyTmFtZScgKi9cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwODE3OiAvKiAnQnJ0QWJzUGF0aDE1JyAqL1xuXHRcdFx0Y2FzZSAweDAwOUU6IC8qICdCcnRCb29rVmlldycgKi9cblx0XHRcdGNhc2UgMHgwMDhGOiAvKiAnQnJ0QmVnaW5CdW5kbGVTaHMnICovXG5cdFx0XHRjYXNlIDB4MDI5ODogLyogJ0JydEJlZ2luRm5Hcm91cCcgKi9cblx0XHRcdGNhc2UgMHgwMTYxOiAvKiAnQnJ0QmVnaW5FeHRlcm5hbHMnICovXG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHQvKiBjYXNlICdCcnRNb2RlbFRpbWVHcm91cGluZ0NhbGNDb2wnICovXG5cdFx0XHRjYXNlIDB4MEMwMDogLyogJ0JydFVpZCcgKi9cblx0XHRcdGNhc2UgMHgwQzAxOiAvKiAnQnJ0UmV2aXNpb25QdHInICovXG5cdFx0XHRjYXNlIDB4MDIxNjogLyogJ0JydEJvb2tQcm90ZWN0aW9uJyAqL1xuXHRcdFx0Y2FzZSAweDAyQTU6IC8qICdCcnRCb29rUHJvdGVjdGlvbklzbycgKi9cblx0XHRcdGNhc2UgMHgwMDlEOiAvKiAnQnJ0Q2FsY1Byb3AnICovXG5cdFx0XHRjYXNlIDB4MDI2MjogLyogJ0JydENyYXNoUmVjRXJyJyAqL1xuXHRcdFx0Y2FzZSAweDA4MDI6IC8qICdCcnREZWNvdXBsZWRQaXZvdENhY2hlSUQnICovXG5cdFx0XHRjYXNlIDB4MDA5QjogLyogJ0JydEZpbGVSZWNvdmVyJyAqL1xuXHRcdFx0Y2FzZSAweDAyMjQ6IC8qICdCcnRGaWxlU2hhcmluZycgKi9cblx0XHRcdGNhc2UgMHgwMkE0OiAvKiAnQnJ0RmlsZVNoYXJpbmdJc28nICovXG5cdFx0XHRjYXNlIDB4MDA4MDogLyogJ0JydEZpbGVWZXJzaW9uJyAqL1xuXHRcdFx0Y2FzZSAweDAyOTk6IC8qICdCcnRGbkdyb3VwJyAqL1xuXHRcdFx0Y2FzZSAweDA4NTA6IC8qICdCcnRNb2RlbFJlbGF0aW9uc2hpcCcgKi9cblx0XHRcdGNhc2UgMHgwODREOiAvKiAnQnJ0TW9kZWxUYWJsZScgKi9cblx0XHRcdGNhc2UgMHgwMjI1OiAvKiAnQnJ0T2xlU2l6ZScgKi9cblx0XHRcdGNhc2UgMHgwODA1OiAvKiAnQnJ0UGl2b3RUYWJsZVJlZicgKi9cblx0XHRcdGNhc2UgMHgwMjU0OiAvKiAnQnJ0U21hcnRUYWdUeXBlJyAqL1xuXHRcdFx0Y2FzZSAweDA4MUM6IC8qICdCcnRUYWJsZVNsaWNlckNhY2hlSUQnICovXG5cdFx0XHRjYXNlIDB4MDgxQjogLyogJ0JydFRhYmxlU2xpY2VyQ2FjaGVJRHMnICovXG5cdFx0XHRjYXNlIDB4MDgyMjogLyogJ0JydFRpbWVsaW5lQ2FjaGVQaXZvdENhY2hlSUQnICovXG5cdFx0XHRjYXNlIDB4MDE4RDogLyogJ0JydFVzZXJCb29rVmlldycgKi9cblx0XHRcdGNhc2UgMHgwMDlBOiAvKiAnQnJ0V2JGYWN0b2lkJyAqL1xuXHRcdFx0Y2FzZSAweDA0NUQ6IC8qICdCcnRXYlByb3AxNCcgKi9cblx0XHRcdGNhc2UgMHgwMjI5OiAvKiAnQnJ0V2ViT3B0JyAqL1xuXHRcdFx0Y2FzZSAweDA4MkI6IC8qICdCcnRXb3JrQm9va1ByMTUnICovXG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDAyMzogLyogJ0JydEZSVEJlZ2luJyAqL1xuXHRcdFx0XHRzdGF0ZS5wdXNoKFJUKTsgcGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjQ6IC8qICdCcnRGUlRFbmQnICovXG5cdFx0XHRcdHN0YXRlLnBvcCgpOyBwYXNzID0gZmFsc2U7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjU6IC8qICdCcnRBQ0JlZ2luJyAqL1xuXHRcdFx0XHRzdGF0ZS5wdXNoKFJUKTsgcGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjY6IC8qICdCcnRBQ0VuZCcgKi9cblx0XHRcdFx0c3RhdGUucG9wKCk7IHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMDEwOiAvKiAnQnJ0RlJUQXJjaElEJCcgKi8gYnJlYWs7XG5cblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGlmKFIuVCl7LyogZW1wdHkgKi99XG5cdFx0XHRcdGVsc2UgaWYoIXBhc3MgfHwgKG9wdHMuV1RGICYmIHN0YXRlW3N0YXRlLmxlbmd0aC0xXSAhPSAweDAwMjUgLyogQnJ0QUNCZWdpbiAqLyAmJiBzdGF0ZVtzdGF0ZS5sZW5ndGgtMV0gIT0gMHgwMDIzIC8qIEJydEZSVEJlZ2luICovKSkgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCByZWNvcmQgMHhcIiArIFJULnRvU3RyaW5nKDE2KSk7XG5cdFx0fVxuXHR9LCBvcHRzKTtcblxuXHRwYXJzZV93Yl9kZWZhdWx0cyh3Yik7XG5cblx0Ly8gJEZsb3dJZ25vcmVcblx0d2IuTmFtZXMgPSBOYW1lcztcblxuXHQod2IvKjphbnkqLykuc3VwYm9va3MgPSBzdXBib29rcztcblx0cmV0dXJuIHdiO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9CVU5ETEVTSFMoYmEsIHdiLyo6Oiwgb3B0cyovKSB7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDhGIC8qIEJydEJlZ2luQnVuZGxlU2hzICovKTtcblx0Zm9yKHZhciBpZHggPSAwOyBpZHggIT0gd2IuU2hlZXROYW1lcy5sZW5ndGg7ICsraWR4KSB7XG5cdFx0dmFyIHZpeiA9IHdiLldvcmtib29rICYmIHdiLldvcmtib29rLlNoZWV0cyAmJiB3Yi5Xb3JrYm9vay5TaGVldHNbaWR4XSAmJiB3Yi5Xb3JrYm9vay5TaGVldHNbaWR4XS5IaWRkZW4gfHwgMDtcblx0XHR2YXIgZCA9IHsgSGlkZGVuOiB2aXosIGlUYWJJRDogaWR4KzEsIHN0clJlbElEOiAncklkJyArIChpZHgrMSksIG5hbWU6IHdiLlNoZWV0TmFtZXNbaWR4XSB9O1xuXHRcdHdyaXRlX3JlY29yZChiYSwgMHgwMDlDIC8qIEJydEJ1bmRsZVNoICovLCB3cml0ZV9CcnRCdW5kbGVTaChkKSk7XG5cdH1cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwOTAgLyogQnJ0RW5kQnVuZGxlU2hzICovKTtcbn1cblxuLyogW01TLVhMU0JdIDIuNC42NDkgQnJ0RmlsZVZlcnNpb24gKi9cbmZ1bmN0aW9uIHdyaXRlX0JydEZpbGVWZXJzaW9uKGRhdGEsIG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDEyNyk7XG5cdGZvcih2YXIgaSA9IDA7IGkgIT0gNDsgKytpKSBvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHR3cml0ZV9YTFdpZGVTdHJpbmcoXCJTaGVldEpTXCIsIG8pO1xuXHR3cml0ZV9YTFdpZGVTdHJpbmcoWExTWC52ZXJzaW9uLCBvKTtcblx0d3JpdGVfWExXaWRlU3RyaW5nKFhMU1gudmVyc2lvbiwgbyk7XG5cdHdyaXRlX1hMV2lkZVN0cmluZyhcIjcyNjJcIiwgbyk7XG5cdHJldHVybiBvLmxlbmd0aCA+IG8ubCA/IG8uc2xpY2UoMCwgby5sKSA6IG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuMzAxIEJydEJvb2tWaWV3ICovXG5mdW5jdGlvbiB3cml0ZV9CcnRCb29rVmlldyhpZHgsIG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDI5KTtcblx0by53cml0ZV9zaGlmdCgtNCwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoLTQsIDQ2MCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgIDI4ODAwKTtcblx0by53cml0ZV9zaGlmdCg0LCAgMTc2MDApO1xuXHRvLndyaXRlX3NoaWZ0KDQsICA1MDApO1xuXHRvLndyaXRlX3NoaWZ0KDQsICBpZHgpO1xuXHRvLndyaXRlX3NoaWZ0KDQsICBpZHgpO1xuXHR2YXIgZmxhZ3MgPSAweDc4O1xuXHRvLndyaXRlX3NoaWZ0KDEsICBmbGFncyk7XG5cdHJldHVybiBvLmxlbmd0aCA+IG8ubCA/IG8uc2xpY2UoMCwgby5sKSA6IG87XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0JPT0tWSUVXUyhiYSwgd2IvKjo6LCBvcHRzKi8pIHtcblx0LyogcmVxdWlyZWQgaWYgaGlkZGVuIHRhYiBhcHBlYXJzIGJlZm9yZSB2aXNpYmxlIHRhYiAqL1xuXHRpZighd2IuV29ya2Jvb2sgfHwgIXdiLldvcmtib29rLlNoZWV0cykgcmV0dXJuO1xuXHR2YXIgc2hlZXRzID0gd2IuV29ya2Jvb2suU2hlZXRzO1xuXHR2YXIgaSA9IDAsIHZpc3RhYiA9IC0xLCBoaWRkZW4gPSAtMTtcblx0Zm9yKDsgaSA8IHNoZWV0cy5sZW5ndGg7ICsraSkge1xuXHRcdGlmKCFzaGVldHNbaV0gfHwgIXNoZWV0c1tpXS5IaWRkZW4gJiYgdmlzdGFiID09IC0xKSB2aXN0YWIgPSBpO1xuXHRcdGVsc2UgaWYoc2hlZXRzW2ldLkhpZGRlbiA9PSAxICYmIGhpZGRlbiA9PSAtMSkgaGlkZGVuID0gaTtcblx0fVxuXHRpZihoaWRkZW4gPiB2aXN0YWIpIHJldHVybjtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwODcgLyogQnJ0QmVnaW5Cb29rVmlld3MgKi8pO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA5RSAvKiBCcnRCb29rVmlldyAqLywgd3JpdGVfQnJ0Qm9va1ZpZXcodmlzdGFiKSk7XG5cdC8qIDEqKEJydEJvb2tWaWV3ICpGUlQpICovXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDg4IC8qIEJydEVuZEJvb2tWaWV3cyAqLyk7XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuMzA1IEJydENhbGNQcm9wICovXG4vKmZ1bmN0aW9uIHdyaXRlX0JydENhbGNQcm9wKGRhdGEsIG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDI2KTtcblx0by53cml0ZV9zaGlmdCg0LDApOyAvLyBmb3JjZSByZWNhbGNcblx0by53cml0ZV9zaGlmdCg0LDEpO1xuXHRvLndyaXRlX3NoaWZ0KDQsMCk7XG5cdHdyaXRlX1hudW0oMCwgbyk7XG5cdG8ud3JpdGVfc2hpZnQoLTQsIDEwMjMpO1xuXHRvLndyaXRlX3NoaWZ0KDEsIDB4MzMpO1xuXHRvLndyaXRlX3NoaWZ0KDEsIDB4MDApO1xuXHRyZXR1cm4gbztcbn0qL1xuXG4vKiBbTVMtWExTQl0gMi40LjY0NiBCcnRGaWxlUmVjb3ZlciAqL1xuLypmdW5jdGlvbiB3cml0ZV9CcnRGaWxlUmVjb3ZlcihkYXRhLCBvKSB7XG5cdGlmKCFvKSBvID0gbmV3X2J1ZigxKTtcblx0by53cml0ZV9zaGlmdCgxLDApO1xuXHRyZXR1cm4gbztcbn0qL1xuXG4vKiBbTVMtWExTQl0gMi4xLjcuNjEgV29ya2Jvb2sgKi9cbmZ1bmN0aW9uIHdyaXRlX3diX2Jpbih3Yiwgb3B0cykge1xuXHR2YXIgYmEgPSBidWZfYXJyYXkoKTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwODMgLyogQnJ0QmVnaW5Cb29rICovKTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwODAgLyogQnJ0RmlsZVZlcnNpb24gKi8sIHdyaXRlX0JydEZpbGVWZXJzaW9uKCkpO1xuXHQvKiBbW0JydEZpbGVTaGFyaW5nSXNvXSBCcnRGaWxlU2hhcmluZ10gKi9cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwOTkgLyogQnJ0V2JQcm9wICovLCB3cml0ZV9CcnRXYlByb3Aod2IuV29ya2Jvb2sgJiYgd2IuV29ya2Jvb2suV0JQcm9wcyB8fCBudWxsKSk7XG5cdC8qIFtBQ0FCU1BBVEhdICovXG5cdC8qIFtbQnJ0Qm9va1Byb3RlY3Rpb25Jc29dIEJydEJvb2tQcm90ZWN0aW9uXSAqL1xuXHR3cml0ZV9CT09LVklFV1MoYmEsIHdiLCBvcHRzKTtcblx0d3JpdGVfQlVORExFU0hTKGJhLCB3Yiwgb3B0cyk7XG5cdC8qIFtGTkdST1VQXSAqL1xuXHQvKiBbRVhURVJOQUxTXSAqL1xuXHQvKiAqQnJ0TmFtZSAqL1xuXHQvKiB3cml0ZV9yZWNvcmQoYmEsIDB4MDA5RCBCcnRDYWxjUHJvcCwgd3JpdGVfQnJ0Q2FsY1Byb3AoKSk7ICovXG5cdC8qIFtCcnRPbGVTaXplXSAqL1xuXHQvKiAqKEJydFVzZXJCb29rVmlldyAqRlJUKSAqL1xuXHQvKiBbUElWT1RDQUNIRUlEU10gKi9cblx0LyogW0JydFdiRmFjdG9pZF0gKi9cblx0LyogW1NNQVJUVEFHVFlQRVNdICovXG5cdC8qIFtCcnRXZWJPcHRdICovXG5cdC8qIHdyaXRlX3JlY29yZChiYSwgMHgwMDlCIEJydEZpbGVSZWNvdmVyLCB3cml0ZV9CcnRGaWxlUmVjb3ZlcigpKTsgKi9cblx0LyogW1dFQlBVQklURU1TXSAqL1xuXHQvKiBbQ1JFUlJTXSAqL1xuXHQvKiBGUlRXT1JLQk9PSyAqL1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA4NCAvKiBCcnRFbmRCb29rICovKTtcblxuXHRyZXR1cm4gYmEuZW5kKCk7XG59XG5mdW5jdGlvbiBwYXJzZV93YihkYXRhLCBuYW1lLyo6c3RyaW5nKi8sIG9wdHMpLyo6V29ya2Jvb2tGaWxlKi8ge1xuXHRpZihuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiKSByZXR1cm4gcGFyc2Vfd2JfYmluKChkYXRhLyo6YW55Ki8pLCBvcHRzKTtcblx0cmV0dXJuIHBhcnNlX3diX3htbCgoZGF0YS8qOmFueSovKSwgb3B0cyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX3dzKGRhdGEsIG5hbWUvKjpzdHJpbmcqLywgaWR4Lyo6bnVtYmVyKi8sIG9wdHMsIHJlbHMsIHdiLCB0aGVtZXMsIHN0eWxlcykvKjpXb3Jrc2hlZXQqLyB7XG5cdGlmKG5hbWUuc2xpY2UoLTQpPT09XCIuYmluXCIpIHJldHVybiBwYXJzZV93c19iaW4oKGRhdGEvKjphbnkqLyksIG9wdHMsIGlkeCwgcmVscywgd2IsIHRoZW1lcywgc3R5bGVzKTtcblx0cmV0dXJuIHBhcnNlX3dzX3htbCgoZGF0YS8qOmFueSovKSwgb3B0cywgaWR4LCByZWxzLCB3YiwgdGhlbWVzLCBzdHlsZXMpO1xufVxuXG5mdW5jdGlvbiBwYXJzZV9jcyhkYXRhLCBuYW1lLyo6c3RyaW5nKi8sIGlkeC8qOm51bWJlciovLCBvcHRzLCByZWxzLCB3YiwgdGhlbWVzLCBzdHlsZXMpLyo6V29ya3NoZWV0Ki8ge1xuXHRpZihuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiKSByZXR1cm4gcGFyc2VfY3NfYmluKChkYXRhLyo6YW55Ki8pLCBvcHRzLCBpZHgsIHJlbHMsIHdiLCB0aGVtZXMsIHN0eWxlcyk7XG5cdHJldHVybiBwYXJzZV9jc194bWwoKGRhdGEvKjphbnkqLyksIG9wdHMsIGlkeCwgcmVscywgd2IsIHRoZW1lcywgc3R5bGVzKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VfbXMoZGF0YSwgbmFtZS8qOnN0cmluZyovLCBpZHgvKjpudW1iZXIqLywgb3B0cywgcmVscywgd2IsIHRoZW1lcywgc3R5bGVzKS8qOldvcmtzaGVldCovIHtcblx0aWYobmFtZS5zbGljZSgtNCk9PT1cIi5iaW5cIikgcmV0dXJuIHBhcnNlX21zX2JpbigoZGF0YS8qOmFueSovKSwgb3B0cywgaWR4LCByZWxzLCB3YiwgdGhlbWVzLCBzdHlsZXMpO1xuXHRyZXR1cm4gcGFyc2VfbXNfeG1sKChkYXRhLyo6YW55Ki8pLCBvcHRzLCBpZHgsIHJlbHMsIHdiLCB0aGVtZXMsIHN0eWxlcyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX2RzKGRhdGEsIG5hbWUvKjpzdHJpbmcqLywgaWR4Lyo6bnVtYmVyKi8sIG9wdHMsIHJlbHMsIHdiLCB0aGVtZXMsIHN0eWxlcykvKjpXb3Jrc2hlZXQqLyB7XG5cdGlmKG5hbWUuc2xpY2UoLTQpPT09XCIuYmluXCIpIHJldHVybiBwYXJzZV9kc19iaW4oKGRhdGEvKjphbnkqLyksIG9wdHMsIGlkeCwgcmVscywgd2IsIHRoZW1lcywgc3R5bGVzKTtcblx0cmV0dXJuIHBhcnNlX2RzX3htbCgoZGF0YS8qOmFueSovKSwgb3B0cywgaWR4LCByZWxzLCB3YiwgdGhlbWVzLCBzdHlsZXMpO1xufVxuXG5mdW5jdGlvbiBwYXJzZV9zdHkoZGF0YSwgbmFtZS8qOnN0cmluZyovLCB0aGVtZXMsIG9wdHMpIHtcblx0aWYobmFtZS5zbGljZSgtNCk9PT1cIi5iaW5cIikgcmV0dXJuIHBhcnNlX3N0eV9iaW4oKGRhdGEvKjphbnkqLyksIHRoZW1lcywgb3B0cyk7XG5cdHJldHVybiBwYXJzZV9zdHlfeG1sKChkYXRhLyo6YW55Ki8pLCB0aGVtZXMsIG9wdHMpO1xufVxuXG5mdW5jdGlvbiBwYXJzZV90aGVtZShkYXRhLyo6c3RyaW5nKi8sIG5hbWUvKjpzdHJpbmcqLywgb3B0cykge1xuXHRyZXR1cm4gcGFyc2VfdGhlbWVfeG1sKGRhdGEsIG9wdHMpO1xufVxuXG5mdW5jdGlvbiBwYXJzZV9zc3QoZGF0YSwgbmFtZS8qOnN0cmluZyovLCBvcHRzKS8qOlNTVCovIHtcblx0aWYobmFtZS5zbGljZSgtNCk9PT1cIi5iaW5cIikgcmV0dXJuIHBhcnNlX3NzdF9iaW4oKGRhdGEvKjphbnkqLyksIG9wdHMpO1xuXHRyZXR1cm4gcGFyc2Vfc3N0X3htbCgoZGF0YS8qOmFueSovKSwgb3B0cyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX2NtbnQoZGF0YSwgbmFtZS8qOnN0cmluZyovLCBvcHRzKS8qOkFycmF5PFJhd0NvbW1lbnQ+Ki8ge1xuXHRpZihuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiKSByZXR1cm4gcGFyc2VfY29tbWVudHNfYmluKChkYXRhLyo6YW55Ki8pLCBvcHRzKTtcblx0cmV0dXJuIHBhcnNlX2NvbW1lbnRzX3htbCgoZGF0YS8qOmFueSovKSwgb3B0cyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX2NjKGRhdGEsIG5hbWUvKjpzdHJpbmcqLywgb3B0cykge1xuXHRpZihuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiKSByZXR1cm4gcGFyc2VfY2NfYmluKChkYXRhLyo6YW55Ki8pLCBuYW1lLCBvcHRzKTtcblx0cmV0dXJuIHBhcnNlX2NjX3htbCgoZGF0YS8qOmFueSovKSwgbmFtZSwgb3B0cyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX3hsaW5rKGRhdGEsIHJlbCwgbmFtZS8qOnN0cmluZyovLCBvcHRzKSB7XG5cdGlmKG5hbWUuc2xpY2UoLTQpPT09XCIuYmluXCIpIHJldHVybiBwYXJzZV94bGlua19iaW4oKGRhdGEvKjphbnkqLyksIHJlbCwgbmFtZSwgb3B0cyk7XG5cdHJldHVybiBwYXJzZV94bGlua194bWwoKGRhdGEvKjphbnkqLyksIHJlbCwgbmFtZSwgb3B0cyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX3hsbWV0YShkYXRhLCBuYW1lLyo6c3RyaW5nKi8sIG9wdHMpIHtcblx0aWYobmFtZS5zbGljZSgtNCk9PT1cIi5iaW5cIikgcmV0dXJuIHBhcnNlX3hsbWV0YV9iaW4oKGRhdGEvKjphbnkqLyksIG5hbWUsIG9wdHMpO1xuXHRyZXR1cm4gcGFyc2VfeGxtZXRhX3htbCgoZGF0YS8qOmFueSovKSwgbmFtZSwgb3B0cyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3diKHdiLCBuYW1lLyo6c3RyaW5nKi8sIG9wdHMpIHtcblx0cmV0dXJuIChuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiID8gd3JpdGVfd2JfYmluIDogd3JpdGVfd2JfeG1sKSh3Yiwgb3B0cyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3dzKGRhdGEvKjpudW1iZXIqLywgbmFtZS8qOnN0cmluZyovLCBvcHRzLCB3Yi8qOldvcmtib29rKi8sIHJlbHMpIHtcblx0cmV0dXJuIChuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiID8gd3JpdGVfd3NfYmluIDogd3JpdGVfd3NfeG1sKShkYXRhLCBvcHRzLCB3YiwgcmVscyk7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuZnVuY3Rpb24gd3JpdGVfY3MoZGF0YS8qOm51bWJlciovLCBuYW1lLyo6c3RyaW5nKi8sIG9wdHMsIHdiLyo6V29ya2Jvb2sqLywgcmVscykge1xuXHRyZXR1cm4gKG5hbWUuc2xpY2UoLTQpPT09XCIuYmluXCIgPyB3cml0ZV9jc19iaW4gOiB3cml0ZV9jc194bWwpKGRhdGEsIG9wdHMsIHdiLCByZWxzKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfc3R5KGRhdGEsIG5hbWUvKjpzdHJpbmcqLywgb3B0cykge1xuXHRyZXR1cm4gKG5hbWUuc2xpY2UoLTQpPT09XCIuYmluXCIgPyB3cml0ZV9zdHlfYmluIDogd3JpdGVfc3R5X3htbCkoZGF0YSwgb3B0cyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3NzdChkYXRhLyo6U1NUKi8sIG5hbWUvKjpzdHJpbmcqLywgb3B0cykge1xuXHRyZXR1cm4gKG5hbWUuc2xpY2UoLTQpPT09XCIuYmluXCIgPyB3cml0ZV9zc3RfYmluIDogd3JpdGVfc3N0X3htbCkoZGF0YSwgb3B0cyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX2NtbnQoZGF0YS8qOkFycmF5PGFueT4qLywgbmFtZS8qOnN0cmluZyovLCBvcHRzKSB7XG5cdHJldHVybiAobmFtZS5zbGljZSgtNCk9PT1cIi5iaW5cIiA/IHdyaXRlX2NvbW1lbnRzX2JpbiA6IHdyaXRlX2NvbW1lbnRzX3htbCkoZGF0YSwgb3B0cyk7XG59XG4vKlxuZnVuY3Rpb24gd3JpdGVfY2MoZGF0YSwgbmFtZTpzdHJpbmcsIG9wdHMpIHtcblx0cmV0dXJuIChuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiID8gd3JpdGVfY2NfYmluIDogd3JpdGVfY2NfeG1sKShkYXRhLCBvcHRzKTtcbn1cbiovXG5cbmZ1bmN0aW9uIHdyaXRlX3hsbWV0YShuYW1lLyo6c3RyaW5nKi8pIHtcblx0cmV0dXJuIChuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiID8gd3JpdGVfeGxtZXRhX2JpbiA6IHdyaXRlX3hsbWV0YV94bWwpKCk7XG59XG52YXIgYXR0cmVnZXhnMj0vKFtcXHc6XSspPSgoPzpcIikoW15cIl0qKSg/OlwiKXwoPzonKShbXiddKikoPzonKSkvZztcbnZhciBhdHRyZWdleDI9LyhbXFx3Ol0rKT0oKD86XCIpKD86W15cIl0qKSg/OlwiKXwoPzonKSg/OlteJ10qKSg/OicpKS87XG5mdW5jdGlvbiB4bG1sX3BhcnNleG1sdGFnKHRhZy8qOnN0cmluZyovLCBza2lwX3Jvb3QvKjo/Ym9vbGVhbiovKSB7XG5cdHZhciB3b3JkcyA9IHRhZy5zcGxpdCgvXFxzKy8pO1xuXHR2YXIgei8qOmFueSovID0gKFtdLyo6YW55Ki8pOyBpZighc2tpcF9yb290KSB6WzBdID0gd29yZHNbMF07XG5cdGlmKHdvcmRzLmxlbmd0aCA9PT0gMSkgcmV0dXJuIHo7XG5cdHZhciBtID0gdGFnLm1hdGNoKGF0dHJlZ2V4ZzIpLCB5LCBqLCB3LCBpO1xuXHRpZihtKSBmb3IoaSA9IDA7IGkgIT0gbS5sZW5ndGg7ICsraSkge1xuXHRcdHkgPSBtW2ldLm1hdGNoKGF0dHJlZ2V4Mik7XG4vKjo6IGlmKCF5IHx8ICF5WzJdKSBjb250aW51ZTsgKi9cblx0XHRpZigoaj15WzFdLmluZGV4T2YoXCI6XCIpKSA9PT0gLTEpIHpbeVsxXV0gPSB5WzJdLnNsaWNlKDEseVsyXS5sZW5ndGgtMSk7XG5cdFx0ZWxzZSB7XG5cdFx0XHRpZih5WzFdLnNsaWNlKDAsNikgPT09IFwieG1sbnM6XCIpIHcgPSBcInhtbG5zXCIreVsxXS5zbGljZSg2KTtcblx0XHRcdGVsc2UgdyA9IHlbMV0uc2xpY2UoaisxKTtcblx0XHRcdHpbd10gPSB5WzJdLnNsaWNlKDEseVsyXS5sZW5ndGgtMSk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiB6O1xufVxuZnVuY3Rpb24geGxtbF9wYXJzZXhtbHRhZ29iaih0YWcvKjpzdHJpbmcqLykge1xuXHR2YXIgd29yZHMgPSB0YWcuc3BsaXQoL1xccysvKTtcblx0dmFyIHogPSB7fTtcblx0aWYod29yZHMubGVuZ3RoID09PSAxKSByZXR1cm4gejtcblx0dmFyIG0gPSB0YWcubWF0Y2goYXR0cmVnZXhnMiksIHksIGosIHcsIGk7XG5cdGlmKG0pIGZvcihpID0gMDsgaSAhPSBtLmxlbmd0aDsgKytpKSB7XG5cdFx0eSA9IG1baV0ubWF0Y2goYXR0cmVnZXgyKTtcbi8qOjogaWYoIXkgfHwgIXlbMl0pIGNvbnRpbnVlOyAqL1xuXHRcdGlmKChqPXlbMV0uaW5kZXhPZihcIjpcIikpID09PSAtMSkgelt5WzFdXSA9IHlbMl0uc2xpY2UoMSx5WzJdLmxlbmd0aC0xKTtcblx0XHRlbHNlIHtcblx0XHRcdGlmKHlbMV0uc2xpY2UoMCw2KSA9PT0gXCJ4bWxuczpcIikgdyA9IFwieG1sbnNcIit5WzFdLnNsaWNlKDYpO1xuXHRcdFx0ZWxzZSB3ID0geVsxXS5zbGljZShqKzEpO1xuXHRcdFx0elt3XSA9IHlbMl0uc2xpY2UoMSx5WzJdLmxlbmd0aC0xKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHo7XG59XG5cbi8vIC0tLS1cblxuLyogbWFwIGZyb20geGxtbCBuYW1lZCBmb3JtYXRzIHRvIFNTRiBUT0RPOiBsb2NhbGl6ZSAqL1xudmFyIFhMTUxGb3JtYXRNYXAvKjoge1tzdHJpbmddOnN0cmluZ30qLztcblxuZnVuY3Rpb24geGxtbF9mb3JtYXQoZm9ybWF0LCB2YWx1ZSkvKjpzdHJpbmcqLyB7XG5cdHZhciBmbXQgPSBYTE1MRm9ybWF0TWFwW2Zvcm1hdF0gfHwgdW5lc2NhcGV4bWwoZm9ybWF0KTtcblx0aWYoZm10ID09PSBcIkdlbmVyYWxcIikgcmV0dXJuIFNTRl9nZW5lcmFsKHZhbHVlKTtcblx0cmV0dXJuIFNTRl9mb3JtYXQoZm10LCB2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIHhsbWxfc2V0X2N1c3Rwcm9wKEN1c3Rwcm9wcywga2V5LCBjcCwgdmFsLyo6c3RyaW5nKi8pIHtcblx0dmFyIG92YWwvKjphbnkqLyA9IHZhbDtcblx0c3dpdGNoKChjcFswXS5tYXRjaCgvZHQ6ZHQ9XCIoW1xcdy5dKylcIi8pfHxbXCJcIixcIlwiXSlbMV0pIHtcblx0XHRjYXNlIFwiYm9vbGVhblwiOiBvdmFsID0gcGFyc2V4bWxib29sKHZhbCk7IGJyZWFrO1xuXHRcdGNhc2UgXCJpMlwiOiBjYXNlIFwiaW50XCI6IG92YWwgPSBwYXJzZUludCh2YWwsIDEwKTsgYnJlYWs7XG5cdFx0Y2FzZSBcInI0XCI6IGNhc2UgXCJmbG9hdFwiOiBvdmFsID0gcGFyc2VGbG9hdCh2YWwpOyBicmVhaztcblx0XHRjYXNlIFwiZGF0ZVwiOiBjYXNlIFwiZGF0ZVRpbWUudHpcIjogb3ZhbCA9IHBhcnNlRGF0ZSh2YWwpOyBicmVhaztcblx0XHRjYXNlIFwiaThcIjogY2FzZSBcInN0cmluZ1wiOiBjYXNlIFwiZml4ZWRcIjogY2FzZSBcInV1aWRcIjogY2FzZSBcImJpbi5iYXNlNjRcIjogYnJlYWs7XG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiYmFkIGN1c3Rwcm9wOlwiICsgY3BbMF0pO1xuXHR9XG5cdEN1c3Rwcm9wc1t1bmVzY2FwZXhtbChrZXkpXSA9IG92YWw7XG59XG5cbmZ1bmN0aW9uIHNhZmVfZm9ybWF0X3hsbWwoY2VsbC8qOkNlbGwqLywgbmYsIG8pIHtcblx0aWYoY2VsbC50ID09PSAneicpIHJldHVybjtcblx0aWYoIW8gfHwgby5jZWxsVGV4dCAhPT0gZmFsc2UpIHRyeSB7XG5cdFx0aWYoY2VsbC50ID09PSAnZScpIHsgY2VsbC53ID0gY2VsbC53IHx8IEJFcnJbY2VsbC52XTsgfVxuXHRcdGVsc2UgaWYobmYgPT09IFwiR2VuZXJhbFwiKSB7XG5cdFx0XHRpZihjZWxsLnQgPT09ICduJykge1xuXHRcdFx0XHRpZigoY2VsbC52fDApID09PSBjZWxsLnYpIGNlbGwudyA9IGNlbGwudi50b1N0cmluZygxMCk7XG5cdFx0XHRcdGVsc2UgY2VsbC53ID0gU1NGX2dlbmVyYWxfbnVtKGNlbGwudik7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIGNlbGwudyA9IFNTRl9nZW5lcmFsKGNlbGwudik7XG5cdFx0fVxuXHRcdGVsc2UgY2VsbC53ID0geGxtbF9mb3JtYXQobmZ8fFwiR2VuZXJhbFwiLCBjZWxsLnYpO1xuXHR9IGNhdGNoKGUpIHsgaWYoby5XVEYpIHRocm93IGU7IH1cblx0dHJ5IHtcblx0XHR2YXIgeiA9IFhMTUxGb3JtYXRNYXBbbmZdfHxuZnx8XCJHZW5lcmFsXCI7XG5cdFx0aWYoby5jZWxsTkYpIGNlbGwueiA9IHo7XG5cdFx0aWYoby5jZWxsRGF0ZXMgJiYgY2VsbC50ID09ICduJyAmJiBmbXRfaXNfZGF0ZSh6KSkge1xuXHRcdFx0dmFyIF9kID0gU1NGX3BhcnNlX2RhdGVfY29kZShjZWxsLnYpOyBpZihfZCkgeyBjZWxsLnQgPSAnZCc7IGNlbGwudiA9IG5ldyBEYXRlKF9kLnksIF9kLm0tMSxfZC5kLF9kLkgsX2QuTSxfZC5TLF9kLnUpOyB9XG5cdFx0fVxuXHR9IGNhdGNoKGUpIHsgaWYoby5XVEYpIHRocm93IGU7IH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc19zdHlsZV94bG1sKHN0eWxlcywgc3RhZywgb3B0cykge1xuXHRpZihvcHRzLmNlbGxTdHlsZXMpIHtcblx0XHRpZihzdGFnLkludGVyaW9yKSB7XG5cdFx0XHR2YXIgSSA9IHN0YWcuSW50ZXJpb3I7XG5cdFx0XHRpZihJLlBhdHRlcm4pIEkucGF0dGVyblR5cGUgPSBYTE1MUGF0dGVyblR5cGVNYXBbSS5QYXR0ZXJuXSB8fCBJLlBhdHRlcm47XG5cdFx0fVxuXHR9XG5cdHN0eWxlc1tzdGFnLklEXSA9IHN0YWc7XG59XG5cbi8qIFRPRE86IHRoZXJlIG11c3QgZXhpc3Qgc29tZSBmb3JtIG9mIE9TUC1ibGVzc2VkIHNwZWMgKi9cbmZ1bmN0aW9uIHBhcnNlX3hsbWxfZGF0YSh4bWwsIHNzLCBkYXRhLCBjZWxsLyo6YW55Ki8sIGJhc2UsIHN0eWxlcywgY3N0eSwgcm93LCBhcnJheWYsIG8pIHtcblx0dmFyIG5mID0gXCJHZW5lcmFsXCIsIHNpZCA9IGNlbGwuU3R5bGVJRCwgUyA9IHt9OyBvID0gbyB8fCB7fTtcblx0dmFyIGludGVyaW9ycyA9IFtdO1xuXHR2YXIgaSA9IDA7XG5cdGlmKHNpZCA9PT0gdW5kZWZpbmVkICYmIHJvdykgc2lkID0gcm93LlN0eWxlSUQ7XG5cdGlmKHNpZCA9PT0gdW5kZWZpbmVkICYmIGNzdHkpIHNpZCA9IGNzdHkuU3R5bGVJRDtcblx0d2hpbGUoc3R5bGVzW3NpZF0gIT09IHVuZGVmaW5lZCkge1xuXHRcdGlmKHN0eWxlc1tzaWRdLm5mKSBuZiA9IHN0eWxlc1tzaWRdLm5mO1xuXHRcdGlmKHN0eWxlc1tzaWRdLkludGVyaW9yKSBpbnRlcmlvcnMucHVzaChzdHlsZXNbc2lkXS5JbnRlcmlvcik7XG5cdFx0aWYoIXN0eWxlc1tzaWRdLlBhcmVudCkgYnJlYWs7XG5cdFx0c2lkID0gc3R5bGVzW3NpZF0uUGFyZW50O1xuXHR9XG5cdHN3aXRjaChkYXRhLlR5cGUpIHtcblx0XHRjYXNlICdCb29sZWFuJzpcblx0XHRcdGNlbGwudCA9ICdiJztcblx0XHRcdGNlbGwudiA9IHBhcnNleG1sYm9vbCh4bWwpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAnU3RyaW5nJzpcblx0XHRcdGNlbGwudCA9ICdzJzsgY2VsbC5yID0geGxtbF9maXhzdHIodW5lc2NhcGV4bWwoeG1sKSk7XG5cdFx0XHRjZWxsLnYgPSAoeG1sLmluZGV4T2YoXCI8XCIpID4gLTEgPyB1bmVzY2FwZXhtbChzc3x8eG1sKS5yZXBsYWNlKC88Lio/Pi9nLCBcIlwiKSA6IGNlbGwucik7IC8vIHRvZG86IEJSIGV0Y1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAnRGF0ZVRpbWUnOlxuXHRcdFx0aWYoeG1sLnNsaWNlKC0xKSAhPSBcIlpcIikgeG1sICs9IFwiWlwiO1xuXHRcdFx0Y2VsbC52ID0gKHBhcnNlRGF0ZSh4bWwpIC0gbmV3IERhdGUoRGF0ZS5VVEMoMTg5OSwgMTEsIDMwKSkpIC8gKDI0ICogNjAgKiA2MCAqIDEwMDApO1xuXHRcdFx0aWYoY2VsbC52ICE9PSBjZWxsLnYpIGNlbGwudiA9IHVuZXNjYXBleG1sKHhtbCk7XG5cdFx0XHRlbHNlIGlmKGNlbGwudjw2MCkgY2VsbC52ID0gY2VsbC52IC0xO1xuXHRcdFx0aWYoIW5mIHx8IG5mID09IFwiR2VuZXJhbFwiKSBuZiA9IFwieXl5eS1tbS1kZFwiO1xuXHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdGNhc2UgJ051bWJlcic6XG5cdFx0XHRpZihjZWxsLnYgPT09IHVuZGVmaW5lZCkgY2VsbC52PSt4bWw7XG5cdFx0XHRpZighY2VsbC50KSBjZWxsLnQgPSAnbic7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICdFcnJvcic6IGNlbGwudCA9ICdlJzsgY2VsbC52ID0gUkJFcnJbeG1sXTsgaWYoby5jZWxsVGV4dCAhPT0gZmFsc2UpIGNlbGwudyA9IHhtbDsgYnJlYWs7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdGlmKHhtbCA9PSBcIlwiICYmIHNzID09IFwiXCIpIHsgY2VsbC50ID0gJ3onOyB9XG5cdFx0XHRlbHNlIHsgY2VsbC50ID0gJ3MnOyBjZWxsLnYgPSB4bG1sX2ZpeHN0cihzc3x8eG1sKTsgfVxuXHRcdFx0YnJlYWs7XG5cdH1cblx0c2FmZV9mb3JtYXRfeGxtbChjZWxsLCBuZiwgbyk7XG5cdGlmKG8uY2VsbEZvcm11bGEgIT09IGZhbHNlKSB7XG5cdFx0aWYoY2VsbC5Gb3JtdWxhKSB7XG5cdFx0XHR2YXIgZnN0ciA9IHVuZXNjYXBleG1sKGNlbGwuRm9ybXVsYSk7XG5cdFx0XHQvKiBzdHJpY3RseSBzcGVha2luZywgdGhlIGxlYWRpbmcgPSBpcyByZXF1aXJlZCBidXQgc29tZSB3cml0ZXJzIG9taXQgKi9cblx0XHRcdGlmKGZzdHIuY2hhckNvZGVBdCgwKSA9PSA2MSAvKiA9ICovKSBmc3RyID0gZnN0ci5zbGljZSgxKTtcblx0XHRcdGNlbGwuZiA9IHJjX3RvX2ExKGZzdHIsIGJhc2UpO1xuXHRcdFx0ZGVsZXRlIGNlbGwuRm9ybXVsYTtcblx0XHRcdGlmKGNlbGwuQXJyYXlSYW5nZSA9PSBcIlJDXCIpIGNlbGwuRiA9IHJjX3RvX2ExKFwiUkM6UkNcIiwgYmFzZSk7XG5cdFx0XHRlbHNlIGlmKGNlbGwuQXJyYXlSYW5nZSkge1xuXHRcdFx0XHRjZWxsLkYgPSByY190b19hMShjZWxsLkFycmF5UmFuZ2UsIGJhc2UpO1xuXHRcdFx0XHRhcnJheWYucHVzaChbc2FmZV9kZWNvZGVfcmFuZ2UoY2VsbC5GKSwgY2VsbC5GXSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvcihpID0gMDsgaSA8IGFycmF5Zi5sZW5ndGg7ICsraSlcblx0XHRcdFx0aWYoYmFzZS5yID49IGFycmF5ZltpXVswXS5zLnIgJiYgYmFzZS5yIDw9IGFycmF5ZltpXVswXS5lLnIpXG5cdFx0XHRcdFx0aWYoYmFzZS5jID49IGFycmF5ZltpXVswXS5zLmMgJiYgYmFzZS5jIDw9IGFycmF5ZltpXVswXS5lLmMpXG5cdFx0XHRcdFx0XHRjZWxsLkYgPSBhcnJheWZbaV1bMV07XG5cdFx0fVxuXHR9XG5cdGlmKG8uY2VsbFN0eWxlcykge1xuXHRcdGludGVyaW9ycy5mb3JFYWNoKGZ1bmN0aW9uKHgpIHtcblx0XHRcdGlmKCFTLnBhdHRlcm5UeXBlICYmIHgucGF0dGVyblR5cGUpIFMucGF0dGVyblR5cGUgPSB4LnBhdHRlcm5UeXBlO1xuXHRcdH0pO1xuXHRcdGNlbGwucyA9IFM7XG5cdH1cblx0aWYoY2VsbC5TdHlsZUlEICE9PSB1bmRlZmluZWQpIGNlbGwuaXhmZSA9IGNlbGwuU3R5bGVJRDtcbn1cblxuZnVuY3Rpb24geGxtbF9jbGVhbl9jb21tZW50KGNvbW1lbnQvKjphbnkqLykge1xuXHRjb21tZW50LnQgPSBjb21tZW50LnYgfHwgXCJcIjtcblx0Y29tbWVudC50ID0gY29tbWVudC50LnJlcGxhY2UoL1xcclxcbi9nLFwiXFxuXCIpLnJlcGxhY2UoL1xcci9nLFwiXFxuXCIpO1xuXHRjb21tZW50LnYgPSBjb21tZW50LncgPSBjb21tZW50Lml4ZmUgPSB1bmRlZmluZWQ7XG59XG5cbi8qIFRPRE86IEV2ZXJ5dGhpbmcgKi9cbmZ1bmN0aW9uIHBhcnNlX3hsbWxfeG1sKGQsIF9vcHRzKS8qOldvcmtib29rKi8ge1xuXHR2YXIgb3B0cyA9IF9vcHRzIHx8IHt9O1xuXHRtYWtlX3NzZigpO1xuXHR2YXIgc3RyID0gZGVib20oeGxtbF9ub3JtYWxpemUoZCkpO1xuXHRpZihvcHRzLnR5cGUgPT0gJ2JpbmFyeScgfHwgb3B0cy50eXBlID09ICdhcnJheScgfHwgb3B0cy50eXBlID09ICdiYXNlNjQnKSB7XG5cdFx0aWYodHlwZW9mICRjcHRhYmxlICE9PSAndW5kZWZpbmVkJykgc3RyID0gJGNwdGFibGUudXRpbHMuZGVjb2RlKDY1MDAxLCBjaGFyX2NvZGVzKHN0cikpO1xuXHRcdGVsc2Ugc3RyID0gdXRmOHJlYWQoc3RyKTtcblx0fVxuXHR2YXIgb3BlbmluZyA9IHN0ci5zbGljZSgwLCAxMDI0KS50b0xvd2VyQ2FzZSgpLCBpc2h0bWwgPSBmYWxzZTtcblx0b3BlbmluZyA9IG9wZW5pbmcucmVwbGFjZSgvXCIuKj9cIi9nLCBcIlwiKTtcblx0aWYoKG9wZW5pbmcuaW5kZXhPZihcIj5cIikgJiAxMDIzKSA+IE1hdGgubWluKChvcGVuaW5nLmluZGV4T2YoXCIsXCIpICYgMTAyMyksIChvcGVuaW5nLmluZGV4T2YoXCI7XCIpJjEwMjMpKSkgeyB2YXIgX28gPSBkdXAob3B0cyk7IF9vLnR5cGUgPSBcInN0cmluZ1wiOyByZXR1cm4gUFJOLnRvX3dvcmtib29rKHN0ciwgX28pOyB9XG5cdGlmKG9wZW5pbmcuaW5kZXhPZihcIjw/eG1sXCIpID09IC0xKSBbXCJodG1sXCIsIFwidGFibGVcIiwgXCJoZWFkXCIsIFwibWV0YVwiLCBcInNjcmlwdFwiLCBcInN0eWxlXCIsIFwiZGl2XCJdLmZvckVhY2goZnVuY3Rpb24odGFnKSB7IGlmKG9wZW5pbmcuaW5kZXhPZihcIjxcIiArIHRhZykgPj0gMCkgaXNodG1sID0gdHJ1ZTsgfSk7XG5cdGlmKGlzaHRtbCkgcmV0dXJuIGh0bWxfdG9fd29ya2Jvb2soc3RyLCBvcHRzKTtcblxuXHRYTE1MRm9ybWF0TWFwID0gKHtcblx0XHRcIkdlbmVyYWwgTnVtYmVyXCI6IFwiR2VuZXJhbFwiLFxuXHRcdFwiR2VuZXJhbCBEYXRlXCI6IHRhYmxlX2ZtdFsyMl0sXG5cdFx0XCJMb25nIERhdGVcIjogXCJkZGRkLCBtbW1tIGRkLCB5eXl5XCIsXG5cdFx0XCJNZWRpdW0gRGF0ZVwiOiB0YWJsZV9mbXRbMTVdLFxuXHRcdFwiU2hvcnQgRGF0ZVwiOiB0YWJsZV9mbXRbMTRdLFxuXHRcdFwiTG9uZyBUaW1lXCI6IHRhYmxlX2ZtdFsxOV0sXG5cdFx0XCJNZWRpdW0gVGltZVwiOiB0YWJsZV9mbXRbMThdLFxuXHRcdFwiU2hvcnQgVGltZVwiOiB0YWJsZV9mbXRbMjBdLFxuXHRcdFwiQ3VycmVuY3lcIjogJ1wiJFwiIywjIzAuMDBfKTtbUmVkXVxcXFwoXCIkXCIjLCMjMC4wMFxcXFwpJyxcblx0XHRcIkZpeGVkXCI6IHRhYmxlX2ZtdFsyXSxcblx0XHRcIlN0YW5kYXJkXCI6IHRhYmxlX2ZtdFs0XSxcblx0XHRcIlBlcmNlbnRcIjogdGFibGVfZm10WzEwXSxcblx0XHRcIlNjaWVudGlmaWNcIjogdGFibGVfZm10WzExXSxcblx0XHRcIlllcy9Ob1wiOiAnXCJZZXNcIjtcIlllc1wiO1wiTm9cIjtAJyxcblx0XHRcIlRydWUvRmFsc2VcIjogJ1wiVHJ1ZVwiO1wiVHJ1ZVwiO1wiRmFsc2VcIjtAJyxcblx0XHRcIk9uL09mZlwiOiAnXCJZZXNcIjtcIlllc1wiO1wiTm9cIjtAJ1xuXHR9Lyo6YW55Ki8pO1xuXG5cblx0dmFyIFJuO1xuXHR2YXIgc3RhdGUgPSBbXSwgdG1wO1xuXHRpZihERU5TRSAhPSBudWxsICYmIG9wdHMuZGVuc2UgPT0gbnVsbCkgb3B0cy5kZW5zZSA9IERFTlNFO1xuXHR2YXIgc2hlZXRzID0ge30sIHNoZWV0bmFtZXMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXSwgY3Vyc2hlZXQvKjpXb3Jrc2hlZXQqLyA9IChvcHRzLmRlbnNlID8gW10gOiB7fSksIHNoZWV0bmFtZSA9IFwiXCI7XG5cdHZhciBjZWxsID0gKHt9Lyo6YW55Ki8pLCByb3cgPSB7fTsvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG5cdHZhciBkdGFnID0geGxtbF9wYXJzZXhtbHRhZygnPERhdGEgc3M6VHlwZT1cIlN0cmluZ1wiPicpLCBkaWR4ID0gMDtcblx0dmFyIGMgPSAwLCByID0gMDtcblx0dmFyIHJlZmd1ZXNzLyo6UmFuZ2UqLyA9IHtzOiB7cjoyMDAwMDAwLCBjOjIwMDAwMDB9LCBlOiB7cjowLCBjOjB9IH07XG5cdHZhciBzdHlsZXMgPSB7fSwgc3RhZyA9IHt9O1xuXHR2YXIgc3MgPSBcIlwiLCBmaWR4ID0gMDtcblx0dmFyIG1lcmdlcy8qOkFycmF5PFJhbmdlPiovID0gW107XG5cdHZhciBQcm9wcyA9IHt9LCBDdXN0cHJvcHMgPSB7fSwgcGlkeCA9IDAsIGNwID0gW107XG5cdHZhciBjb21tZW50cy8qOkFycmF5PENvbW1lbnQ+Ki8gPSBbXSwgY29tbWVudC8qOkNvbW1lbnQqLyA9ICh7fS8qOmFueSovKTtcblx0dmFyIGNzdHlzID0gW10sIGNzdHksIHNlZW5jb2wgPSBmYWxzZTtcblx0dmFyIGFycmF5Zi8qOkFycmF5PFtSYW5nZSwgc3RyaW5nXT4qLyA9IFtdO1xuXHR2YXIgcm93aW5mby8qOkFycmF5PFJvd0luZm8+Ki8gPSBbXSwgcm93b2JqID0ge30sIGNjID0gMCwgcnIgPSAwO1xuXHR2YXIgV29ya2Jvb2svKjpXQldCUHJvcHMqLyA9ICh7IFNoZWV0czpbXSwgV0JQcm9wczp7ZGF0ZTE5MDQ6ZmFsc2V9IH0vKjphbnkqLyksIHdzcHJvcHMgPSB7fTtcblx0eGxtbHJlZ2V4Lmxhc3RJbmRleCA9IDA7XG5cdHN0ciA9IHN0ci5yZXBsYWNlKC88IS0tKFtcXHNcXFNdKj8pLS0+L21nLFwiXCIpO1xuXHR2YXIgcmF3X1JuMyA9IFwiXCI7XG5cdHdoaWxlKChSbiA9IHhsbWxyZWdleC5leGVjKHN0cikpKSBzd2l0Y2goKFJuWzNdID0gKHJhd19SbjMgPSBSblszXSkudG9Mb3dlckNhc2UoKSkpIHtcblx0XHRjYXNlICdkYXRhJyAvKmNhc2UgJ0RhdGEnKi86XG5cdFx0XHRpZihyYXdfUm4zID09IFwiZGF0YVwiKSB7XG5cdFx0XHRcdGlmKFJuWzFdPT09Jy8nKXtpZigodG1wPXN0YXRlLnBvcCgpKVswXSE9PVJuWzNdKSB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgc3RhdGU6IFwiK3RtcC5qb2luKFwifFwiKSk7fVxuXHRcdFx0XHRlbHNlIGlmKFJuWzBdLmNoYXJBdChSblswXS5sZW5ndGgtMikgIT09ICcvJykgc3RhdGUucHVzaChbUm5bM10sIHRydWVdKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZihzdGF0ZVtzdGF0ZS5sZW5ndGgtMV1bMV0pIGJyZWFrO1xuXHRcdFx0aWYoUm5bMV09PT0nLycpIHBhcnNlX3hsbWxfZGF0YShzdHIuc2xpY2UoZGlkeCwgUm4uaW5kZXgpLCBzcywgZHRhZywgc3RhdGVbc3RhdGUubGVuZ3RoLTFdWzBdPT0vKlwiQ29tbWVudFwiKi9cImNvbW1lbnRcIj9jb21tZW50OmNlbGwsIHtjOmMscjpyfSwgc3R5bGVzLCBjc3R5c1tjXSwgcm93LCBhcnJheWYsIG9wdHMpO1xuXHRcdFx0ZWxzZSB7IHNzID0gXCJcIjsgZHRhZyA9IHhsbWxfcGFyc2V4bWx0YWcoUm5bMF0pOyBkaWR4ID0gUm4uaW5kZXggKyBSblswXS5sZW5ndGg7IH1cblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgJ2NlbGwnIC8qY2FzZSAnQ2VsbCcqLzpcblx0XHRcdGlmKFJuWzFdPT09Jy8nKXtcblx0XHRcdFx0aWYoY29tbWVudHMubGVuZ3RoID4gMCkgY2VsbC5jID0gY29tbWVudHM7XG5cdFx0XHRcdGlmKCghb3B0cy5zaGVldFJvd3MgfHwgb3B0cy5zaGVldFJvd3MgPiByKSAmJiBjZWxsLnYgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdGlmKG9wdHMuZGVuc2UpIHtcblx0XHRcdFx0XHRcdGlmKCFjdXJzaGVldFtyXSkgY3Vyc2hlZXRbcl0gPSBbXTtcblx0XHRcdFx0XHRcdGN1cnNoZWV0W3JdW2NdID0gY2VsbDtcblx0XHRcdFx0XHR9IGVsc2UgY3Vyc2hlZXRbZW5jb2RlX2NvbChjKSArIGVuY29kZV9yb3cocildID0gY2VsbDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZihjZWxsLkhSZWYpIHtcblx0XHRcdFx0XHRjZWxsLmwgPSAoe1RhcmdldDp1bmVzY2FwZXhtbChjZWxsLkhSZWYpfS8qOmFueSovKTtcblx0XHRcdFx0XHRpZihjZWxsLkhSZWZTY3JlZW5UaXApIGNlbGwubC5Ub29sdGlwID0gY2VsbC5IUmVmU2NyZWVuVGlwO1xuXHRcdFx0XHRcdGRlbGV0ZSBjZWxsLkhSZWY7IGRlbGV0ZSBjZWxsLkhSZWZTY3JlZW5UaXA7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYoY2VsbC5NZXJnZUFjcm9zcyB8fCBjZWxsLk1lcmdlRG93bikge1xuXHRcdFx0XHRcdGNjID0gYyArIChwYXJzZUludChjZWxsLk1lcmdlQWNyb3NzLDEwKXwwKTtcblx0XHRcdFx0XHRyciA9IHIgKyAocGFyc2VJbnQoY2VsbC5NZXJnZURvd24sMTApfDApO1xuXHRcdFx0XHRcdG1lcmdlcy5wdXNoKHtzOntjOmMscjpyfSxlOntjOmNjLHI6cnJ9fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYoIW9wdHMuc2hlZXRTdHVicykgeyBpZihjZWxsLk1lcmdlQWNyb3NzKSBjID0gY2MgKyAxOyBlbHNlICsrYzsgfVxuXHRcdFx0XHRlbHNlIGlmKGNlbGwuTWVyZ2VBY3Jvc3MgfHwgY2VsbC5NZXJnZURvd24pIHtcblx0XHRcdFx0XHQvKjo6IGlmKCFjYykgY2MgPSAwOyBpZighcnIpIHJyID0gMDsgKi9cblx0XHRcdFx0XHRmb3IodmFyIGNtYSA9IGM7IGNtYSA8PSBjYzsgKytjbWEpIHtcblx0XHRcdFx0XHRcdGZvcih2YXIgY21kID0gcjsgY21kIDw9IHJyOyArK2NtZCkge1xuXHRcdFx0XHRcdFx0XHRpZihjbWEgPiBjIHx8IGNtZCA+IHIpIHtcblx0XHRcdFx0XHRcdFx0XHRpZihvcHRzLmRlbnNlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZighY3Vyc2hlZXRbY21kXSkgY3Vyc2hlZXRbY21kXSA9IFtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0Y3Vyc2hlZXRbY21kXVtjbWFdID0ge3Q6J3onfTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgY3Vyc2hlZXRbZW5jb2RlX2NvbChjbWEpICsgZW5jb2RlX3JvdyhjbWQpXSA9IHt0Oid6J307XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YyA9IGNjICsgMTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlICsrYztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNlbGwgPSB4bG1sX3BhcnNleG1sdGFnb2JqKFJuWzBdKTtcblx0XHRcdFx0aWYoY2VsbC5JbmRleCkgYyA9ICtjZWxsLkluZGV4IC0gMTtcblx0XHRcdFx0aWYoYyA8IHJlZmd1ZXNzLnMuYykgcmVmZ3Vlc3Mucy5jID0gYztcblx0XHRcdFx0aWYoYyA+IHJlZmd1ZXNzLmUuYykgcmVmZ3Vlc3MuZS5jID0gYztcblx0XHRcdFx0aWYoUm5bMF0uc2xpY2UoLTIpID09PSBcIi8+XCIpICsrYztcblx0XHRcdFx0Y29tbWVudHMgPSBbXTtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgJ3JvdycgLypjYXNlICdSb3cnKi86XG5cdFx0XHRpZihSblsxXT09PScvJyB8fCBSblswXS5zbGljZSgtMikgPT09IFwiLz5cIikge1xuXHRcdFx0XHRpZihyIDwgcmVmZ3Vlc3Mucy5yKSByZWZndWVzcy5zLnIgPSByO1xuXHRcdFx0XHRpZihyID4gcmVmZ3Vlc3MuZS5yKSByZWZndWVzcy5lLnIgPSByO1xuXHRcdFx0XHRpZihSblswXS5zbGljZSgtMikgPT09IFwiLz5cIikge1xuXHRcdFx0XHRcdHJvdyA9IHhsbWxfcGFyc2V4bWx0YWcoUm5bMF0pO1xuXHRcdFx0XHRcdGlmKHJvdy5JbmRleCkgciA9ICtyb3cuSW5kZXggLSAxO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGMgPSAwOyArK3I7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyb3cgPSB4bG1sX3BhcnNleG1sdGFnKFJuWzBdKTtcblx0XHRcdFx0aWYocm93LkluZGV4KSByID0gK3Jvdy5JbmRleCAtIDE7XG5cdFx0XHRcdHJvd29iaiA9IHt9O1xuXHRcdFx0XHRpZihyb3cuQXV0b0ZpdEhlaWdodCA9PSBcIjBcIiB8fCByb3cuSGVpZ2h0KSB7XG5cdFx0XHRcdFx0cm93b2JqLmhweCA9IHBhcnNlSW50KHJvdy5IZWlnaHQsIDEwKTsgcm93b2JqLmhwdCA9IHB4MnB0KHJvd29iai5ocHgpO1xuXHRcdFx0XHRcdHJvd2luZm9bcl0gPSByb3dvYmo7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYocm93LkhpZGRlbiA9PSBcIjFcIikgeyByb3dvYmouaGlkZGVuID0gdHJ1ZTsgcm93aW5mb1tyXSA9IHJvd29iajsgfVxuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAnd29ya3NoZWV0JyAvKmNhc2UgJ1dvcmtzaGVldCcqLzogLyogVE9ETzogcmVhZCByYW5nZSBmcm9tIEZ1bGxSb3dzL0Z1bGxDb2x1bW5zICovXG5cdFx0XHRpZihSblsxXT09PScvJyl7XG5cdFx0XHRcdGlmKCh0bXA9c3RhdGUucG9wKCkpWzBdIT09Um5bM10pIHRocm93IG5ldyBFcnJvcihcIkJhZCBzdGF0ZTogXCIrdG1wLmpvaW4oXCJ8XCIpKTtcblx0XHRcdFx0c2hlZXRuYW1lcy5wdXNoKHNoZWV0bmFtZSk7XG5cdFx0XHRcdGlmKHJlZmd1ZXNzLnMuciA8PSByZWZndWVzcy5lLnIgJiYgcmVmZ3Vlc3Mucy5jIDw9IHJlZmd1ZXNzLmUuYykge1xuXHRcdFx0XHRcdGN1cnNoZWV0W1wiIXJlZlwiXSA9IGVuY29kZV9yYW5nZShyZWZndWVzcyk7XG5cdFx0XHRcdFx0aWYob3B0cy5zaGVldFJvd3MgJiYgb3B0cy5zaGVldFJvd3MgPD0gcmVmZ3Vlc3MuZS5yKSB7XG5cdFx0XHRcdFx0XHRjdXJzaGVldFtcIiFmdWxscmVmXCJdID0gY3Vyc2hlZXRbXCIhcmVmXCJdO1xuXHRcdFx0XHRcdFx0cmVmZ3Vlc3MuZS5yID0gb3B0cy5zaGVldFJvd3MgLSAxO1xuXHRcdFx0XHRcdFx0Y3Vyc2hlZXRbXCIhcmVmXCJdID0gZW5jb2RlX3JhbmdlKHJlZmd1ZXNzKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYobWVyZ2VzLmxlbmd0aCkgY3Vyc2hlZXRbXCIhbWVyZ2VzXCJdID0gbWVyZ2VzO1xuXHRcdFx0XHRpZihjc3R5cy5sZW5ndGggPiAwKSBjdXJzaGVldFtcIiFjb2xzXCJdID0gY3N0eXM7XG5cdFx0XHRcdGlmKHJvd2luZm8ubGVuZ3RoID4gMCkgY3Vyc2hlZXRbXCIhcm93c1wiXSA9IHJvd2luZm87XG5cdFx0XHRcdHNoZWV0c1tzaGVldG5hbWVdID0gY3Vyc2hlZXQ7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZWZndWVzcyA9IHtzOiB7cjoyMDAwMDAwLCBjOjIwMDAwMDB9LCBlOiB7cjowLCBjOjB9IH07XG5cdFx0XHRcdHIgPSBjID0gMDtcblx0XHRcdFx0c3RhdGUucHVzaChbUm5bM10sIGZhbHNlXSk7XG5cdFx0XHRcdHRtcCA9IHhsbWxfcGFyc2V4bWx0YWcoUm5bMF0pO1xuXHRcdFx0XHRzaGVldG5hbWUgPSB1bmVzY2FwZXhtbCh0bXAuTmFtZSk7XG5cdFx0XHRcdGN1cnNoZWV0ID0gKG9wdHMuZGVuc2UgPyBbXSA6IHt9KTtcblx0XHRcdFx0bWVyZ2VzID0gW107XG5cdFx0XHRcdGFycmF5ZiA9IFtdO1xuXHRcdFx0XHRyb3dpbmZvID0gW107XG5cdFx0XHRcdHdzcHJvcHMgPSB7bmFtZTpzaGVldG5hbWUsIEhpZGRlbjowfTtcblx0XHRcdFx0V29ya2Jvb2suU2hlZXRzLnB1c2god3Nwcm9wcyk7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICd0YWJsZScgLypjYXNlICdUYWJsZScqLzpcblx0XHRcdGlmKFJuWzFdPT09Jy8nKXtpZigodG1wPXN0YXRlLnBvcCgpKVswXSE9PVJuWzNdKSB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgc3RhdGU6IFwiK3RtcC5qb2luKFwifFwiKSk7fVxuXHRcdFx0ZWxzZSBpZihSblswXS5zbGljZSgtMikgPT0gXCIvPlwiKSBicmVhaztcblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRzdGF0ZS5wdXNoKFtSblszXSwgZmFsc2VdKTtcblx0XHRcdFx0Y3N0eXMgPSBbXTsgc2VlbmNvbCA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlICdzdHlsZScgLypjYXNlICdTdHlsZScqLzpcblx0XHRcdGlmKFJuWzFdPT09Jy8nKSBwcm9jZXNzX3N0eWxlX3hsbWwoc3R5bGVzLCBzdGFnLCBvcHRzKTtcblx0XHRcdGVsc2Ugc3RhZyA9IHhsbWxfcGFyc2V4bWx0YWcoUm5bMF0pO1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlICdudW1iZXJmb3JtYXQnIC8qY2FzZSAnTnVtYmVyRm9ybWF0JyovOlxuXHRcdFx0c3RhZy5uZiA9IHVuZXNjYXBleG1sKHhsbWxfcGFyc2V4bWx0YWcoUm5bMF0pLkZvcm1hdCB8fCBcIkdlbmVyYWxcIik7XG5cdFx0XHRpZihYTE1MRm9ybWF0TWFwW3N0YWcubmZdKSBzdGFnLm5mID0gWExNTEZvcm1hdE1hcFtzdGFnLm5mXTtcblx0XHRcdGZvcih2YXIgc3NmaWR4ID0gMDsgc3NmaWR4ICE9IDB4MTg4OyArK3NzZmlkeCkgaWYodGFibGVfZm10W3NzZmlkeF0gPT0gc3RhZy5uZikgYnJlYWs7XG5cdFx0XHRpZihzc2ZpZHggPT0gMHgxODgpIGZvcihzc2ZpZHggPSAweDM5OyBzc2ZpZHggIT0gMHgxODg7ICsrc3NmaWR4KSBpZih0YWJsZV9mbXRbc3NmaWR4XSA9PSBudWxsKSB7IFNTRl9sb2FkKHN0YWcubmYsIHNzZmlkeCk7IGJyZWFrOyB9XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgJ2NvbHVtbicgLypjYXNlICdDb2x1bW4nKi86XG5cdFx0XHRpZihzdGF0ZVtzdGF0ZS5sZW5ndGgtMV1bMF0gIT09IC8qJ1RhYmxlJyovJ3RhYmxlJykgYnJlYWs7XG5cdFx0XHRjc3R5ID0geGxtbF9wYXJzZXhtbHRhZyhSblswXSk7XG5cdFx0XHRpZihjc3R5LkhpZGRlbikgeyBjc3R5LmhpZGRlbiA9IHRydWU7IGRlbGV0ZSBjc3R5LkhpZGRlbjsgfVxuXHRcdFx0aWYoY3N0eS5XaWR0aCkgY3N0eS53cHggPSBwYXJzZUludChjc3R5LldpZHRoLCAxMCk7XG5cdFx0XHRpZighc2VlbmNvbCAmJiBjc3R5LndweCA+IDEwKSB7XG5cdFx0XHRcdHNlZW5jb2wgPSB0cnVlOyBNRFcgPSBERUZfTURXOyAvL2ZpbmRfbWR3X3dweChjc3R5LndweCk7XG5cdFx0XHRcdGZvcih2YXIgX2NvbCA9IDA7IF9jb2wgPCBjc3R5cy5sZW5ndGg7ICsrX2NvbCkgaWYoY3N0eXNbX2NvbF0pIHByb2Nlc3NfY29sKGNzdHlzW19jb2xdKTtcblx0XHRcdH1cblx0XHRcdGlmKHNlZW5jb2wpIHByb2Nlc3NfY29sKGNzdHkpO1xuXHRcdFx0Y3N0eXNbKGNzdHkuSW5kZXgtMXx8Y3N0eXMubGVuZ3RoKV0gPSBjc3R5O1xuXHRcdFx0Zm9yKHZhciBpID0gMDsgaSA8ICtjc3R5LlNwYW47ICsraSkgY3N0eXNbY3N0eXMubGVuZ3RoXSA9IGR1cChjc3R5KTtcblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSAnbmFtZWRyYW5nZScgLypjYXNlICdOYW1lZFJhbmdlJyovOlxuXHRcdFx0aWYoUm5bMV09PT0nLycpIGJyZWFrO1xuXHRcdFx0aWYoIVdvcmtib29rLk5hbWVzKSBXb3JrYm9vay5OYW1lcyA9IFtdO1xuXHRcdFx0dmFyIF9OYW1lZFJhbmdlID0gcGFyc2V4bWx0YWcoUm5bMF0pO1xuXHRcdFx0dmFyIF9EZWZpbmVkTmFtZS8qOkRlZmluZWROYW1lKi8gPSAoe1xuXHRcdFx0XHROYW1lOiBfTmFtZWRSYW5nZS5OYW1lLFxuXHRcdFx0XHRSZWY6IHJjX3RvX2ExKF9OYW1lZFJhbmdlLlJlZmVyc1RvLnNsaWNlKDEpLCB7cjowLCBjOjB9KVxuXHRcdFx0fS8qOmFueSovKTtcblx0XHRcdGlmKFdvcmtib29rLlNoZWV0cy5sZW5ndGg+MCkgX0RlZmluZWROYW1lLlNoZWV0PVdvcmtib29rLlNoZWV0cy5sZW5ndGgtMTtcblx0XHRcdC8qOjogaWYoV29ya2Jvb2suTmFtZXMpICovV29ya2Jvb2suTmFtZXMucHVzaChfRGVmaW5lZE5hbWUpO1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlICduYW1lZGNlbGwnIC8qY2FzZSAnTmFtZWRDZWxsJyovOiBicmVhaztcblx0XHRjYXNlICdiJyAvKmNhc2UgJ0InKi86IGJyZWFrO1xuXHRcdGNhc2UgJ2knIC8qY2FzZSAnSScqLzogYnJlYWs7XG5cdFx0Y2FzZSAndScgLypjYXNlICdVJyovOiBicmVhaztcblx0XHRjYXNlICdzJyAvKmNhc2UgJ1MnKi86IGJyZWFrO1xuXHRcdGNhc2UgJ2VtJyAvKmNhc2UgJ0VNJyovOiBicmVhaztcblx0XHRjYXNlICdoMicgLypjYXNlICdIMicqLzogYnJlYWs7XG5cdFx0Y2FzZSAnaDMnIC8qY2FzZSAnSDMnKi86IGJyZWFrO1xuXHRcdGNhc2UgJ3N1YicgLypjYXNlICdTdWInKi86IGJyZWFrO1xuXHRcdGNhc2UgJ3N1cCcgLypjYXNlICdTdXAnKi86IGJyZWFrO1xuXHRcdGNhc2UgJ3NwYW4nIC8qY2FzZSAnU3BhbicqLzogYnJlYWs7XG5cdFx0Y2FzZSAnYWxpZ25tZW50JyAvKmNhc2UgJ0FsaWdubWVudCcqLzpcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgJ2JvcmRlcnMnIC8qY2FzZSAnQm9yZGVycycqLzogYnJlYWs7XG5cdFx0Y2FzZSAnYm9yZGVyJyAvKmNhc2UgJ0JvcmRlcicqLzogYnJlYWs7XG5cdFx0Y2FzZSAnZm9udCcgLypjYXNlICdGb250JyovOlxuXHRcdFx0aWYoUm5bMF0uc2xpY2UoLTIpID09PSBcIi8+XCIpIGJyZWFrO1xuXHRcdFx0ZWxzZSBpZihSblsxXT09PVwiL1wiKSBzcyArPSBzdHIuc2xpY2UoZmlkeCwgUm4uaW5kZXgpO1xuXHRcdFx0ZWxzZSBmaWR4ID0gUm4uaW5kZXggKyBSblswXS5sZW5ndGg7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICdpbnRlcmlvcicgLypjYXNlICdJbnRlcmlvcicqLzpcblx0XHRcdGlmKCFvcHRzLmNlbGxTdHlsZXMpIGJyZWFrO1xuXHRcdFx0c3RhZy5JbnRlcmlvciA9IHhsbWxfcGFyc2V4bWx0YWcoUm5bMF0pO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAncHJvdGVjdGlvbicgLypjYXNlICdQcm90ZWN0aW9uJyovOiBicmVhaztcblxuXHRcdGNhc2UgJ2F1dGhvcicgLypjYXNlICdBdXRob3InKi86XG5cdFx0Y2FzZSAndGl0bGUnIC8qY2FzZSAnVGl0bGUnKi86XG5cdFx0Y2FzZSAnZGVzY3JpcHRpb24nIC8qY2FzZSAnRGVzY3JpcHRpb24nKi86XG5cdFx0Y2FzZSAnY3JlYXRlZCcgLypjYXNlICdDcmVhdGVkJyovOlxuXHRcdGNhc2UgJ2tleXdvcmRzJyAvKmNhc2UgJ0tleXdvcmRzJyovOlxuXHRcdGNhc2UgJ3N1YmplY3QnIC8qY2FzZSAnU3ViamVjdCcqLzpcblx0XHRjYXNlICdjYXRlZ29yeScgLypjYXNlICdDYXRlZ29yeScqLzpcblx0XHRjYXNlICdjb21wYW55JyAvKmNhc2UgJ0NvbXBhbnknKi86XG5cdFx0Y2FzZSAnbGFzdGF1dGhvcicgLypjYXNlICdMYXN0QXV0aG9yJyovOlxuXHRcdGNhc2UgJ2xhc3RzYXZlZCcgLypjYXNlICdMYXN0U2F2ZWQnKi86XG5cdFx0Y2FzZSAnbGFzdHByaW50ZWQnIC8qY2FzZSAnTGFzdFByaW50ZWQnKi86XG5cdFx0Y2FzZSAndmVyc2lvbicgLypjYXNlICdWZXJzaW9uJyovOlxuXHRcdGNhc2UgJ3JldmlzaW9uJyAvKmNhc2UgJ1JldmlzaW9uJyovOlxuXHRcdGNhc2UgJ3RvdGFsdGltZScgLypjYXNlICdUb3RhbFRpbWUnKi86XG5cdFx0Y2FzZSAnaHlwZXJsaW5rYmFzZScgLypjYXNlICdIeXBlcmxpbmtCYXNlJyovOlxuXHRcdGNhc2UgJ21hbmFnZXInIC8qY2FzZSAnTWFuYWdlcicqLzpcblx0XHRjYXNlICdjb250ZW50c3RhdHVzJyAvKmNhc2UgJ0NvbnRlbnRTdGF0dXMnKi86XG5cdFx0Y2FzZSAnaWRlbnRpZmllcicgLypjYXNlICdJZGVudGlmaWVyJyovOlxuXHRcdGNhc2UgJ2xhbmd1YWdlJyAvKmNhc2UgJ0xhbmd1YWdlJyovOlxuXHRcdGNhc2UgJ2FwcG5hbWUnIC8qY2FzZSAnQXBwTmFtZScqLzpcblx0XHRcdGlmKFJuWzBdLnNsaWNlKC0yKSA9PT0gXCIvPlwiKSBicmVhaztcblx0XHRcdGVsc2UgaWYoUm5bMV09PT1cIi9cIikgeGxtbF9zZXRfcHJvcChQcm9wcywgcmF3X1JuMywgc3RyLnNsaWNlKHBpZHgsIFJuLmluZGV4KSk7XG5cdFx0XHRlbHNlIHBpZHggPSBSbi5pbmRleCArIFJuWzBdLmxlbmd0aDtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgJ3BhcmFncmFwaHMnIC8qY2FzZSAnUGFyYWdyYXBocycqLzogYnJlYWs7XG5cblx0XHRjYXNlICdzdHlsZXMnIC8qY2FzZSAnU3R5bGVzJyovOlxuXHRcdGNhc2UgJ3dvcmtib29rJyAvKmNhc2UgJ1dvcmtib29rJyovOlxuXHRcdFx0aWYoUm5bMV09PT0nLycpe2lmKCh0bXA9c3RhdGUucG9wKCkpWzBdIT09Um5bM10pIHRocm93IG5ldyBFcnJvcihcIkJhZCBzdGF0ZTogXCIrdG1wLmpvaW4oXCJ8XCIpKTt9XG5cdFx0XHRlbHNlIHN0YXRlLnB1c2goW1JuWzNdLCBmYWxzZV0pO1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlICdjb21tZW50JyAvKmNhc2UgJ0NvbW1lbnQnKi86XG5cdFx0XHRpZihSblsxXT09PScvJyl7XG5cdFx0XHRcdGlmKCh0bXA9c3RhdGUucG9wKCkpWzBdIT09Um5bM10pIHRocm93IG5ldyBFcnJvcihcIkJhZCBzdGF0ZTogXCIrdG1wLmpvaW4oXCJ8XCIpKTtcblx0XHRcdFx0eGxtbF9jbGVhbl9jb21tZW50KGNvbW1lbnQpO1xuXHRcdFx0XHRjb21tZW50cy5wdXNoKGNvbW1lbnQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c3RhdGUucHVzaChbUm5bM10sIGZhbHNlXSk7XG5cdFx0XHRcdHRtcCA9IHhsbWxfcGFyc2V4bWx0YWcoUm5bMF0pO1xuXHRcdFx0XHRjb21tZW50ID0gKHthOnRtcC5BdXRob3J9Lyo6YW55Ki8pO1xuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlICdhdXRvZmlsdGVyJyAvKmNhc2UgJ0F1dG9GaWx0ZXInKi86XG5cdFx0XHRpZihSblsxXT09PScvJyl7aWYoKHRtcD1zdGF0ZS5wb3AoKSlbMF0hPT1SblszXSkgdGhyb3cgbmV3IEVycm9yKFwiQmFkIHN0YXRlOiBcIit0bXAuam9pbihcInxcIikpO31cblx0XHRcdGVsc2UgaWYoUm5bMF0uY2hhckF0KFJuWzBdLmxlbmd0aC0yKSAhPT0gJy8nKSB7XG5cdFx0XHRcdHZhciBBdXRvRmlsdGVyID0geGxtbF9wYXJzZXhtbHRhZyhSblswXSk7XG5cdFx0XHRcdGN1cnNoZWV0WychYXV0b2ZpbHRlciddID0geyByZWY6cmNfdG9fYTEoQXV0b0ZpbHRlci5SYW5nZSkucmVwbGFjZSgvXFwkL2csXCJcIikgfTtcblx0XHRcdFx0c3RhdGUucHVzaChbUm5bM10sIHRydWVdKTtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSAnbmFtZScgLypjYXNlICdOYW1lJyovOiBicmVhaztcblxuXHRcdGNhc2UgJ2RhdGF2YWxpZGF0aW9uJyAvKmNhc2UgJ0RhdGFWYWxpZGF0aW9uJyovOlxuXHRcdFx0aWYoUm5bMV09PT0nLycpe1xuXHRcdFx0XHRpZigodG1wPXN0YXRlLnBvcCgpKVswXSE9PVJuWzNdKSB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgc3RhdGU6IFwiK3RtcC5qb2luKFwifFwiKSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpZihSblswXS5jaGFyQXQoUm5bMF0ubGVuZ3RoLTIpICE9PSAnLycpIHN0YXRlLnB1c2goW1JuWzNdLCB0cnVlXSk7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgJ3BpeGVsc3BlcmluY2gnIC8qY2FzZSAnUGl4ZWxzUGVySW5jaCcqLzpcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgJ2NvbXBvbmVudG9wdGlvbnMnIC8qY2FzZSAnQ29tcG9uZW50T3B0aW9ucycqLzpcblx0XHRjYXNlICdkb2N1bWVudHByb3BlcnRpZXMnIC8qY2FzZSAnRG9jdW1lbnRQcm9wZXJ0aWVzJyovOlxuXHRcdGNhc2UgJ2N1c3RvbWRvY3VtZW50cHJvcGVydGllcycgLypjYXNlICdDdXN0b21Eb2N1bWVudFByb3BlcnRpZXMnKi86XG5cdFx0Y2FzZSAnb2ZmaWNlZG9jdW1lbnRzZXR0aW5ncycgLypjYXNlICdPZmZpY2VEb2N1bWVudFNldHRpbmdzJyovOlxuXHRcdGNhc2UgJ3Bpdm90dGFibGUnIC8qY2FzZSAnUGl2b3RUYWJsZScqLzpcblx0XHRjYXNlICdwaXZvdGNhY2hlJyAvKmNhc2UgJ1Bpdm90Q2FjaGUnKi86XG5cdFx0Y2FzZSAnbmFtZXMnIC8qY2FzZSAnTmFtZXMnKi86XG5cdFx0Y2FzZSAnbWFwaW5mbycgLypjYXNlICdNYXBJbmZvJyovOlxuXHRcdGNhc2UgJ3BhZ2VicmVha3MnIC8qY2FzZSAnUGFnZUJyZWFrcycqLzpcblx0XHRjYXNlICdxdWVyeXRhYmxlJyAvKmNhc2UgJ1F1ZXJ5VGFibGUnKi86XG5cdFx0Y2FzZSAnc29ydGluZycgLypjYXNlICdTb3J0aW5nJyovOlxuXHRcdGNhc2UgJ3NjaGVtYScgLypjYXNlICdTY2hlbWEnKi86IC8vY2FzZSAnZGF0YScgLypjYXNlICdkYXRhJyovOlxuXHRcdGNhc2UgJ2NvbmRpdGlvbmFsZm9ybWF0dGluZycgLypjYXNlICdDb25kaXRpb25hbEZvcm1hdHRpbmcnKi86XG5cdFx0Y2FzZSAnc21hcnR0YWd0eXBlJyAvKmNhc2UgJ1NtYXJ0VGFnVHlwZScqLzpcblx0XHRjYXNlICdzbWFydHRhZ3MnIC8qY2FzZSAnU21hcnRUYWdzJyovOlxuXHRcdGNhc2UgJ2V4Y2Vsd29ya2Jvb2snIC8qY2FzZSAnRXhjZWxXb3JrYm9vaycqLzpcblx0XHRjYXNlICd3b3JrYm9va29wdGlvbnMnIC8qY2FzZSAnV29ya2Jvb2tPcHRpb25zJyovOlxuXHRcdGNhc2UgJ3dvcmtzaGVldG9wdGlvbnMnIC8qY2FzZSAnV29ya3NoZWV0T3B0aW9ucycqLzpcblx0XHRcdGlmKFJuWzFdPT09Jy8nKXtpZigodG1wPXN0YXRlLnBvcCgpKVswXSE9PVJuWzNdKSB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgc3RhdGU6IFwiK3RtcC5qb2luKFwifFwiKSk7fVxuXHRcdFx0ZWxzZSBpZihSblswXS5jaGFyQXQoUm5bMF0ubGVuZ3RoLTIpICE9PSAnLycpIHN0YXRlLnB1c2goW1JuWzNdLCB0cnVlXSk7XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgJ251bGwnIC8qY2FzZSAnTnVsbCcqLzogYnJlYWs7XG5cblx0XHRkZWZhdWx0OlxuXHRcdFx0LyogRk9EUyBmaWxlIHJvb3QgaXMgPG9mZmljZTpkb2N1bWVudD4gKi9cblx0XHRcdGlmKHN0YXRlLmxlbmd0aCA9PSAwICYmIFJuWzNdID09IFwiZG9jdW1lbnRcIikgcmV0dXJuIHBhcnNlX2ZvZHMoc3RyLCBvcHRzKTtcblx0XHRcdC8qIFVPUyBmaWxlIHJvb3QgaXMgPHVvZjpVT0Y+ICovXG5cdFx0XHRpZihzdGF0ZS5sZW5ndGggPT0gMCAmJiBSblszXSA9PSBcInVvZlwiLypcIlVPRlwiKi8pIHJldHVybiBwYXJzZV9mb2RzKHN0ciwgb3B0cyk7XG5cblx0XHRcdHZhciBzZWVuID0gdHJ1ZTtcblx0XHRcdHN3aXRjaChzdGF0ZVtzdGF0ZS5sZW5ndGgtMV1bMF0pIHtcblx0XHRcdFx0LyogT2ZmaWNlRG9jdW1lbnRTZXR0aW5ncyAqL1xuXHRcdFx0XHRjYXNlICdvZmZpY2Vkb2N1bWVudHNldHRpbmdzJyAvKmNhc2UgJ09mZmljZURvY3VtZW50U2V0dGluZ3MnKi86IHN3aXRjaChSblszXSkge1xuXHRcdFx0XHRcdGNhc2UgJ2FsbG93cG5nJyAvKmNhc2UgJ0FsbG93UE5HJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdyZW1vdmVwZXJzb25hbGluZm9ybWF0aW9uJyAvKmNhc2UgJ1JlbW92ZVBlcnNvbmFsSW5mb3JtYXRpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Rvd25sb2FkY29tcG9uZW50cycgLypjYXNlICdEb3dubG9hZENvbXBvbmVudHMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2xvY2F0aW9ub2Zjb21wb25lbnRzJyAvKmNhc2UgJ0xvY2F0aW9uT2ZDb21wb25lbnRzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb2xvcnMnIC8qY2FzZSAnQ29sb3JzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb2xvcicgLypjYXNlICdDb2xvcicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnaW5kZXgnIC8qY2FzZSAnSW5kZXgnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3JnYicgLypjYXNlICdSR0InKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3RhcmdldHNjcmVlbnNpemUnIC8qY2FzZSAnVGFyZ2V0U2NyZWVuU2l6ZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncmVhZG9ubHlyZWNvbW1lbmRlZCcgLypjYXNlICdSZWFkT25seVJlY29tbWVuZGVkJyovOiBicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OiBzZWVuID0gZmFsc2U7XG5cdFx0XHRcdH0gYnJlYWs7XG5cblx0XHRcdFx0LyogQ29tcG9uZW50T3B0aW9ucyAqL1xuXHRcdFx0XHRjYXNlICdjb21wb25lbnRvcHRpb25zJyAvKmNhc2UgJ0NvbXBvbmVudE9wdGlvbnMnKi86IHN3aXRjaChSblszXSkge1xuXHRcdFx0XHRcdGNhc2UgJ3Rvb2xiYXInIC8qY2FzZSAnVG9vbGJhcicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnaGlkZW9mZmljZWxvZ28nIC8qY2FzZSAnSGlkZU9mZmljZUxvZ28nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3NwcmVhZHNoZWV0YXV0b2ZpdCcgLypjYXNlICdTcHJlYWRzaGVldEF1dG9GaXQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2xhYmVsJyAvKmNhc2UgJ0xhYmVsJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjYXB0aW9uJyAvKmNhc2UgJ0NhcHRpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ21heGhlaWdodCcgLypjYXNlICdNYXhIZWlnaHQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ21heHdpZHRoJyAvKmNhc2UgJ01heFdpZHRoJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICduZXh0c2hlZXRudW1iZXInIC8qY2FzZSAnTmV4dFNoZWV0TnVtYmVyJyovOiBicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OiBzZWVuID0gZmFsc2U7XG5cdFx0XHRcdH0gYnJlYWs7XG5cblx0XHRcdFx0LyogRXhjZWxXb3JrYm9vayAqL1xuXHRcdFx0XHRjYXNlICdleGNlbHdvcmtib29rJyAvKmNhc2UgJ0V4Y2VsV29ya2Jvb2snKi86IHN3aXRjaChSblszXSkge1xuXHRcdFx0XHRcdGNhc2UgJ2RhdGUxOTA0JyAvKmNhc2UgJ0RhdGUxOTA0JyovOlxuXHRcdFx0XHRcdFx0Lyo6OiBpZighV29ya2Jvb2suV0JQcm9wcykgV29ya2Jvb2suV0JQcm9wcyA9IHt9OyAqL1xuXHRcdFx0XHRcdFx0V29ya2Jvb2suV0JQcm9wcy5kYXRlMTkwNCA9IHRydWU7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICd3aW5kb3doZWlnaHQnIC8qY2FzZSAnV2luZG93SGVpZ2h0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd3aW5kb3d3aWR0aCcgLypjYXNlICdXaW5kb3dXaWR0aCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnd2luZG93dG9weCcgLypjYXNlICdXaW5kb3dUb3BYJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd3aW5kb3d0b3B5JyAvKmNhc2UgJ1dpbmRvd1RvcFknKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3RhYnJhdGlvJyAvKmNhc2UgJ1RhYlJhdGlvJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcm90ZWN0c3RydWN0dXJlJyAvKmNhc2UgJ1Byb3RlY3RTdHJ1Y3R1cmUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Byb3RlY3R3aW5kb3cnIC8qY2FzZSAnUHJvdGVjdFdpbmRvdycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHJvdGVjdHdpbmRvd3MnIC8qY2FzZSAnUHJvdGVjdFdpbmRvd3MnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2FjdGl2ZXNoZWV0JyAvKmNhc2UgJ0FjdGl2ZVNoZWV0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdkaXNwbGF5aW5rbm90ZXMnIC8qY2FzZSAnRGlzcGxheUlua05vdGVzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdmaXJzdHZpc2libGVzaGVldCcgLypjYXNlICdGaXJzdFZpc2libGVTaGVldCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc3VwYm9vaycgLypjYXNlICdTdXBCb29rJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzaGVldG5hbWUnIC8qY2FzZSAnU2hlZXROYW1lJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzaGVldGluZGV4JyAvKmNhc2UgJ1NoZWV0SW5kZXgnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3NoZWV0aW5kZXhmaXJzdCcgLypjYXNlICdTaGVldEluZGV4Rmlyc3QnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3NoZWV0aW5kZXhsYXN0JyAvKmNhc2UgJ1NoZWV0SW5kZXhMYXN0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdkbGwnIC8qY2FzZSAnRGxsJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhY2NlcHRsYWJlbHNpbmZvcm11bGFzJyAvKmNhc2UgJ0FjY2VwdExhYmVsc0luRm9ybXVsYXMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Rvbm90c2F2ZWxpbmt2YWx1ZXMnIC8qY2FzZSAnRG9Ob3RTYXZlTGlua1ZhbHVlcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnaXRlcmF0aW9uJyAvKmNhc2UgJ0l0ZXJhdGlvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbWF4aXRlcmF0aW9ucycgLypjYXNlICdNYXhJdGVyYXRpb25zJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdtYXhjaGFuZ2UnIC8qY2FzZSAnTWF4Q2hhbmdlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwYXRoJyAvKmNhc2UgJ1BhdGgnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3hjdCcgLypjYXNlICdYY3QnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvdW50JyAvKmNhc2UgJ0NvdW50JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzZWxlY3RlZHNoZWV0cycgLypjYXNlICdTZWxlY3RlZFNoZWV0cycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY2FsY3VsYXRpb24nIC8qY2FzZSAnQ2FsY3VsYXRpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3VuY2FsY2VkJyAvKmNhc2UgJ1VuY2FsY2VkJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzdGFydHVwcHJvbXB0JyAvKmNhc2UgJ1N0YXJ0dXBQcm9tcHQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NybicgLypjYXNlICdDcm4nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2V4dGVybm5hbWUnIC8qY2FzZSAnRXh0ZXJuTmFtZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZm9ybXVsYScgLypjYXNlICdGb3JtdWxhJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb2xmaXJzdCcgLypjYXNlICdDb2xGaXJzdCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY29sbGFzdCcgLypjYXNlICdDb2xMYXN0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd3YW50YWR2aXNlJyAvKmNhc2UgJ1dhbnRBZHZpc2UnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Jvb2xlYW4nIC8qY2FzZSAnQm9vbGVhbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZXJyb3InIC8qY2FzZSAnRXJyb3InKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3RleHQnIC8qY2FzZSAnVGV4dCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnb2xlJyAvKmNhc2UgJ09MRScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbm9hdXRvcmVjb3ZlcicgLypjYXNlICdOb0F1dG9SZWNvdmVyJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwdWJsaXNob2JqZWN0cycgLypjYXNlICdQdWJsaXNoT2JqZWN0cycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZG9ub3RjYWxjdWxhdGViZWZvcmVzYXZlJyAvKmNhc2UgJ0RvTm90Q2FsY3VsYXRlQmVmb3JlU2F2ZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbnVtYmVyJyAvKmNhc2UgJ051bWJlcicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncmVmbW9kZXIxYzEnIC8qY2FzZSAnUmVmTW9kZVIxQzEnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2VtYmVkc2F2ZXNtYXJ0dGFncycgLypjYXNlICdFbWJlZFNhdmVTbWFydFRhZ3MnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6IHNlZW4gPSBmYWxzZTtcblx0XHRcdFx0fSBicmVhaztcblxuXHRcdFx0XHQvKiBXb3JrYm9va09wdGlvbnMgKi9cblx0XHRcdFx0Y2FzZSAnd29ya2Jvb2tvcHRpb25zJyAvKmNhc2UgJ1dvcmtib29rT3B0aW9ucycqLzogc3dpdGNoKFJuWzNdKSB7XG5cdFx0XHRcdFx0Y2FzZSAnb3djdmVyc2lvbicgLypjYXNlICdPV0NWZXJzaW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdoZWlnaHQnIC8qY2FzZSAnSGVpZ2h0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd3aWR0aCcgLypjYXNlICdXaWR0aCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDogc2VlbiA9IGZhbHNlO1xuXHRcdFx0XHR9IGJyZWFrO1xuXG5cdFx0XHRcdC8qIFdvcmtzaGVldE9wdGlvbnMgKi9cblx0XHRcdFx0Y2FzZSAnd29ya3NoZWV0b3B0aW9ucycgLypjYXNlICdXb3Jrc2hlZXRPcHRpb25zJyovOiBzd2l0Y2goUm5bM10pIHtcblx0XHRcdFx0XHRjYXNlICd2aXNpYmxlJyAvKmNhc2UgJ1Zpc2libGUnKi86XG5cdFx0XHRcdFx0XHRpZihSblswXS5zbGljZSgtMikgPT09IFwiLz5cIil7LyogZW1wdHkgKi99XG5cdFx0XHRcdFx0XHRlbHNlIGlmKFJuWzFdPT09XCIvXCIpIHN3aXRjaChzdHIuc2xpY2UocGlkeCwgUm4uaW5kZXgpKSB7XG5cdFx0XHRcdFx0XHRcdGNhc2UgXCJTaGVldEhpZGRlblwiOiB3c3Byb3BzLkhpZGRlbiA9IDE7IGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRjYXNlIFwiU2hlZXRWZXJ5SGlkZGVuXCI6IHdzcHJvcHMuSGlkZGVuID0gMjsgYnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHBpZHggPSBSbi5pbmRleCArIFJuWzBdLmxlbmd0aDtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2hlYWRlcicgLypjYXNlICdIZWFkZXInKi86XG5cdFx0XHRcdFx0XHRpZighY3Vyc2hlZXRbJyFtYXJnaW5zJ10pIGRlZmF1bHRfbWFyZ2lucyhjdXJzaGVldFsnIW1hcmdpbnMnXT17fSwgJ3hsbWwnKTtcblx0XHRcdFx0XHRcdGlmKCFpc05hTigrcGFyc2V4bWx0YWcoUm5bMF0pLk1hcmdpbikpIGN1cnNoZWV0WychbWFyZ2lucyddLmhlYWRlciA9ICtwYXJzZXhtbHRhZyhSblswXSkuTWFyZ2luO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZm9vdGVyJyAvKmNhc2UgJ0Zvb3RlcicqLzpcblx0XHRcdFx0XHRcdGlmKCFjdXJzaGVldFsnIW1hcmdpbnMnXSkgZGVmYXVsdF9tYXJnaW5zKGN1cnNoZWV0WychbWFyZ2lucyddPXt9LCAneGxtbCcpO1xuXHRcdFx0XHRcdFx0aWYoIWlzTmFOKCtwYXJzZXhtbHRhZyhSblswXSkuTWFyZ2luKSkgY3Vyc2hlZXRbJyFtYXJnaW5zJ10uZm9vdGVyID0gK3BhcnNleG1sdGFnKFJuWzBdKS5NYXJnaW47XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdwYWdlbWFyZ2lucycgLypjYXNlICdQYWdlTWFyZ2lucycqLzpcblx0XHRcdFx0XHRcdHZhciBwYWdlbWFyZ2lucyA9IHBhcnNleG1sdGFnKFJuWzBdKTtcblx0XHRcdFx0XHRcdGlmKCFjdXJzaGVldFsnIW1hcmdpbnMnXSkgZGVmYXVsdF9tYXJnaW5zKGN1cnNoZWV0WychbWFyZ2lucyddPXt9LCd4bG1sJyk7XG5cdFx0XHRcdFx0XHRpZighaXNOYU4oK3BhZ2VtYXJnaW5zLlRvcCkpIGN1cnNoZWV0WychbWFyZ2lucyddLnRvcCA9ICtwYWdlbWFyZ2lucy5Ub3A7XG5cdFx0XHRcdFx0XHRpZighaXNOYU4oK3BhZ2VtYXJnaW5zLkxlZnQpKSBjdXJzaGVldFsnIW1hcmdpbnMnXS5sZWZ0ID0gK3BhZ2VtYXJnaW5zLkxlZnQ7XG5cdFx0XHRcdFx0XHRpZighaXNOYU4oK3BhZ2VtYXJnaW5zLlJpZ2h0KSkgY3Vyc2hlZXRbJyFtYXJnaW5zJ10ucmlnaHQgPSArcGFnZW1hcmdpbnMuUmlnaHQ7XG5cdFx0XHRcdFx0XHRpZighaXNOYU4oK3BhZ2VtYXJnaW5zLkJvdHRvbSkpIGN1cnNoZWV0WychbWFyZ2lucyddLmJvdHRvbSA9ICtwYWdlbWFyZ2lucy5Cb3R0b207XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdkaXNwbGF5cmlnaHR0b2xlZnQnIC8qY2FzZSAnRGlzcGxheVJpZ2h0VG9MZWZ0JyovOlxuXHRcdFx0XHRcdFx0aWYoIVdvcmtib29rLlZpZXdzKSBXb3JrYm9vay5WaWV3cyA9IFtdO1xuXHRcdFx0XHRcdFx0aWYoIVdvcmtib29rLlZpZXdzWzBdKSBXb3JrYm9vay5WaWV3c1swXSA9IHt9O1xuXHRcdFx0XHRcdFx0V29ya2Jvb2suVmlld3NbMF0uUlRMID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdFx0Y2FzZSAnZnJlZXplcGFuZXMnIC8qY2FzZSAnRnJlZXplUGFuZXMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Zyb3plbm5vc3BsaXQnIC8qY2FzZSAnRnJvemVuTm9TcGxpdCcqLzogYnJlYWs7XG5cblx0XHRcdFx0XHRjYXNlICdzcGxpdGhvcml6b250YWwnIC8qY2FzZSAnU3BsaXRIb3Jpem9udGFsJyovOlxuXHRcdFx0XHRcdGNhc2UgJ3NwbGl0dmVydGljYWwnIC8qY2FzZSAnU3BsaXRWZXJ0aWNhbCcqLzpcblx0XHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdFx0Y2FzZSAnZG9ub3RkaXNwbGF5Z3JpZGxpbmVzJyAvKmNhc2UgJ0RvTm90RGlzcGxheUdyaWRsaW5lcycqLzpcblx0XHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdFx0Y2FzZSAnYWN0aXZlcm93JyAvKmNhc2UgJ0FjdGl2ZVJvdycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYWN0aXZlY29sJyAvKmNhc2UgJ0FjdGl2ZUNvbCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndG9wcm93Ym90dG9tcGFuZScgLypjYXNlICdUb3BSb3dCb3R0b21QYW5lJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdsZWZ0Y29sdW1ucmlnaHRwYW5lJyAvKmNhc2UgJ0xlZnRDb2x1bW5SaWdodFBhbmUnKi86IGJyZWFrO1xuXG5cdFx0XHRcdFx0Y2FzZSAndW5zeW5jZWQnIC8qY2FzZSAnVW5zeW5jZWQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3ByaW50JyAvKmNhc2UgJ1ByaW50JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcmludGVycm9ycycgLypjYXNlICdQcmludEVycm9ycycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncGFuZXMnIC8qY2FzZSAnUGFuZXMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3NjYWxlJyAvKmNhc2UgJ1NjYWxlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwYW5lJyAvKmNhc2UgJ1BhbmUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ251bWJlcicgLypjYXNlICdOdW1iZXInKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2xheW91dCcgLypjYXNlICdMYXlvdXQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BhZ2VzZXR1cCcgLypjYXNlICdQYWdlU2V0dXAnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3NlbGVjdGVkJyAvKmNhc2UgJ1NlbGVjdGVkJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcm90ZWN0b2JqZWN0cycgLypjYXNlICdQcm90ZWN0T2JqZWN0cycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZW5hYmxlc2VsZWN0aW9uJyAvKmNhc2UgJ0VuYWJsZVNlbGVjdGlvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHJvdGVjdHNjZW5hcmlvcycgLypjYXNlICdQcm90ZWN0U2NlbmFyaW9zJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd2YWxpZHByaW50ZXJpbmZvJyAvKmNhc2UgJ1ZhbGlkUHJpbnRlckluZm8nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2hvcml6b250YWxyZXNvbHV0aW9uJyAvKmNhc2UgJ0hvcml6b250YWxSZXNvbHV0aW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd2ZXJ0aWNhbHJlc29sdXRpb24nIC8qY2FzZSAnVmVydGljYWxSZXNvbHV0aW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdudW1iZXJvZmNvcGllcycgLypjYXNlICdOdW1iZXJvZkNvcGllcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYWN0aXZlcGFuZScgLypjYXNlICdBY3RpdmVQYW5lJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd0b3Byb3d2aXNpYmxlJyAvKmNhc2UgJ1RvcFJvd1Zpc2libGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2xlZnRjb2x1bW52aXNpYmxlJyAvKmNhc2UgJ0xlZnRDb2x1bW5WaXNpYmxlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdmaXR0b3BhZ2UnIC8qY2FzZSAnRml0VG9QYWdlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdyYW5nZXNlbGVjdGlvbicgLypjYXNlICdSYW5nZVNlbGVjdGlvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncGFwZXJzaXplaW5kZXgnIC8qY2FzZSAnUGFwZXJTaXplSW5kZXgnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BhZ2VsYXlvdXR6b29tJyAvKmNhc2UgJ1BhZ2VMYXlvdXRab29tJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwYWdlYnJlYWt6b29tJyAvKmNhc2UgJ1BhZ2VCcmVha1pvb20nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2ZpbHRlcm9uJyAvKmNhc2UgJ0ZpbHRlck9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdmaXR3aWR0aCcgLypjYXNlICdGaXRXaWR0aCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZml0aGVpZ2h0JyAvKmNhc2UgJ0ZpdEhlaWdodCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY29tbWVudHNsYXlvdXQnIC8qY2FzZSAnQ29tbWVudHNMYXlvdXQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3pvb20nIC8qY2FzZSAnWm9vbScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbGVmdHRvcmlnaHQnIC8qY2FzZSAnTGVmdFRvUmlnaHQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2dyaWRsaW5lcycgLypjYXNlICdHcmlkbGluZXMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2FsbG93c29ydCcgLypjYXNlICdBbGxvd1NvcnQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2FsbG93ZmlsdGVyJyAvKmNhc2UgJ0FsbG93RmlsdGVyJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhbGxvd2luc2VydHJvd3MnIC8qY2FzZSAnQWxsb3dJbnNlcnRSb3dzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhbGxvd2RlbGV0ZXJvd3MnIC8qY2FzZSAnQWxsb3dEZWxldGVSb3dzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhbGxvd2luc2VydGNvbHMnIC8qY2FzZSAnQWxsb3dJbnNlcnRDb2xzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhbGxvd2RlbGV0ZWNvbHMnIC8qY2FzZSAnQWxsb3dEZWxldGVDb2xzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhbGxvd2luc2VydGh5cGVybGlua3MnIC8qY2FzZSAnQWxsb3dJbnNlcnRIeXBlcmxpbmtzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhbGxvd2Zvcm1hdGNlbGxzJyAvKmNhc2UgJ0FsbG93Rm9ybWF0Q2VsbHMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2FsbG93c2l6ZWNvbHMnIC8qY2FzZSAnQWxsb3dTaXplQ29scycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYWxsb3dzaXplcm93cycgLypjYXNlICdBbGxvd1NpemVSb3dzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdub3N1bW1hcnlyb3dzYmVsb3dkZXRhaWwnIC8qY2FzZSAnTm9TdW1tYXJ5Um93c0JlbG93RGV0YWlsJyovOlxuXHRcdFx0XHRcdFx0aWYoIWN1cnNoZWV0W1wiIW91dGxpbmVcIl0pIGN1cnNoZWV0W1wiIW91dGxpbmVcIl0gPSB7fTtcblx0XHRcdFx0XHRcdGN1cnNoZWV0W1wiIW91dGxpbmVcIl0uYWJvdmUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndGFiY29sb3JpbmRleCcgLypjYXNlICdUYWJDb2xvckluZGV4JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdkb25vdGRpc3BsYXloZWFkaW5ncycgLypjYXNlICdEb05vdERpc3BsYXlIZWFkaW5ncycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc2hvd3BhZ2VsYXlvdXR6b29tJyAvKmNhc2UgJ1Nob3dQYWdlTGF5b3V0Wm9vbScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbm9zdW1tYXJ5Y29sdW1uc3JpZ2h0ZGV0YWlsJyAvKmNhc2UgJ05vU3VtbWFyeUNvbHVtbnNSaWdodERldGFpbCcqLzpcblx0XHRcdFx0XHRcdGlmKCFjdXJzaGVldFtcIiFvdXRsaW5lXCJdKSBjdXJzaGVldFtcIiFvdXRsaW5lXCJdID0ge307XG5cdFx0XHRcdFx0XHRjdXJzaGVldFtcIiFvdXRsaW5lXCJdLmxlZnQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYmxhY2thbmR3aGl0ZScgLypjYXNlICdCbGFja0FuZFdoaXRlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdkb25vdGRpc3BsYXl6ZXJvcycgLypjYXNlICdEb05vdERpc3BsYXlaZXJvcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZGlzcGxheXBhZ2VicmVhaycgLypjYXNlICdEaXNwbGF5UGFnZUJyZWFrJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdyb3djb2xoZWFkaW5ncycgLypjYXNlICdSb3dDb2xIZWFkaW5ncycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZG9ub3RkaXNwbGF5b3V0bGluZScgLypjYXNlICdEb05vdERpc3BsYXlPdXRsaW5lJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdub29yaWVudGF0aW9uJyAvKmNhc2UgJ05vT3JpZW50YXRpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2FsbG93dXNlcGl2b3R0YWJsZXMnIC8qY2FzZSAnQWxsb3dVc2VQaXZvdFRhYmxlcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnemVyb2hlaWdodCcgLypjYXNlICdaZXJvSGVpZ2h0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd2aWV3YWJsZXJhbmdlJyAvKmNhc2UgJ1ZpZXdhYmxlUmFuZ2UnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3NlbGVjdGlvbicgLypjYXNlICdTZWxlY3Rpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Byb3RlY3Rjb250ZW50cycgLypjYXNlICdQcm90ZWN0Q29udGVudHMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6IHNlZW4gPSBmYWxzZTtcblx0XHRcdFx0fSBicmVhaztcblxuXHRcdFx0XHQvKiBQaXZvdFRhYmxlICovXG5cdFx0XHRcdGNhc2UgJ3Bpdm90dGFibGUnIC8qY2FzZSAnUGl2b3RUYWJsZScqLzogY2FzZSAncGl2b3RjYWNoZScgLypjYXNlICdQaXZvdENhY2hlJyovOiBzd2l0Y2goUm5bM10pIHtcblx0XHRcdFx0XHRjYXNlICdpbW1lZGlhdGVpdGVtc29uZHJvcCcgLypjYXNlICdJbW1lZGlhdGVJdGVtc09uRHJvcCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc2hvd3BhZ2VtdWx0aXBsZWl0ZW1sYWJlbCcgLypjYXNlICdTaG93UGFnZU11bHRpcGxlSXRlbUxhYmVsJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb21wYWN0cm93aW5kZW50JyAvKmNhc2UgJ0NvbXBhY3RSb3dJbmRlbnQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2xvY2F0aW9uJyAvKmNhc2UgJ0xvY2F0aW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwaXZvdGZpZWxkJyAvKmNhc2UgJ1Bpdm90RmllbGQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ29yaWVudGF0aW9uJyAvKmNhc2UgJ09yaWVudGF0aW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdsYXlvdXRmb3JtJyAvKmNhc2UgJ0xheW91dEZvcm0nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2xheW91dHN1YnRvdGFsbG9jYXRpb24nIC8qY2FzZSAnTGF5b3V0U3VidG90YWxMb2NhdGlvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbGF5b3V0Y29tcGFjdHJvdycgLypjYXNlICdMYXlvdXRDb21wYWN0Um93JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwb3NpdGlvbicgLypjYXNlICdQb3NpdGlvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncGl2b3RpdGVtJyAvKmNhc2UgJ1Bpdm90SXRlbScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZGF0YXR5cGUnIC8qY2FzZSAnRGF0YVR5cGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2RhdGFmaWVsZCcgLypjYXNlICdEYXRhRmllbGQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3NvdXJjZW5hbWUnIC8qY2FzZSAnU291cmNlTmFtZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncGFyZW50ZmllbGQnIC8qY2FzZSAnUGFyZW50RmllbGQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3B0bGluZWl0ZW1zJyAvKmNhc2UgJ1BUTGluZUl0ZW1zJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwdGxpbmVpdGVtJyAvKmNhc2UgJ1BUTGluZUl0ZW0nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvdW50b2ZzYW1laXRlbXMnIC8qY2FzZSAnQ291bnRPZlNhbWVJdGVtcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnaXRlbScgLypjYXNlICdJdGVtJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdpdGVtdHlwZScgLypjYXNlICdJdGVtVHlwZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHRzb3VyY2UnIC8qY2FzZSAnUFRTb3VyY2UnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NhY2hlaW5kZXgnIC8qY2FzZSAnQ2FjaGVJbmRleCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY29uc29saWRhdGlvbnJlZmVyZW5jZScgLypjYXNlICdDb25zb2xpZGF0aW9uUmVmZXJlbmNlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdmaWxlbmFtZScgLypjYXNlICdGaWxlTmFtZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncmVmZXJlbmNlJyAvKmNhc2UgJ1JlZmVyZW5jZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbm9jb2x1bW5ncmFuZCcgLypjYXNlICdOb0NvbHVtbkdyYW5kJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdub3Jvd2dyYW5kJyAvKmNhc2UgJ05vUm93R3JhbmQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2JsYW5rbGluZWFmdGVyaXRlbXMnIC8qY2FzZSAnQmxhbmtMaW5lQWZ0ZXJJdGVtcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnaGlkZGVuJyAvKmNhc2UgJ0hpZGRlbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc3VidG90YWwnIC8qY2FzZSAnU3VidG90YWwnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Jhc2VmaWVsZCcgLypjYXNlICdCYXNlRmllbGQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ21hcGNoaWxkaXRlbXMnIC8qY2FzZSAnTWFwQ2hpbGRJdGVtcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZnVuY3Rpb24nIC8qY2FzZSAnRnVuY3Rpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3JlZnJlc2hvbmZpbGVvcGVuJyAvKmNhc2UgJ1JlZnJlc2hPbkZpbGVPcGVuJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcmludHNldHRpdGxlcycgLypjYXNlICdQcmludFNldFRpdGxlcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbWVyZ2VsYWJlbHMnIC8qY2FzZSAnTWVyZ2VMYWJlbHMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2RlZmF1bHR2ZXJzaW9uJyAvKmNhc2UgJ0RlZmF1bHRWZXJzaW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdyZWZyZXNobmFtZScgLypjYXNlICdSZWZyZXNoTmFtZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncmVmcmVzaGRhdGUnIC8qY2FzZSAnUmVmcmVzaERhdGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3JlZnJlc2hkYXRlY29weScgLypjYXNlICdSZWZyZXNoRGF0ZUNvcHknKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3ZlcnNpb25sYXN0cmVmcmVzaCcgLypjYXNlICdWZXJzaW9uTGFzdFJlZnJlc2gnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3ZlcnNpb25sYXN0dXBkYXRlJyAvKmNhc2UgJ1ZlcnNpb25MYXN0VXBkYXRlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd2ZXJzaW9udXBkYXRlYWJsZW1pbicgLypjYXNlICdWZXJzaW9uVXBkYXRlYWJsZU1pbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndmVyc2lvbnJlZnJlc2hhYmxlbWluJyAvKmNhc2UgJ1ZlcnNpb25SZWZyZXNoYWJsZU1pbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY2FsY3VsYXRpb24nIC8qY2FzZSAnQ2FsY3VsYXRpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6IHNlZW4gPSBmYWxzZTtcblx0XHRcdFx0fSBicmVhaztcblxuXHRcdFx0XHQvKiBQYWdlQnJlYWtzICovXG5cdFx0XHRcdGNhc2UgJ3BhZ2VicmVha3MnIC8qY2FzZSAnUGFnZUJyZWFrcycqLzogc3dpdGNoKFJuWzNdKSB7XG5cdFx0XHRcdFx0Y2FzZSAnY29sYnJlYWtzJyAvKmNhc2UgJ0NvbEJyZWFrcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY29sYnJlYWsnIC8qY2FzZSAnQ29sQnJlYWsnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Jvd2JyZWFrcycgLypjYXNlICdSb3dCcmVha3MnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Jvd2JyZWFrJyAvKmNhc2UgJ1Jvd0JyZWFrJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb2xzdGFydCcgLypjYXNlICdDb2xTdGFydCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY29sZW5kJyAvKmNhc2UgJ0NvbEVuZCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncm93ZW5kJyAvKmNhc2UgJ1Jvd0VuZCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDogc2VlbiA9IGZhbHNlO1xuXHRcdFx0XHR9IGJyZWFrO1xuXG5cdFx0XHRcdC8qIEF1dG9GaWx0ZXIgKi9cblx0XHRcdFx0Y2FzZSAnYXV0b2ZpbHRlcicgLypjYXNlICdBdXRvRmlsdGVyJyovOiBzd2l0Y2goUm5bM10pIHtcblx0XHRcdFx0XHRjYXNlICdhdXRvZmlsdGVyY29sdW1uJyAvKmNhc2UgJ0F1dG9GaWx0ZXJDb2x1bW4nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2F1dG9maWx0ZXJjb25kaXRpb24nIC8qY2FzZSAnQXV0b0ZpbHRlckNvbmRpdGlvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYXV0b2ZpbHRlcmFuZCcgLypjYXNlICdBdXRvRmlsdGVyQW5kJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhdXRvZmlsdGVyb3InIC8qY2FzZSAnQXV0b0ZpbHRlck9yJyovOiBicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OiBzZWVuID0gZmFsc2U7XG5cdFx0XHRcdH0gYnJlYWs7XG5cblx0XHRcdFx0LyogUXVlcnlUYWJsZSAqL1xuXHRcdFx0XHRjYXNlICdxdWVyeXRhYmxlJyAvKmNhc2UgJ1F1ZXJ5VGFibGUnKi86IHN3aXRjaChSblszXSkge1xuXHRcdFx0XHRcdGNhc2UgJ2lkJyAvKmNhc2UgJ0lkJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhdXRvZm9ybWF0Zm9udCcgLypjYXNlICdBdXRvRm9ybWF0Rm9udCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYXV0b2Zvcm1hdHBhdHRlcm4nIC8qY2FzZSAnQXV0b0Zvcm1hdFBhdHRlcm4nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3F1ZXJ5c291cmNlJyAvKmNhc2UgJ1F1ZXJ5U291cmNlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdxdWVyeXR5cGUnIC8qY2FzZSAnUXVlcnlUeXBlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdlbmFibGVyZWRpcmVjdGlvbnMnIC8qY2FzZSAnRW5hYmxlUmVkaXJlY3Rpb25zJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdyZWZyZXNoZWRpbnhsOScgLypjYXNlICdSZWZyZXNoZWRJblhsOScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndXJsc3RyaW5nJyAvKmNhc2UgJ1VSTFN0cmluZycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnaHRtbHRhYmxlcycgLypjYXNlICdIVE1MVGFibGVzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb25uZWN0aW9uJyAvKmNhc2UgJ0Nvbm5lY3Rpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvbW1hbmR0ZXh0JyAvKmNhc2UgJ0NvbW1hbmRUZXh0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdyZWZyZXNoaW5mbycgLypjYXNlICdSZWZyZXNoSW5mbycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbm90aXRsZXMnIC8qY2FzZSAnTm9UaXRsZXMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ25leHRpZCcgLypjYXNlICdOZXh0SWQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvbHVtbmluZm8nIC8qY2FzZSAnQ29sdW1uSW5mbycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnb3ZlcndyaXRlY2VsbHMnIC8qY2FzZSAnT3ZlcndyaXRlQ2VsbHMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Rvbm90cHJvbXB0Zm9yZmlsZScgLypjYXNlICdEb05vdFByb21wdEZvckZpbGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3RleHR3aXphcmRzZXR0aW5ncycgLypjYXNlICdUZXh0V2l6YXJkU2V0dGluZ3MnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3NvdXJjZScgLypjYXNlICdTb3VyY2UnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ251bWJlcicgLypjYXNlICdOdW1iZXInKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2RlY2ltYWwnIC8qY2FzZSAnRGVjaW1hbCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndGhvdXNhbmRzZXBhcmF0b3InIC8qY2FzZSAnVGhvdXNhbmRTZXBhcmF0b3InKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3RyYWlsaW5nbWludXNudW1iZXJzJyAvKmNhc2UgJ1RyYWlsaW5nTWludXNOdW1iZXJzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdmb3JtYXRzZXR0aW5ncycgLypjYXNlICdGb3JtYXRTZXR0aW5ncycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZmllbGR0eXBlJyAvKmNhc2UgJ0ZpZWxkVHlwZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZGVsaW1pdGVycycgLypjYXNlICdEZWxpbWl0ZXJzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd0YWInIC8qY2FzZSAnVGFiJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb21tYScgLypjYXNlICdDb21tYScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYXV0b2Zvcm1hdG5hbWUnIC8qY2FzZSAnQXV0b0Zvcm1hdE5hbWUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3ZlcnNpb25sYXN0ZWRpdCcgLypjYXNlICdWZXJzaW9uTGFzdEVkaXQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3ZlcnNpb25sYXN0cmVmcmVzaCcgLypjYXNlICdWZXJzaW9uTGFzdFJlZnJlc2gnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6IHNlZW4gPSBmYWxzZTtcblx0XHRcdFx0fSBicmVhaztcblxuXHRcdFx0XHRjYXNlICdkYXRhdmFsaWRhdGlvbicgLypjYXNlICdEYXRhVmFsaWRhdGlvbicqLzpcblx0XHRcdFx0c3dpdGNoKFJuWzNdKSB7XG5cdFx0XHRcdFx0Y2FzZSAncmFuZ2UnIC8qY2FzZSAnUmFuZ2UnKi86IGJyZWFrO1xuXG5cdFx0XHRcdFx0Y2FzZSAndHlwZScgLypjYXNlICdUeXBlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdtaW4nIC8qY2FzZSAnTWluJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdtYXgnIC8qY2FzZSAnTWF4JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzb3J0JyAvKmNhc2UgJ1NvcnQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Rlc2NlbmRpbmcnIC8qY2FzZSAnRGVzY2VuZGluZycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnb3JkZXInIC8qY2FzZSAnT3JkZXInKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Nhc2VzZW5zaXRpdmUnIC8qY2FzZSAnQ2FzZVNlbnNpdGl2ZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndmFsdWUnIC8qY2FzZSAnVmFsdWUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Vycm9yc3R5bGUnIC8qY2FzZSAnRXJyb3JTdHlsZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZXJyb3JtZXNzYWdlJyAvKmNhc2UgJ0Vycm9yTWVzc2FnZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZXJyb3J0aXRsZScgLypjYXNlICdFcnJvclRpdGxlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdpbnB1dG1lc3NhZ2UnIC8qY2FzZSAnSW5wdXRNZXNzYWdlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdpbnB1dHRpdGxlJyAvKmNhc2UgJ0lucHV0VGl0bGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvbWJvaGlkZScgLypjYXNlICdDb21ib0hpZGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2lucHV0aGlkZScgLypjYXNlICdJbnB1dEhpZGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvbmRpdGlvbicgLypjYXNlICdDb25kaXRpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3F1YWxpZmllcicgLypjYXNlICdRdWFsaWZpZXInKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3VzZWJsYW5rJyAvKmNhc2UgJ1VzZUJsYW5rJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd2YWx1ZTEnIC8qY2FzZSAnVmFsdWUxJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd2YWx1ZTInIC8qY2FzZSAnVmFsdWUyJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdmb3JtYXQnIC8qY2FzZSAnRm9ybWF0JyovOiBicmVhaztcblxuXHRcdFx0XHRcdGNhc2UgJ2NlbGxyYW5nZWxpc3QnIC8qY2FzZSAnQ2VsbFJhbmdlTGlzdCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDogc2VlbiA9IGZhbHNlO1xuXHRcdFx0XHR9IGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgJ3NvcnRpbmcnIC8qY2FzZSAnU29ydGluZycqLzpcblx0XHRcdFx0Y2FzZSAnY29uZGl0aW9uYWxmb3JtYXR0aW5nJyAvKmNhc2UgJ0NvbmRpdGlvbmFsRm9ybWF0dGluZycqLzpcblx0XHRcdFx0c3dpdGNoKFJuWzNdKSB7XG5cdFx0XHRcdFx0Y2FzZSAncmFuZ2UnIC8qY2FzZSAnUmFuZ2UnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3R5cGUnIC8qY2FzZSAnVHlwZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbWluJyAvKmNhc2UgJ01pbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbWF4JyAvKmNhc2UgJ01heCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc29ydCcgLypjYXNlICdTb3J0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdkZXNjZW5kaW5nJyAvKmNhc2UgJ0Rlc2NlbmRpbmcnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ29yZGVyJyAvKmNhc2UgJ09yZGVyJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjYXNlc2Vuc2l0aXZlJyAvKmNhc2UgJ0Nhc2VTZW5zaXRpdmUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3ZhbHVlJyAvKmNhc2UgJ1ZhbHVlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdlcnJvcnN0eWxlJyAvKmNhc2UgJ0Vycm9yU3R5bGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Vycm9ybWVzc2FnZScgLypjYXNlICdFcnJvck1lc3NhZ2UnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Vycm9ydGl0bGUnIC8qY2FzZSAnRXJyb3JUaXRsZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY2VsbHJhbmdlbGlzdCcgLypjYXNlICdDZWxsUmFuZ2VMaXN0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdpbnB1dG1lc3NhZ2UnIC8qY2FzZSAnSW5wdXRNZXNzYWdlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdpbnB1dHRpdGxlJyAvKmNhc2UgJ0lucHV0VGl0bGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvbWJvaGlkZScgLypjYXNlICdDb21ib0hpZGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2lucHV0aGlkZScgLypjYXNlICdJbnB1dEhpZGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvbmRpdGlvbicgLypjYXNlICdDb25kaXRpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3F1YWxpZmllcicgLypjYXNlICdRdWFsaWZpZXInKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3VzZWJsYW5rJyAvKmNhc2UgJ1VzZUJsYW5rJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd2YWx1ZTEnIC8qY2FzZSAnVmFsdWUxJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd2YWx1ZTInIC8qY2FzZSAnVmFsdWUyJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdmb3JtYXQnIC8qY2FzZSAnRm9ybWF0JyovOiBicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OiBzZWVuID0gZmFsc2U7XG5cdFx0XHRcdH0gYnJlYWs7XG5cblx0XHRcdFx0LyogTWFwSW5mbyAoc2NoZW1hKSAqL1xuXHRcdFx0XHRjYXNlICdtYXBpbmZvJyAvKmNhc2UgJ01hcEluZm8nKi86IGNhc2UgJ3NjaGVtYScgLypjYXNlICdTY2hlbWEnKi86IGNhc2UgJ2RhdGEnIC8qY2FzZSAnZGF0YScqLzogc3dpdGNoKFJuWzNdKSB7XG5cdFx0XHRcdFx0Y2FzZSAnbWFwJyAvKmNhc2UgJ01hcCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZW50cnknIC8qY2FzZSAnRW50cnknKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3JhbmdlJyAvKmNhc2UgJ1JhbmdlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd4cGF0aCcgLypjYXNlICdYUGF0aCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZmllbGQnIC8qY2FzZSAnRmllbGQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3hzZHR5cGUnIC8qY2FzZSAnWFNEVHlwZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZmlsdGVyb24nIC8qY2FzZSAnRmlsdGVyT24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2FnZ3JlZ2F0ZScgLypjYXNlICdBZ2dyZWdhdGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2VsZW1lbnR0eXBlJyAvKmNhc2UgJ0VsZW1lbnRUeXBlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhdHRyaWJ1dGV0eXBlJyAvKmNhc2UgJ0F0dHJpYnV0ZVR5cGUnKi86IGJyZWFrO1xuXHRcdFx0XHQvKiBUaGVzZSBhcmUgZnJvbSB4c2QgKFhNTCBTY2hlbWEgRGVmaW5pdGlvbikgKi9cblx0XHRcdFx0XHRjYXNlICdzY2hlbWEnIC8qY2FzZSAnc2NoZW1hJyovOlxuXHRcdFx0XHRcdGNhc2UgJ2VsZW1lbnQnIC8qY2FzZSAnZWxlbWVudCcqLzpcblx0XHRcdFx0XHRjYXNlICdjb21wbGV4dHlwZScgLypjYXNlICdjb21wbGV4VHlwZScqLzpcblx0XHRcdFx0XHRjYXNlICdkYXRhdHlwZScgLypjYXNlICdkYXRhdHlwZScqLzpcblx0XHRcdFx0XHRjYXNlICdhbGwnIC8qY2FzZSAnYWxsJyovOlxuXHRcdFx0XHRcdGNhc2UgJ2F0dHJpYnV0ZScgLypjYXNlICdhdHRyaWJ1dGUnKi86XG5cdFx0XHRcdFx0Y2FzZSAnZXh0ZW5kcycgLypjYXNlICdleHRlbmRzJyovOiBicmVhaztcblxuXHRcdFx0XHRcdGNhc2UgJ3JvdycgLypjYXNlICdyb3cnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6IHNlZW4gPSBmYWxzZTtcblx0XHRcdFx0fSBicmVhaztcblxuXHRcdFx0XHQvKiBTbWFydFRhZ3MgKGNhbiBiZSBhbnl0aGluZykgKi9cblx0XHRcdFx0Y2FzZSAnc21hcnR0YWdzJyAvKmNhc2UgJ1NtYXJ0VGFncycqLzogYnJlYWs7XG5cblx0XHRcdFx0ZGVmYXVsdDogc2VlbiA9IGZhbHNlOyBicmVhaztcblx0XHRcdH1cblx0XHRcdGlmKHNlZW4pIGJyZWFrO1xuXHRcdFx0LyogQ3VzdG9tRG9jdW1lbnRQcm9wZXJ0aWVzICovXG5cdFx0XHRpZihSblszXS5tYXRjaCgvIVxcW0NEQVRBLykpIGJyZWFrO1xuXHRcdFx0aWYoIXN0YXRlW3N0YXRlLmxlbmd0aC0xXVsxXSkgdGhyb3cgJ1VucmVjb2duaXplZCB0YWc6ICcgKyBSblszXSArIFwifFwiICsgc3RhdGUuam9pbihcInxcIik7XG5cdFx0XHRpZihzdGF0ZVtzdGF0ZS5sZW5ndGgtMV1bMF09PT0vKidDdXN0b21Eb2N1bWVudFByb3BlcnRpZXMnKi8nY3VzdG9tZG9jdW1lbnRwcm9wZXJ0aWVzJykge1xuXHRcdFx0XHRpZihSblswXS5zbGljZSgtMikgPT09IFwiLz5cIikgYnJlYWs7XG5cdFx0XHRcdGVsc2UgaWYoUm5bMV09PT1cIi9cIikgeGxtbF9zZXRfY3VzdHByb3AoQ3VzdHByb3BzLCByYXdfUm4zLCBjcCwgc3RyLnNsaWNlKHBpZHgsIFJuLmluZGV4KSk7XG5cdFx0XHRcdGVsc2UgeyBjcCA9IFJuOyBwaWR4ID0gUm4uaW5kZXggKyBSblswXS5sZW5ndGg7IH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZihvcHRzLldURikgdGhyb3cgJ1VucmVjb2duaXplZCB0YWc6ICcgKyBSblszXSArIFwifFwiICsgc3RhdGUuam9pbihcInxcIik7XG5cdH1cblx0dmFyIG91dCA9ICh7fS8qOmFueSovKTtcblx0aWYoIW9wdHMuYm9va1NoZWV0cyAmJiAhb3B0cy5ib29rUHJvcHMpIG91dC5TaGVldHMgPSBzaGVldHM7XG5cdG91dC5TaGVldE5hbWVzID0gc2hlZXRuYW1lcztcblx0b3V0Lldvcmtib29rID0gV29ya2Jvb2s7XG5cdG91dC5TU0YgPSBkdXAodGFibGVfZm10KTtcblx0b3V0LlByb3BzID0gUHJvcHM7XG5cdG91dC5DdXN0cHJvcHMgPSBDdXN0cHJvcHM7XG5cdHJldHVybiBvdXQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX3hsbWwoZGF0YS8qOlJhd0J5dGVzfHN0cmluZyovLCBvcHRzKS8qOldvcmtib29rKi8ge1xuXHRmaXhfcmVhZF9vcHRzKG9wdHM9b3B0c3x8e30pO1xuXHRzd2l0Y2gob3B0cy50eXBlfHxcImJhc2U2NFwiKSB7XG5cdFx0Y2FzZSBcImJhc2U2NFwiOiByZXR1cm4gcGFyc2VfeGxtbF94bWwoQmFzZTY0X2RlY29kZShkYXRhKSwgb3B0cyk7XG5cdFx0Y2FzZSBcImJpbmFyeVwiOiBjYXNlIFwiYnVmZmVyXCI6IGNhc2UgXCJmaWxlXCI6IHJldHVybiBwYXJzZV94bG1sX3htbChkYXRhLCBvcHRzKTtcblx0XHRjYXNlIFwiYXJyYXlcIjogcmV0dXJuIHBhcnNlX3hsbWxfeG1sKGEycyhkYXRhKSwgb3B0cyk7XG5cdH1cblx0Lyo6OiB0aHJvdyBuZXcgRXJyb3IoXCJ1bnN1cHBvcnRlZCB0eXBlIFwiICsgb3B0cy50eXBlKTsgKi9cbn1cblxuLyogVE9ETyAqL1xuZnVuY3Rpb24gd3JpdGVfcHJvcHNfeGxtbCh3Yi8qOldvcmtib29rKi8sIG9wdHMpLyo6c3RyaW5nKi8ge1xuXHR2YXIgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHQvKiBEb2N1bWVudFByb3BlcnRpZXMgKi9cblx0aWYod2IuUHJvcHMpIG8ucHVzaCh4bG1sX3dyaXRlX2RvY3Byb3BzKHdiLlByb3BzLCBvcHRzKSk7XG5cdC8qIEN1c3RvbURvY3VtZW50UHJvcGVydGllcyAqL1xuXHRpZih3Yi5DdXN0cHJvcHMpIG8ucHVzaCh4bG1sX3dyaXRlX2N1c3Rwcm9wcyh3Yi5Qcm9wcywgd2IuQ3VzdHByb3BzLCBvcHRzKSk7XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG4vKiBUT0RPICovXG5mdW5jdGlvbiB3cml0ZV93Yl94bG1sKC8qOjp3Yiwgb3B0cyovKS8qOnN0cmluZyovIHtcblx0LyogT2ZmaWNlRG9jdW1lbnRTZXR0aW5ncyAqL1xuXHQvKiBFeGNlbFdvcmtib29rICovXG5cdHJldHVybiBcIlwiO1xufVxuLyogVE9ETyAqL1xuZnVuY3Rpb24gd3JpdGVfc3R5X3hsbWwod2IsIG9wdHMpLyo6c3RyaW5nKi8ge1xuXHQvKiBTdHlsZXMgKi9cblx0dmFyIHN0eWxlcy8qOkFycmF5PHN0cmluZz4qLyA9IFsnPFN0eWxlIHNzOklEPVwiRGVmYXVsdFwiIHNzOk5hbWU9XCJOb3JtYWxcIj48TnVtYmVyRm9ybWF0Lz48L1N0eWxlPiddO1xuXHRvcHRzLmNlbGxYZnMuZm9yRWFjaChmdW5jdGlvbih4ZiwgaWQpIHtcblx0XHR2YXIgcGF5bG9hZC8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRcdHBheWxvYWQucHVzaCh3cml0ZXh0YWcoJ051bWJlckZvcm1hdCcsIG51bGwsIHtcInNzOkZvcm1hdFwiOiBlc2NhcGV4bWwodGFibGVfZm10W3hmLm51bUZtdElkXSl9KSk7XG5cblx0XHR2YXIgbyA9IC8qOjooKi97XCJzczpJRFwiOiBcInNcIiArICgyMStpZCl9Lyo6OiA6YW55KSovO1xuXHRcdHN0eWxlcy5wdXNoKHdyaXRleHRhZygnU3R5bGUnLCBwYXlsb2FkLmpvaW4oXCJcIiksIG8pKTtcblx0fSk7XG5cdHJldHVybiB3cml0ZXh0YWcoXCJTdHlsZXNcIiwgc3R5bGVzLmpvaW4oXCJcIikpO1xufVxuZnVuY3Rpb24gd3JpdGVfbmFtZV94bG1sKG4pIHsgcmV0dXJuIHdyaXRleHRhZyhcIk5hbWVkUmFuZ2VcIiwgbnVsbCwge1wic3M6TmFtZVwiOiBuLk5hbWUsIFwic3M6UmVmZXJzVG9cIjpcIj1cIiArIGExX3RvX3JjKG4uUmVmLCB7cjowLGM6MH0pfSk7IH1cbmZ1bmN0aW9uIHdyaXRlX25hbWVzX3hsbWwod2IvKjo6LCBvcHRzKi8pLyo6c3RyaW5nKi8ge1xuXHRpZighKCh3Ynx8e30pLldvcmtib29rfHx7fSkuTmFtZXMpIHJldHVybiBcIlwiO1xuXHQvKjo6IGlmKCF3YiB8fCAhd2IuV29ya2Jvb2sgfHwgIXdiLldvcmtib29rLk5hbWVzKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi9cblx0dmFyIG5hbWVzLyo6QXJyYXk8YW55PiovID0gd2IuV29ya2Jvb2suTmFtZXM7XG5cdHZhciBvdXQvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIG4gPSBuYW1lc1tpXTtcblx0XHRpZihuLlNoZWV0ICE9IG51bGwpIGNvbnRpbnVlO1xuXHRcdGlmKG4uTmFtZS5tYXRjaCgvXl94bGZuXFwuLykpIGNvbnRpbnVlO1xuXHRcdG91dC5wdXNoKHdyaXRlX25hbWVfeGxtbChuKSk7XG5cdH1cblx0cmV0dXJuIHdyaXRleHRhZyhcIk5hbWVzXCIsIG91dC5qb2luKFwiXCIpKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX3dzX3hsbWxfbmFtZXMod3MvKjpXb3Jrc2hlZXQqLywgb3B0cywgaWR4Lyo6bnVtYmVyKi8sIHdiLyo6V29ya2Jvb2sqLykvKjpzdHJpbmcqLyB7XG5cdGlmKCF3cykgcmV0dXJuIFwiXCI7XG5cdGlmKCEoKHdifHx7fSkuV29ya2Jvb2t8fHt9KS5OYW1lcykgcmV0dXJuIFwiXCI7XG5cdC8qOjogaWYoIXdiIHx8ICF3Yi5Xb3JrYm9vayB8fCAhd2IuV29ya2Jvb2suTmFtZXMpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHR2YXIgbmFtZXMvKjpBcnJheTxhbnk+Ki8gPSB3Yi5Xb3JrYm9vay5OYW1lcztcblx0dmFyIG91dC8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgbiA9IG5hbWVzW2ldO1xuXHRcdGlmKG4uU2hlZXQgIT0gaWR4KSBjb250aW51ZTtcblx0XHQvKnN3aXRjaChuLk5hbWUpIHtcblx0XHRcdGNhc2UgXCJfXCI6IGNvbnRpbnVlO1xuXHRcdH0qL1xuXHRcdGlmKG4uTmFtZS5tYXRjaCgvXl94bGZuXFwuLykpIGNvbnRpbnVlO1xuXHRcdG91dC5wdXNoKHdyaXRlX25hbWVfeGxtbChuKSk7XG5cdH1cblx0cmV0dXJuIG91dC5qb2luKFwiXCIpO1xufVxuLyogV29ya3NoZWV0T3B0aW9ucyAqL1xuZnVuY3Rpb24gd3JpdGVfd3NfeGxtbF93c29wdHMod3MvKjpXb3Jrc2hlZXQqLywgb3B0cywgaWR4Lyo6bnVtYmVyKi8sIHdiLyo6V29ya2Jvb2sqLykvKjpzdHJpbmcqLyB7XG5cdGlmKCF3cykgcmV0dXJuIFwiXCI7XG5cdHZhciBvLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdC8qIE5PVEU6IHNwZWMgdGVjaG5pY2FsbHkgYWxsb3dzIGFueSBvcmRlciwgYnV0IHN0aWNrIHdpdGggaW1wbGllZCBvcmRlciAqL1xuXG5cdC8qIEZpdFRvUGFnZSAqL1xuXHQvKiBEb05vdERpc3BsYXlDb2xIZWFkZXJzICovXG5cdC8qIERvTm90RGlzcGxheVJvd0hlYWRlcnMgKi9cblx0LyogVmlld2FibGVSYW5nZSAqL1xuXHQvKiBTZWxlY3Rpb24gKi9cblx0LyogR3JpZGxpbmVDb2xvciAqL1xuXHQvKiBOYW1lICovXG5cdC8qIEV4Y2VsV29ya3NoZWV0VHlwZSAqL1xuXHQvKiBJbnRsTWFjcm8gKi9cblx0LyogVW5zeW5jZWQgKi9cblx0LyogU2VsZWN0ZWQgKi9cblx0LyogQ29kZU5hbWUgKi9cblxuXHRpZih3c1snIW1hcmdpbnMnXSkge1xuXHRcdG8ucHVzaChcIjxQYWdlU2V0dXA+XCIpO1xuXHRcdGlmKHdzWychbWFyZ2lucyddLmhlYWRlcikgby5wdXNoKHdyaXRleHRhZyhcIkhlYWRlclwiLCBudWxsLCB7J3g6TWFyZ2luJzp3c1snIW1hcmdpbnMnXS5oZWFkZXJ9KSk7XG5cdFx0aWYod3NbJyFtYXJnaW5zJ10uZm9vdGVyKSBvLnB1c2god3JpdGV4dGFnKFwiRm9vdGVyXCIsIG51bGwsIHsneDpNYXJnaW4nOndzWychbWFyZ2lucyddLmZvb3Rlcn0pKTtcblx0XHRvLnB1c2god3JpdGV4dGFnKFwiUGFnZU1hcmdpbnNcIiwgbnVsbCwge1xuXHRcdFx0J3g6Qm90dG9tJzogd3NbJyFtYXJnaW5zJ10uYm90dG9tIHx8IFwiMC43NVwiLFxuXHRcdFx0J3g6TGVmdCc6IHdzWychbWFyZ2lucyddLmxlZnQgfHwgXCIwLjdcIixcblx0XHRcdCd4OlJpZ2h0Jzogd3NbJyFtYXJnaW5zJ10ucmlnaHQgfHwgXCIwLjdcIixcblx0XHRcdCd4OlRvcCc6IHdzWychbWFyZ2lucyddLnRvcCB8fCBcIjAuNzVcIlxuXHRcdH0pKTtcblx0XHRvLnB1c2goXCI8L1BhZ2VTZXR1cD5cIik7XG5cdH1cblxuXHQvKiBQYWdlU2V0dXAgKi9cblx0LyogRGlzcGxheVBhZ2VCcmVhayAqL1xuXHQvKiBUcmFuc2l0aW9uRXhwcmVzc2lvbkV2YWx1YXRpb24gKi9cblx0LyogVHJhbnNpdGlvbkZvcm11bGFFbnRyeSAqL1xuXHQvKiBQcmludCAqL1xuXHQvKiBab29tICovXG5cdC8qIFBhZ2VMYXlvdXRab29tICovXG5cdC8qIFBhZ2VCcmVha1pvb20gKi9cblx0LyogU2hvd1BhZ2VCcmVha1pvb20gKi9cblx0LyogRGVmYXVsdFJvd0hlaWdodCAqL1xuXHQvKiBEZWZhdWx0Q29sdW1uV2lkdGggKi9cblx0LyogU3RhbmRhcmRXaWR0aCAqL1xuXG5cdGlmKHdiICYmIHdiLldvcmtib29rICYmIHdiLldvcmtib29rLlNoZWV0cyAmJiB3Yi5Xb3JrYm9vay5TaGVldHNbaWR4XSkge1xuXHRcdC8qIFZpc2libGUgKi9cblx0XHRpZih3Yi5Xb3JrYm9vay5TaGVldHNbaWR4XS5IaWRkZW4pIG8ucHVzaCh3cml0ZXh0YWcoXCJWaXNpYmxlXCIsICh3Yi5Xb3JrYm9vay5TaGVldHNbaWR4XS5IaWRkZW4gPT0gMSA/IFwiU2hlZXRIaWRkZW5cIiA6IFwiU2hlZXRWZXJ5SGlkZGVuXCIpLCB7fSkpO1xuXHRcdGVsc2Uge1xuXHRcdFx0LyogU2VsZWN0ZWQgKi9cblx0XHRcdGZvcih2YXIgaSA9IDA7IGkgPCBpZHg7ICsraSkgaWYod2IuV29ya2Jvb2suU2hlZXRzW2ldICYmICF3Yi5Xb3JrYm9vay5TaGVldHNbaV0uSGlkZGVuKSBicmVhaztcblx0XHRcdGlmKGkgPT0gaWR4KSBvLnB1c2goXCI8U2VsZWN0ZWQvPlwiKTtcblx0XHR9XG5cdH1cblxuXHQvKiBMZWZ0Q29sdW1uVmlzaWJsZSAqL1xuXG5cdGlmKCgoKCh3Ynx8e30pLldvcmtib29rfHx7fSkuVmlld3N8fFtdKVswXXx8e30pLlJUTCkgby5wdXNoKFwiPERpc3BsYXlSaWdodFRvTGVmdC8+XCIpO1xuXG5cdC8qIEdyaWRsaW5lQ29sb3JJbmRleCAqL1xuXHQvKiBEaXNwbGF5Rm9ybXVsYXMgKi9cblx0LyogRG9Ob3REaXNwbGF5R3JpZGxpbmVzICovXG5cdC8qIERvTm90RGlzcGxheUhlYWRpbmdzICovXG5cdC8qIERvTm90RGlzcGxheU91dGxpbmUgKi9cblx0LyogQXBwbHlBdXRvbWF0aWNPdXRsaW5lU3R5bGVzICovXG5cdC8qIE5vU3VtbWFyeVJvd3NCZWxvd0RldGFpbCAqL1xuXHQvKiBOb1N1bW1hcnlDb2x1bW5zUmlnaHREZXRhaWwgKi9cblx0LyogRG9Ob3REaXNwbGF5WmVyb3MgKi9cblx0LyogQWN0aXZlUm93ICovXG5cdC8qIEFjdGl2ZUNvbHVtbiAqL1xuXHQvKiBGaWx0ZXJPbiAqL1xuXHQvKiBSYW5nZVNlbGVjdGlvbiAqL1xuXHQvKiBUb3BSb3dWaXNpYmxlICovXG5cdC8qIFRvcFJvd0JvdHRvbVBhbmUgKi9cblx0LyogTGVmdENvbHVtblJpZ2h0UGFuZSAqL1xuXHQvKiBBY3RpdmVQYW5lICovXG5cdC8qIFNwbGl0SG9yaXpvbnRhbCAqL1xuXHQvKiBTcGxpdFZlcnRpY2FsICovXG5cdC8qIEZyZWV6ZVBhbmVzICovXG5cdC8qIEZyb3plbk5vU3BsaXQgKi9cblx0LyogVGFiQ29sb3JJbmRleCAqL1xuXHQvKiBQYW5lcyAqL1xuXG5cdC8qIE5PVEU6IFBhc3N3b3JkIG5vdCBzdXBwb3J0ZWQgaW4gWExNTCBGb3JtYXQgKi9cblx0aWYod3NbJyFwcm90ZWN0J10pIHtcblx0XHRvLnB1c2god3JpdGV0YWcoXCJQcm90ZWN0Q29udGVudHNcIiwgXCJUcnVlXCIpKTtcblx0XHRpZih3c1snIXByb3RlY3QnXS5vYmplY3RzKSBvLnB1c2god3JpdGV0YWcoXCJQcm90ZWN0T2JqZWN0c1wiLCBcIlRydWVcIikpO1xuXHRcdGlmKHdzWychcHJvdGVjdCddLnNjZW5hcmlvcykgby5wdXNoKHdyaXRldGFnKFwiUHJvdGVjdFNjZW5hcmlvc1wiLCBcIlRydWVcIikpO1xuXHRcdGlmKHdzWychcHJvdGVjdCddLnNlbGVjdExvY2tlZENlbGxzICE9IG51bGwgJiYgIXdzWychcHJvdGVjdCddLnNlbGVjdExvY2tlZENlbGxzKSBvLnB1c2god3JpdGV0YWcoXCJFbmFibGVTZWxlY3Rpb25cIiwgXCJOb1NlbGVjdGlvblwiKSk7XG5cdFx0ZWxzZSBpZih3c1snIXByb3RlY3QnXS5zZWxlY3RVbmxvY2tlZENlbGxzICE9IG51bGwgJiYgIXdzWychcHJvdGVjdCddLnNlbGVjdFVubG9ja2VkQ2VsbHMpIG8ucHVzaCh3cml0ZXRhZyhcIkVuYWJsZVNlbGVjdGlvblwiLCBcIlVubG9ja2VkQ2VsbHNcIikpO1xuXHRbXG5cdFx0WyBcImZvcm1hdENlbGxzXCIsIFwiQWxsb3dGb3JtYXRDZWxsc1wiIF0sXG5cdFx0WyBcImZvcm1hdENvbHVtbnNcIiwgXCJBbGxvd1NpemVDb2xzXCIgXSxcblx0XHRbIFwiZm9ybWF0Um93c1wiLCBcIkFsbG93U2l6ZVJvd3NcIiBdLFxuXHRcdFsgXCJpbnNlcnRDb2x1bW5zXCIsIFwiQWxsb3dJbnNlcnRDb2xzXCIgXSxcblx0XHRbIFwiaW5zZXJ0Um93c1wiLCBcIkFsbG93SW5zZXJ0Um93c1wiIF0sXG5cdFx0WyBcImluc2VydEh5cGVybGlua3NcIiwgXCJBbGxvd0luc2VydEh5cGVybGlua3NcIiBdLFxuXHRcdFsgXCJkZWxldGVDb2x1bW5zXCIsIFwiQWxsb3dEZWxldGVDb2xzXCIgXSxcblx0XHRbIFwiZGVsZXRlUm93c1wiLCBcIkFsbG93RGVsZXRlUm93c1wiIF0sXG5cdFx0WyBcInNvcnRcIiwgXCJBbGxvd1NvcnRcIiBdLFxuXHRcdFsgXCJhdXRvRmlsdGVyXCIsIFwiQWxsb3dGaWx0ZXJcIiBdLFxuXHRcdFsgXCJwaXZvdFRhYmxlc1wiLCBcIkFsbG93VXNlUGl2b3RUYWJsZXNcIiBdXG5cdF0uZm9yRWFjaChmdW5jdGlvbih4KSB7IGlmKHdzWychcHJvdGVjdCddW3hbMF1dKSBvLnB1c2goXCI8XCIreFsxXStcIi8+XCIpOyB9KTtcblx0fVxuXG5cdGlmKG8ubGVuZ3RoID09IDApIHJldHVybiBcIlwiO1xuXHRyZXR1cm4gd3JpdGV4dGFnKFwiV29ya3NoZWV0T3B0aW9uc1wiLCBvLmpvaW4oXCJcIiksIHt4bWxuczpYTE1MTlMueH0pO1xufVxuZnVuY3Rpb24gd3JpdGVfd3NfeGxtbF9jb21tZW50KGNvbW1lbnRzLyo6QXJyYXk8YW55PiovKS8qOnN0cmluZyovIHtcblx0cmV0dXJuIGNvbW1lbnRzLm1hcChmdW5jdGlvbihjKSB7XG5cdFx0Ly8gVE9ETzogZm9ybWF0dGVkIHRleHRcblx0XHR2YXIgdCA9IHhsbWxfdW5maXhzdHIoYy50fHxcIlwiKTtcblx0XHR2YXIgZCA9d3JpdGV4dGFnKFwic3M6RGF0YVwiLCB0LCB7XCJ4bWxuc1wiOlwiaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MFwifSk7XG5cdFx0cmV0dXJuIHdyaXRleHRhZyhcIkNvbW1lbnRcIiwgZCwge1wic3M6QXV0aG9yXCI6Yy5hfSk7XG5cdH0pLmpvaW4oXCJcIik7XG59XG5mdW5jdGlvbiB3cml0ZV93c194bG1sX2NlbGwoY2VsbCwgcmVmLyo6c3RyaW5nKi8sIHdzLCBvcHRzLCBpZHgvKjpudW1iZXIqLywgd2IsIGFkZHIpLyo6c3RyaW5nKi97XG5cdGlmKCFjZWxsIHx8IChjZWxsLnYgPT0gdW5kZWZpbmVkICYmIGNlbGwuZiA9PSB1bmRlZmluZWQpKSByZXR1cm4gXCJcIjtcblxuXHR2YXIgYXR0ciA9IHt9O1xuXHRpZihjZWxsLmYpIGF0dHJbXCJzczpGb3JtdWxhXCJdID0gXCI9XCIgKyBlc2NhcGV4bWwoYTFfdG9fcmMoY2VsbC5mLCBhZGRyKSk7XG5cdGlmKGNlbGwuRiAmJiBjZWxsLkYuc2xpY2UoMCwgcmVmLmxlbmd0aCkgPT0gcmVmKSB7XG5cdFx0dmFyIGVuZCA9IGRlY29kZV9jZWxsKGNlbGwuRi5zbGljZShyZWYubGVuZ3RoICsgMSkpO1xuXHRcdGF0dHJbXCJzczpBcnJheVJhbmdlXCJdID0gXCJSQzpSXCIgKyAoZW5kLnIgPT0gYWRkci5yID8gXCJcIiA6IFwiW1wiICsgKGVuZC5yIC0gYWRkci5yKSArIFwiXVwiKSArIFwiQ1wiICsgKGVuZC5jID09IGFkZHIuYyA/IFwiXCIgOiBcIltcIiArIChlbmQuYyAtIGFkZHIuYykgKyBcIl1cIik7XG5cdH1cblxuXHRpZihjZWxsLmwgJiYgY2VsbC5sLlRhcmdldCkge1xuXHRcdGF0dHJbXCJzczpIUmVmXCJdID0gZXNjYXBleG1sKGNlbGwubC5UYXJnZXQpO1xuXHRcdGlmKGNlbGwubC5Ub29sdGlwKSBhdHRyW1wieDpIUmVmU2NyZWVuVGlwXCJdID0gZXNjYXBleG1sKGNlbGwubC5Ub29sdGlwKTtcblx0fVxuXG5cdGlmKHdzWychbWVyZ2VzJ10pIHtcblx0XHR2YXIgbWFyciA9IHdzWychbWVyZ2VzJ107XG5cdFx0Zm9yKHZhciBtaSA9IDA7IG1pICE9IG1hcnIubGVuZ3RoOyArK21pKSB7XG5cdFx0XHRpZihtYXJyW21pXS5zLmMgIT0gYWRkci5jIHx8IG1hcnJbbWldLnMuciAhPSBhZGRyLnIpIGNvbnRpbnVlO1xuXHRcdFx0aWYobWFyclttaV0uZS5jID4gbWFyclttaV0ucy5jKSBhdHRyWydzczpNZXJnZUFjcm9zcyddID0gbWFyclttaV0uZS5jIC0gbWFyclttaV0ucy5jO1xuXHRcdFx0aWYobWFyclttaV0uZS5yID4gbWFyclttaV0ucy5yKSBhdHRyWydzczpNZXJnZURvd24nXSA9IG1hcnJbbWldLmUuciAtIG1hcnJbbWldLnMucjtcblx0XHR9XG5cdH1cblxuXHR2YXIgdCA9IFwiXCIsIHAgPSBcIlwiO1xuXHRzd2l0Y2goY2VsbC50KSB7XG5cdFx0Y2FzZSAneic6IGlmKCFvcHRzLnNoZWV0U3R1YnMpIHJldHVybiBcIlwiOyBicmVhaztcblx0XHRjYXNlICduJzogdCA9ICdOdW1iZXInOyBwID0gU3RyaW5nKGNlbGwudik7IGJyZWFrO1xuXHRcdGNhc2UgJ2InOiB0ID0gJ0Jvb2xlYW4nOyBwID0gKGNlbGwudiA/IFwiMVwiIDogXCIwXCIpOyBicmVhaztcblx0XHRjYXNlICdlJzogdCA9ICdFcnJvcic7IHAgPSBCRXJyW2NlbGwudl07IGJyZWFrO1xuXHRcdGNhc2UgJ2QnOiB0ID0gJ0RhdGVUaW1lJzsgcCA9IG5ldyBEYXRlKGNlbGwudikudG9JU09TdHJpbmcoKTsgaWYoY2VsbC56ID09IG51bGwpIGNlbGwueiA9IGNlbGwueiB8fCB0YWJsZV9mbXRbMTRdOyBicmVhaztcblx0XHRjYXNlICdzJzogdCA9ICdTdHJpbmcnOyBwID0gZXNjYXBleGxtbChjZWxsLnZ8fFwiXCIpOyBicmVhaztcblx0fVxuXHQvKiBUT0RPOiBjZWxsIHN0eWxlICovXG5cdHZhciBvcyA9IGdldF9jZWxsX3N0eWxlKG9wdHMuY2VsbFhmcywgY2VsbCwgb3B0cyk7XG5cdGF0dHJbXCJzczpTdHlsZUlEXCJdID0gXCJzXCIgKyAoMjErb3MpO1xuXHRhdHRyW1wic3M6SW5kZXhcIl0gPSBhZGRyLmMgKyAxO1xuXHR2YXIgX3YgPSAoY2VsbC52ICE9IG51bGwgPyBwIDogXCJcIik7XG5cdHZhciBtID0gY2VsbC50ID09ICd6JyA/IFwiXCIgOiAoJzxEYXRhIHNzOlR5cGU9XCInICsgdCArICdcIj4nICsgX3YgKyAnPC9EYXRhPicpO1xuXG5cdGlmKChjZWxsLmN8fFtdKS5sZW5ndGggPiAwKSBtICs9IHdyaXRlX3dzX3hsbWxfY29tbWVudChjZWxsLmMpO1xuXG5cdHJldHVybiB3cml0ZXh0YWcoXCJDZWxsXCIsIG0sIGF0dHIpO1xufVxuZnVuY3Rpb24gd3JpdGVfd3NfeGxtbF9yb3coUi8qOm51bWJlciovLCByb3cpLyo6c3RyaW5nKi8ge1xuXHR2YXIgbyA9ICc8Um93IHNzOkluZGV4PVwiJyArIChSKzEpICsgJ1wiJztcblx0aWYocm93KSB7XG5cdFx0aWYocm93LmhwdCAmJiAhcm93LmhweCkgcm93LmhweCA9IHB0MnB4KHJvdy5ocHQpO1xuXHRcdGlmKHJvdy5ocHgpIG8gKz0gJyBzczpBdXRvRml0SGVpZ2h0PVwiMFwiIHNzOkhlaWdodD1cIicgKyByb3cuaHB4ICsgJ1wiJztcblx0XHRpZihyb3cuaGlkZGVuKSBvICs9ICcgc3M6SGlkZGVuPVwiMVwiJztcblx0fVxuXHRyZXR1cm4gbyArICc+Jztcbn1cbi8qIFRPRE8gKi9cbmZ1bmN0aW9uIHdyaXRlX3dzX3hsbWxfdGFibGUod3MvKjpXb3Jrc2hlZXQqLywgb3B0cywgaWR4Lyo6bnVtYmVyKi8sIHdiLyo6V29ya2Jvb2sqLykvKjpzdHJpbmcqLyB7XG5cdGlmKCF3c1snIXJlZiddKSByZXR1cm4gXCJcIjtcblx0dmFyIHJhbmdlLyo6UmFuZ2UqLyA9IHNhZmVfZGVjb2RlX3JhbmdlKHdzWychcmVmJ10pO1xuXHR2YXIgbWFyci8qOkFycmF5PFJhbmdlPiovID0gd3NbJyFtZXJnZXMnXSB8fCBbXSwgbWkgPSAwO1xuXHR2YXIgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRpZih3c1snIWNvbHMnXSkgd3NbJyFjb2xzJ10uZm9yRWFjaChmdW5jdGlvbihuLCBpKSB7XG5cdFx0cHJvY2Vzc19jb2wobik7XG5cdFx0dmFyIHcgPSAhIW4ud2lkdGg7XG5cdFx0dmFyIHAgPSBjb2xfb2JqX3coaSwgbik7XG5cdFx0dmFyIGsvKjphbnkqLyA9IHtcInNzOkluZGV4XCI6aSsxfTtcblx0XHRpZih3KSBrWydzczpXaWR0aCddID0gd2lkdGgycHgocC53aWR0aCk7XG5cdFx0aWYobi5oaWRkZW4pIGtbJ3NzOkhpZGRlbiddPVwiMVwiO1xuXHRcdG8ucHVzaCh3cml0ZXh0YWcoXCJDb2x1bW5cIixudWxsLGspKTtcblx0fSk7XG5cdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkod3MpO1xuXHRmb3IodmFyIFIgPSByYW5nZS5zLnI7IFIgPD0gcmFuZ2UuZS5yOyArK1IpIHtcblx0XHR2YXIgcm93ID0gW3dyaXRlX3dzX3hsbWxfcm93KFIsICh3c1snIXJvd3MnXXx8W10pW1JdKV07XG5cdFx0Zm9yKHZhciBDID0gcmFuZ2Uucy5jOyBDIDw9IHJhbmdlLmUuYzsgKytDKSB7XG5cdFx0XHR2YXIgc2tpcCA9IGZhbHNlO1xuXHRcdFx0Zm9yKG1pID0gMDsgbWkgIT0gbWFyci5sZW5ndGg7ICsrbWkpIHtcblx0XHRcdFx0aWYobWFyclttaV0ucy5jID4gQykgY29udGludWU7XG5cdFx0XHRcdGlmKG1hcnJbbWldLnMuciA+IFIpIGNvbnRpbnVlO1xuXHRcdFx0XHRpZihtYXJyW21pXS5lLmMgPCBDKSBjb250aW51ZTtcblx0XHRcdFx0aWYobWFyclttaV0uZS5yIDwgUikgY29udGludWU7XG5cdFx0XHRcdGlmKG1hcnJbbWldLnMuYyAhPSBDIHx8IG1hcnJbbWldLnMuciAhPSBSKSBza2lwID0gdHJ1ZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZihza2lwKSBjb250aW51ZTtcblx0XHRcdHZhciBhZGRyID0ge3I6UixjOkN9O1xuXHRcdFx0dmFyIHJlZiA9IGVuY29kZV9jZWxsKGFkZHIpLCBjZWxsID0gZGVuc2UgPyAod3NbUl18fFtdKVtDXSA6IHdzW3JlZl07XG5cdFx0XHRyb3cucHVzaCh3cml0ZV93c194bG1sX2NlbGwoY2VsbCwgcmVmLCB3cywgb3B0cywgaWR4LCB3YiwgYWRkcikpO1xuXHRcdH1cblx0XHRyb3cucHVzaChcIjwvUm93PlwiKTtcblx0XHRpZihyb3cubGVuZ3RoID4gMikgby5wdXNoKHJvdy5qb2luKFwiXCIpKTtcblx0fVxuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuZnVuY3Rpb24gd3JpdGVfd3NfeGxtbChpZHgvKjpudW1iZXIqLywgb3B0cywgd2IvKjpXb3JrYm9vayovKS8qOnN0cmluZyovIHtcblx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0dmFyIHMgPSB3Yi5TaGVldE5hbWVzW2lkeF07XG5cdHZhciB3cyA9IHdiLlNoZWV0c1tzXTtcblxuXHR2YXIgdC8qOnN0cmluZyovID0gd3MgPyB3cml0ZV93c194bG1sX25hbWVzKHdzLCBvcHRzLCBpZHgsIHdiKSA6IFwiXCI7XG5cdGlmKHQubGVuZ3RoID4gMCkgby5wdXNoKFwiPE5hbWVzPlwiICsgdCArIFwiPC9OYW1lcz5cIik7XG5cblx0LyogVGFibGUgKi9cblx0dCA9IHdzID8gd3JpdGVfd3NfeGxtbF90YWJsZSh3cywgb3B0cywgaWR4LCB3YikgOiBcIlwiO1xuXHRpZih0Lmxlbmd0aCA+IDApIG8ucHVzaChcIjxUYWJsZT5cIiArIHQgKyBcIjwvVGFibGU+XCIpO1xuXG5cdC8qIFdvcmtzaGVldE9wdGlvbnMgKi9cblx0by5wdXNoKHdyaXRlX3dzX3hsbWxfd3NvcHRzKHdzLCBvcHRzLCBpZHgsIHdiKSk7XG5cblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX3hsbWwod2IsIG9wdHMpLyo6c3RyaW5nKi8ge1xuXHRpZighb3B0cykgb3B0cyA9IHt9O1xuXHRpZighd2IuU1NGKSB3Yi5TU0YgPSBkdXAodGFibGVfZm10KTtcblx0aWYod2IuU1NGKSB7XG5cdFx0bWFrZV9zc2YoKTsgU1NGX2xvYWRfdGFibGUod2IuU1NGKTtcblx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdG9wdHMucmV2c3NmID0gZXZlcnRfbnVtKHdiLlNTRik7IG9wdHMucmV2c3NmW3diLlNTRls2NTUzNV1dID0gMDtcblx0XHRvcHRzLnNzZiA9IHdiLlNTRjtcblx0XHRvcHRzLmNlbGxYZnMgPSBbXTtcblx0XHRnZXRfY2VsbF9zdHlsZShvcHRzLmNlbGxYZnMsIHt9LCB7cmV2c3NmOntcIkdlbmVyYWxcIjowfX0pO1xuXHR9XG5cdHZhciBkLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdGQucHVzaCh3cml0ZV9wcm9wc194bG1sKHdiLCBvcHRzKSk7XG5cdGQucHVzaCh3cml0ZV93Yl94bG1sKHdiLCBvcHRzKSk7XG5cdGQucHVzaChcIlwiKTtcblx0ZC5wdXNoKFwiXCIpO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgd2IuU2hlZXROYW1lcy5sZW5ndGg7ICsraSlcblx0XHRkLnB1c2god3JpdGV4dGFnKFwiV29ya3NoZWV0XCIsIHdyaXRlX3dzX3hsbWwoaSwgb3B0cywgd2IpLCB7XCJzczpOYW1lXCI6ZXNjYXBleG1sKHdiLlNoZWV0TmFtZXNbaV0pfSkpO1xuXHRkWzJdID0gd3JpdGVfc3R5X3hsbWwod2IsIG9wdHMpO1xuXHRkWzNdID0gd3JpdGVfbmFtZXNfeGxtbCh3Yiwgb3B0cyk7XG5cdHJldHVybiBYTUxfSEVBREVSICsgd3JpdGV4dGFnKFwiV29ya2Jvb2tcIiwgZC5qb2luKFwiXCIpLCB7XG5cdFx0J3htbG5zJzogICAgICBYTE1MTlMuc3MsXG5cdFx0J3htbG5zOm8nOiAgICBYTE1MTlMubyxcblx0XHQneG1sbnM6eCc6ICAgIFhMTUxOUy54LFxuXHRcdCd4bWxuczpzcyc6ICAgWExNTE5TLnNzLFxuXHRcdCd4bWxuczpkdCc6ICAgWExNTE5TLmR0LFxuXHRcdCd4bWxuczpodG1sJzogWExNTE5TLmh0bWxcblx0fSk7XG59XG4vKiBbTVMtT0xFRFNdIDIuMy44IENvbXBPYmpTdHJlYW0gKi9cbmZ1bmN0aW9uIHBhcnNlX2NvbXBvYmoob2JqLyo6Q0ZCRW50cnkqLykge1xuXHR2YXIgdiA9IHt9O1xuXHR2YXIgbyA9IG9iai5jb250ZW50O1xuXHQvKjo6IGlmKG8gPT0gbnVsbCkgcmV0dXJuOyAqL1xuXG5cdC8qIFtNUy1PTEVEU10gMi4zLjcgQ29tcE9iakhlYWRlciAtLSBBbGwgZmllbGRzIE1VU1QgYmUgaWdub3JlZCAqL1xuXHRvLmwgPSAyODtcblxuXHR2LkFuc2lVc2VyVHlwZSA9IG8ucmVhZF9zaGlmdCgwLCBcImxwc3RyLWFuc2lcIik7XG5cdHYuQW5zaUNsaXBib2FyZEZvcm1hdCA9IHBhcnNlX0NsaXBib2FyZEZvcm1hdE9yQW5zaVN0cmluZyhvKTtcblxuXHRpZihvLmxlbmd0aCAtIG8ubCA8PSA0KSByZXR1cm4gdjtcblxuXHR2YXIgbS8qOm51bWJlciovID0gby5yZWFkX3NoaWZ0KDQpO1xuXHRpZihtID09IDAgfHwgbSA+IDQwKSByZXR1cm4gdjtcblx0by5sLT00OyB2LlJlc2VydmVkMSA9IG8ucmVhZF9zaGlmdCgwLCBcImxwc3RyLWFuc2lcIik7XG5cblx0aWYoby5sZW5ndGggLSBvLmwgPD0gNCkgcmV0dXJuIHY7XG5cdG0gPSBvLnJlYWRfc2hpZnQoNCk7XG5cdGlmKG0gIT09IDB4NzFiMjM5ZjQpIHJldHVybiB2O1xuXHR2LlVuaWNvZGVDbGlwYm9hcmRGb3JtYXQgPSBwYXJzZV9DbGlwYm9hcmRGb3JtYXRPclVuaWNvZGVTdHJpbmcobyk7XG5cblx0bSA9IG8ucmVhZF9zaGlmdCg0KTtcblx0aWYobSA9PSAwIHx8IG0gPiA0MCkgcmV0dXJuIHY7XG5cdG8ubC09NDsgdi5SZXNlcnZlZDIgPSBvLnJlYWRfc2hpZnQoMCwgXCJscHdzdHJcIik7XG59XG5cbi8qXG5cdENvbnRpbnVlIGxvZ2ljIGZvcjpcblx0LSAyLjQuNTggQ29udGludWUgICAgICAgICAgMHgwMDNjXG5cdC0gMi40LjU5IENvbnRpbnVlQmlnTmFtZSAgIDB4MDQzY1xuXHQtIDIuNC42MCBDb250aW51ZUZydCAgICAgICAweDA4MTJcblx0LSAyLjQuNjEgQ29udGludWVGcnQxMSAgICAgMHgwODc1XG5cdC0gMi40LjYyIENvbnRpbnVlRnJ0MTIgICAgIDB4MDg3ZlxuKi9cbnZhciBDT05USU5VRV9SVCA9IFsgMHgwMDNjLCAweDA0M2MsIDB4MDgxMiwgMHgwODc1LCAweDA4N2YgXTtcbmZ1bmN0aW9uIHNsdXJwKFJlY29yZFR5cGUsIFIsIGJsb2IsIGxlbmd0aC8qOm51bWJlciovLCBvcHRzKS8qOmFueSovIHtcblx0dmFyIGwgPSBsZW5ndGg7XG5cdHZhciBidWZzID0gW107XG5cdHZhciBkID0gYmxvYi5zbGljZShibG9iLmwsYmxvYi5sK2wpO1xuXHRpZihvcHRzICYmIG9wdHMuZW5jICYmIG9wdHMuZW5jLmluc2l0dSAmJiBkLmxlbmd0aCA+IDApIHN3aXRjaChSZWNvcmRUeXBlKSB7XG5cdGNhc2UgMHgwMDA5OiBjYXNlIDB4MDIwOTogY2FzZSAweDA0MDk6IGNhc2UgMHgwODA5LyogQk9GICovOiBjYXNlIDB4MDAyZiAvKiBGaWxlUGFzcyAqLzogY2FzZSAweDAxOTUgLyogRmlsZUxvY2sgKi86IGNhc2UgMHgwMGUxIC8qIEludGVyZmFjZUhkciAqLzogY2FzZSAweDAxOTYgLyogUlJESW5mbyAqLzogY2FzZSAweDAxMzggLyogUlJESGVhZCAqLzogY2FzZSAweDAxOTQgLyogVXNyRXhjbCAqLzogY2FzZSAweDAwMGEgLyogRU9GICovOlxuXHRcdGJyZWFrO1xuXHRjYXNlIDB4MDA4NSAvKiBCb3VuZFNoZWV0OCAqLzpcblx0XHRicmVhaztcblx0ZGVmYXVsdDpcblx0XHRvcHRzLmVuYy5pbnNpdHUoZCk7XG5cdH1cblx0YnVmcy5wdXNoKGQpO1xuXHRibG9iLmwgKz0gbDtcblx0dmFyIG5leHRydCA9IF9fcmVhZFVJbnQxNkxFKGJsb2IsYmxvYi5sKSwgbmV4dCA9IFhMU1JlY29yZEVudW1bbmV4dHJ0XTtcblx0dmFyIHN0YXJ0ID0gMDtcblx0d2hpbGUobmV4dCAhPSBudWxsICYmIENPTlRJTlVFX1JULmluZGV4T2YobmV4dHJ0KSA+IC0xKSB7XG5cdFx0bCA9IF9fcmVhZFVJbnQxNkxFKGJsb2IsYmxvYi5sKzIpO1xuXHRcdHN0YXJ0ID0gYmxvYi5sICsgNDtcblx0XHRpZihuZXh0cnQgPT0gMHgwODEyIC8qIENvbnRpbnVlRnJ0ICovKSBzdGFydCArPSA0O1xuXHRcdGVsc2UgaWYobmV4dHJ0ID09IDB4MDg3NSB8fCBuZXh0cnQgPT0gMHgwODdmKSB7XG5cdFx0XHRzdGFydCArPSAxMjtcblx0XHR9XG5cdFx0ZCA9IGJsb2Iuc2xpY2Uoc3RhcnQsYmxvYi5sKzQrbCk7XG5cdFx0YnVmcy5wdXNoKGQpO1xuXHRcdGJsb2IubCArPSA0K2w7XG5cdFx0bmV4dCA9IChYTFNSZWNvcmRFbnVtW25leHRydCA9IF9fcmVhZFVJbnQxNkxFKGJsb2IsIGJsb2IubCldKTtcblx0fVxuXHR2YXIgYiA9IChiY29uY2F0KGJ1ZnMpLyo6YW55Ki8pO1xuXHRwcmVwX2Jsb2IoYiwgMCk7XG5cdHZhciBsbCA9IDA7IGIubGVucyA9IFtdO1xuXHRmb3IodmFyIGogPSAwOyBqIDwgYnVmcy5sZW5ndGg7ICsraikgeyBiLmxlbnMucHVzaChsbCk7IGxsICs9IGJ1ZnNbal0ubGVuZ3RoOyB9XG5cdGlmKGIubGVuZ3RoIDwgbGVuZ3RoKSB0aHJvdyBcIlhMUyBSZWNvcmQgMHhcIiArIFJlY29yZFR5cGUudG9TdHJpbmcoMTYpICsgXCIgVHJ1bmNhdGVkOiBcIiArIGIubGVuZ3RoICsgXCIgPCBcIiArIGxlbmd0aDtcblx0cmV0dXJuIFIuZihiLCBiLmxlbmd0aCwgb3B0cyk7XG59XG5cbmZ1bmN0aW9uIHNhZmVfZm9ybWF0X3hmKHAvKjphbnkqLywgb3B0cy8qOlBhcnNlT3B0cyovLCBkYXRlMTkwNC8qOj9ib29sZWFuKi8pIHtcblx0aWYocC50ID09PSAneicpIHJldHVybjtcblx0aWYoIXAuWEYpIHJldHVybjtcblx0dmFyIGZtdGlkID0gMDtcblx0dHJ5IHtcblx0XHRmbXRpZCA9IHAueiB8fCBwLlhGLm51bUZtdElkIHx8IDA7XG5cdFx0aWYob3B0cy5jZWxsTkYpIHAueiA9IHRhYmxlX2ZtdFtmbXRpZF07XG5cdH0gY2F0Y2goZSkgeyBpZihvcHRzLldURikgdGhyb3cgZTsgfVxuXHRpZighb3B0cyB8fCBvcHRzLmNlbGxUZXh0ICE9PSBmYWxzZSkgdHJ5IHtcblx0XHRpZihwLnQgPT09ICdlJykgeyBwLncgPSBwLncgfHwgQkVycltwLnZdOyB9XG5cdFx0ZWxzZSBpZihmbXRpZCA9PT0gMCB8fCBmbXRpZCA9PSBcIkdlbmVyYWxcIikge1xuXHRcdFx0aWYocC50ID09PSAnbicpIHtcblx0XHRcdFx0aWYoKHAudnwwKSA9PT0gcC52KSBwLncgPSBwLnYudG9TdHJpbmcoMTApO1xuXHRcdFx0XHRlbHNlIHAudyA9IFNTRl9nZW5lcmFsX251bShwLnYpO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSBwLncgPSBTU0ZfZ2VuZXJhbChwLnYpO1xuXHRcdH1cblx0XHRlbHNlIHAudyA9IFNTRl9mb3JtYXQoZm10aWQscC52LCB7ZGF0ZTE5MDQ6ISFkYXRlMTkwNCwgZGF0ZU5GOiBvcHRzICYmIG9wdHMuZGF0ZU5GfSk7XG5cdH0gY2F0Y2goZSkgeyBpZihvcHRzLldURikgdGhyb3cgZTsgfVxuXHRpZihvcHRzLmNlbGxEYXRlcyAmJiBmbXRpZCAmJiBwLnQgPT0gJ24nICYmIGZtdF9pc19kYXRlKHRhYmxlX2ZtdFtmbXRpZF0gfHwgU3RyaW5nKGZtdGlkKSkpIHtcblx0XHR2YXIgX2QgPSBTU0ZfcGFyc2VfZGF0ZV9jb2RlKHAudik7IGlmKF9kKSB7IHAudCA9ICdkJzsgcC52ID0gbmV3IERhdGUoX2QueSwgX2QubS0xLF9kLmQsX2QuSCxfZC5NLF9kLlMsX2QudSk7IH1cblx0fVxufVxuXG5mdW5jdGlvbiBtYWtlX2NlbGwodmFsLCBpeGZlLCB0KS8qOkNlbGwqLyB7XG5cdHJldHVybiAoe3Y6dmFsLCBpeGZlOml4ZmUsIHQ6dH0vKjphbnkqLyk7XG59XG5cbi8vIDIuMy4yXG5mdW5jdGlvbiBwYXJzZV93b3JrYm9vayhibG9iLCBvcHRpb25zLyo6UGFyc2VPcHRzKi8pLyo6V29ya2Jvb2sqLyB7XG5cdHZhciB3YiA9ICh7b3B0czp7fX0vKjphbnkqLyk7XG5cdHZhciBTaGVldHMgPSB7fTtcblx0aWYoREVOU0UgIT0gbnVsbCAmJiBvcHRpb25zLmRlbnNlID09IG51bGwpIG9wdGlvbnMuZGVuc2UgPSBERU5TRTtcblx0dmFyIG91dC8qOldvcmtzaGVldCovID0gKChvcHRpb25zLmRlbnNlID8gW10gOiB7fSkvKjphbnkqLyk7XG5cdHZhciBEaXJlY3RvcnkgPSB7fTtcblx0dmFyIHJhbmdlLyo6UmFuZ2UqLyA9ICh7fS8qOmFueSovKTtcblx0dmFyIGxhc3RfZm9ybXVsYSA9IG51bGw7XG5cdHZhciBzc3QvKjpTU1QqLyA9IChbXS8qOmFueSovKTtcblx0dmFyIGN1cl9zaGVldCA9IFwiXCI7XG5cdHZhciBQcmVhbWJsZSA9IHt9O1xuXHR2YXIgbGFzdGNlbGwsIGxhc3RfY2VsbCA9IFwiXCIsIGNjLyo6Q2VsbCovLCBjbW50LCBybmdDLCBybmdSO1xuXHR2YXIgc2hhcmVkZiA9IHt9O1xuXHR2YXIgYXJyYXlmLyo6QXJyYXk8W1JhbmdlLCBzdHJpbmddPiovID0gW107XG5cdHZhciB0ZW1wX3ZhbC8qOkNlbGwqLztcblx0dmFyIGNvdW50cnk7XG5cdHZhciBYRnMgPSBbXTsgLyogWEYgcmVjb3JkcyAqL1xuXHR2YXIgcGFsZXR0ZS8qOkFycmF5PFtudW1iZXIsIG51bWJlciwgbnVtYmVyXT4qLyA9IFtdO1xuXHR2YXIgV29ya2Jvb2svKjpXQldCUHJvcHMqLyA9ICh7IFNoZWV0czpbXSwgV0JQcm9wczp7ZGF0ZTE5MDQ6ZmFsc2V9LCBWaWV3czpbe31dIH0vKjphbnkqLyksIHdzcHJvcHMgPSB7fTtcblx0dmFyIGdldF9yZ2IgPSBmdW5jdGlvbiBnZXRyZ2IoaWN2Lyo6bnVtYmVyKi8pLyo6W251bWJlciwgbnVtYmVyLCBudW1iZXJdKi8ge1xuXHRcdGlmKGljdiA8IDgpIHJldHVybiBYTFNJY3ZbaWN2XTtcblx0XHRpZihpY3YgPCA2NCkgcmV0dXJuIHBhbGV0dGVbaWN2LThdIHx8IFhMU0ljdltpY3ZdO1xuXHRcdHJldHVybiBYTFNJY3ZbaWN2XTtcblx0fTtcblx0dmFyIHByb2Nlc3NfY2VsbF9zdHlsZSA9IGZ1bmN0aW9uIHBjcyhjZWxsLCBsaW5lLyo6YW55Ki8sIG9wdGlvbnMpIHtcblx0XHR2YXIgeGZkID0gbGluZS5YRi5kYXRhO1xuXHRcdGlmKCF4ZmQgfHwgIXhmZC5wYXR0ZXJuVHlwZSB8fCAhb3B0aW9ucyB8fCAhb3B0aW9ucy5jZWxsU3R5bGVzKSByZXR1cm47XG5cdFx0bGluZS5zID0gKHt9Lyo6YW55Ki8pO1xuXHRcdGxpbmUucy5wYXR0ZXJuVHlwZSA9IHhmZC5wYXR0ZXJuVHlwZTtcblx0XHR2YXIgdDtcblx0XHRpZigodCA9IHJnYjJIZXgoZ2V0X3JnYih4ZmQuaWN2Rm9yZSkpKSkgeyBsaW5lLnMuZmdDb2xvciA9IHtyZ2I6dH07IH1cblx0XHRpZigodCA9IHJnYjJIZXgoZ2V0X3JnYih4ZmQuaWN2QmFjaykpKSkgeyBsaW5lLnMuYmdDb2xvciA9IHtyZ2I6dH07IH1cblx0fTtcblx0dmFyIGFkZGNlbGwgPSBmdW5jdGlvbiBhZGRjZWxsKGNlbGwvKjphbnkqLywgbGluZS8qOmFueSovLCBvcHRpb25zLyo6YW55Ki8pIHtcblx0XHRpZihmaWxlX2RlcHRoID4gMSkgcmV0dXJuO1xuXHRcdGlmKG9wdGlvbnMuc2hlZXRSb3dzICYmIGNlbGwuciA+PSBvcHRpb25zLnNoZWV0Um93cykgcmV0dXJuO1xuXHRcdGlmKG9wdGlvbnMuY2VsbFN0eWxlcyAmJiBsaW5lLlhGICYmIGxpbmUuWEYuZGF0YSkgcHJvY2Vzc19jZWxsX3N0eWxlKGNlbGwsIGxpbmUsIG9wdGlvbnMpO1xuXHRcdGRlbGV0ZSBsaW5lLml4ZmU7IGRlbGV0ZSBsaW5lLlhGO1xuXHRcdGxhc3RjZWxsID0gY2VsbDtcblx0XHRsYXN0X2NlbGwgPSBlbmNvZGVfY2VsbChjZWxsKTtcblx0XHRpZighcmFuZ2UgfHwgIXJhbmdlLnMgfHwgIXJhbmdlLmUpIHJhbmdlID0ge3M6e3I6MCxjOjB9LGU6e3I6MCxjOjB9fTtcblx0XHRpZihjZWxsLnIgPCByYW5nZS5zLnIpIHJhbmdlLnMuciA9IGNlbGwucjtcblx0XHRpZihjZWxsLmMgPCByYW5nZS5zLmMpIHJhbmdlLnMuYyA9IGNlbGwuYztcblx0XHRpZihjZWxsLnIgKyAxID4gcmFuZ2UuZS5yKSByYW5nZS5lLnIgPSBjZWxsLnIgKyAxO1xuXHRcdGlmKGNlbGwuYyArIDEgPiByYW5nZS5lLmMpIHJhbmdlLmUuYyA9IGNlbGwuYyArIDE7XG5cdFx0aWYob3B0aW9ucy5jZWxsRm9ybXVsYSAmJiBsaW5lLmYpIHtcblx0XHRcdGZvcih2YXIgYWZpID0gMDsgYWZpIDwgYXJyYXlmLmxlbmd0aDsgKythZmkpIHtcblx0XHRcdFx0aWYoYXJyYXlmW2FmaV1bMF0ucy5jID4gY2VsbC5jIHx8IGFycmF5ZlthZmldWzBdLnMuciA+IGNlbGwucikgY29udGludWU7XG5cdFx0XHRcdGlmKGFycmF5ZlthZmldWzBdLmUuYyA8IGNlbGwuYyB8fCBhcnJheWZbYWZpXVswXS5lLnIgPCBjZWxsLnIpIGNvbnRpbnVlO1xuXHRcdFx0XHRsaW5lLkYgPSBlbmNvZGVfcmFuZ2UoYXJyYXlmW2FmaV1bMF0pO1xuXHRcdFx0XHRpZihhcnJheWZbYWZpXVswXS5zLmMgIT0gY2VsbC5jIHx8IGFycmF5ZlthZmldWzBdLnMuciAhPSBjZWxsLnIpIGRlbGV0ZSBsaW5lLmY7XG5cdFx0XHRcdGlmKGxpbmUuZikgbGluZS5mID0gXCJcIiArIHN0cmluZ2lmeV9mb3JtdWxhKGFycmF5ZlthZmldWzFdLCByYW5nZSwgY2VsbCwgc3VwYm9va3MsIG9wdHMpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdFx0e1xuXHRcdFx0aWYob3B0aW9ucy5kZW5zZSkge1xuXHRcdFx0XHRpZighb3V0W2NlbGwucl0pIG91dFtjZWxsLnJdID0gW107XG5cdFx0XHRcdG91dFtjZWxsLnJdW2NlbGwuY10gPSBsaW5lO1xuXHRcdFx0fSBlbHNlIG91dFtsYXN0X2NlbGxdID0gbGluZTtcblx0XHR9XG5cdH07XG5cdHZhciBvcHRzID0gKHtcblx0XHRlbmM6IGZhbHNlLCAvLyBlbmNyeXB0ZWRcblx0XHRzYmNjaDogMCwgLy8gY2NoIGluIHRoZSBwcmVjZWRpbmcgU3VwQm9va1xuXHRcdHNuYW1lczogW10sIC8vIHNoZWV0bmFtZXNcblx0XHRzaGFyZWRmOiBzaGFyZWRmLCAvLyBzaGFyZWQgZm9ybXVsYWUgYnkgYWRkcmVzc1xuXHRcdGFycmF5ZjogYXJyYXlmLCAvLyBhcnJheSBmb3JtdWxhZSBhcnJheVxuXHRcdHJydGFiaWQ6IFtdLCAvLyBSUlRhYklkXG5cdFx0bGFzdHVzZXI6IFwiXCIsIC8vIExhc3QgVXNlciBmcm9tIFdyaXRlQWNjZXNzXG5cdFx0YmlmZjogOCwgLy8gQklGRiB2ZXJzaW9uXG5cdFx0Y29kZXBhZ2U6IDAsIC8vIENQIGZyb20gQ29kZVBhZ2UgcmVjb3JkXG5cdFx0d2lubG9ja2VkOiAwLCAvLyBmTG9ja1duIGZyb20gV2luUHJvdGVjdFxuXHRcdGNlbGxTdHlsZXM6ICEhb3B0aW9ucyAmJiAhIW9wdGlvbnMuY2VsbFN0eWxlcyxcblx0XHRXVEY6ICEhb3B0aW9ucyAmJiAhIW9wdGlvbnMud3RmXG5cdH0vKjphbnkqLyk7XG5cdGlmKG9wdGlvbnMucGFzc3dvcmQpIG9wdHMucGFzc3dvcmQgPSBvcHRpb25zLnBhc3N3b3JkO1xuXHR2YXIgdGhlbWVzO1xuXHR2YXIgbWVyZ2VzLyo6QXJyYXk8UmFuZ2U+Ki8gPSBbXTtcblx0dmFyIG9iamVjdHMgPSBbXTtcblx0dmFyIGNvbGluZm8vKjpBcnJheTxDb2xJbmZvPiovID0gW10sIHJvd2luZm8vKjpBcnJheTxSb3dJbmZvPiovID0gW107XG5cdHZhciBzZWVuY29sID0gZmFsc2U7XG5cdHZhciBzdXBib29rcyA9IChbXS8qOmFueSovKTsgLy8gMS1pbmRleGVkLCB3aWxsIGhvbGQgZXh0ZXJuIG5hbWVzXG5cdHN1cGJvb2tzLlNoZWV0TmFtZXMgPSBvcHRzLnNuYW1lcztcblx0c3VwYm9va3Muc2hhcmVkZiA9IG9wdHMuc2hhcmVkZjtcblx0c3VwYm9va3MuYXJyYXlmID0gb3B0cy5hcnJheWY7XG5cdHN1cGJvb2tzLm5hbWVzID0gW107XG5cdHN1cGJvb2tzLlhUSSA9IFtdO1xuXHR2YXIgbGFzdF9SVCA9IDA7XG5cdHZhciBmaWxlX2RlcHRoID0gMDsgLyogVE9ETzogbWFrZSBhIHJlYWwgc3RhY2sgKi9cblx0dmFyIEJJRkYyRm10ID0gMCwgQklGRjJGbXRUYWJsZS8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgRmlsdGVyRGF0YWJhc2VzID0gW107IC8qIFRPRE86IHNvcnQgb3V0IHN1cGJvb2tzIGFuZCBwcm9jZXNzIGVsc2V3aGVyZSAqL1xuXHR2YXIgbGFzdF9sYmwvKjo/RGVmaW5lZE5hbWUqLztcblxuXHQvKiBleHBsaWNpdCBvdmVycmlkZSBmb3Igc29tZSBicm9rZW4gd3JpdGVycyAqL1xuXHRvcHRzLmNvZGVwYWdlID0gMTIwMDtcblx0c2V0X2NwKDEyMDApO1xuXHR2YXIgc2Vlbl9jb2RlcGFnZSA9IGZhbHNlO1xuXHR3aGlsZShibG9iLmwgPCBibG9iLmxlbmd0aCAtIDEpIHtcblx0XHR2YXIgcyA9IGJsb2IubDtcblx0XHR2YXIgUmVjb3JkVHlwZSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHRpZihSZWNvcmRUeXBlID09PSAwICYmIGxhc3RfUlQgPT09IDB4MDAwYSAvKiBFT0YgKi8pIGJyZWFrO1xuXHRcdHZhciBsZW5ndGggPSAoYmxvYi5sID09PSBibG9iLmxlbmd0aCA/IDAgOiBibG9iLnJlYWRfc2hpZnQoMikpO1xuXHRcdHZhciBSID0gWExTUmVjb3JkRW51bVtSZWNvcmRUeXBlXTtcblx0XHQvL2NvbnNvbGUubG9nKFJlY29yZFR5cGUudG9TdHJpbmcoMTYpLCBSZWNvcmRUeXBlLCBSLCBibG9iLmwsIGxlbmd0aCwgYmxvYi5sZW5ndGgpO1xuXHRcdC8vaWYoIVIpIGNvbnNvbGUubG9nKGJsb2Iuc2xpY2UoYmxvYi5sLCBibG9iLmwgKyBsZW5ndGgpKTtcblx0XHRpZihSICYmIFIuZikge1xuXHRcdFx0aWYob3B0aW9ucy5ib29rU2hlZXRzKSB7XG5cdFx0XHRcdGlmKGxhc3RfUlQgPT09IDB4MDA4NSAvKiBCb3VuZFNoZWV0OCAqLyAmJiBSZWNvcmRUeXBlICE9PSAweDAwODUgLyogUi5uICE9PSAnQm91bmRTaGVldDgnICovKSBicmVhaztcblx0XHRcdH1cblx0XHRcdGxhc3RfUlQgPSBSZWNvcmRUeXBlO1xuXHRcdFx0aWYoUi5yID09PSAyIHx8IFIuciA9PSAxMikge1xuXHRcdFx0XHR2YXIgcnQgPSBibG9iLnJlYWRfc2hpZnQoMik7IGxlbmd0aCAtPSAyO1xuXHRcdFx0XHRpZighb3B0cy5lbmMgJiYgcnQgIT09IFJlY29yZFR5cGUgJiYgKCgocnQmMHhGRik8PDgpfChydD4+OCkpICE9PSBSZWNvcmRUeXBlKSB0aHJvdyBuZXcgRXJyb3IoXCJydCBtaXNtYXRjaDogXCIgKyBydCArIFwiIT1cIiArIFJlY29yZFR5cGUpO1xuXHRcdFx0XHRpZihSLnIgPT0gMTIpe1xuXHRcdFx0XHRcdGJsb2IubCArPSAxMDsgbGVuZ3RoIC09IDEwO1xuXHRcdFx0XHR9IC8vIHNraXAgRlJUXG5cdFx0XHR9XG5cdFx0XHQvL2NvbnNvbGUuZXJyb3IoUixibG9iLmwsbGVuZ3RoLGJsb2IubGVuZ3RoKTtcblx0XHRcdHZhciB2YWwvKjphbnkqLyA9ICh7fS8qOmFueSovKTtcblx0XHRcdGlmKFJlY29yZFR5cGUgPT09IDB4MDAwYSAvKiBFT0YgKi8pIHZhbCA9IC8qOjooKi9SLmYoYmxvYiwgbGVuZ3RoLCBvcHRzKS8qOjogOmFueSkqLztcblx0XHRcdGVsc2UgdmFsID0gLyo6OigqL3NsdXJwKFJlY29yZFR5cGUsIFIsIGJsb2IsIGxlbmd0aCwgb3B0cykvKjo6IDphbnkpKi87XG5cdFx0XHQvKjo6IHZhbCA9ICh2YWw6YW55KTsgKi9cblx0XHRcdGlmKGZpbGVfZGVwdGggPT0gMCAmJiBbMHgwMDA5LCAweDAyMDksIDB4MDQwOSwgMHgwODA5XS5pbmRleE9mKGxhc3RfUlQpID09PSAtMSAvKiAnQk9GJyAqLykgY29udGludWU7XG5cdFx0XHRzd2l0Y2goUmVjb3JkVHlwZSkge1xuXHRcdFx0XHRjYXNlIDB4MDAyMiAvKiBEYXRlMTkwNCAqLzpcblx0XHRcdFx0XHQvKjo6IGlmKCFXb3JrYm9vay5XQlByb3BzKSBXb3JrYm9vay5XQlByb3BzID0ge307ICovXG5cdFx0XHRcdFx0d2Iub3B0cy5EYXRlMTkwNCA9IFdvcmtib29rLldCUHJvcHMuZGF0ZTE5MDQgPSB2YWw7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDA4NiAvKiBXcml0ZVByb3RlY3QgKi86IHdiLm9wdHMuV3JpdGVQcm90ZWN0ID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDJmIC8qIEZpbGVQYXNzICovOlxuXHRcdFx0XHRcdGlmKCFvcHRzLmVuYykgYmxvYi5sID0gMDtcblx0XHRcdFx0XHRvcHRzLmVuYyA9IHZhbDtcblx0XHRcdFx0XHRpZighb3B0aW9ucy5wYXNzd29yZCkgdGhyb3cgbmV3IEVycm9yKFwiRmlsZSBpcyBwYXNzd29yZC1wcm90ZWN0ZWRcIik7XG5cdFx0XHRcdFx0aWYodmFsLnZhbGlkID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcIkVuY3J5cHRpb24gc2NoZW1lIHVuc3VwcG9ydGVkXCIpO1xuXHRcdFx0XHRcdGlmKCF2YWwudmFsaWQpIHRocm93IG5ldyBFcnJvcihcIlBhc3N3b3JkIGlzIGluY29ycmVjdFwiKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwNWMgLyogV3JpdGVBY2Nlc3MgKi86IG9wdHMubGFzdHVzZXIgPSB2YWw7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDA0MiAvKiBDb2RlUGFnZSAqLzpcblx0XHRcdFx0XHR2YXIgY3B2YWwgPSBOdW1iZXIodmFsKTtcblx0XHRcdFx0XHQvKiBvdmVycmlkZXMgYmFzZWQgb24gdGVzdCBjYXNlcyAqL1xuXHRcdFx0XHRcdHN3aXRjaChjcHZhbCkge1xuXHRcdFx0XHRcdFx0Y2FzZSAweDUyMTI6IGNwdmFsID0gIDEyMDA7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAweDgwMDA6IGNwdmFsID0gMTAwMDA7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAweDgwMDE6IGNwdmFsID0gIDEyNTI7IGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzZXRfY3Aob3B0cy5jb2RlcGFnZSA9IGNwdmFsKTtcblx0XHRcdFx0XHRzZWVuX2NvZGVwYWdlID0gdHJ1ZTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAweDAxM2QgLyogUlJUYWJJZCAqLzogb3B0cy5ycnRhYmlkID0gdmFsOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMTkgLyogV2luUHJvdGVjdCAqLzogb3B0cy53aW5sb2NrZWQgPSB2YWw7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDFiNyAvKiBSZWZyZXNoQWxsICovOiB3Yi5vcHRzW1wiUmVmcmVzaEFsbFwiXSA9IHZhbDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDBjIC8qIENhbGNDb3VudCAqLzogd2Iub3B0c1tcIkNhbGNDb3VudFwiXSA9IHZhbDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDEwIC8qIENhbGNEZWx0YSAqLzogd2Iub3B0c1tcIkNhbGNEZWx0YVwiXSA9IHZhbDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDExIC8qIENhbGNJdGVyICovOiB3Yi5vcHRzW1wiQ2FsY0l0ZXJcIl0gPSB2YWw7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAwZCAvKiBDYWxjTW9kZSAqLzogd2Iub3B0c1tcIkNhbGNNb2RlXCJdID0gdmFsOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMGUgLyogQ2FsY1ByZWNpc2lvbiAqLzogd2Iub3B0c1tcIkNhbGNQcmVjaXNpb25cIl0gPSB2YWw7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDA1ZiAvKiBDYWxjU2F2ZVJlY2FsYyAqLzogd2Iub3B0c1tcIkNhbGNTYXZlUmVjYWxjXCJdID0gdmFsOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMGYgLyogQ2FsY1JlZk1vZGUgKi86IG9wdHMuQ2FsY1JlZk1vZGUgPSB2YWw7IGJyZWFrOyAvLyBUT0RPOiBpbXBsZW1lbnQgUjFDMVxuXHRcdFx0XHRjYXNlIDB4MDhhMyAvKiBGb3JjZUZ1bGxDYWxjdWxhdGlvbiAqLzogd2Iub3B0cy5GdWxsQ2FsYyA9IHZhbDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDgxIC8qIFdzQm9vbCAqLzpcblx0XHRcdFx0XHRpZih2YWwuZkRpYWxvZykgb3V0W1wiIXR5cGVcIl0gPSBcImRpYWxvZ1wiO1xuXHRcdFx0XHRcdGlmKCF2YWwuZkJlbG93KSAob3V0W1wiIW91dGxpbmVcIl0gfHwgKG91dFtcIiFvdXRsaW5lXCJdID0ge30pKS5hYm92ZSA9IHRydWU7XG5cdFx0XHRcdFx0aWYoIXZhbC5mUmlnaHQpIChvdXRbXCIhb3V0bGluZVwiXSB8fCAob3V0W1wiIW91dGxpbmVcIl0gPSB7fSkpLmxlZnQgPSB0cnVlO1xuXHRcdFx0XHRcdGJyZWFrOyAvLyBUT0RPXG5cdFx0XHRcdGNhc2UgMHgwMGUwIC8qIFhGICovOlxuXHRcdFx0XHRcdFhGcy5wdXNoKHZhbCk7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDFhZSAvKiBTdXBCb29rICovOlxuXHRcdFx0XHRcdHN1cGJvb2tzLnB1c2goW3ZhbF0pO1xuXHRcdFx0XHRcdHN1cGJvb2tzW3N1cGJvb2tzLmxlbmd0aC0xXS5YVEkgPSBbXTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMjM6IGNhc2UgMHgwMjIzIC8qIEV4dGVybk5hbWUgKi86XG5cdFx0XHRcdFx0c3VwYm9va3Nbc3VwYm9va3MubGVuZ3RoLTFdLnB1c2godmFsKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMTg6IGNhc2UgMHgwMjE4IC8qIExibCAqLzpcblx0XHRcdFx0XHRsYXN0X2xibCA9ICh7XG5cdFx0XHRcdFx0XHROYW1lOiB2YWwuTmFtZSxcblx0XHRcdFx0XHRcdFJlZjogc3RyaW5naWZ5X2Zvcm11bGEodmFsLnJnY2UscmFuZ2UsbnVsbCxzdXBib29rcyxvcHRzKVxuXHRcdFx0XHRcdH0vKjpEZWZpbmVkTmFtZSovKTtcblx0XHRcdFx0XHRpZih2YWwuaXRhYiA+IDApIGxhc3RfbGJsLlNoZWV0ID0gdmFsLml0YWIgLSAxO1xuXHRcdFx0XHRcdHN1cGJvb2tzLm5hbWVzLnB1c2gobGFzdF9sYmwpO1xuXHRcdFx0XHRcdGlmKCFzdXBib29rc1swXSkgeyBzdXBib29rc1swXSA9IFtdOyBzdXBib29rc1swXS5YVEkgPSBbXTsgfVxuXHRcdFx0XHRcdHN1cGJvb2tzW3N1cGJvb2tzLmxlbmd0aC0xXS5wdXNoKHZhbCk7XG5cdFx0XHRcdFx0aWYodmFsLk5hbWUgPT0gXCJfeGxubS5fRmlsdGVyRGF0YWJhc2VcIiAmJiB2YWwuaXRhYiA+IDApXG5cdFx0XHRcdFx0XHRpZih2YWwucmdjZSAmJiB2YWwucmdjZVswXSAmJiB2YWwucmdjZVswXVswXSAmJiB2YWwucmdjZVswXVswXVswXSA9PSAnUHRnQXJlYTNkJylcblx0XHRcdFx0XHRcdFx0RmlsdGVyRGF0YWJhc2VzW3ZhbC5pdGFiIC0gMV0gPSB7IHJlZjogZW5jb2RlX3JhbmdlKHZhbC5yZ2NlWzBdWzBdWzFdWzJdKSB9O1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAxNiAvKiBFeHRlcm5Db3VudCAqLzogb3B0cy5FeHRlcm5Db3VudCA9IHZhbDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDE3IC8qIEV4dGVyblNoZWV0ICovOlxuXHRcdFx0XHRcdGlmKHN1cGJvb2tzLmxlbmd0aCA9PSAwKSB7IHN1cGJvb2tzWzBdID0gW107IHN1cGJvb2tzWzBdLlhUSSA9IFtdOyB9XG5cdFx0XHRcdFx0c3VwYm9va3Nbc3VwYm9va3MubGVuZ3RoIC0gMV0uWFRJID0gc3VwYm9va3Nbc3VwYm9va3MubGVuZ3RoIC0gMV0uWFRJLmNvbmNhdCh2YWwpOyBzdXBib29rcy5YVEkgPSBzdXBib29rcy5YVEkuY29uY2F0KHZhbCk7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDg5NCAvKiBOYW1lQ210ICovOlxuXHRcdFx0XHRcdC8qIFRPRE86IHNlYXJjaCBmb3IgY29ycmVjdCBuYW1lICovXG5cdFx0XHRcdFx0aWYob3B0cy5iaWZmIDwgOCkgYnJlYWs7XG5cdFx0XHRcdFx0aWYobGFzdF9sYmwgIT0gbnVsbCkgbGFzdF9sYmwuQ29tbWVudCA9IHZhbFsxXTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMTIgLyogUHJvdGVjdCAqLzogb3V0W1wiIXByb3RlY3RcIl0gPSB2YWw7IGJyZWFrOyAvKiBmb3Igc2hlZXQgb3IgYm9vayAqL1xuXHRcdFx0XHRjYXNlIDB4MDAxMyAvKiBQYXNzd29yZCAqLzogaWYodmFsICE9PSAwICYmIG9wdHMuV1RGKSBjb25zb2xlLmVycm9yKFwiUGFzc3dvcmQgdmVyaWZpZXI6IFwiICsgdmFsKTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDg1IC8qIEJvdW5kU2hlZXQ4ICovOiB7XG5cdFx0XHRcdFx0RGlyZWN0b3J5W3ZhbC5wb3NdID0gdmFsO1xuXHRcdFx0XHRcdG9wdHMuc25hbWVzLnB1c2godmFsLm5hbWUpO1xuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAwYSAvKiBFT0YgKi86IHtcblx0XHRcdFx0XHRpZigtLWZpbGVfZGVwdGgpIGJyZWFrO1xuXHRcdFx0XHRcdGlmKHJhbmdlLmUpIHtcblx0XHRcdFx0XHRcdGlmKHJhbmdlLmUuciA+IDAgJiYgcmFuZ2UuZS5jID4gMCkge1xuXHRcdFx0XHRcdFx0XHRyYW5nZS5lLnItLTsgcmFuZ2UuZS5jLS07XG5cdFx0XHRcdFx0XHRcdG91dFtcIiFyZWZcIl0gPSBlbmNvZGVfcmFuZ2UocmFuZ2UpO1xuXHRcdFx0XHRcdFx0XHRpZihvcHRpb25zLnNoZWV0Um93cyAmJiBvcHRpb25zLnNoZWV0Um93cyA8PSByYW5nZS5lLnIpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgdG1wcmkgPSByYW5nZS5lLnI7XG5cdFx0XHRcdFx0XHRcdFx0cmFuZ2UuZS5yID0gb3B0aW9ucy5zaGVldFJvd3MgLSAxO1xuXHRcdFx0XHRcdFx0XHRcdG91dFtcIiFmdWxscmVmXCJdID0gb3V0W1wiIXJlZlwiXTtcblx0XHRcdFx0XHRcdFx0XHRvdXRbXCIhcmVmXCJdID0gZW5jb2RlX3JhbmdlKHJhbmdlKTtcblx0XHRcdFx0XHRcdFx0XHRyYW5nZS5lLnIgPSB0bXByaTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyYW5nZS5lLnIrKzsgcmFuZ2UuZS5jKys7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZihtZXJnZXMubGVuZ3RoID4gMCkgb3V0W1wiIW1lcmdlc1wiXSA9IG1lcmdlcztcblx0XHRcdFx0XHRcdGlmKG9iamVjdHMubGVuZ3RoID4gMCkgb3V0W1wiIW9iamVjdHNcIl0gPSBvYmplY3RzO1xuXHRcdFx0XHRcdFx0aWYoY29saW5mby5sZW5ndGggPiAwKSBvdXRbXCIhY29sc1wiXSA9IGNvbGluZm87XG5cdFx0XHRcdFx0XHRpZihyb3dpbmZvLmxlbmd0aCA+IDApIG91dFtcIiFyb3dzXCJdID0gcm93aW5mbztcblx0XHRcdFx0XHRcdFdvcmtib29rLlNoZWV0cy5wdXNoKHdzcHJvcHMpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZihjdXJfc2hlZXQgPT09IFwiXCIpIFByZWFtYmxlID0gb3V0OyBlbHNlIFNoZWV0c1tjdXJfc2hlZXRdID0gb3V0O1xuXHRcdFx0XHRcdG91dCA9ICgob3B0aW9ucy5kZW5zZSA/IFtdIDoge30pLyo6YW55Ki8pO1xuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAwOTogY2FzZSAweDAyMDk6IGNhc2UgMHgwNDA5OiBjYXNlIDB4MDgwOSAvKiBCT0YgKi86IHtcblx0XHRcdFx0XHRpZihvcHRzLmJpZmYgPT09IDgpIG9wdHMuYmlmZiA9IHtcblx0XHRcdFx0XHRcdC8qOjpbKi8weDAwMDkvKjo6XSovOjIsXG5cdFx0XHRcdFx0XHQvKjo6WyovMHgwMjA5Lyo6Ol0qLzozLFxuXHRcdFx0XHRcdFx0Lyo6OlsqLzB4MDQwOS8qOjpdKi86NFxuXHRcdFx0XHRcdH1bUmVjb3JkVHlwZV0gfHwge1xuXHRcdFx0XHRcdFx0Lyo6OlsqLzB4MDIwMC8qOjpdKi86Mixcblx0XHRcdFx0XHRcdC8qOjpbKi8weDAzMDAvKjo6XSovOjMsXG5cdFx0XHRcdFx0XHQvKjo6WyovMHgwNDAwLyo6Ol0qLzo0LFxuXHRcdFx0XHRcdFx0Lyo6OlsqLzB4MDUwMC8qOjpdKi86NSxcblx0XHRcdFx0XHRcdC8qOjpbKi8weDA2MDAvKjo6XSovOjgsXG5cdFx0XHRcdFx0XHQvKjo6WyovMHgwMDAyLyo6Ol0qLzoyLFxuXHRcdFx0XHRcdFx0Lyo6OlsqLzB4MDAwNy8qOjpdKi86MlxuXHRcdFx0XHRcdH1bdmFsLkJJRkZWZXJdIHx8IDg7XG5cdFx0XHRcdFx0b3B0cy5iaWZmZ3Vlc3MgPSB2YWwuQklGRlZlciA9PSAwO1xuXHRcdFx0XHRcdGlmKHZhbC5CSUZGVmVyID09IDAgJiYgdmFsLmR0ID09IDB4MTAwMCkgeyBvcHRzLmJpZmYgPSA1OyBzZWVuX2NvZGVwYWdlID0gdHJ1ZTsgc2V0X2NwKG9wdHMuY29kZXBhZ2UgPSAyODU5MSk7IH1cblx0XHRcdFx0XHRpZihvcHRzLmJpZmYgPT0gOCAmJiB2YWwuQklGRlZlciA9PSAwICYmIHZhbC5kdCA9PSAxNikgb3B0cy5iaWZmID0gMjtcblx0XHRcdFx0XHRpZihmaWxlX2RlcHRoKyspIGJyZWFrO1xuXHRcdFx0XHRcdG91dCA9ICgob3B0aW9ucy5kZW5zZSA/IFtdIDoge30pLyo6YW55Ki8pO1xuXG5cdFx0XHRcdFx0aWYob3B0cy5iaWZmIDwgOCAmJiAhc2Vlbl9jb2RlcGFnZSkgeyBzZWVuX2NvZGVwYWdlID0gdHJ1ZTsgc2V0X2NwKG9wdHMuY29kZXBhZ2UgPSBvcHRpb25zLmNvZGVwYWdlIHx8IDEyNTIpOyB9XG5cblx0XHRcdFx0XHRpZihvcHRzLmJpZmYgPCA1IHx8IHZhbC5CSUZGVmVyID09IDAgJiYgdmFsLmR0ID09IDB4MTAwMCkge1xuXHRcdFx0XHRcdFx0aWYoY3VyX3NoZWV0ID09PSBcIlwiKSBjdXJfc2hlZXQgPSBcIlNoZWV0MVwiO1xuXHRcdFx0XHRcdFx0cmFuZ2UgPSB7czp7cjowLGM6MH0sZTp7cjowLGM6MH19O1xuXHRcdFx0XHRcdFx0LyogZmFrZSBCb3VuZFNoZWV0OCAqL1xuXHRcdFx0XHRcdFx0dmFyIGZha2ViczggPSB7cG9zOiBibG9iLmwgLSBsZW5ndGgsIG5hbWU6Y3VyX3NoZWV0fTtcblx0XHRcdFx0XHRcdERpcmVjdG9yeVtmYWtlYnM4LnBvc10gPSBmYWtlYnM4O1xuXHRcdFx0XHRcdFx0b3B0cy5zbmFtZXMucHVzaChjdXJfc2hlZXQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbHNlIGN1cl9zaGVldCA9IChEaXJlY3Rvcnlbc10gfHwge25hbWU6XCJcIn0pLm5hbWU7XG5cdFx0XHRcdFx0aWYodmFsLmR0ID09IDB4MjApIG91dFtcIiF0eXBlXCJdID0gXCJjaGFydFwiO1xuXHRcdFx0XHRcdGlmKHZhbC5kdCA9PSAweDQwKSBvdXRbXCIhdHlwZVwiXSA9IFwibWFjcm9cIjtcblx0XHRcdFx0XHRtZXJnZXMgPSBbXTtcblx0XHRcdFx0XHRvYmplY3RzID0gW107XG5cdFx0XHRcdFx0b3B0cy5hcnJheWYgPSBhcnJheWYgPSBbXTtcblx0XHRcdFx0XHRjb2xpbmZvID0gW107IHJvd2luZm8gPSBbXTtcblx0XHRcdFx0XHRzZWVuY29sID0gZmFsc2U7XG5cdFx0XHRcdFx0d3Nwcm9wcyA9IHtIaWRkZW46KERpcmVjdG9yeVtzXXx8e2hzOjB9KS5ocywgbmFtZTpjdXJfc2hlZXQgfTtcblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAyMDMgLyogTnVtYmVyICovOiBjYXNlIDB4MDAwMyAvKiBCSUZGMk5VTSAqLzogY2FzZSAweDAwMDIgLyogQklGRjJJTlQgKi86IHtcblx0XHRcdFx0XHRpZihvdXRbXCIhdHlwZVwiXSA9PSBcImNoYXJ0XCIpIGlmKG9wdGlvbnMuZGVuc2UgPyAob3V0W3ZhbC5yXXx8W10pW3ZhbC5jXTogb3V0W2VuY29kZV9jZWxsKHtjOnZhbC5jLCByOnZhbC5yfSldKSArK3ZhbC5jO1xuXHRcdFx0XHRcdHRlbXBfdmFsID0gKHtpeGZlOiB2YWwuaXhmZSwgWEY6IFhGc1t2YWwuaXhmZV18fHt9LCB2OnZhbC52YWwsIHQ6J24nfS8qOmFueSovKTtcblx0XHRcdFx0XHRpZihCSUZGMkZtdCA+IDApIHRlbXBfdmFsLnogPSBCSUZGMkZtdFRhYmxlWyh0ZW1wX3ZhbC5peGZlPj44KSAmIDB4M0ZdO1xuXHRcdFx0XHRcdHNhZmVfZm9ybWF0X3hmKHRlbXBfdmFsLCBvcHRpb25zLCB3Yi5vcHRzLkRhdGUxOTA0KTtcblx0XHRcdFx0XHRhZGRjZWxsKHtjOnZhbC5jLCByOnZhbC5yfSwgdGVtcF92YWwsIG9wdGlvbnMpO1xuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAwNTogY2FzZSAweDAyMDUgLyogQm9vbEVyciAqLzoge1xuXHRcdFx0XHRcdHRlbXBfdmFsID0gKHtpeGZlOiB2YWwuaXhmZSwgWEY6IFhGc1t2YWwuaXhmZV0sIHY6dmFsLnZhbCwgdDp2YWwudH0vKjphbnkqLyk7XG5cdFx0XHRcdFx0aWYoQklGRjJGbXQgPiAwKSB0ZW1wX3ZhbC56ID0gQklGRjJGbXRUYWJsZVsodGVtcF92YWwuaXhmZT4+OCkgJiAweDNGXTtcblx0XHRcdFx0XHRzYWZlX2Zvcm1hdF94Zih0ZW1wX3ZhbCwgb3B0aW9ucywgd2Iub3B0cy5EYXRlMTkwNCk7XG5cdFx0XHRcdFx0YWRkY2VsbCh7Yzp2YWwuYywgcjp2YWwucn0sIHRlbXBfdmFsLCBvcHRpb25zKTtcblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAyN2UgLyogUksgKi86IHtcblx0XHRcdFx0XHR0ZW1wX3ZhbCA9ICh7aXhmZTogdmFsLml4ZmUsIFhGOiBYRnNbdmFsLml4ZmVdLCB2OnZhbC5ya251bSwgdDonbid9Lyo6YW55Ki8pO1xuXHRcdFx0XHRcdGlmKEJJRkYyRm10ID4gMCkgdGVtcF92YWwueiA9IEJJRkYyRm10VGFibGVbKHRlbXBfdmFsLml4ZmU+PjgpICYgMHgzRl07XG5cdFx0XHRcdFx0c2FmZV9mb3JtYXRfeGYodGVtcF92YWwsIG9wdGlvbnMsIHdiLm9wdHMuRGF0ZTE5MDQpO1xuXHRcdFx0XHRcdGFkZGNlbGwoe2M6dmFsLmMsIHI6dmFsLnJ9LCB0ZW1wX3ZhbCwgb3B0aW9ucyk7XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMGJkIC8qIE11bFJrICovOiB7XG5cdFx0XHRcdFx0Zm9yKHZhciBqID0gdmFsLmM7IGogPD0gdmFsLkM7ICsraikge1xuXHRcdFx0XHRcdFx0dmFyIGl4ZmUgPSB2YWwucmtyZWNbai12YWwuY11bMF07XG5cdFx0XHRcdFx0XHR0ZW1wX3ZhbD0gKHtpeGZlOml4ZmUsIFhGOlhGc1tpeGZlXSwgdjp2YWwucmtyZWNbai12YWwuY11bMV0sIHQ6J24nfS8qOmFueSovKTtcblx0XHRcdFx0XHRcdGlmKEJJRkYyRm10ID4gMCkgdGVtcF92YWwueiA9IEJJRkYyRm10VGFibGVbKHRlbXBfdmFsLml4ZmU+PjgpICYgMHgzRl07XG5cdFx0XHRcdFx0XHRzYWZlX2Zvcm1hdF94Zih0ZW1wX3ZhbCwgb3B0aW9ucywgd2Iub3B0cy5EYXRlMTkwNCk7XG5cdFx0XHRcdFx0XHRhZGRjZWxsKHtjOmosIHI6dmFsLnJ9LCB0ZW1wX3ZhbCwgb3B0aW9ucyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAwNjogY2FzZSAweDAyMDY6IGNhc2UgMHgwNDA2IC8qIEZvcm11bGEgKi86IHtcblx0XHRcdFx0XHRpZih2YWwudmFsID09ICdTdHJpbmcnKSB7IGxhc3RfZm9ybXVsYSA9IHZhbDsgYnJlYWs7IH1cblx0XHRcdFx0XHR0ZW1wX3ZhbCA9IG1ha2VfY2VsbCh2YWwudmFsLCB2YWwuY2VsbC5peGZlLCB2YWwudHQpO1xuXHRcdFx0XHRcdHRlbXBfdmFsLlhGID0gWEZzW3RlbXBfdmFsLml4ZmVdO1xuXHRcdFx0XHRcdGlmKG9wdGlvbnMuY2VsbEZvcm11bGEpIHtcblx0XHRcdFx0XHRcdHZhciBfZiA9IHZhbC5mb3JtdWxhO1xuXHRcdFx0XHRcdFx0aWYoX2YgJiYgX2ZbMF0gJiYgX2ZbMF1bMF0gJiYgX2ZbMF1bMF1bMF0gPT0gJ1B0Z0V4cCcpIHtcblx0XHRcdFx0XHRcdFx0dmFyIF9mciA9IF9mWzBdWzBdWzFdWzBdLCBfZmMgPSBfZlswXVswXVsxXVsxXTtcblx0XHRcdFx0XHRcdFx0dmFyIF9mZSA9IGVuY29kZV9jZWxsKHtyOl9mciwgYzpfZmN9KTtcblx0XHRcdFx0XHRcdFx0aWYoc2hhcmVkZltfZmVdKSB0ZW1wX3ZhbC5mID0gXCJcIitzdHJpbmdpZnlfZm9ybXVsYSh2YWwuZm9ybXVsYSxyYW5nZSx2YWwuY2VsbCxzdXBib29rcywgb3B0cyk7XG5cdFx0XHRcdFx0XHRcdGVsc2UgdGVtcF92YWwuRiA9ICgob3B0aW9ucy5kZW5zZSA/IChvdXRbX2ZyXXx8W10pW19mY106IG91dFtfZmVdKSB8fCB7fSkuRjtcblx0XHRcdFx0XHRcdH0gZWxzZSB0ZW1wX3ZhbC5mID0gXCJcIitzdHJpbmdpZnlfZm9ybXVsYSh2YWwuZm9ybXVsYSxyYW5nZSx2YWwuY2VsbCxzdXBib29rcywgb3B0cyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmKEJJRkYyRm10ID4gMCkgdGVtcF92YWwueiA9IEJJRkYyRm10VGFibGVbKHRlbXBfdmFsLml4ZmU+PjgpICYgMHgzRl07XG5cdFx0XHRcdFx0c2FmZV9mb3JtYXRfeGYodGVtcF92YWwsIG9wdGlvbnMsIHdiLm9wdHMuRGF0ZTE5MDQpO1xuXHRcdFx0XHRcdGFkZGNlbGwodmFsLmNlbGwsIHRlbXBfdmFsLCBvcHRpb25zKTtcblx0XHRcdFx0XHRsYXN0X2Zvcm11bGEgPSB2YWw7XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDA3OiBjYXNlIDB4MDIwNyAvKiBTdHJpbmcgKi86IHtcblx0XHRcdFx0XHRpZihsYXN0X2Zvcm11bGEpIHsgLyogdGVjaG5pY2FsbHkgYWx3YXlzIHRydWUgKi9cblx0XHRcdFx0XHRcdGxhc3RfZm9ybXVsYS52YWwgPSB2YWw7XG5cdFx0XHRcdFx0XHR0ZW1wX3ZhbCA9IG1ha2VfY2VsbCh2YWwsIGxhc3RfZm9ybXVsYS5jZWxsLml4ZmUsICdzJyk7XG5cdFx0XHRcdFx0XHR0ZW1wX3ZhbC5YRiA9IFhGc1t0ZW1wX3ZhbC5peGZlXTtcblx0XHRcdFx0XHRcdGlmKG9wdGlvbnMuY2VsbEZvcm11bGEpIHtcblx0XHRcdFx0XHRcdFx0dGVtcF92YWwuZiA9IFwiXCIrc3RyaW5naWZ5X2Zvcm11bGEobGFzdF9mb3JtdWxhLmZvcm11bGEsIHJhbmdlLCBsYXN0X2Zvcm11bGEuY2VsbCwgc3VwYm9va3MsIG9wdHMpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYoQklGRjJGbXQgPiAwKSB0ZW1wX3ZhbC56ID0gQklGRjJGbXRUYWJsZVsodGVtcF92YWwuaXhmZT4+OCkgJiAweDNGXTtcblx0XHRcdFx0XHRcdHNhZmVfZm9ybWF0X3hmKHRlbXBfdmFsLCBvcHRpb25zLCB3Yi5vcHRzLkRhdGUxOTA0KTtcblx0XHRcdFx0XHRcdGFkZGNlbGwobGFzdF9mb3JtdWxhLmNlbGwsIHRlbXBfdmFsLCBvcHRpb25zKTtcblx0XHRcdFx0XHRcdGxhc3RfZm9ybXVsYSA9IG51bGw7XG5cdFx0XHRcdFx0fSBlbHNlIHRocm93IG5ldyBFcnJvcihcIlN0cmluZyByZWNvcmQgZXhwZWN0cyBGb3JtdWxhXCIpO1xuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAyMTogY2FzZSAweDAyMjEgLyogQXJyYXkgKi86IHtcblx0XHRcdFx0XHRhcnJheWYucHVzaCh2YWwpO1xuXHRcdFx0XHRcdHZhciBfYXJyYXlzdGFydCA9IGVuY29kZV9jZWxsKHZhbFswXS5zKTtcblx0XHRcdFx0XHRjYyA9IG9wdGlvbnMuZGVuc2UgPyAob3V0W3ZhbFswXS5zLnJdfHxbXSlbdmFsWzBdLnMuY10gOiBvdXRbX2FycmF5c3RhcnRdO1xuXHRcdFx0XHRcdGlmKG9wdGlvbnMuY2VsbEZvcm11bGEgJiYgY2MpIHtcblx0XHRcdFx0XHRcdGlmKCFsYXN0X2Zvcm11bGEpIGJyZWFrOyAvKiB0ZWNobmljYWxseSB1bnJlYWNoYWJsZSAqL1xuXHRcdFx0XHRcdFx0aWYoIV9hcnJheXN0YXJ0IHx8ICFjYykgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYy5mID0gXCJcIitzdHJpbmdpZnlfZm9ybXVsYSh2YWxbMV0sIHJhbmdlLCB2YWxbMF0sIHN1cGJvb2tzLCBvcHRzKTtcblx0XHRcdFx0XHRcdGNjLkYgPSBlbmNvZGVfcmFuZ2UodmFsWzBdKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwNGJjIC8qIFNockZtbGEgKi86IHtcblx0XHRcdFx0XHRpZighb3B0aW9ucy5jZWxsRm9ybXVsYSkgYnJlYWs7XG5cdFx0XHRcdFx0aWYobGFzdF9jZWxsKSB7XG5cdFx0XHRcdFx0XHQvKiBUT0RPOiBjYXB0dXJlIHJhbmdlICovXG5cdFx0XHRcdFx0XHRpZighbGFzdF9mb3JtdWxhKSBicmVhazsgLyogdGVjaG5pY2FsbHkgdW5yZWFjaGFibGUgKi9cblx0XHRcdFx0XHRcdHNoYXJlZGZbZW5jb2RlX2NlbGwobGFzdF9mb3JtdWxhLmNlbGwpXT0gdmFsWzBdO1xuXHRcdFx0XHRcdFx0Y2MgPSBvcHRpb25zLmRlbnNlID8gKG91dFtsYXN0X2Zvcm11bGEuY2VsbC5yXXx8W10pW2xhc3RfZm9ybXVsYS5jZWxsLmNdIDogb3V0W2VuY29kZV9jZWxsKGxhc3RfZm9ybXVsYS5jZWxsKV07XG5cdFx0XHRcdFx0XHQoY2N8fHt9KS5mID0gXCJcIitzdHJpbmdpZnlfZm9ybXVsYSh2YWxbMF0sIHJhbmdlLCBsYXN0Y2VsbCwgc3VwYm9va3MsIG9wdHMpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwZmQgLyogTGFiZWxTc3QgKi86XG5cdFx0XHRcdFx0dGVtcF92YWw9bWFrZV9jZWxsKHNzdFt2YWwuaXNzdF0udCwgdmFsLml4ZmUsICdzJyk7XG5cdFx0XHRcdFx0aWYoc3N0W3ZhbC5pc3N0XS5oKSB0ZW1wX3ZhbC5oID0gc3N0W3ZhbC5pc3N0XS5oO1xuXHRcdFx0XHRcdHRlbXBfdmFsLlhGID0gWEZzW3RlbXBfdmFsLml4ZmVdO1xuXHRcdFx0XHRcdGlmKEJJRkYyRm10ID4gMCkgdGVtcF92YWwueiA9IEJJRkYyRm10VGFibGVbKHRlbXBfdmFsLml4ZmU+PjgpICYgMHgzRl07XG5cdFx0XHRcdFx0c2FmZV9mb3JtYXRfeGYodGVtcF92YWwsIG9wdGlvbnMsIHdiLm9wdHMuRGF0ZTE5MDQpO1xuXHRcdFx0XHRcdGFkZGNlbGwoe2M6dmFsLmMsIHI6dmFsLnJ9LCB0ZW1wX3ZhbCwgb3B0aW9ucyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMjAxIC8qIEJsYW5rICovOiBpZihvcHRpb25zLnNoZWV0U3R1YnMpIHtcblx0XHRcdFx0XHR0ZW1wX3ZhbCA9ICh7aXhmZTogdmFsLml4ZmUsIFhGOiBYRnNbdmFsLml4ZmVdLCB0Oid6J30vKjphbnkqLyk7XG5cdFx0XHRcdFx0aWYoQklGRjJGbXQgPiAwKSB0ZW1wX3ZhbC56ID0gQklGRjJGbXRUYWJsZVsodGVtcF92YWwuaXhmZT4+OCkgJiAweDNGXTtcblx0XHRcdFx0XHRzYWZlX2Zvcm1hdF94Zih0ZW1wX3ZhbCwgb3B0aW9ucywgd2Iub3B0cy5EYXRlMTkwNCk7XG5cdFx0XHRcdFx0YWRkY2VsbCh7Yzp2YWwuYywgcjp2YWwucn0sIHRlbXBfdmFsLCBvcHRpb25zKTtcblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwYmUgLyogTXVsQmxhbmsgKi86IGlmKG9wdGlvbnMuc2hlZXRTdHVicykge1xuXHRcdFx0XHRcdGZvcih2YXIgX2ogPSB2YWwuYzsgX2ogPD0gdmFsLkM7ICsrX2opIHtcblx0XHRcdFx0XHRcdHZhciBfaXhmZSA9IHZhbC5peGZlW19qLXZhbC5jXTtcblx0XHRcdFx0XHRcdHRlbXBfdmFsPSAoe2l4ZmU6X2l4ZmUsIFhGOlhGc1tfaXhmZV0sIHQ6J3onfS8qOmFueSovKTtcblx0XHRcdFx0XHRcdGlmKEJJRkYyRm10ID4gMCkgdGVtcF92YWwueiA9IEJJRkYyRm10VGFibGVbKHRlbXBfdmFsLml4ZmU+PjgpICYgMHgzRl07XG5cdFx0XHRcdFx0XHRzYWZlX2Zvcm1hdF94Zih0ZW1wX3ZhbCwgb3B0aW9ucywgd2Iub3B0cy5EYXRlMTkwNCk7XG5cdFx0XHRcdFx0XHRhZGRjZWxsKHtjOl9qLCByOnZhbC5yfSwgdGVtcF92YWwsIG9wdGlvbnMpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwZDYgLyogUlN0cmluZyAqLzpcblx0XHRcdFx0Y2FzZSAweDAyMDQgLyogTGFiZWwgKi86IGNhc2UgMHgwMDA0IC8qIEJJRkYyU1RSICovOlxuXHRcdFx0XHRcdHRlbXBfdmFsPW1ha2VfY2VsbCh2YWwudmFsLCB2YWwuaXhmZSwgJ3MnKTtcblx0XHRcdFx0XHR0ZW1wX3ZhbC5YRiA9IFhGc1t0ZW1wX3ZhbC5peGZlXTtcblx0XHRcdFx0XHRpZihCSUZGMkZtdCA+IDApIHRlbXBfdmFsLnogPSBCSUZGMkZtdFRhYmxlWyh0ZW1wX3ZhbC5peGZlPj44KSAmIDB4M0ZdO1xuXHRcdFx0XHRcdHNhZmVfZm9ybWF0X3hmKHRlbXBfdmFsLCBvcHRpb25zLCB3Yi5vcHRzLkRhdGUxOTA0KTtcblx0XHRcdFx0XHRhZGRjZWxsKHtjOnZhbC5jLCByOnZhbC5yfSwgdGVtcF92YWwsIG9wdGlvbnMpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgMHgwMDAwOiBjYXNlIDB4MDIwMCAvKiBEaW1lbnNpb25zICovOiB7XG5cdFx0XHRcdFx0aWYoZmlsZV9kZXB0aCA9PT0gMSkgcmFuZ2UgPSB2YWw7IC8qIFRPRE86IHN0YWNrICovXG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMGZjIC8qIFNTVCAqLzoge1xuXHRcdFx0XHRcdHNzdCA9IHZhbDtcblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDA0MWUgLyogRm9ybWF0ICovOiB7IC8qIHZhbCA9IFtpZCwgZm10XSAqL1xuXHRcdFx0XHRcdGlmKG9wdHMuYmlmZiA9PSA0KSB7XG5cdFx0XHRcdFx0XHRCSUZGMkZtdFRhYmxlW0JJRkYyRm10KytdID0gdmFsWzFdO1xuXHRcdFx0XHRcdFx0Zm9yKHZhciBiNGlkeCA9IDA7IGI0aWR4IDwgQklGRjJGbXQgKyAxNjM7ICsrYjRpZHgpIGlmKHRhYmxlX2ZtdFtiNGlkeF0gPT0gdmFsWzFdKSBicmVhaztcblx0XHRcdFx0XHRcdGlmKGI0aWR4ID49IDE2MykgU1NGX2xvYWQodmFsWzFdLCBCSUZGMkZtdCArIDE2Myk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2UgU1NGX2xvYWQodmFsWzFdLCB2YWxbMF0pO1xuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAxZSAvKiBCSUZGMkZPUk1BVCAqLzoge1xuXHRcdFx0XHRcdEJJRkYyRm10VGFibGVbQklGRjJGbXQrK10gPSB2YWw7XG5cdFx0XHRcdFx0Zm9yKHZhciBiMmlkeCA9IDA7IGIyaWR4IDwgQklGRjJGbXQgKyAxNjM7ICsrYjJpZHgpIGlmKHRhYmxlX2ZtdFtiMmlkeF0gPT0gdmFsKSBicmVhaztcblx0XHRcdFx0XHRpZihiMmlkeCA+PSAxNjMpIFNTRl9sb2FkKHZhbCwgQklGRjJGbXQgKyAxNjMpO1xuXHRcdFx0XHR9IGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgMHgwMGU1IC8qIE1lcmdlQ2VsbHMgKi86IG1lcmdlcyA9IG1lcmdlcy5jb25jYXQodmFsKTsgYnJlYWs7XG5cblx0XHRcdFx0Y2FzZSAweDAwNWQgLyogT2JqICovOiBvYmplY3RzW3ZhbC5jbW9bMF1dID0gb3B0cy5sYXN0b2JqID0gdmFsOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAxYjYgLyogVHhPICovOiBvcHRzLmxhc3RvYmouVHhPID0gdmFsOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwN2YgLyogSW1EYXRhICovOiBvcHRzLmxhc3RvYmouSW1EYXRhID0gdmFsOyBicmVhaztcblxuXHRcdFx0XHRjYXNlIDB4MDFiOCAvKiBITGluayAqLzoge1xuXHRcdFx0XHRcdGZvcihybmdSID0gdmFsWzBdLnMucjsgcm5nUiA8PSB2YWxbMF0uZS5yOyArK3JuZ1IpXG5cdFx0XHRcdFx0XHRmb3Iocm5nQyA9IHZhbFswXS5zLmM7IHJuZ0MgPD0gdmFsWzBdLmUuYzsgKytybmdDKSB7XG5cdFx0XHRcdFx0XHRcdGNjID0gb3B0aW9ucy5kZW5zZSA/IChvdXRbcm5nUl18fFtdKVtybmdDXSA6IG91dFtlbmNvZGVfY2VsbCh7YzpybmdDLHI6cm5nUn0pXTtcblx0XHRcdFx0XHRcdFx0aWYoY2MpIGNjLmwgPSB2YWxbMV07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwODAwIC8qIEhMaW5rVG9vbHRpcCAqLzoge1xuXHRcdFx0XHRcdGZvcihybmdSID0gdmFsWzBdLnMucjsgcm5nUiA8PSB2YWxbMF0uZS5yOyArK3JuZ1IpXG5cdFx0XHRcdFx0XHRmb3Iocm5nQyA9IHZhbFswXS5zLmM7IHJuZ0MgPD0gdmFsWzBdLmUuYzsgKytybmdDKSB7XG5cdFx0XHRcdFx0XHRcdGNjID0gb3B0aW9ucy5kZW5zZSA/IChvdXRbcm5nUl18fFtdKVtybmdDXSA6IG91dFtlbmNvZGVfY2VsbCh7YzpybmdDLHI6cm5nUn0pXTtcblx0XHRcdFx0XHRcdFx0aWYoY2MgJiYgY2MubCkgY2MubC5Ub29sdGlwID0gdmFsWzFdO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDFjIC8qIE5vdGUgKi86IHtcblx0XHRcdFx0XHRpZihvcHRzLmJpZmYgPD0gNSAmJiBvcHRzLmJpZmYgPj0gMikgYnJlYWs7IC8qIFRPRE86IEJJRkY1ICovXG5cdFx0XHRcdFx0Y2MgPSBvcHRpb25zLmRlbnNlID8gKG91dFt2YWxbMF0ucl18fFtdKVt2YWxbMF0uY10gOiBvdXRbZW5jb2RlX2NlbGwodmFsWzBdKV07XG5cdFx0XHRcdFx0dmFyIG5vdGVvYmogPSBvYmplY3RzW3ZhbFsyXV07XG5cdFx0XHRcdFx0aWYoIWNjKSB7XG5cdFx0XHRcdFx0XHRpZihvcHRpb25zLmRlbnNlKSB7XG5cdFx0XHRcdFx0XHRcdGlmKCFvdXRbdmFsWzBdLnJdKSBvdXRbdmFsWzBdLnJdID0gW107XG5cdFx0XHRcdFx0XHRcdGNjID0gb3V0W3ZhbFswXS5yXVt2YWxbMF0uY10gPSAoe3Q6XCJ6XCJ9Lyo6YW55Ki8pO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Y2MgPSBvdXRbZW5jb2RlX2NlbGwodmFsWzBdKV0gPSAoe3Q6XCJ6XCJ9Lyo6YW55Ki8pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmFuZ2UuZS5yID0gTWF0aC5tYXgocmFuZ2UuZS5yLCB2YWxbMF0ucik7XG5cdFx0XHRcdFx0XHRyYW5nZS5zLnIgPSBNYXRoLm1pbihyYW5nZS5zLnIsIHZhbFswXS5yKTtcblx0XHRcdFx0XHRcdHJhbmdlLmUuYyA9IE1hdGgubWF4KHJhbmdlLmUuYywgdmFsWzBdLmMpO1xuXHRcdFx0XHRcdFx0cmFuZ2Uucy5jID0gTWF0aC5taW4ocmFuZ2Uucy5jLCB2YWxbMF0uYyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmKCFjYy5jKSBjYy5jID0gW107XG5cdFx0XHRcdFx0Y21udCA9IHthOnZhbFsxXSx0Om5vdGVvYmouVHhPLnR9O1xuXHRcdFx0XHRcdGNjLmMucHVzaChjbW50KTtcblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDA4N2QgLyogWEZFeHQgKi86IHVwZGF0ZV94ZmV4dChYRnNbdmFsLml4ZmVdLCB2YWwuZXh0KTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDdkIC8qIENvbEluZm8gKi86IHtcblx0XHRcdFx0XHRpZighb3B0cy5jZWxsU3R5bGVzKSBicmVhaztcblx0XHRcdFx0XHR3aGlsZSh2YWwuZSA+PSB2YWwucykge1xuXHRcdFx0XHRcdFx0Y29saW5mb1t2YWwuZS0tXSA9IHsgd2lkdGg6IHZhbC53LzI1NiwgbGV2ZWw6ICh2YWwubGV2ZWwgfHwgMCksIGhpZGRlbjogISEodmFsLmZsYWdzICYgMSkgfTtcblx0XHRcdFx0XHRcdGlmKCFzZWVuY29sKSB7IHNlZW5jb2wgPSB0cnVlOyBmaW5kX21kd19jb2x3KHZhbC53LzI1Nik7IH1cblx0XHRcdFx0XHRcdHByb2Nlc3NfY29sKGNvbGluZm9bdmFsLmUrMV0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAyMDggLyogUm93ICovOiB7XG5cdFx0XHRcdFx0dmFyIHJvd29iaiA9IHt9O1xuXHRcdFx0XHRcdGlmKHZhbC5sZXZlbCAhPSBudWxsKSB7IHJvd2luZm9bdmFsLnJdID0gcm93b2JqOyByb3dvYmoubGV2ZWwgPSB2YWwubGV2ZWw7IH1cblx0XHRcdFx0XHRpZih2YWwuaGlkZGVuKSB7IHJvd2luZm9bdmFsLnJdID0gcm93b2JqOyByb3dvYmouaGlkZGVuID0gdHJ1ZTsgfVxuXHRcdFx0XHRcdGlmKHZhbC5ocHQpIHtcblx0XHRcdFx0XHRcdHJvd2luZm9bdmFsLnJdID0gcm93b2JqO1xuXHRcdFx0XHRcdFx0cm93b2JqLmhwdCA9IHZhbC5ocHQ7IHJvd29iai5ocHggPSBwdDJweCh2YWwuaHB0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDI2IC8qIExlZnRNYXJnaW4gKi86XG5cdFx0XHRcdGNhc2UgMHgwMDI3IC8qIFJpZ2h0TWFyZ2luICovOlxuXHRcdFx0XHRjYXNlIDB4MDAyOCAvKiBUb3BNYXJnaW4gKi86XG5cdFx0XHRcdGNhc2UgMHgwMDI5IC8qIEJvdHRvbU1hcmdpbiAqLzpcblx0XHRcdFx0XHRpZighb3V0WychbWFyZ2lucyddKSBkZWZhdWx0X21hcmdpbnMob3V0WychbWFyZ2lucyddID0ge30pO1xuXHRcdFx0XHRcdG91dFsnIW1hcmdpbnMnXVsoezB4MjY6IFwibGVmdFwiLCAweDI3OlwicmlnaHRcIiwgMHgyODpcInRvcFwiLCAweDI5OlwiYm90dG9tXCJ9KVtSZWNvcmRUeXBlXV0gPSB2YWw7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMGExIC8qIFNldHVwICovOiAvLyBUT0RPXG5cdFx0XHRcdFx0aWYoIW91dFsnIW1hcmdpbnMnXSkgZGVmYXVsdF9tYXJnaW5zKG91dFsnIW1hcmdpbnMnXSA9IHt9KTtcblx0XHRcdFx0XHRvdXRbJyFtYXJnaW5zJ10uaGVhZGVyID0gdmFsLmhlYWRlcjtcblx0XHRcdFx0XHRvdXRbJyFtYXJnaW5zJ10uZm9vdGVyID0gdmFsLmZvb3Rlcjtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAweDAyM2UgLyogV2luZG93MiAqLzogLy8gVE9ET1xuXHRcdFx0XHRcdC8vICRGbG93SWdub3JlXG5cdFx0XHRcdFx0aWYodmFsLlJUTCkgV29ya2Jvb2suVmlld3NbMF0uUlRMID0gdHJ1ZTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwOTIgLyogUGFsZXR0ZSAqLzogcGFsZXR0ZSA9IHZhbDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwODk2IC8qIFRoZW1lICovOiB0aGVtZXMgPSB2YWw7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDA4YyAvKiBDb3VudHJ5ICovOiBjb3VudHJ5ID0gdmFsOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAxYmEgLyogQ29kZU5hbWUgKi86IHtcblx0XHRcdFx0XHQvKjo6IGlmKCFXb3JrYm9vay5XQlByb3BzKSBXb3JrYm9vay5XQlByb3BzID0ge307ICovXG5cdFx0XHRcdFx0aWYoIWN1cl9zaGVldCkgV29ya2Jvb2suV0JQcm9wcy5Db2RlTmFtZSA9IHZhbCB8fCBcIlRoaXNXb3JrYm9va1wiO1xuXHRcdFx0XHRcdGVsc2Ugd3Nwcm9wcy5Db2RlTmFtZSA9IHZhbCB8fCB3c3Byb3BzLm5hbWU7XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmKCFSKSBjb25zb2xlLmVycm9yKFwiTWlzc2luZyBJbmZvIGZvciBYTFMgUmVjb3JkIDB4XCIgKyBSZWNvcmRUeXBlLnRvU3RyaW5nKDE2KSk7XG5cdFx0XHRibG9iLmwgKz0gbGVuZ3RoO1xuXHRcdH1cblx0fVxuXHR3Yi5TaGVldE5hbWVzPWtleXMoRGlyZWN0b3J5KS5zb3J0KGZ1bmN0aW9uKGEsYikgeyByZXR1cm4gTnVtYmVyKGEpIC0gTnVtYmVyKGIpOyB9KS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIERpcmVjdG9yeVt4XS5uYW1lO30pO1xuXHRpZighb3B0aW9ucy5ib29rU2hlZXRzKSB3Yi5TaGVldHM9U2hlZXRzO1xuXHRpZighd2IuU2hlZXROYW1lcy5sZW5ndGggJiYgUHJlYW1ibGVbXCIhcmVmXCJdKSB7XG5cdFx0d2IuU2hlZXROYW1lcy5wdXNoKFwiU2hlZXQxXCIpO1xuXHRcdC8qanNoaW50IC1XMDY5ICovXG5cdFx0aWYod2IuU2hlZXRzKSB3Yi5TaGVldHNbXCJTaGVldDFcIl0gPSBQcmVhbWJsZTtcblx0XHQvKmpzaGludCArVzA2OSAqL1xuXHR9IGVsc2Ugd2IuUHJlYW1ibGU9UHJlYW1ibGU7XG5cdGlmKHdiLlNoZWV0cykgRmlsdGVyRGF0YWJhc2VzLmZvckVhY2goZnVuY3Rpb24ocixpKSB7IHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW2ldXVsnIWF1dG9maWx0ZXInXSA9IHI7IH0pO1xuXHR3Yi5TdHJpbmdzID0gc3N0O1xuXHR3Yi5TU0YgPSBkdXAodGFibGVfZm10KTtcblx0aWYob3B0cy5lbmMpIHdiLkVuY3J5cHRpb24gPSBvcHRzLmVuYztcblx0aWYodGhlbWVzKSB3Yi5UaGVtZXMgPSB0aGVtZXM7XG5cdHdiLk1ldGFkYXRhID0ge307XG5cdGlmKGNvdW50cnkgIT09IHVuZGVmaW5lZCkgd2IuTWV0YWRhdGEuQ291bnRyeSA9IGNvdW50cnk7XG5cdGlmKHN1cGJvb2tzLm5hbWVzLmxlbmd0aCA+IDApIFdvcmtib29rLk5hbWVzID0gc3VwYm9va3MubmFtZXM7XG5cdHdiLldvcmtib29rID0gV29ya2Jvb2s7XG5cdHJldHVybiB3Yjtcbn1cblxuLyogVE9ETzogc3BsaXQgcHJvcHMqL1xudmFyIFBTQ0xTSUQgPSB7XG5cdFNJOiBcImUwODU5ZmYyZjk0ZjY4MTBhYjkxMDgwMDJiMjdiM2Q5XCIsXG5cdERTSTogXCIwMmQ1Y2RkNTljMmUxYjEwOTM5NzA4MDAyYjJjZjlhZVwiLFxuXHRVREk6IFwiMDVkNWNkZDU5YzJlMWIxMDkzOTcwODAwMmIyY2Y5YWVcIlxufTtcbmZ1bmN0aW9uIHBhcnNlX3hsc19wcm9wcyhjZmIvKjpDRkJDb250YWluZXIqLywgcHJvcHMsIG8pIHtcblx0LyogW01TLU9TSEFSRURdIDIuMy4zLjIuMiBEb2N1bWVudCBTdW1tYXJ5IEluZm9ybWF0aW9uIFByb3BlcnR5IFNldCAqL1xuXHR2YXIgRFNJID0gQ0ZCLmZpbmQoY2ZiLCAnLyFEb2N1bWVudFN1bW1hcnlJbmZvcm1hdGlvbicpO1xuXHRpZihEU0kgJiYgRFNJLnNpemUgPiAwKSB0cnkge1xuXHRcdHZhciBEb2NTdW1tYXJ5ID0gcGFyc2VfUHJvcGVydHlTZXRTdHJlYW0oRFNJLCBEb2NTdW1tYXJ5UElERFNJLCBQU0NMU0lELkRTSSk7XG5cdFx0Zm9yKHZhciBkIGluIERvY1N1bW1hcnkpIHByb3BzW2RdID0gRG9jU3VtbWFyeVtkXTtcblx0fSBjYXRjaChlKSB7aWYoby5XVEYpIHRocm93IGU7LyogZW1wdHkgKi99XG5cblx0LyogW01TLU9TSEFSRURdIDIuMy4zLjIuMSBTdW1tYXJ5IEluZm9ybWF0aW9uIFByb3BlcnR5IFNldCovXG5cdHZhciBTSSA9IENGQi5maW5kKGNmYiwgJy8hU3VtbWFyeUluZm9ybWF0aW9uJyk7XG5cdGlmKFNJICYmIFNJLnNpemUgPiAwKSB0cnkge1xuXHRcdHZhciBTdW1tYXJ5ID0gcGFyc2VfUHJvcGVydHlTZXRTdHJlYW0oU0ksIFN1bW1hcnlQSURTSSwgUFNDTFNJRC5TSSk7XG5cdFx0Zm9yKHZhciBzIGluIFN1bW1hcnkpIGlmKHByb3BzW3NdID09IG51bGwpIHByb3BzW3NdID0gU3VtbWFyeVtzXTtcblx0fSBjYXRjaChlKSB7aWYoby5XVEYpIHRocm93IGU7LyogZW1wdHkgKi99XG5cblx0aWYocHJvcHMuSGVhZGluZ1BhaXJzICYmIHByb3BzLlRpdGxlc09mUGFydHMpIHtcblx0XHRsb2FkX3Byb3BzX3BhaXJzKHByb3BzLkhlYWRpbmdQYWlycywgcHJvcHMuVGl0bGVzT2ZQYXJ0cywgcHJvcHMsIG8pO1xuXHRcdGRlbGV0ZSBwcm9wcy5IZWFkaW5nUGFpcnM7IGRlbGV0ZSBwcm9wcy5UaXRsZXNPZlBhcnRzO1xuXHR9XG59XG5mdW5jdGlvbiB3cml0ZV94bHNfcHJvcHMod2IvKjpXb3JrYm9vayovLCBjZmIvKjpDRkJDb250YWluZXIqLykge1xuXHR2YXIgRFNFbnRyaWVzID0gW10sIFNFbnRyaWVzID0gW10sIENFbnRyaWVzID0gW107XG5cdHZhciBpID0gMCwgS2V5cztcblx0dmFyIERvY1N1bW1hcnlSRS8qOntba2V5OnN0cmluZ106c3RyaW5nfSovID0gZXZlcnRfa2V5KERvY1N1bW1hcnlQSUREU0ksIFwiblwiKTtcblx0dmFyIFN1bW1hcnlSRS8qOntba2V5OnN0cmluZ106c3RyaW5nfSovID0gZXZlcnRfa2V5KFN1bW1hcnlQSURTSSwgXCJuXCIpO1xuXHRpZih3Yi5Qcm9wcykge1xuXHRcdEtleXMgPSBrZXlzKHdiLlByb3BzKTtcblx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdGZvcihpID0gMDsgaSA8IEtleXMubGVuZ3RoOyArK2kpIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoRG9jU3VtbWFyeVJFLCBLZXlzW2ldKSA/IERTRW50cmllcyA6IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChTdW1tYXJ5UkUsIEtleXNbaV0pID8gU0VudHJpZXMgOiBDRW50cmllcykucHVzaChbS2V5c1tpXSwgd2IuUHJvcHNbS2V5c1tpXV1dKTtcblx0fVxuXHRpZih3Yi5DdXN0cHJvcHMpIHtcblx0XHRLZXlzID0ga2V5cyh3Yi5DdXN0cHJvcHMpO1xuXHRcdC8vICRGbG93SWdub3JlXG5cdFx0Zm9yKGkgPSAwOyBpIDwgS2V5cy5sZW5ndGg7ICsraSkgaWYoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCgod2IuUHJvcHN8fHt9KSwgS2V5c1tpXSkpIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoRG9jU3VtbWFyeVJFLCBLZXlzW2ldKSA/IERTRW50cmllcyA6IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChTdW1tYXJ5UkUsIEtleXNbaV0pID8gU0VudHJpZXMgOiBDRW50cmllcykucHVzaChbS2V5c1tpXSwgd2IuQ3VzdHByb3BzW0tleXNbaV1dXSk7XG5cdH1cblx0dmFyIENFbnRyaWVzMiA9IFtdO1xuXHRmb3IoaSA9IDA7IGkgPCBDRW50cmllcy5sZW5ndGg7ICsraSkge1xuXHRcdGlmKFhMU1BTU2tpcC5pbmRleE9mKENFbnRyaWVzW2ldWzBdKSA+IC0xIHx8IFBzZXVkb1Byb3BzUGFpcnMuaW5kZXhPZihDRW50cmllc1tpXVswXSkgPiAtMSkgY29udGludWU7XG5cdFx0aWYoQ0VudHJpZXNbaV1bMV0gPT0gbnVsbCkgY29udGludWU7XG5cdFx0Q0VudHJpZXMyLnB1c2goQ0VudHJpZXNbaV0pO1xuXHR9XG5cdGlmKFNFbnRyaWVzLmxlbmd0aCkgQ0ZCLnV0aWxzLmNmYl9hZGQoY2ZiLCBcIi9cXHUwMDA1U3VtbWFyeUluZm9ybWF0aW9uXCIsIHdyaXRlX1Byb3BlcnR5U2V0U3RyZWFtKFNFbnRyaWVzLCBQU0NMU0lELlNJLCBTdW1tYXJ5UkUsIFN1bW1hcnlQSURTSSkpO1xuXHRpZihEU0VudHJpZXMubGVuZ3RoIHx8IENFbnRyaWVzMi5sZW5ndGgpIENGQi51dGlscy5jZmJfYWRkKGNmYiwgXCIvXFx1MDAwNURvY3VtZW50U3VtbWFyeUluZm9ybWF0aW9uXCIsIHdyaXRlX1Byb3BlcnR5U2V0U3RyZWFtKERTRW50cmllcywgUFNDTFNJRC5EU0ksIERvY1N1bW1hcnlSRSwgRG9jU3VtbWFyeVBJRERTSSwgQ0VudHJpZXMyLmxlbmd0aCA/IENFbnRyaWVzMiA6IG51bGwsIFBTQ0xTSUQuVURJKSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX3hsc2NmYihjZmIvKjphbnkqLywgb3B0aW9ucy8qOj9QYXJzZU9wdHMqLykvKjpXb3JrYm9vayovIHtcbmlmKCFvcHRpb25zKSBvcHRpb25zID0ge307XG5maXhfcmVhZF9vcHRzKG9wdGlvbnMpO1xucmVzZXRfY3AoKTtcbmlmKG9wdGlvbnMuY29kZXBhZ2UpIHNldF9hbnNpKG9wdGlvbnMuY29kZXBhZ2UpO1xudmFyIENvbXBPYmovKjo/Q0ZCRW50cnkqLywgV0IvKjo/YW55Ki87XG5pZihjZmIuRnVsbFBhdGhzKSB7XG5cdGlmKENGQi5maW5kKGNmYiwgJy9lbmNyeXB0aW9uJykpIHRocm93IG5ldyBFcnJvcihcIkZpbGUgaXMgcGFzc3dvcmQtcHJvdGVjdGVkXCIpO1xuXHRDb21wT2JqID0gQ0ZCLmZpbmQoY2ZiLCAnIUNvbXBPYmonKTtcblx0V0IgPSBDRkIuZmluZChjZmIsICcvV29ya2Jvb2snKSB8fCBDRkIuZmluZChjZmIsICcvQm9vaycpO1xufSBlbHNlIHtcblx0c3dpdGNoKG9wdGlvbnMudHlwZSkge1xuXHRcdGNhc2UgJ2Jhc2U2NCc6IGNmYiA9IHMyYShCYXNlNjRfZGVjb2RlKGNmYikpOyBicmVhaztcblx0XHRjYXNlICdiaW5hcnknOiBjZmIgPSBzMmEoY2ZiKTsgYnJlYWs7XG5cdFx0Y2FzZSAnYnVmZmVyJzogYnJlYWs7XG5cdFx0Y2FzZSAnYXJyYXknOiBpZighQXJyYXkuaXNBcnJheShjZmIpKSBjZmIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjZmIpOyBicmVhaztcblx0fVxuXHRwcmVwX2Jsb2IoY2ZiLCAwKTtcblx0V0IgPSAoe2NvbnRlbnQ6IGNmYn0vKjphbnkqLyk7XG59XG52YXIgLyo6OkNvbXBPYmpQLCAqL1dvcmtib29rUC8qOjogOldvcmtib29rID0gWExTWC51dGlscy5ib29rX25ldygpOyAqLztcblxudmFyIF9kYXRhLyo6P2FueSovO1xuaWYoQ29tcE9iaikgLyo6OkNvbXBPYmpQID0gKi9wYXJzZV9jb21wb2JqKENvbXBPYmopO1xuaWYob3B0aW9ucy5ib29rUHJvcHMgJiYgIW9wdGlvbnMuYm9va1NoZWV0cykgV29ya2Jvb2tQID0gKHt9Lyo6YW55Ki8pO1xuZWxzZS8qOjogaWYoY2ZiIGluc3RhbmNlb2YgQ0ZCQ29udGFpbmVyKSAqLyB7XG5cdHZhciBUID0gaGFzX2J1ZiA/ICdidWZmZXInIDogJ2FycmF5Jztcblx0aWYoV0IgJiYgV0IuY29udGVudCkgV29ya2Jvb2tQID0gcGFyc2Vfd29ya2Jvb2soV0IuY29udGVudCwgb3B0aW9ucyk7XG5cdC8qIFF1YXR0cm8gUHJvIDctOCAqL1xuXHRlbHNlIGlmKChfZGF0YT1DRkIuZmluZChjZmIsICdQZXJmZWN0T2ZmaWNlX01BSU4nKSkgJiYgX2RhdGEuY29udGVudCkgV29ya2Jvb2tQID0gV0tfLnRvX3dvcmtib29rKF9kYXRhLmNvbnRlbnQsIChvcHRpb25zLnR5cGUgPSBULCBvcHRpb25zKSk7XG5cdC8qIFF1YXR0cm8gUHJvIDkgKi9cblx0ZWxzZSBpZigoX2RhdGE9Q0ZCLmZpbmQoY2ZiLCAnTmF0aXZlQ29udGVudF9NQUlOJykpICYmIF9kYXRhLmNvbnRlbnQpIFdvcmtib29rUCA9IFdLXy50b193b3JrYm9vayhfZGF0YS5jb250ZW50LCAob3B0aW9ucy50eXBlID0gVCwgb3B0aW9ucykpO1xuXHQvKiBXb3JrcyA0IGZvciBNYWMgKi9cblx0ZWxzZSBpZigoX2RhdGE9Q0ZCLmZpbmQoY2ZiLCAnTU4wJykpICYmIF9kYXRhLmNvbnRlbnQpIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIFdvcmtzIDQgZm9yIE1hYyBmaWxlXCIpO1xuXHRlbHNlIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIFdvcmtib29rIHN0cmVhbVwiKTtcblx0aWYob3B0aW9ucy5ib29rVkJBICYmIGNmYi5GdWxsUGF0aHMgJiYgQ0ZCLmZpbmQoY2ZiLCAnL19WQkFfUFJPSkVDVF9DVVIvVkJBL2RpcicpKSBXb3JrYm9va1AudmJhcmF3ID0gbWFrZV92YmFfeGxzKGNmYik7XG59XG5cbnZhciBwcm9wcyA9IHt9O1xuaWYoY2ZiLkZ1bGxQYXRocykgcGFyc2VfeGxzX3Byb3BzKC8qOjooKCovY2ZiLyo6OiA6YW55KTpDRkJDb250YWluZXIpKi8sIHByb3BzLCBvcHRpb25zKTtcblxuV29ya2Jvb2tQLlByb3BzID0gV29ya2Jvb2tQLkN1c3Rwcm9wcyA9IHByb3BzOyAvKiBUT0RPOiBzcGxpdCB1cCBwcm9wZXJ0aWVzICovXG5pZihvcHRpb25zLmJvb2tGaWxlcykgV29ya2Jvb2tQLmNmYiA9IGNmYjtcbi8qV29ya2Jvb2tQLkNvbXBPYmpQID0gQ29tcE9ialA7IC8vIFRPRE86IHN0b3JhZ2U/ICovXG5yZXR1cm4gV29ya2Jvb2tQO1xufVxuXG5cbmZ1bmN0aW9uIHdyaXRlX3hsc2NmYih3Yi8qOldvcmtib29rKi8sIG9wdHMvKjpXcml0ZU9wdHMqLykvKjpDRkJDb250YWluZXIqLyB7XG5cdHZhciBvID0gb3B0cyB8fCB7fTtcblx0dmFyIGNmYiA9IENGQi51dGlscy5jZmJfbmV3KHtyb290OlwiUlwifSk7XG5cdHZhciB3YnBhdGggPSBcIi9Xb3JrYm9va1wiO1xuXHRzd2l0Y2goby5ib29rVHlwZSB8fCBcInhsc1wiKSB7XG5cdFx0Y2FzZSBcInhsc1wiOiBvLmJvb2tUeXBlID0gXCJiaWZmOFwiO1xuXHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRjYXNlIFwieGxhXCI6IGlmKCFvLmJvb2tUeXBlKSBvLmJvb2tUeXBlID0gXCJ4bGFcIjtcblx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0Y2FzZSBcImJpZmY4XCI6IHdicGF0aCA9IFwiL1dvcmtib29rXCI7IG8uYmlmZiA9IDg7IGJyZWFrO1xuXHRcdGNhc2UgXCJiaWZmNVwiOiB3YnBhdGggPSBcIi9Cb29rXCI7IG8uYmlmZiA9IDU7IGJyZWFrO1xuXHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcImludmFsaWQgdHlwZSBcIiArIG8uYm9va1R5cGUgKyBcIiBmb3IgWExTIENGQlwiKTtcblx0fVxuXHRDRkIudXRpbHMuY2ZiX2FkZChjZmIsIHdicGF0aCwgd3JpdGVfYmlmZl9idWYod2IsIG8pKTtcblx0aWYoby5iaWZmID09IDggJiYgKHdiLlByb3BzIHx8IHdiLkN1c3Rwcm9wcykpIHdyaXRlX3hsc19wcm9wcyh3YiwgY2ZiKTtcblx0Ly8gVE9ETzogU0ksIERTSSwgQ09cblx0aWYoby5iaWZmID09IDggJiYgd2IudmJhcmF3KSBmaWxsX3ZiYV94bHMoY2ZiLCBDRkIucmVhZCh3Yi52YmFyYXcsIHt0eXBlOiB0eXBlb2Ygd2IudmJhcmF3ID09IFwic3RyaW5nXCIgPyBcImJpbmFyeVwiIDogXCJidWZmZXJcIn0pKTtcblx0cmV0dXJuIGNmYjtcbn1cbi8qIFtNUy1YTFNCXSAyLjMgUmVjb3JkIEVudW1lcmF0aW9uICovXG52YXIgWExTQlJlY29yZEVudW0gPSB7XG5cdC8qOjpbKi8weDAwMDAvKjo6XSovOiB7IC8qIG46XCJCcnRSb3dIZHJcIiwgKi8gZjpwYXJzZV9CcnRSb3dIZHIgfSxcblx0Lyo6OlsqLzB4MDAwMS8qOjpdKi86IHsgLyogbjpcIkJydENlbGxCbGFua1wiLCAqLyBmOnBhcnNlX0JydENlbGxCbGFuayB9LFxuXHQvKjo6WyovMHgwMDAyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q2VsbFJrXCIsICovIGY6cGFyc2VfQnJ0Q2VsbFJrIH0sXG5cdC8qOjpbKi8weDAwMDMvKjo6XSovOiB7IC8qIG46XCJCcnRDZWxsRXJyb3JcIiwgKi8gZjpwYXJzZV9CcnRDZWxsRXJyb3IgfSxcblx0Lyo6OlsqLzB4MDAwNC8qOjpdKi86IHsgLyogbjpcIkJydENlbGxCb29sXCIsICovIGY6cGFyc2VfQnJ0Q2VsbEJvb2wgfSxcblx0Lyo6OlsqLzB4MDAwNS8qOjpdKi86IHsgLyogbjpcIkJydENlbGxSZWFsXCIsICovIGY6cGFyc2VfQnJ0Q2VsbFJlYWwgfSxcblx0Lyo6OlsqLzB4MDAwNi8qOjpdKi86IHsgLyogbjpcIkJydENlbGxTdFwiLCAqLyBmOnBhcnNlX0JydENlbGxTdCB9LFxuXHQvKjo6WyovMHgwMDA3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q2VsbElzc3RcIiwgKi8gZjpwYXJzZV9CcnRDZWxsSXNzdCB9LFxuXHQvKjo6WyovMHgwMDA4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0Rm1sYVN0cmluZ1wiLCAqLyBmOnBhcnNlX0JydEZtbGFTdHJpbmcgfSxcblx0Lyo6OlsqLzB4MDAwOS8qOjpdKi86IHsgLyogbjpcIkJydEZtbGFOdW1cIiwgKi8gZjpwYXJzZV9CcnRGbWxhTnVtIH0sXG5cdC8qOjpbKi8weDAwMEEvKjo6XSovOiB7IC8qIG46XCJCcnRGbWxhQm9vbFwiLCAqLyBmOnBhcnNlX0JydEZtbGFCb29sIH0sXG5cdC8qOjpbKi8weDAwMEIvKjo6XSovOiB7IC8qIG46XCJCcnRGbWxhRXJyb3JcIiwgKi8gZjpwYXJzZV9CcnRGbWxhRXJyb3IgfSxcblx0Lyo6OlsqLzB4MDAwQy8qOjpdKi86IHsgLyogbjpcIkJydFNob3J0QmxhbmtcIiwgKi8gZjpwYXJzZV9CcnRTaG9ydEJsYW5rIH0sXG5cdC8qOjpbKi8weDAwMEQvKjo6XSovOiB7IC8qIG46XCJCcnRTaG9ydFJrXCIsICovIGY6cGFyc2VfQnJ0U2hvcnRSayB9LFxuXHQvKjo6WyovMHgwMDBFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2hvcnRFcnJvclwiLCAqLyBmOnBhcnNlX0JydFNob3J0RXJyb3IgfSxcblx0Lyo6OlsqLzB4MDAwRi8qOjpdKi86IHsgLyogbjpcIkJydFNob3J0Qm9vbFwiLCAqLyBmOnBhcnNlX0JydFNob3J0Qm9vbCB9LFxuXHQvKjo6WyovMHgwMDEwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2hvcnRSZWFsXCIsICovIGY6cGFyc2VfQnJ0U2hvcnRSZWFsIH0sXG5cdC8qOjpbKi8weDAwMTEvKjo6XSovOiB7IC8qIG46XCJCcnRTaG9ydFN0XCIsICovIGY6cGFyc2VfQnJ0U2hvcnRTdCB9LFxuXHQvKjo6WyovMHgwMDEyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2hvcnRJc3N0XCIsICovIGY6cGFyc2VfQnJ0U2hvcnRJc3N0IH0sXG5cdC8qOjpbKi8weDAwMTMvKjo6XSovOiB7IC8qIG46XCJCcnRTU1RJdGVtXCIsICovIGY6cGFyc2VfUmljaFN0ciB9LFxuXHQvKjo6WyovMHgwMDE0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UENESU1pc3NpbmdcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDE1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UENESU51bWJlclwiICovIH0sXG5cdC8qOjpbKi8weDAwMTYvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RJQm9vbGVhblwiICovIH0sXG5cdC8qOjpbKi8weDAwMTcvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RJRXJyb3JcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDE4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UENESVN0cmluZ1wiICovIH0sXG5cdC8qOjpbKi8weDAwMTkvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RJRGF0ZXRpbWVcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDFBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UENESUluZGV4XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDAxQi8qOjpdKi86IHsgLyogbjpcIkJydFBDRElBTWlzc2luZ1wiICovIH0sXG5cdC8qOjpbKi8weDAwMUMvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RJQU51bWJlclwiICovIH0sXG5cdC8qOjpbKi8weDAwMUQvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RJQUJvb2xlYW5cIiAqLyB9LFxuXHQvKjo6WyovMHgwMDFFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UENESUFFcnJvclwiICovIH0sXG5cdC8qOjpbKi8weDAwMUYvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RJQVN0cmluZ1wiICovIH0sXG5cdC8qOjpbKi8weDAwMjAvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RJQURhdGV0aW1lXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDAyMS8qOjpdKi86IHsgLyogbjpcIkJydFBDUlJlY29yZFwiICovIH0sXG5cdC8qOjpbKi8weDAwMjIvKjo6XSovOiB7IC8qIG46XCJCcnRQQ1JSZWNvcmREdFwiICovIH0sXG5cdC8qOjpbKi8weDAwMjMvKjo6XSovOiB7IC8qIG46XCJCcnRGUlRCZWdpblwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDAyNC8qOjpdKi86IHsgLyogbjpcIkJydEZSVEVuZFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwMjUvKjo6XSovOiB7IC8qIG46XCJCcnRBQ0JlZ2luXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMDI2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QUNFbmRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMDI3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0TmFtZVwiLCAqLyBmOnBhcnNlX0JydE5hbWUgfSxcblx0Lyo6OlsqLzB4MDAyOC8qOjpdKi86IHsgLyogbjpcIkJydEluZGV4Um93QmxvY2tcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDJBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0SW5kZXhCbG9ja1wiICovIH0sXG5cdC8qOjpbKi8weDAwMkIvKjo6XSovOiB7IC8qIG46XCJCcnRGb250XCIsICovIGY6cGFyc2VfQnJ0Rm9udCB9LFxuXHQvKjo6WyovMHgwMDJDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Rm10XCIsICovIGY6cGFyc2VfQnJ0Rm10IH0sXG5cdC8qOjpbKi8weDAwMkQvKjo6XSovOiB7IC8qIG46XCJCcnRGaWxsXCIsICovIGY6cGFyc2VfQnJ0RmlsbCB9LFxuXHQvKjo6WyovMHgwMDJFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Qm9yZGVyXCIsICovIGY6cGFyc2VfQnJ0Qm9yZGVyIH0sXG5cdC8qOjpbKi8weDAwMkYvKjo6XSovOiB7IC8qIG46XCJCcnRYRlwiLCAqLyBmOnBhcnNlX0JydFhGIH0sXG5cdC8qOjpbKi8weDAwMzAvKjo6XSovOiB7IC8qIG46XCJCcnRTdHlsZVwiICovIH0sXG5cdC8qOjpbKi8weDAwMzEvKjo6XSovOiB7IC8qIG46XCJCcnRDZWxsTWV0YVwiLCAqLyBmOnBhcnNlX0ludDMyTEUgfSxcblx0Lyo6OlsqLzB4MDAzMi8qOjpdKi86IHsgLyogbjpcIkJydFZhbHVlTWV0YVwiICovIH0sXG5cdC8qOjpbKi8weDAwMzMvKjo6XSovOiB7IC8qIG46XCJCcnRNZGJcIiAqLyBmOnBhcnNlX0JydE1kYiB9LFxuXHQvKjo6WyovMHgwMDM0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5GbWRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwMzUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRGbWRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMDM2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5NZHhcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwMzcvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRNZHhcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMDM4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5NZHhUdXBsZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDAzOS8qOjpdKi86IHsgLyogbjpcIkJydEVuZE1keFR1cGxlXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDAzQS8qOjpdKi86IHsgLyogbjpcIkJydE1keE1icklzdHJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDNCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3RyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDAzQy8qOjpdKi86IHsgLyogbjpcIkJydENvbEluZm9cIiwgKi8gZjpwYXJzZV9Db2xJbmZvIH0sXG5cdC8qOjpbKi8weDAwM0UvKjo6XSovOiB7IC8qIG46XCJCcnRDZWxsUlN0cmluZ1wiLCAqLyBmOnBhcnNlX0JydENlbGxSU3RyaW5nIH0sXG5cdC8qOjpbKi8weDAwM0YvKjo6XSovOiB7IC8qIG46XCJCcnRDYWxjQ2hhaW5JdGVtJFwiLCAqLyBmOnBhcnNlX0JydENhbGNDaGFpbkl0ZW0kIH0sXG5cdC8qOjpbKi8weDAwNDAvKjo6XSovOiB7IC8qIG46XCJCcnREVmFsXCIsICovIGY6cGFyc2VfQnJ0RFZhbCB9LFxuXHQvKjo6WyovMHgwMDQxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3h2Y2VsbE51bVwiICovIH0sXG5cdC8qOjpbKi8weDAwNDIvKjo6XSovOiB7IC8qIG46XCJCcnRTeHZjZWxsU3RyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDA0My8qOjpdKi86IHsgLyogbjpcIkJydFN4dmNlbGxCb29sXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDA0NC8qOjpdKi86IHsgLyogbjpcIkJydFN4dmNlbGxFcnJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDQ1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3h2Y2VsbERhdGVcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDQ2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3h2Y2VsbE5pbFwiICovIH0sXG5cdC8qOjpbKi8weDAwODAvKjo6XSovOiB7IC8qIG46XCJCcnRGaWxlVmVyc2lvblwiICovIH0sXG5cdC8qOjpbKi8weDAwODEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNoZWV0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMDgyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2hlZXRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMDgzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Cb29rXCIsICovIFQ6MSwgZjpwYXJzZW5vb3AsIHA6MCB9LFxuXHQvKjo6WyovMHgwMDg0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQm9va1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwODUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbldzVmlld3NcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwODYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRXc1ZpZXdzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDA4Ny8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQm9va1ZpZXdzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMDg4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQm9va1ZpZXdzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDA4OS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luV3NWaWV3XCIsICovIFQ6MSwgZjpwYXJzZV9CcnRCZWdpbldzVmlldyB9LFxuXHQvKjo6WyovMHgwMDhBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kV3NWaWV3XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDA4Qi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ3NWaWV3c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDA4Qy8qOjpdKi86IHsgLyogbjpcIkJydEVuZENzVmlld3NcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMDhELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Dc1ZpZXdcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwOEUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDc1ZpZXdcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMDhGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5CdW5kbGVTaHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwOTAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRCdW5kbGVTaHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMDkxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TaGVldERhdGFcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwOTIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTaGVldERhdGFcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMDkzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0V3NQcm9wXCIsICovIGY6cGFyc2VfQnJ0V3NQcm9wIH0sXG5cdC8qOjpbKi8weDAwOTQvKjo6XSovOiB7IC8qIG46XCJCcnRXc0RpbVwiLCAqLyBmOnBhcnNlX0JydFdzRGltLCBwOjE2IH0sXG5cdC8qOjpbKi8weDAwOTcvKjo6XSovOiB7IC8qIG46XCJCcnRQYW5lXCIsICovIGY6cGFyc2VfQnJ0UGFuZSB9LFxuXHQvKjo6WyovMHgwMDk4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2VsXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDA5OS8qOjpdKi86IHsgLyogbjpcIkJydFdiUHJvcFwiLCAqLyBmOnBhcnNlX0JydFdiUHJvcCB9LFxuXHQvKjo6WyovMHgwMDlBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0V2JGYWN0b2lkXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDA5Qi8qOjpdKi86IHsgLyogbjpcIkJydEZpbGVSZWNvdmVyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDA5Qy8qOjpdKi86IHsgLyogbjpcIkJydEJ1bmRsZVNoXCIsICovIGY6cGFyc2VfQnJ0QnVuZGxlU2ggfSxcblx0Lyo6OlsqLzB4MDA5RC8qOjpdKi86IHsgLyogbjpcIkJydENhbGNQcm9wXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDA5RS8qOjpdKi86IHsgLyogbjpcIkJydEJvb2tWaWV3XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDA5Ri8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU3N0XCIsICovIFQ6MSwgZjpwYXJzZV9CcnRCZWdpblNzdCB9LFxuXHQvKjo6WyovMHgwMEEwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU3N0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBBMS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQUZpbHRlclwiLCAqLyBUOjEsIGY6cGFyc2VfVW5jaGVja2VkUmZYIH0sXG5cdC8qOjpbKi8weDAwQTIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRBRmlsdGVyXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBBMy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRmlsdGVyQ29sdW1uXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEE0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRmlsdGVyQ29sdW1uXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBBNS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRmlsdGVyc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBBNi8qOjpdKi86IHsgLyogbjpcIkJydEVuZEZpbHRlcnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEE3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RmlsdGVyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDBBOC8qOjpdKi86IHsgLyogbjpcIkJydENvbG9yRmlsdGVyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDBBOS8qOjpdKi86IHsgLyogbjpcIkJydEljb25GaWx0ZXJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMEFBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0VG9wMTBGaWx0ZXJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMEFCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RHluYW1pY0ZpbHRlclwiICovIH0sXG5cdC8qOjpbKi8weDAwQUMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkN1c3RvbUZpbHRlcnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwQUQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDdXN0b21GaWx0ZXJzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBBRS8qOjpdKi86IHsgLyogbjpcIkJydEN1c3RvbUZpbHRlclwiICovIH0sXG5cdC8qOjpbKi8weDAwQUYvKjo6XSovOiB7IC8qIG46XCJCcnRBRmlsdGVyRGF0ZUdyb3VwSXRlbVwiICovIH0sXG5cdC8qOjpbKi8weDAwQjAvKjo6XSovOiB7IC8qIG46XCJCcnRNZXJnZUNlbGxcIiwgKi8gZjpwYXJzZV9CcnRNZXJnZUNlbGwgfSxcblx0Lyo6OlsqLzB4MDBCMS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTWVyZ2VDZWxsc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBCMi8qOjpdKi86IHsgLyogbjpcIkJydEVuZE1lcmdlQ2VsbHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEIzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QaXZvdENhY2hlRGVmXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEI0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUGl2b3RDYWNoZURlZlwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwQjUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDREZpZWxkc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBCNi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREZpZWxkc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwQjcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDREZpZWxkXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEI4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENERmllbGRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEI5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RTb3VyY2VcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwQkEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RTb3VyY2VcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEJCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RTUmFuZ2VcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwQkMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RTUmFuZ2VcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEJELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RGQXRibFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBCRS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREZBdGJsXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBCRi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENESVJ1blwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBDMC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRElSdW5cIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEMxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QaXZvdENhY2hlUmVjb3Jkc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBDMi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBpdm90Q2FjaGVSZWNvcmRzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBDMy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENESGllcmFyY2hpZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwQzQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RIaWVyYXJjaGllc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwQzUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDREhpZXJhcmNoeVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBDNi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREhpZXJhcmNoeVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwQzcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDREhGaWVsZHNVc2FnZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBDOC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREhGaWVsZHNVc2FnZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwQzkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkV4dENvbm5lY3Rpb25cIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwQ0EvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFeHRDb25uZWN0aW9uXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBDQi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRUNEYlByb3BzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMENDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRUNEYlByb3BzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBDRC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRUNPbGFwUHJvcHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwQ0UvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFQ09sYXBQcm9wc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwQ0YvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRFNDb25zb2xcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRDAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RTQ29uc29sXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBEMS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEU0NQYWdlc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBEMi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRFNDUGFnZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEQzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RTQ1BhZ2VcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRDQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RTQ1BhZ2VcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEQ1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RTQ1BJdGVtXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEQ2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEU0NQSXRlbVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwRDcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRFNDU2V0c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBEOC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRFNDU2V0c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwRDkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRFNDU2V0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMERBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEU0NTZXRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMERCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RGR3JvdXBcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwREMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RGR3JvdXBcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMERELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RGR0l0ZW1zXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMERFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENERkdJdGVtc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwREYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDREZHUmFuZ2VcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRTAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RGR1JhbmdlXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBFMS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENERkdEaXNjcmV0ZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBFMi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREZHRGlzY3JldGVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEUzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RTRFR1cGxlQ2FjaGVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRTQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RTRFR1cGxlQ2FjaGVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEU1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RTRFRDRW50cmllc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBFNi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRFNEVENFbnRyaWVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBFNy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEU0RUQ0VNZW1iZXJzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEU4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEU0RUQ0VNZW1iZXJzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBFOS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEU0RUQ0VNZW1iZXJcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRUEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RTRFRDRU1lbWJlclwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwRUIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRFNEVENRdWVyaWVzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEVDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEU0RUQ1F1ZXJpZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEVELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RTRFRDUXVlcnlcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRUUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RTRFRDUXVlcnlcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEVGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RTRFRDU2V0c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBGMC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRFNEVENTZXRzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBGMS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEU0RUQ1NldFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBGMi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRFNEVENTZXRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEYzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RDYWxjSXRlbXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRjQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RDYWxjSXRlbXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEY1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RDYWxjSXRlbVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBGNi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRENhbGNJdGVtXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBGNy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUFJ1bGVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRjgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQUnVsZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwRjkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBSRmlsdGVyc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBGQS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBSRmlsdGVyc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwRkIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBSRmlsdGVyXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEZDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUFJGaWx0ZXJcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEZELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QTmFtZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRkUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQTmFtZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEZGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QTmFtZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEwMC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBOYW1lXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEwMS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUE5QYWlyc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEwMi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBOUGFpcnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTAzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QTlBhaXJcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMDQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQTlBhaXJcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTA1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5FQ1dlYlByb3BzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTA2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRUNXZWJQcm9wc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMDcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkVjV3BUYWJsZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMDgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFQ1dQVGFibGVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEwOS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRUNQYXJhbXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMEEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFQ1BhcmFtc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMEIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkVDUGFyYW1cIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMEMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFQ1BhcmFtXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEwRC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENES1BJc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEwRS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREtQSXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTBGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RLUElcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMTAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RLUElcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTExLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5EaW1zXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTEyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRGltc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMTMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkRpbVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDExNC8qOjpdKi86IHsgLyogbjpcIkJydEVuZERpbVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMTUvKjo6XSovOiB7IC8qIG46XCJCcnRJbmRleFBhcnRFbmRcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTE2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TdHlsZVNoZWV0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTE3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU3R5bGVTaGVldFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMTgvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYVmlld1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDExOS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYVklcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTFBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFZJXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTFCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFZJc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDExQy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYVklzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDExRC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hWRFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDExRS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYVkRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTFGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFZEc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEyMC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYVkRzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEyMS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hQSVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEyMi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYUElcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTIzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFBJc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEyNC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYUElzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEyNS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hESVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEyNi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYRElcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTI3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWERJc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEyOC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYRElzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEyOS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hMSVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEyQS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYTElcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTJCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWExJUndzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTJDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hMSVJ3c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMkQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYTElDb2xzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTJFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hMSUNvbHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTJGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWEZvcm1hdFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEzMC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYRm9ybWF0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEzMS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hGb3JtYXRzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTMyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU3hGb3JtYXRzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEzMy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU3hTZWxlY3RcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMzQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTeFNlbGVjdFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMzUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbklTWFZEUndzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTM2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kSVNYVkRSd3NcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTM3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5JU1hWRENvbHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMzgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRJU1hWRENvbHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTM5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hMb2NhdGlvblwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxM0EvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYTG9jYXRpb25cIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxM0IvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWFZpZXdcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTNDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFRIc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEzRC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYVEhzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEzRS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hUSFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEzRi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYVEhcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTQwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5JU1hUSFJ3c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE0MS8qOjpdKi86IHsgLyogbjpcIkJydEVuZElTWFRIUndzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE0Mi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luSVNYVEhDb2xzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTQzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kSVNYVEhDb2xzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE0NC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hURE1QU1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE0NS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYVERNUHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTQ2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFRETVBcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNDcvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWFRETVBcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTQ4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFRISXRlbXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNDkvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWFRISXRlbXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTRBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFRISXRlbVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE0Qi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYVEhJdGVtXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE0Qy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTWV0YWRhdGFcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNEQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRNZXRhZGF0YVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxNEUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkVzbWR0aW5mb1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE0Ri8qOjpdKi86IHsgLyogbjpcIkJydE1kdGluZm9cIiwgKi8gZjpwYXJzZV9CcnRNZHRpbmZvIH0sXG5cdC8qOjpbKi8weDAxNTAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFc21kdGluZm9cIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTUxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Fc21kYlwiLCAqLyBmOnBhcnNlX0JydEJlZ2luRXNtZGIsIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTUyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRXNtZGJcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTUzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Fc2ZtZFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE1NC8qOjpdKi86IHsgLyogbjpcIkJydEVuZEVzZm1kXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE1NS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2luZ2xlQ2VsbHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNTYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTaW5nbGVDZWxsc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxNTcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkxpc3RcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNTgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRMaXN0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE1OS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTGlzdENvbHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNUEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRMaXN0Q29sc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxNUIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkxpc3RDb2xcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNUMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRMaXN0Q29sXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE1RC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTGlzdFhtbENQclwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE1RS8qOjpdKi86IHsgLyogbjpcIkJydEVuZExpc3RYbWxDUHJcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTVGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0TGlzdENDRm1sYVwiICovIH0sXG5cdC8qOjpbKi8weDAxNjAvKjo6XSovOiB7IC8qIG46XCJCcnRMaXN0VHJGbWxhXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE2MS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRXh0ZXJuYWxzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTYyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRXh0ZXJuYWxzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE2My8qOjpdKi86IHsgLyogbjpcIkJydFN1cEJvb2tTcmNcIiwgKi8gZjpwYXJzZV9SZWxJRH0sXG5cdC8qOjpbKi8weDAxNjUvKjo6XSovOiB7IC8qIG46XCJCcnRTdXBTZWxmXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE2Ni8qOjpdKi86IHsgLyogbjpcIkJydFN1cFNhbWVcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTY3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3VwVGFic1wiICovIH0sXG5cdC8qOjpbKi8weDAxNjgvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblN1cEJvb2tcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNjkvKjo6XSovOiB7IC8qIG46XCJCcnRQbGFjZWhvbGRlck5hbWVcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTZBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RXh0ZXJuU2hlZXRcIiwgKi8gZjpwYXJzZV9FeHRlcm5TaGVldCB9LFxuXHQvKjo6WyovMHgwMTZCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RXh0ZXJuVGFibGVTdGFydFwiICovIH0sXG5cdC8qOjpbKi8weDAxNkMvKjo6XSovOiB7IC8qIG46XCJCcnRFeHRlcm5UYWJsZUVuZFwiICovIH0sXG5cdC8qOjpbKi8weDAxNkUvKjo6XSovOiB7IC8qIG46XCJCcnRFeHRlcm5Sb3dIZHJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTZGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RXh0ZXJuQ2VsbEJsYW5rXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE3MC8qOjpdKi86IHsgLyogbjpcIkJydEV4dGVybkNlbGxSZWFsXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE3MS8qOjpdKi86IHsgLyogbjpcIkJydEV4dGVybkNlbGxCb29sXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE3Mi8qOjpdKi86IHsgLyogbjpcIkJydEV4dGVybkNlbGxFcnJvclwiICovIH0sXG5cdC8qOjpbKi8weDAxNzMvKjo6XSovOiB7IC8qIG46XCJCcnRFeHRlcm5DZWxsU3RyaW5nXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE3NC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRXNtZHhcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNzUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFc21keFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxNzYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbk1keFNldFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE3Ny8qOjpdKi86IHsgLyogbjpcIkJydEVuZE1keFNldFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxNzgvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbk1keE1iclByb3BcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNzkvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRNZHhNYnJQcm9wXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE3QS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTWR4S1BJXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTdCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kTWR4S1BJXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE3Qy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRXNzdHJcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxN0QvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFc3N0clwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxN0UvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBSRkl0ZW1cIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxN0YvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQUkZJdGVtXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE4MC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUGl2b3RDYWNoZUlEc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE4MS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBpdm90Q2FjaGVJRHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTgyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QaXZvdENhY2hlSURcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxODMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQaXZvdENhY2hlSURcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTg0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5JU1hWSXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxODUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRJU1hWSXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTg2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Db2xJbmZvc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE4Ny8qOjpdKi86IHsgLyogbjpcIkJydEVuZENvbEluZm9zXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE4OC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUndCcmtcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxODkvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRSd0Jya1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxOEEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNvbEJya1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE4Qi8qOjpdKi86IHsgLyogbjpcIkJydEVuZENvbEJya1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxOEMvKjo6XSovOiB7IC8qIG46XCJCcnRCcmtcIiAqLyB9LFxuXHQvKjo6WyovMHgwMThELyo6Ol0qLzogeyAvKiBuOlwiQnJ0VXNlckJvb2tWaWV3XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE4RS8qOjpdKi86IHsgLyogbjpcIkJydEluZm9cIiAqLyB9LFxuXHQvKjo6WyovMHgwMThGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q1VzclwiICovIH0sXG5cdC8qOjpbKi8weDAxOTAvKjo6XSovOiB7IC8qIG46XCJCcnRVc3JcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTkxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Vc2Vyc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE5My8qOjpdKi86IHsgLyogbjpcIkJydEVPRlwiICovIH0sXG5cdC8qOjpbKi8weDAxOTQvKjo6XSovOiB7IC8qIG46XCJCcnRVQ1JcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTk1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UlJJbnNEZWxcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTk2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UlJFbmRJbnNEZWxcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTk3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UlJNb3ZlXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE5OC8qOjpdKi86IHsgLyogbjpcIkJydFJSRW5kTW92ZVwiICovIH0sXG5cdC8qOjpbKi8weDAxOTkvKjo6XSovOiB7IC8qIG46XCJCcnRSUkNoZ0NlbGxcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTlBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UlJFbmRDaGdDZWxsXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE5Qi8qOjpdKi86IHsgLyogbjpcIkJydFJSSGVhZGVyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE5Qy8qOjpdKi86IHsgLyogbjpcIkJydFJSVXNlclZpZXdcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTlELyo6Ol0qLzogeyAvKiBuOlwiQnJ0UlJSZW5TaGVldFwiICovIH0sXG5cdC8qOjpbKi8weDAxOUUvKjo6XSovOiB7IC8qIG46XCJCcnRSUkluc2VydFNoXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE5Ri8qOjpdKi86IHsgLyogbjpcIkJydFJSRGVmTmFtZVwiICovIH0sXG5cdC8qOjpbKi8weDAxQTAvKjo6XSovOiB7IC8qIG46XCJCcnRSUk5vdGVcIiAqLyB9LFxuXHQvKjo6WyovMHgwMUExLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UlJDb25mbGljdFwiICovIH0sXG5cdC8qOjpbKi8weDAxQTIvKjo6XSovOiB7IC8qIG46XCJCcnRSUlRRU0lGXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDFBMy8qOjpdKi86IHsgLyogbjpcIkJydFJSRm9ybWF0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDFBNC8qOjpdKi86IHsgLyogbjpcIkJydFJSRW5kRm9ybWF0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDFBNS8qOjpdKi86IHsgLyogbjpcIkJydFJSQXV0b0ZtdFwiICovIH0sXG5cdC8qOjpbKi8weDAxQTYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblVzZXJTaFZpZXdzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUE3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Vc2VyU2hWaWV3XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUE4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVXNlclNoVmlld1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQTkvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRVc2VyU2hWaWV3c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQUEvKjo6XSovOiB7IC8qIG46XCJCcnRBcnJGbWxhXCIsICovIGY6cGFyc2VfQnJ0QXJyRm1sYSB9LFxuXHQvKjo6WyovMHgwMUFCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2hyRm1sYVwiLCAqLyBmOnBhcnNlX0JydFNockZtbGEgfSxcblx0Lyo6OlsqLzB4MDFBQy8qOjpdKi86IHsgLyogbjpcIkJydFRhYmxlXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDFBRC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRXh0Q29ubmVjdGlvbnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxQUUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFeHRDb25uZWN0aW9uc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQUYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRENhbGNNZW1zXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUIwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEQ2FsY01lbXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUIxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RDYWxjTWVtXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUIyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEQ2FsY01lbVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQjMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDREhHTGV2ZWxzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUI0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENESEdMZXZlbHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUI1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RIR0xldmVsXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUI2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENESEdMZXZlbFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQjcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDREhHTEdyb3Vwc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFCOC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREhHTEdyb3Vwc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQjkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDREhHTEdyb3VwXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUJBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENESEdMR3JvdXBcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUJCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RIR0xHTWVtYmVyc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFCQy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREhHTEdNZW1iZXJzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFCRC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENESEdMR01lbWJlclwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFCRS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREhHTEdNZW1iZXJcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUJGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5RU0lcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxQzAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRRU0lcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUMxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5RU0lSXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUMyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUVNJUlwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQzMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkRlbGV0ZWROYW1lc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFDNC8qOjpdKi86IHsgLyogbjpcIkJydEVuZERlbGV0ZWROYW1lc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQzUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkRlbGV0ZWROYW1lXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUM2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRGVsZXRlZE5hbWVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUM3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5RU0lGc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFDOC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFFTSUZzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFDOS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUVNJRlwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFDQS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFFTSUZcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUNCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5BdXRvU29ydFNjb3BlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUNDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQXV0b1NvcnRTY29wZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQ0QvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNvbmRpdGlvbmFsRm9ybWF0dGluZ1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFDRS8qOjpdKi86IHsgLyogbjpcIkJydEVuZENvbmRpdGlvbmFsRm9ybWF0dGluZ1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQ0YvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNGUnVsZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFEMC8qOjpdKi86IHsgLyogbjpcIkJydEVuZENGUnVsZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxRDEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkljb25TZXRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxRDIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRJY29uU2V0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFEMy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRGF0YWJhclwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFENC8qOjpdKi86IHsgLyogbjpcIkJydEVuZERhdGFiYXJcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUQ1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Db2xvclNjYWxlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUQ2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ29sb3JTY2FsZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxRDcvKjo6XSovOiB7IC8qIG46XCJCcnRDRlZPXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDFEOC8qOjpdKi86IHsgLyogbjpcIkJydEV4dGVyblZhbHVlTWV0YVwiICovIH0sXG5cdC8qOjpbKi8weDAxRDkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNvbG9yUGFsZXR0ZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFEQS8qOjpdKi86IHsgLyogbjpcIkJydEVuZENvbG9yUGFsZXR0ZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxREIvKjo6XSovOiB7IC8qIG46XCJCcnRJbmRleGVkQ29sb3JcIiAqLyB9LFxuXHQvKjo6WyovMHgwMURDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0TWFyZ2luc1wiLCAqLyBmOnBhcnNlX0JydE1hcmdpbnMgfSxcblx0Lyo6OlsqLzB4MDFERC8qOjpdKi86IHsgLyogbjpcIkJydFByaW50T3B0aW9uc1wiICovIH0sXG5cdC8qOjpbKi8weDAxREUvKjo6XSovOiB7IC8qIG46XCJCcnRQYWdlU2V0dXBcIiAqLyB9LFxuXHQvKjo6WyovMHgwMURGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5IZWFkZXJGb290ZXJcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxRTAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRIZWFkZXJGb290ZXJcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUUxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWENydEZvcm1hdFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFFMi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYQ3J0Rm9ybWF0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFFMy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hDcnRGb3JtYXRzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUU0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hDcnRGb3JtYXRzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFFNS8qOjpdKi86IHsgLyogbjpcIkJydFdzRm10SW5mb1wiLCAqLyBmOnBhcnNlX0JydFdzRm10SW5mbyB9LFxuXHQvKjo6WyovMHgwMUU2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5NZ3NcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxRTcvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRNR3NcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUU4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5NR01hcHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxRTkvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRNR01hcHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUVBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5NR1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFFQi8qOjpdKi86IHsgLyogbjpcIkJydEVuZE1HXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFFQy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTWFwXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUVELyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kTWFwXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFFRS8qOjpdKi86IHsgLyogbjpcIkJydEhMaW5rXCIsICovIGY6cGFyc2VfQnJ0SExpbmsgfSxcblx0Lyo6OlsqLzB4MDFFRi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRENvblwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFGMC8qOjpdKi86IHsgLyogbjpcIkJydEVuZERDb25cIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUYxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5EUmVmc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFGMi8qOjpdKi86IHsgLyogbjpcIkJydEVuZERSZWZzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFGMy8qOjpdKi86IHsgLyogbjpcIkJydERSZWZcIiAqLyB9LFxuXHQvKjo6WyovMHgwMUY0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TY2VuTWFuXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUY1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2Nlbk1hblwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxRjYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNjdFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFGNy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNjdFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxRjgvKjo6XSovOiB7IC8qIG46XCJCcnRTbGNcIiAqLyB9LFxuXHQvKjo6WyovMHgwMUY5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5EWEZzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUZBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRFhGc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxRkIvKjo6XSovOiB7IC8qIG46XCJCcnREWEZcIiAqLyB9LFxuXHQvKjo6WyovMHgwMUZDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5UYWJsZVN0eWxlc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFGRC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFRhYmxlU3R5bGVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFGRS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVGFibGVTdHlsZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFGRi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFRhYmxlU3R5bGVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjAwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0VGFibGVTdHlsZUVsZW1lbnRcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjAxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0VGFibGVTdHlsZUNsaWVudFwiICovIH0sXG5cdC8qOjpbKi8weDAyMDIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblZvbERlcHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyMDMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRWb2xEZXBzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDIwNC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVm9sVHlwZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDIwNS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFZvbFR5cGVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjA2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Wb2xNYWluXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjA3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVm9sTWFpblwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyMDgvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblZvbFRvcGljXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjA5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVm9sVG9waWNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjBBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Vm9sU3VidG9waWNcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjBCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Vm9sUmVmXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDIwQy8qOjpdKi86IHsgLyogbjpcIkJydFZvbE51bVwiICovIH0sXG5cdC8qOjpbKi8weDAyMEQvKjo6XSovOiB7IC8qIG46XCJCcnRWb2xFcnJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjBFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Vm9sU3RyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDIwRi8qOjpdKi86IHsgLyogbjpcIkJydFZvbEJvb2xcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjEwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5DYWxjQ2hhaW4kXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjExLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ2FsY0NoYWluJFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyMTIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNvcnRTdGF0ZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDIxMy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNvcnRTdGF0ZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyMTQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNvcnRDb25kXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjE1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU29ydENvbmRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjE2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0Qm9va1Byb3RlY3Rpb25cIiAqLyB9LFxuXHQvKjo6WyovMHgwMjE3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2hlZXRQcm90ZWN0aW9uXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDIxOC8qOjpdKi86IHsgLyogbjpcIkJydFJhbmdlUHJvdGVjdGlvblwiICovIH0sXG5cdC8qOjpbKi8weDAyMTkvKjo6XSovOiB7IC8qIG46XCJCcnRQaG9uZXRpY0luZm9cIiAqLyB9LFxuXHQvKjo6WyovMHgwMjFBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5FQ1R4dFdpelwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDIxQi8qOjpdKi86IHsgLyogbjpcIkJydEVuZEVDVHh0V2l6XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDIxQy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRUNUV0ZsZEluZm9Mc3RcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyMUQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFQ1RXRmxkSW5mb0xzdFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyMUUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkVDVHdGbGRJbmZvXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjI0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RmlsZVNoYXJpbmdcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjI1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0T2xlU2l6ZVwiICovIH0sXG5cdC8qOjpbKi8weDAyMjYvKjo6XSovOiB7IC8qIG46XCJCcnREcmF3aW5nXCIsICovIGY6cGFyc2VfUmVsSUQgfSxcblx0Lyo6OlsqLzB4MDIyNy8qOjpdKi86IHsgLyogbjpcIkJydExlZ2FjeURyYXdpbmdcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjI4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0TGVnYWN5RHJhd2luZ0hGXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDIyOS8qOjpdKi86IHsgLyogbjpcIkJydFdlYk9wdFwiICovIH0sXG5cdC8qOjpbKi8weDAyMkEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbldlYlB1Ykl0ZW1zXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjJCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kV2ViUHViSXRlbXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjJDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5XZWJQdWJJdGVtXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjJELyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kV2ViUHViSXRlbVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyMkUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYQ29uZEZtdFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDIyRi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYQ29uZEZtdFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyMzAvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYQ29uZEZtdHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyMzEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWENvbmRGbXRzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDIzMi8qOjpdKi86IHsgLyogbjpcIkJydEJrSGltXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDIzNC8qOjpdKi86IHsgLyogbjpcIkJydENvbG9yXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDIzNS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luSW5kZXhlZENvbG9yc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDIzNi8qOjpdKi86IHsgLyogbjpcIkJydEVuZEluZGV4ZWRDb2xvcnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjM5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5NUlVDb2xvcnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyM0EvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRNUlVDb2xvcnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjNDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0TVJVQ29sb3JcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjNELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5EVmFsc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDIzRS8qOjpdKi86IHsgLyogbjpcIkJydEVuZERWYWxzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI0MS8qOjpdKi86IHsgLyogbjpcIkJydFN1cE5hbWVTdGFydFwiICovIH0sXG5cdC8qOjpbKi8weDAyNDIvKjo6XSovOiB7IC8qIG46XCJCcnRTdXBOYW1lVmFsdWVTdGFydFwiICovIH0sXG5cdC8qOjpbKi8weDAyNDMvKjo6XSovOiB7IC8qIG46XCJCcnRTdXBOYW1lVmFsdWVFbmRcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjQ0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3VwTmFtZU51bVwiICovIH0sXG5cdC8qOjpbKi8weDAyNDUvKjo6XSovOiB7IC8qIG46XCJCcnRTdXBOYW1lRXJyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI0Ni8qOjpdKi86IHsgLyogbjpcIkJydFN1cE5hbWVTdFwiICovIH0sXG5cdC8qOjpbKi8weDAyNDcvKjo6XSovOiB7IC8qIG46XCJCcnRTdXBOYW1lTmlsXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI0OC8qOjpdKi86IHsgLyogbjpcIkJydFN1cE5hbWVCb29sXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI0OS8qOjpdKi86IHsgLyogbjpcIkJydFN1cE5hbWVGbWxhXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI0QS8qOjpdKi86IHsgLyogbjpcIkJydFN1cE5hbWVCaXRzXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI0Qi8qOjpdKi86IHsgLyogbjpcIkJydFN1cE5hbWVFbmRcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjRDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU3VwQm9va1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyNEQvKjo6XSovOiB7IC8qIG46XCJCcnRDZWxsU21hcnRUYWdQcm9wZXJ0eVwiICovIH0sXG5cdC8qOjpbKi8weDAyNEUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNlbGxTbWFydFRhZ1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI0Ri8qOjpdKi86IHsgLyogbjpcIkJydEVuZENlbGxTbWFydFRhZ1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyNTAvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNlbGxTbWFydFRhZ3NcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyNTEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDZWxsU21hcnRUYWdzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI1Mi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU21hcnRUYWdzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjUzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU21hcnRUYWdzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI1NC8qOjpdKi86IHsgLyogbjpcIkJydFNtYXJ0VGFnVHlwZVwiICovIH0sXG5cdC8qOjpbKi8weDAyNTUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNtYXJ0VGFnVHlwZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyNTYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbWFydFRhZ1R5cGVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI1Ny8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hGaWx0ZXJzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjU4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hGaWx0ZXJzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI1OS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hGSUxURVJcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyNUEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWEZpbHRlclwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyNUIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkZpbGxzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjVDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRmlsbHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjVELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5DZWxsV2F0Y2hlc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI1RS8qOjpdKi86IHsgLyogbjpcIkJydEVuZENlbGxXYXRjaGVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI1Ri8qOjpdKi86IHsgLyogbjpcIkJydENlbGxXYXRjaFwiICovIH0sXG5cdC8qOjpbKi8weDAyNjAvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNSRXJyc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI2MS8qOjpdKi86IHsgLyogbjpcIkJydEVuZENSRXJyc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyNjIvKjo6XSovOiB7IC8qIG46XCJCcnRDcmFzaFJlY0VyclwiICovIH0sXG5cdC8qOjpbKi8weDAyNjMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkZvbnRzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjY0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRm9udHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjY1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Cb3JkZXJzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjY2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQm9yZGVyc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyNjcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkZtdHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyNjgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRGbXRzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI2OS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ2VsbFhGc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI2QS8qOjpdKi86IHsgLyogbjpcIkJydEVuZENlbGxYRnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjZCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TdHlsZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyNkMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTdHlsZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjcxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmlnTmFtZVwiICovIH0sXG5cdC8qOjpbKi8weDAyNzIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNlbGxTdHlsZVhGc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI3My8qOjpdKi86IHsgLyogbjpcIkJydEVuZENlbGxTdHlsZVhGc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyNzQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNvbW1lbnRzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjc1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ29tbWVudHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjc2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Db21tZW50QXV0aG9yc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI3Ny8qOjpdKi86IHsgLyogbjpcIkJydEVuZENvbW1lbnRBdXRob3JzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI3OC8qOjpdKi86IHsgLyogbjpcIkJydENvbW1lbnRBdXRob3JcIiwgKi8gZjpwYXJzZV9CcnRDb21tZW50QXV0aG9yIH0sXG5cdC8qOjpbKi8weDAyNzkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNvbW1lbnRMaXN0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjdBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ29tbWVudExpc3RcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjdCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Db21tZW50XCIsICovIFQ6MSwgZjpwYXJzZV9CcnRCZWdpbkNvbW1lbnR9LFxuXHQvKjo6WyovMHgwMjdDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ29tbWVudFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyN0QvKjo6XSovOiB7IC8qIG46XCJCcnRDb21tZW50VGV4dFwiLCAqLyBmOnBhcnNlX0JydENvbW1lbnRUZXh0IH0sXG5cdC8qOjpbKi8weDAyN0UvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbk9sZU9iamVjdHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyN0YvKjo6XSovOiB7IC8qIG46XCJCcnRPbGVPYmplY3RcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjgwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kT2xlT2JqZWN0c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyODEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblN4cnVsZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyODIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTeFJ1bGVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI4My8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQWN0aXZlWENvbnRyb2xzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjg0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QWN0aXZlWFwiICovIH0sXG5cdC8qOjpbKi8weDAyODUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRBY3RpdmVYQ29udHJvbHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjg2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RTRFRDRU1lbWJlcnNTb3J0QnlcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyODgvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNlbGxJZ25vcmVFQ3NcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyODkvKjo6XSovOiB7IC8qIG46XCJCcnRDZWxsSWdub3JlRUNcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjhBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ2VsbElnbm9yZUVDc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyOEIvKjo6XSovOiB7IC8qIG46XCJCcnRDc1Byb3BcIiwgKi8gZjpwYXJzZV9CcnRDc1Byb3AgfSxcblx0Lyo6OlsqLzB4MDI4Qy8qOjpdKi86IHsgLyogbjpcIkJydENzUGFnZVNldHVwXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI4RC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVXNlckNzVmlld3NcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyOEUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRVc2VyQ3NWaWV3c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyOEYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblVzZXJDc1ZpZXdcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyOTAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRVc2VyQ3NWaWV3XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI5MS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUGNkU0ZDSUVudHJpZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyOTIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RTRkNJRW50cmllc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyOTMvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RTRkNJRW50cnlcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjk0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5MaXN0UGFydHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyOTUvKjo6XSovOiB7IC8qIG46XCJCcnRMaXN0UGFydFwiICovIH0sXG5cdC8qOjpbKi8weDAyOTYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRMaXN0UGFydHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjk3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2hlZXRDYWxjUHJvcFwiICovIH0sXG5cdC8qOjpbKi8weDAyOTgvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkZuR3JvdXBcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyOTkvKjo6XSovOiB7IC8qIG46XCJCcnRGbkdyb3VwXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI5QS8qOjpdKi86IHsgLyogbjpcIkJydEVuZEZuR3JvdXBcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjlCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3VwQWRkaW5cIiAqLyB9LFxuXHQvKjo6WyovMHgwMjlDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U1hURE1QT3JkZXJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjlELyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q3NQcm90ZWN0aW9uXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI5Ri8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luV3NTb3J0TWFwXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMkEwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kV3NTb3J0TWFwXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDJBMS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUlJTb3J0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMkEyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUlJTb3J0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDJBMy8qOjpdKi86IHsgLyogbjpcIkJydFJSU29ydEl0ZW1cIiAqLyB9LFxuXHQvKjo6WyovMHgwMkE0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RmlsZVNoYXJpbmdJc29cIiAqLyB9LFxuXHQvKjo6WyovMHgwMkE1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0Qm9va1Byb3RlY3Rpb25Jc29cIiAqLyB9LFxuXHQvKjo6WyovMHgwMkE2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2hlZXRQcm90ZWN0aW9uSXNvXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDJBNy8qOjpdKi86IHsgLyogbjpcIkJydENzUHJvdGVjdGlvbklzb1wiICovIH0sXG5cdC8qOjpbKi8weDAyQTgvKjo6XSovOiB7IC8qIG46XCJCcnRSYW5nZVByb3RlY3Rpb25Jc29cIiAqLyB9LFxuXHQvKjo6WyovMHgwMkE5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RFZhbExpc3RcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDAwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UndEZXNjZW50XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQwMS8qOjpdKi86IHsgLyogbjpcIkJydEtub3duRm9udHNcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDAyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFR1cGxlU2V0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDAzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hUdXBsZVNldFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0MDQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYVHVwbGVTZXRIZWFkZXJcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MDUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWFR1cGxlU2V0SGVhZGVyXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQwNi8qOjpdKi86IHsgLyogbjpcIkJydFNYVHVwbGVTZXRIZWFkZXJJdGVtXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQwNy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hUdXBsZVNldERhdGFcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MDgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWFR1cGxlU2V0RGF0YVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0MDkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYVHVwbGVTZXRSb3dcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MEEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWFR1cGxlU2V0Um93XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQwQi8qOjpdKi86IHsgLyogbjpcIkJydFNYVHVwbGVTZXRSb3dJdGVtXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQwQy8qOjpdKi86IHsgLyogbjpcIkJydE5hbWVFeHRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDBELyo6Ol0qLzogeyAvKiBuOlwiQnJ0UENESDE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQwRS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEQ2FsY01lbTE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDBGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEQ2FsY01lbTE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQxMC8qOjpdKi86IHsgLyogbjpcIkJydFNYVEgxNFwiICovIH0sXG5cdC8qOjpbKi8weDA0MTEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNwYXJrbGluZUdyb3VwXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDEyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU3BhcmtsaW5lR3JvdXBcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDEzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3BhcmtsaW5lXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQxNC8qOjpdKi86IHsgLyogbjpcIkJydFNYREkxNFwiICovIH0sXG5cdC8qOjpbKi8weDA0MTUvKjo6XSovOiB7IC8qIG46XCJCcnRXc0ZtdEluZm9FeDE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQxNi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ29uZGl0aW9uYWxGb3JtYXR0aW5nMTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MTcvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDb25kaXRpb25hbEZvcm1hdHRpbmcxNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0MTgvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNGUnVsZTE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDE5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ0ZSdWxlMTRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDFBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q0ZWTzE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQxQi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRGF0YWJhcjE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDFDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5JY29uU2V0MTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MUQvKjo6XSovOiB7IC8qIG46XCJCcnREVmFsMTRcIiwgKi8gZjogcGFyc2VfQnJ0RFZhbDE0IH0sXG5cdC8qOjpbKi8weDA0MUUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkRWYWxzMTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MUYvKjo6XSovOiB7IC8qIG46XCJCcnRDb2xvcjE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQyMC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU3BhcmtsaW5lc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQyMS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNwYXJrbGluZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDIyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TcGFya2xpbmVHcm91cHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MjMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTcGFya2xpbmVHcm91cHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDI1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U1hWRDE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQyNi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hWaWV3MTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MjcvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWFZpZXcxNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0MjgvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYVmlldzE2XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDI5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hWaWV3MTZcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDJBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0QxNFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQyQi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRDE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQyQy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRXh0Q29ubjE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDJELyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRXh0Q29ubjE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQyRS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2VyQ2FjaGVJRHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MkYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJDYWNoZUlEc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0MzAvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNsaWNlckNhY2hlSURcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MzEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJDYWNoZUlEXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQzMy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2VyQ2FjaGVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MzQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJDYWNoZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0MzUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNsaWNlckNhY2hlRGVmXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDM2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2VyQ2FjaGVEZWZcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDM3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbGljZXJzRXhcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MzgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJzRXhcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDM5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbGljZXJFeFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQzQS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNsaWNlckV4XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQzQi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2VyXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDNDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2VyXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQzRC8qOjpdKi86IHsgLyogbjpcIkJydFNsaWNlckNhY2hlUGl2b3RUYWJsZXNcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDNFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbGljZXJDYWNoZU9sYXBJbXBsXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDNGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2VyQ2FjaGVPbGFwSW1wbFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NDAvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNsaWNlckNhY2hlTGV2ZWxzRGF0YVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ0MS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNsaWNlckNhY2hlTGV2ZWxzRGF0YVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NDIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNsaWNlckNhY2hlTGV2ZWxEYXRhXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDQzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2VyQ2FjaGVMZXZlbERhdGFcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDQ0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbGljZXJDYWNoZVNpUmFuZ2VzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDQ1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2VyQ2FjaGVTaVJhbmdlc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NDYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNsaWNlckNhY2hlU2lSYW5nZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ0Ny8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNsaWNlckNhY2hlU2lSYW5nZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NDgvKjo6XSovOiB7IC8qIG46XCJCcnRTbGljZXJDYWNoZU9sYXBJdGVtXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQ0OS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2VyQ2FjaGVTZWxlY3Rpb25zXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDRBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2xpY2VyQ2FjaGVTZWxlY3Rpb25cIiAqLyB9LFxuXHQvKjo6WyovMHgwNDRCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2VyQ2FjaGVTZWxlY3Rpb25zXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ0Qy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2VyQ2FjaGVOYXRpdmVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NEQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJDYWNoZU5hdGl2ZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NEUvKjo6XSovOiB7IC8qIG46XCJCcnRTbGljZXJDYWNoZU5hdGl2ZUl0ZW1cIiAqLyB9LFxuXHQvKjo6WyovMHgwNDRGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UmFuZ2VQcm90ZWN0aW9uMTRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDUwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UmFuZ2VQcm90ZWN0aW9uSXNvMTRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDUxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q2VsbElnbm9yZUVDMTRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDU3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0TGlzdDE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQ1OC8qOjpdKi86IHsgLyogbjpcIkJydENGSWNvblwiICovIH0sXG5cdC8qOjpbKi8weDA0NTkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNsaWNlckNhY2hlc1Bpdm90Q2FjaGVJRHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NUEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJDYWNoZXNQaXZvdENhY2hlSURzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ1Qi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2Vyc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ1Qy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNsaWNlcnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDVELyo6Ol0qLzogeyAvKiBuOlwiQnJ0V2JQcm9wMTRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDVFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWEVkaXRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NUYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWEVkaXRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDYwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWEVkaXRzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDYxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hFZGl0c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NjIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYQ2hhbmdlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDYzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hDaGFuZ2VcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDY0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWENoYW5nZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NjUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWENoYW5nZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDY2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U1hUdXBsZUl0ZW1zXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQ2OC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2VyU3R5bGVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NjkvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJTdHlsZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NkEvKjo6XSovOiB7IC8qIG46XCJCcnRTbGljZXJTdHlsZUVsZW1lbnRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDZCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TdHlsZVNoZWV0RXh0MTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NkMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTdHlsZVNoZWV0RXh0MTRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDZELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbGljZXJDYWNoZXNQaXZvdENhY2hlSURcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NkUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJDYWNoZXNQaXZvdENhY2hlSURcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDZGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Db25kaXRpb25hbEZvcm1hdHRpbmdzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDcwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ29uZGl0aW9uYWxGb3JtYXR0aW5nc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NzEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRENhbGNNZW1FeHRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NzIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RDYWxjTWVtRXh0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ3My8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEQ2FsY01lbXNFeHRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NzQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RDYWxjTWVtc0V4dFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NzUvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RGaWVsZDE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQ3Ni8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2VyU3R5bGVzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDc3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2VyU3R5bGVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ3OC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2VyU3R5bGVFbGVtZW50c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ3OS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNsaWNlclN0eWxlRWxlbWVudHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDdBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q0ZSdWxlRXh0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQ3Qi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hDb25kRm10MTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0N0MvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWENvbmRGbXQxNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0N0QvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYQ29uZEZtdHMxNFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ3RS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYQ29uZEZtdHMxNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0ODAvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNvcnRDb25kMTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0ODEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTb3J0Q29uZDE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ4Mi8qOjpdKi86IHsgLyogbjpcIkJydEVuZERWYWxzMTRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDgzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kSWNvblNldDE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ4NC8qOjpdKi86IHsgLyogbjpcIkJydEVuZERhdGFiYXIxNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0ODUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNvbG9yU2NhbGUxNFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ4Ni8qOjpdKi86IHsgLyogbjpcIkJydEVuZENvbG9yU2NhbGUxNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0ODcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblN4cnVsZXMxNFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ4OC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFN4cnVsZXMxNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0ODkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBSdWxlMTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0OEEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQUnVsZTE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ4Qi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUFJGaWx0ZXJzMTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0OEMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQUkZpbHRlcnMxNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0OEQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBSRmlsdGVyMTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0OEUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQUkZpbHRlcjE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ4Ri8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUFJGSXRlbTE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDkwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUFJGSXRlbTE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ5MS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ2VsbElnbm9yZUVDczE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDkyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ2VsbElnbm9yZUVDczE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ5My8qOjpdKi86IHsgLyogbjpcIkJydER4ZjE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQ5NC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRHhGMTRzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDk1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRHhmMTRzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ5OS8qOjpdKi86IHsgLyogbjpcIkJydEZpbHRlcjE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQ5QS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ3VzdG9tRmlsdGVyczE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDlDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q3VzdG9tRmlsdGVyMTRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDlELyo6Ol0qLzogeyAvKiBuOlwiQnJ0SWNvbkZpbHRlcjE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQ5RS8qOjpdKi86IHsgLyogbjpcIkJydFBpdm90Q2FjaGVDb25uZWN0aW9uTmFtZVwiICovIH0sXG5cdC8qOjpbKi8weDA4MDAvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkRlY291cGxlZFBpdm90Q2FjaGVJRHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4MDEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmREZWNvdXBsZWRQaXZvdENhY2hlSURzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgwMi8qOjpdKi86IHsgLyogbjpcIkJydERlY291cGxlZFBpdm90Q2FjaGVJRFwiICovIH0sXG5cdC8qOjpbKi8weDA4MDMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBpdm90VGFibGVSZWZzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODA0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUGl2b3RUYWJsZVJlZnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODA1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UGl2b3RUYWJsZVJlZlwiICovIH0sXG5cdC8qOjpbKi8weDA4MDYvKjo6XSovOiB7IC8qIG46XCJCcnRTbGljZXJDYWNoZUJvb2tQaXZvdFRhYmxlc1wiICovIH0sXG5cdC8qOjpbKi8weDA4MDcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblN4dmNlbGxzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODA4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU3h2Y2VsbHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODA5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TeFJvd1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDgwQS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFN4Um93XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgwQy8qOjpdKi86IHsgLyogbjpcIkJydFBjZENhbGNNZW0xNVwiICovIH0sXG5cdC8qOjpbKi8weDA4MTMvKjo6XSovOiB7IC8qIG46XCJCcnRRc2kxNVwiICovIH0sXG5cdC8qOjpbKi8weDA4MTQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbldlYkV4dGVuc2lvbnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4MTUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRXZWJFeHRlbnNpb25zXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgxNi8qOjpdKi86IHsgLyogbjpcIkJydFdlYkV4dGVuc2lvblwiICovIH0sXG5cdC8qOjpbKi8weDA4MTcvKjo6XSovOiB7IC8qIG46XCJCcnRBYnNQYXRoMTVcIiAqLyB9LFxuXHQvKjo6WyovMHgwODE4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QaXZvdFRhYmxlVUlTZXR0aW5nc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDgxOS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBpdm90VGFibGVVSVNldHRpbmdzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgxQi8qOjpdKi86IHsgLyogbjpcIkJydFRhYmxlU2xpY2VyQ2FjaGVJRHNcIiAqLyB9LFxuXHQvKjo6WyovMHgwODFDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0VGFibGVTbGljZXJDYWNoZUlEXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDgxRC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVGFibGVTbGljZXJDYWNoZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDgxRS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFRhYmxlU2xpY2VyQ2FjaGVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODFGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3hGaWx0ZXIxNVwiICovIH0sXG5cdC8qOjpbKi8weDA4MjAvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblRpbWVsaW5lQ2FjaGVQaXZvdENhY2hlSURzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODIxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVGltZWxpbmVDYWNoZVBpdm90Q2FjaGVJRHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODIyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0VGltZWxpbmVDYWNoZVBpdm90Q2FjaGVJRFwiICovIH0sXG5cdC8qOjpbKi8weDA4MjMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblRpbWVsaW5lQ2FjaGVJRHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4MjQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRUaW1lbGluZUNhY2hlSURzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgyNS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVGltZWxpbmVDYWNoZUlEXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODI2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVGltZWxpbmVDYWNoZUlEXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgyNy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVGltZWxpbmVzRXhcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4MjgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRUaW1lbGluZXNFeFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4MjkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblRpbWVsaW5lRXhcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4MkEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRUaW1lbGluZUV4XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgyQi8qOjpdKi86IHsgLyogbjpcIkJydFdvcmtCb29rUHIxNVwiICovIH0sXG5cdC8qOjpbKi8weDA4MkMvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RIMTVcIiAqLyB9LFxuXHQvKjo6WyovMHgwODJELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5UaW1lbGluZVN0eWxlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODJFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVGltZWxpbmVTdHlsZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4MkYvKjo6XSovOiB7IC8qIG46XCJCcnRUaW1lbGluZVN0eWxlRWxlbWVudFwiICovIH0sXG5cdC8qOjpbKi8weDA4MzAvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblRpbWVsaW5lU3R5bGVzaGVldEV4dDE1XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODMxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVGltZWxpbmVTdHlsZXNoZWV0RXh0MTVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODMyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5UaW1lbGluZVN0eWxlc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDgzMy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFRpbWVsaW5lU3R5bGVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgzNC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVGltZWxpbmVTdHlsZUVsZW1lbnRzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODM1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVGltZWxpbmVTdHlsZUVsZW1lbnRzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgzNi8qOjpdKi86IHsgLyogbjpcIkJydER4ZjE1XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDgzNy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRHhmczE1XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODM4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRHhmczE1XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgzOS8qOjpdKi86IHsgLyogbjpcIkJydFNsaWNlckNhY2hlSGlkZUl0ZW1zV2l0aE5vRGF0YVwiICovIH0sXG5cdC8qOjpbKi8weDA4M0EvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkl0ZW1VbmlxdWVOYW1lc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDgzQi8qOjpdKi86IHsgLyogbjpcIkJydEVuZEl0ZW1VbmlxdWVOYW1lc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4M0MvKjo6XSovOiB7IC8qIG46XCJCcnRJdGVtVW5pcXVlTmFtZVwiICovIH0sXG5cdC8qOjpbKi8weDA4M0QvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkV4dENvbm4xNVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDgzRS8qOjpdKi86IHsgLyogbjpcIkJydEVuZEV4dENvbm4xNVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4M0YvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbk9sZWRiUHIxNVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDg0MC8qOjpdKi86IHsgLyogbjpcIkJydEVuZE9sZWRiUHIxNVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4NDEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkRhdGFGZWVkUHIxNVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDg0Mi8qOjpdKi86IHsgLyogbjpcIkJydEVuZERhdGFGZWVkUHIxNVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4NDMvKjo6XSovOiB7IC8qIG46XCJCcnRUZXh0UHIxNVwiICovIH0sXG5cdC8qOjpbKi8weDA4NDQvKjo6XSovOiB7IC8qIG46XCJCcnRSYW5nZVByMTVcIiAqLyB9LFxuXHQvKjo6WyovMHgwODQ1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RGJDb21tYW5kMTVcIiAqLyB9LFxuXHQvKjo6WyovMHgwODQ2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5EYlRhYmxlczE1XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODQ3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRGJUYWJsZXMxNVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4NDgvKjo6XSovOiB7IC8qIG46XCJCcnREYlRhYmxlMTVcIiAqLyB9LFxuXHQvKjo6WyovMHgwODQ5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5EYXRhTW9kZWxcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4NEEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmREYXRhTW9kZWxcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODRCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Nb2RlbFRhYmxlc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDg0Qy8qOjpdKi86IHsgLyogbjpcIkJydEVuZE1vZGVsVGFibGVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDg0RC8qOjpdKi86IHsgLyogbjpcIkJydE1vZGVsVGFibGVcIiAqLyB9LFxuXHQvKjo6WyovMHgwODRFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Nb2RlbFJlbGF0aW9uc2hpcHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4NEYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRNb2RlbFJlbGF0aW9uc2hpcHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODUwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0TW9kZWxSZWxhdGlvbnNoaXBcIiAqLyB9LFxuXHQvKjo6WyovMHgwODUxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5FQ1R4dFdpejE1XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODUyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRUNUeHRXaXoxNVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4NTMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkVDVFdGbGRJbmZvTHN0MTVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4NTQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFQ1RXRmxkSW5mb0xzdDE1XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDg1NS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRUNUV0ZsZEluZm8xNVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDg1Ni8qOjpdKi86IHsgLyogbjpcIkJydEZpZWxkTGlzdEFjdGl2ZUl0ZW1cIiAqLyB9LFxuXHQvKjo6WyovMHgwODU3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UGl2b3RDYWNoZUlkVmVyc2lvblwiICovIH0sXG5cdC8qOjpbKi8weDA4NTgvKjo6XSovOiB7IC8qIG46XCJCcnRTWERJMTVcIiAqLyB9LFxuXHQvKjo6WyovMHgwODU5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Nb2RlbFRpbWVHcm91cGluZ3NcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4NUEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRNb2RlbFRpbWVHcm91cGluZ3NcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODVCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Nb2RlbFRpbWVHcm91cGluZ1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDg1Qy8qOjpdKi86IHsgLyogbjpcIkJydEVuZE1vZGVsVGltZUdyb3VwaW5nXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDg1RC8qOjpdKi86IHsgLyogbjpcIkJydE1vZGVsVGltZUdyb3VwaW5nQ2FsY0NvbFwiICovIH0sXG5cdC8qOjpbKi8weDBDMDAvKjo6XSovOiB7IC8qIG46XCJCcnRVaWRcIiAqLyB9LFxuXHQvKjo6WyovMHgwQzAxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UmV2aXNpb25QdHJcIiAqLyB9LFxuXHQvKjo6WyovMHgxMDAwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5EeW5hbWljQXJyYXlQclwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MTAwMS8qOjpdKi86IHsgLyogbjpcIkJydEVuZER5bmFtaWNBcnJheVByXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MTM4QS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUmljaFZhbHVlQmxvY2tcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDEzOEIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRSaWNoVmFsdWVCbG9ja1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDEzRDkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblJpY2hGaWx0ZXJzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgxM0RBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUmljaEZpbHRlcnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgxM0RCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UmljaEZpbHRlclwiICovIH0sXG5cdC8qOjpbKi8weDEzREMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblJpY2hGaWx0ZXJDb2x1bW5cIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDEzREQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRSaWNoRmlsdGVyQ29sdW1uXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MTNERS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ3VzdG9tUmljaEZpbHRlcnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDEzREYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDdXN0b21SaWNoRmlsdGVyc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDEzRTAvKjo6XSovOiB7IC8qIG46XCJCcnRDdXN0b21SaWNoRmlsdGVyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MTNFMS8qOjpdKi86IHsgLyogbjpcIkJydFRvcDEwUmljaEZpbHRlclwiICovIH0sXG5cdC8qOjpbKi8weDEzRTIvKjo6XSovOiB7IC8qIG46XCJCcnREeW5hbWljUmljaEZpbHRlclwiICovIH0sXG5cdC8qOjpbKi8weDEzRTQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblJpY2hTb3J0Q29uZGl0aW9uXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgxM0U1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUmljaFNvcnRDb25kaXRpb25cIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgxM0U2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UmljaEZpbHRlckRhdGVHcm91cEl0ZW1cIiAqLyB9LFxuXHQvKjo6WyovMHgxM0U3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5DYWxjRmVhdHVyZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDEzRTgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDYWxjRmVhdHVyZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgxM0U5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q2FsY0ZlYXR1cmVcIiAqLyB9LFxuXHQvKjo6WyovMHgxM0VCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RXh0ZXJuYWxMaW5rc1ByXCIgKi8gfSxcblx0Lyo6OlsqLzB4RkZGRi8qOjpdKi86IHsgbjpcIlwiIH1cbn07XG5cbi8qIFtNUy1YTFNdIDIuMyBSZWNvcmQgRW51bWVyYXRpb24gKGFuZCBvdGhlciBzb3VyY2VzKSAqL1xudmFyIFhMU1JlY29yZEVudW0gPSB7XG5cdC8qIFtNUy1YTFNdIDIuMyBSZWNvcmQgRW51bWVyYXRpb24gMjAyMS0wOC0xNyAqL1xuXHQvKjo6WyovMHgwMDA2Lyo6Ol0qLzogeyAvKiBuOlwiRm9ybXVsYVwiLCAqLyBmOnBhcnNlX0Zvcm11bGEgfSxcblx0Lyo6OlsqLzB4MDAwYS8qOjpdKi86IHsgLyogbjpcIkVPRlwiLCAqLyBmOnBhcnNlbm9vcDIgfSxcblx0Lyo6OlsqLzB4MDAwYy8qOjpdKi86IHsgLyogbjpcIkNhbGNDb3VudFwiLCAqLyBmOnBhcnNldWludDE2IH0sIC8vXG5cdC8qOjpbKi8weDAwMGQvKjo6XSovOiB7IC8qIG46XCJDYWxjTW9kZVwiLCAqLyBmOnBhcnNldWludDE2IH0sIC8vXG5cdC8qOjpbKi8weDAwMGUvKjo6XSovOiB7IC8qIG46XCJDYWxjUHJlY2lzaW9uXCIsICovIGY6cGFyc2Vib29sIH0sIC8vXG5cdC8qOjpbKi8weDAwMGYvKjo6XSovOiB7IC8qIG46XCJDYWxjUmVmTW9kZVwiLCAqLyBmOnBhcnNlYm9vbCB9LCAvL1xuXHQvKjo6WyovMHgwMDEwLyo6Ol0qLzogeyAvKiBuOlwiQ2FsY0RlbHRhXCIsICovIGY6cGFyc2VfWG51bSB9LCAvL1xuXHQvKjo6WyovMHgwMDExLyo6Ol0qLzogeyAvKiBuOlwiQ2FsY0l0ZXJcIiwgKi8gZjpwYXJzZWJvb2wgfSwgLy9cblx0Lyo6OlsqLzB4MDAxMi8qOjpdKi86IHsgLyogbjpcIlByb3RlY3RcIiwgKi8gZjpwYXJzZWJvb2wgfSxcblx0Lyo6OlsqLzB4MDAxMy8qOjpdKi86IHsgLyogbjpcIlBhc3N3b3JkXCIsICovIGY6cGFyc2V1aW50MTYgfSxcblx0Lyo6OlsqLzB4MDAxNC8qOjpdKi86IHsgLyogbjpcIkhlYWRlclwiLCAqLyBmOnBhcnNlX1hMSGVhZGVyRm9vdGVyIH0sXG5cdC8qOjpbKi8weDAwMTUvKjo6XSovOiB7IC8qIG46XCJGb290ZXJcIiwgKi8gZjpwYXJzZV9YTEhlYWRlckZvb3RlciB9LFxuXHQvKjo6WyovMHgwMDE3Lyo6Ol0qLzogeyAvKiBuOlwiRXh0ZXJuU2hlZXRcIiwgKi8gZjpwYXJzZV9FeHRlcm5TaGVldCB9LFxuXHQvKjo6WyovMHgwMDE4Lyo6Ol0qLzogeyAvKiBuOlwiTGJsXCIsICovIGY6cGFyc2VfTGJsIH0sXG5cdC8qOjpbKi8weDAwMTkvKjo6XSovOiB7IC8qIG46XCJXaW5Qcm90ZWN0XCIsICovIGY6cGFyc2Vib29sIH0sXG5cdC8qOjpbKi8weDAwMWEvKjo6XSovOiB7IC8qIG46XCJWZXJ0aWNhbFBhZ2VCcmVha3NcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDAxYi8qOjpdKi86IHsgLyogbjpcIkhvcml6b250YWxQYWdlQnJlYWtzXCIsICovIH0sXG5cdC8qOjpbKi8weDAwMWMvKjo6XSovOiB7IC8qIG46XCJOb3RlXCIsICovIGY6cGFyc2VfTm90ZSB9LFxuXHQvKjo6WyovMHgwMDFkLyo6Ol0qLzogeyAvKiBuOlwiU2VsZWN0aW9uXCIsICovIH0sXG5cdC8qOjpbKi8weDAwMjIvKjo6XSovOiB7IC8qIG46XCJEYXRlMTkwNFwiLCAqLyBmOnBhcnNlYm9vbCB9LFxuXHQvKjo6WyovMHgwMDIzLyo6Ol0qLzogeyAvKiBuOlwiRXh0ZXJuTmFtZVwiLCAqLyBmOnBhcnNlX0V4dGVybk5hbWUgfSxcblx0Lyo6OlsqLzB4MDAyNi8qOjpdKi86IHsgLyogbjpcIkxlZnRNYXJnaW5cIiwgKi8gZjpwYXJzZV9YbnVtIH0sIC8vICpcblx0Lyo6OlsqLzB4MDAyNy8qOjpdKi86IHsgLyogbjpcIlJpZ2h0TWFyZ2luXCIsICovIGY6cGFyc2VfWG51bSB9LCAvLyAqXG5cdC8qOjpbKi8weDAwMjgvKjo6XSovOiB7IC8qIG46XCJUb3BNYXJnaW5cIiwgKi8gZjpwYXJzZV9YbnVtIH0sIC8vICpcblx0Lyo6OlsqLzB4MDAyOS8qOjpdKi86IHsgLyogbjpcIkJvdHRvbU1hcmdpblwiLCAqLyBmOnBhcnNlX1hudW0gfSwgLy8gKlxuXHQvKjo6WyovMHgwMDJhLyo6Ol0qLzogeyAvKiBuOlwiUHJpbnRSb3dDb2xcIiwgKi8gZjpwYXJzZWJvb2wgfSxcblx0Lyo6OlsqLzB4MDAyYi8qOjpdKi86IHsgLyogbjpcIlByaW50R3JpZFwiLCAqLyBmOnBhcnNlYm9vbCB9LFxuXHQvKjo6WyovMHgwMDJmLyo6Ol0qLzogeyAvKiBuOlwiRmlsZVBhc3NcIiwgKi8gZjpwYXJzZV9GaWxlUGFzcyB9LFxuXHQvKjo6WyovMHgwMDMxLyo6Ol0qLzogeyAvKiBuOlwiRm9udFwiLCAqLyBmOnBhcnNlX0ZvbnQgfSxcblx0Lyo6OlsqLzB4MDAzMy8qOjpdKi86IHsgLyogbjpcIlByaW50U2l6ZVwiLCAqLyBmOnBhcnNldWludDE2IH0sXG5cdC8qOjpbKi8weDAwM2MvKjo6XSovOiB7IC8qIG46XCJDb250aW51ZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDNkLyo6Ol0qLzogeyAvKiBuOlwiV2luZG93MVwiLCAqLyBmOnBhcnNlX1dpbmRvdzEgfSxcblx0Lyo6OlsqLzB4MDA0MC8qOjpdKi86IHsgLyogbjpcIkJhY2t1cFwiLCAqLyBmOnBhcnNlYm9vbCB9LFxuXHQvKjo6WyovMHgwMDQxLyo6Ol0qLzogeyAvKiBuOlwiUGFuZVwiLCAqLyBmOnBhcnNlX1BhbmUgfSxcblx0Lyo6OlsqLzB4MDA0Mi8qOjpdKi86IHsgLyogbjpcIkNvZGVQYWdlXCIsICovIGY6cGFyc2V1aW50MTYgfSxcblx0Lyo6OlsqLzB4MDA0ZC8qOjpdKi86IHsgLyogbjpcIlBsc1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDUwLyo6Ol0qLzogeyAvKiBuOlwiRENvblwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDUxLyo6Ol0qLzogeyAvKiBuOlwiRENvblJlZlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDUyLyo6Ol0qLzogeyAvKiBuOlwiRENvbk5hbWVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA1NS8qOjpdKi86IHsgLyogbjpcIkRlZkNvbFdpZHRoXCIsICovIGY6cGFyc2V1aW50MTYgfSxcblx0Lyo6OlsqLzB4MDA1OS8qOjpdKi86IHsgLyogbjpcIlhDVFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDVhLyo6Ol0qLzogeyAvKiBuOlwiQ1JOXCIsICovIH0sXG5cdC8qOjpbKi8weDAwNWIvKjo6XSovOiB7IC8qIG46XCJGaWxlU2hhcmluZ1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDVjLyo6Ol0qLzogeyAvKiBuOlwiV3JpdGVBY2Nlc3NcIiwgKi8gZjpwYXJzZV9Xcml0ZUFjY2VzcyB9LFxuXHQvKjo6WyovMHgwMDVkLyo6Ol0qLzogeyAvKiBuOlwiT2JqXCIsICovIGY6cGFyc2VfT2JqIH0sXG5cdC8qOjpbKi8weDAwNWUvKjo6XSovOiB7IC8qIG46XCJVbmNhbGNlZFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDVmLyo6Ol0qLzogeyAvKiBuOlwiQ2FsY1NhdmVSZWNhbGNcIiwgKi8gZjpwYXJzZWJvb2wgfSwgLy9cblx0Lyo6OlsqLzB4MDA2MC8qOjpdKi86IHsgLyogbjpcIlRlbXBsYXRlXCIsICovIH0sXG5cdC8qOjpbKi8weDAwNjEvKjo6XSovOiB7IC8qIG46XCJJbnRsXCIsICovIH0sXG5cdC8qOjpbKi8weDAwNjMvKjo6XSovOiB7IC8qIG46XCJPYmpQcm90ZWN0XCIsICovIGY6cGFyc2Vib29sIH0sXG5cdC8qOjpbKi8weDAwN2QvKjo6XSovOiB7IC8qIG46XCJDb2xJbmZvXCIsICovIGY6cGFyc2VfQ29sSW5mbyB9LFxuXHQvKjo6WyovMHgwMDgwLyo6Ol0qLzogeyAvKiBuOlwiR3V0c1wiLCAqLyBmOnBhcnNlX0d1dHMgfSxcblx0Lyo6OlsqLzB4MDA4MS8qOjpdKi86IHsgLyogbjpcIldzQm9vbFwiLCAqLyBmOnBhcnNlX1dzQm9vbCB9LFxuXHQvKjo6WyovMHgwMDgyLyo6Ol0qLzogeyAvKiBuOlwiR3JpZFNldFwiLCAqLyBmOnBhcnNldWludDE2IH0sXG5cdC8qOjpbKi8weDAwODMvKjo6XSovOiB7IC8qIG46XCJIQ2VudGVyXCIsICovIGY6cGFyc2Vib29sIH0sXG5cdC8qOjpbKi8weDAwODQvKjo6XSovOiB7IC8qIG46XCJWQ2VudGVyXCIsICovIGY6cGFyc2Vib29sIH0sXG5cdC8qOjpbKi8weDAwODUvKjo6XSovOiB7IC8qIG46XCJCb3VuZFNoZWV0OFwiLCAqLyBmOnBhcnNlX0JvdW5kU2hlZXQ4IH0sXG5cdC8qOjpbKi8weDAwODYvKjo6XSovOiB7IC8qIG46XCJXcml0ZVByb3RlY3RcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA4Yy8qOjpdKi86IHsgLyogbjpcIkNvdW50cnlcIiwgKi8gZjpwYXJzZV9Db3VudHJ5IH0sXG5cdC8qOjpbKi8weDAwOGQvKjo6XSovOiB7IC8qIG46XCJIaWRlT2JqXCIsICovIGY6cGFyc2V1aW50MTYgfSxcblx0Lyo6OlsqLzB4MDA5MC8qOjpdKi86IHsgLyogbjpcIlNvcnRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA5Mi8qOjpdKi86IHsgLyogbjpcIlBhbGV0dGVcIiwgKi8gZjpwYXJzZV9QYWxldHRlIH0sXG5cdC8qOjpbKi8weDAwOTcvKjo6XSovOiB7IC8qIG46XCJTeW5jXCIsICovIH0sXG5cdC8qOjpbKi8weDAwOTgvKjo6XSovOiB7IC8qIG46XCJMUHJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA5OS8qOjpdKi86IHsgLyogbjpcIkR4R0NvbFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDlhLyo6Ol0qLzogeyAvKiBuOlwiRm5Hcm91cE5hbWVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA5Yi8qOjpdKi86IHsgLyogbjpcIkZpbHRlck1vZGVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA5Yy8qOjpdKi86IHsgLyogbjpcIkJ1aWx0SW5Gbkdyb3VwQ291bnRcIiwgKi8gZjpwYXJzZXVpbnQxNiB9LFxuXHQvKjo6WyovMHgwMDlkLyo6Ol0qLzogeyAvKiBuOlwiQXV0b0ZpbHRlckluZm9cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA5ZS8qOjpdKi86IHsgLyogbjpcIkF1dG9GaWx0ZXJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBhMC8qOjpdKi86IHsgLyogbjpcIlNjbFwiLCAqLyBmOnBhcnNlX1NjbCB9LFxuXHQvKjo6WyovMHgwMGExLyo6Ol0qLzogeyAvKiBuOlwiU2V0dXBcIiwgKi8gZjpwYXJzZV9TZXR1cCB9LFxuXHQvKjo6WyovMHgwMGFlLyo6Ol0qLzogeyAvKiBuOlwiU2Nlbk1hblwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGFmLyo6Ol0qLzogeyAvKiBuOlwiU0NFTkFSSU9cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBiMC8qOjpdKi86IHsgLyogbjpcIlN4Vmlld1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGIxLyo6Ol0qLzogeyAvKiBuOlwiU3h2ZFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGIyLyo6Ol0qLzogeyAvKiBuOlwiU1hWSVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGI0Lyo6Ol0qLzogeyAvKiBuOlwiU3hJdmRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBiNS8qOjpdKi86IHsgLyogbjpcIlNYTElcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBiNi8qOjpdKi86IHsgLyogbjpcIlNYUElcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBiOC8qOjpdKi86IHsgLyogbjpcIkRvY1JvdXRlXCIsICovIH0sXG5cdC8qOjpbKi8weDAwYjkvKjo6XSovOiB7IC8qIG46XCJSZWNpcE5hbWVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBiZC8qOjpdKi86IHsgLyogbjpcIk11bFJrXCIsICovIGY6cGFyc2VfTXVsUmsgfSxcblx0Lyo6OlsqLzB4MDBiZS8qOjpdKi86IHsgLyogbjpcIk11bEJsYW5rXCIsICovIGY6cGFyc2VfTXVsQmxhbmsgfSxcblx0Lyo6OlsqLzB4MDBjMS8qOjpdKi86IHsgLyogbjpcIk1tc1wiLCAqLyBmOnBhcnNlbm9vcDIgfSxcblx0Lyo6OlsqLzB4MDBjNS8qOjpdKi86IHsgLyogbjpcIlNYRElcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBjNi8qOjpdKi86IHsgLyogbjpcIlNYREJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBjNy8qOjpdKi86IHsgLyogbjpcIlNYRkRCXCIsICovIH0sXG5cdC8qOjpbKi8weDAwYzgvKjo6XSovOiB7IC8qIG46XCJTWERCQlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGM5Lyo6Ol0qLzogeyAvKiBuOlwiU1hOdW1cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBjYS8qOjpdKi86IHsgLyogbjpcIlN4Qm9vbFwiLCAqLyBmOnBhcnNlYm9vbCB9LFxuXHQvKjo6WyovMHgwMGNiLyo6Ol0qLzogeyAvKiBuOlwiU3hFcnJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBjYy8qOjpdKi86IHsgLyogbjpcIlNYSW50XCIsICovIH0sXG5cdC8qOjpbKi8weDAwY2QvKjo6XSovOiB7IC8qIG46XCJTWFN0cmluZ1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGNlLyo6Ol0qLzogeyAvKiBuOlwiU1hEdHJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBjZi8qOjpdKi86IHsgLyogbjpcIlN4TmlsXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZDAvKjo6XSovOiB7IC8qIG46XCJTWFRibFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGQxLyo6Ol0qLzogeyAvKiBuOlwiU1hUQlJHSUlUTVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGQyLyo6Ol0qLzogeyAvKiBuOlwiU3hUYnBnXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZDMvKjo6XSovOiB7IC8qIG46XCJPYlByb2pcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBkNS8qOjpdKi86IHsgLyogbjpcIlNYU3RyZWFtSURcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBkNy8qOjpdKi86IHsgLyogbjpcIkRCQ2VsbFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGQ4Lyo6Ol0qLzogeyAvKiBuOlwiU1hSbmdcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBkOS8qOjpdKi86IHsgLyogbjpcIlN4SXN4b3BlclwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGRhLyo6Ol0qLzogeyAvKiBuOlwiQm9va0Jvb2xcIiwgKi8gZjpwYXJzZXVpbnQxNiB9LFxuXHQvKjo6WyovMHgwMGRjLyo6Ol0qLzogeyAvKiBuOlwiRGJPclBhcmFtUXJ5XCIsICovIH0sXG5cdC8qOjpbKi8weDAwZGQvKjo6XSovOiB7IC8qIG46XCJTY2VuYXJpb1Byb3RlY3RcIiwgKi8gZjpwYXJzZWJvb2wgfSxcblx0Lyo6OlsqLzB4MDBkZS8qOjpdKi86IHsgLyogbjpcIk9sZU9iamVjdFNpemVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBlMC8qOjpdKi86IHsgLyogbjpcIlhGXCIsICovIGY6cGFyc2VfWEYgfSxcblx0Lyo6OlsqLzB4MDBlMS8qOjpdKi86IHsgLyogbjpcIkludGVyZmFjZUhkclwiLCAqLyBmOnBhcnNlX0ludGVyZmFjZUhkciB9LFxuXHQvKjo6WyovMHgwMGUyLyo6Ol0qLzogeyAvKiBuOlwiSW50ZXJmYWNlRW5kXCIsICovIGY6cGFyc2Vub29wMiB9LFxuXHQvKjo6WyovMHgwMGUzLyo6Ol0qLzogeyAvKiBuOlwiU1hWU1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGU1Lyo6Ol0qLzogeyAvKiBuOlwiTWVyZ2VDZWxsc1wiLCAqLyBmOnBhcnNlX01lcmdlQ2VsbHMgfSxcblx0Lyo6OlsqLzB4MDBlOS8qOjpdKi86IHsgLyogbjpcIkJrSGltXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZWIvKjo6XSovOiB7IC8qIG46XCJNc29EcmF3aW5nR3JvdXBcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBlYy8qOjpdKi86IHsgLyogbjpcIk1zb0RyYXdpbmdcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBlZC8qOjpdKi86IHsgLyogbjpcIk1zb0RyYXdpbmdTZWxlY3Rpb25cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBlZi8qOjpdKi86IHsgLyogbjpcIlBob25ldGljSW5mb1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGYwLyo6Ol0qLzogeyAvKiBuOlwiU3hSdWxlXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZjEvKjo6XSovOiB7IC8qIG46XCJTWEV4XCIsICovIH0sXG5cdC8qOjpbKi8weDAwZjIvKjo6XSovOiB7IC8qIG46XCJTeEZpbHRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBmNC8qOjpdKi86IHsgLyogbjpcIlN4RFhGXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZjUvKjo6XSovOiB7IC8qIG46XCJTeEl0bVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGY2Lyo6Ol0qLzogeyAvKiBuOlwiU3hOYW1lXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZjcvKjo6XSovOiB7IC8qIG46XCJTeFNlbGVjdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGY4Lyo6Ol0qLzogeyAvKiBuOlwiU1hQYWlyXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZjkvKjo6XSovOiB7IC8qIG46XCJTeEZtbGFcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBmYi8qOjpdKi86IHsgLyogbjpcIlN4Rm9ybWF0XCIsICovIH0sXG5cdC8qOjpbKi8weDAwZmMvKjo6XSovOiB7IC8qIG46XCJTU1RcIiwgKi8gZjpwYXJzZV9TU1QgfSxcblx0Lyo6OlsqLzB4MDBmZC8qOjpdKi86IHsgLyogbjpcIkxhYmVsU3N0XCIsICovIGY6cGFyc2VfTGFiZWxTc3QgfSxcblx0Lyo6OlsqLzB4MDBmZi8qOjpdKi86IHsgLyogbjpcIkV4dFNTVFwiLCAqLyBmOnBhcnNlX0V4dFNTVCB9LFxuXHQvKjo6WyovMHgwMTAwLyo6Ol0qLzogeyAvKiBuOlwiU1hWREV4XCIsICovIH0sXG5cdC8qOjpbKi8weDAxMDMvKjo6XSovOiB7IC8qIG46XCJTWEZvcm11bGFcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDEyMi8qOjpdKi86IHsgLyogbjpcIlNYREJFeFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTM3Lyo6Ol0qLzogeyAvKiBuOlwiUlJESW5zRGVsXCIsICovIH0sXG5cdC8qOjpbKi8weDAxMzgvKjo6XSovOiB7IC8qIG46XCJSUkRIZWFkXCIsICovIH0sXG5cdC8qOjpbKi8weDAxM2IvKjo6XSovOiB7IC8qIG46XCJSUkRDaGdDZWxsXCIsICovIH0sXG5cdC8qOjpbKi8weDAxM2QvKjo6XSovOiB7IC8qIG46XCJSUlRhYklkXCIsICovIGY6cGFyc2V1aW50MTZhIH0sXG5cdC8qOjpbKi8weDAxM2UvKjo6XSovOiB7IC8qIG46XCJSUkRSZW5TaGVldFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTNmLyo6Ol0qLzogeyAvKiBuOlwiUlJTb3J0XCIsICovIH0sXG5cdC8qOjpbKi8weDAxNDAvKjo6XSovOiB7IC8qIG46XCJSUkRNb3ZlXCIsICovIH0sXG5cdC8qOjpbKi8weDAxNGEvKjo6XSovOiB7IC8qIG46XCJSUkZvcm1hdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTRiLyo6Ol0qLzogeyAvKiBuOlwiUlJBdXRvRm10XCIsICovIH0sXG5cdC8qOjpbKi8weDAxNGQvKjo6XSovOiB7IC8qIG46XCJSUkluc2VydFNoXCIsICovIH0sXG5cdC8qOjpbKi8weDAxNGUvKjo6XSovOiB7IC8qIG46XCJSUkRNb3ZlQmVnaW5cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE0Zi8qOjpdKi86IHsgLyogbjpcIlJSRE1vdmVFbmRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE1MC8qOjpdKi86IHsgLyogbjpcIlJSREluc0RlbEJlZ2luXCIsICovIH0sXG5cdC8qOjpbKi8weDAxNTEvKjo6XSovOiB7IC8qIG46XCJSUkRJbnNEZWxFbmRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE1Mi8qOjpdKi86IHsgLyogbjpcIlJSRENvbmZsaWN0XCIsICovIH0sXG5cdC8qOjpbKi8weDAxNTMvKjo6XSovOiB7IC8qIG46XCJSUkREZWZOYW1lXCIsICovIH0sXG5cdC8qOjpbKi8weDAxNTQvKjo6XSovOiB7IC8qIG46XCJSUkRSc3RFdHhwXCIsICovIH0sXG5cdC8qOjpbKi8weDAxNWYvKjo6XSovOiB7IC8qIG46XCJMUm5nXCIsICovIH0sXG5cdC8qOjpbKi8weDAxNjAvKjo6XSovOiB7IC8qIG46XCJVc2VzRUxGc1wiLCAqLyBmOnBhcnNlYm9vbCB9LFxuXHQvKjo6WyovMHgwMTYxLyo6Ol0qLzogeyAvKiBuOlwiRFNGXCIsICovIGY6cGFyc2Vub29wMiB9LFxuXHQvKjo6WyovMHgwMTkxLyo6Ol0qLzogeyAvKiBuOlwiQ1VzclwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTkyLyo6Ol0qLzogeyAvKiBuOlwiQ2JVc3JcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE5My8qOjpdKi86IHsgLyogbjpcIlVzckluZm9cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE5NC8qOjpdKi86IHsgLyogbjpcIlVzckV4Y2xcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE5NS8qOjpdKi86IHsgLyogbjpcIkZpbGVMb2NrXCIsICovIH0sXG5cdC8qOjpbKi8weDAxOTYvKjo6XSovOiB7IC8qIG46XCJSUkRJbmZvXCIsICovIH0sXG5cdC8qOjpbKi8weDAxOTcvKjo6XSovOiB7IC8qIG46XCJCQ1VzcnNcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE5OC8qOjpdKi86IHsgLyogbjpcIlVzckNoa1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMWE5Lyo6Ol0qLzogeyAvKiBuOlwiVXNlckJWaWV3XCIsICovIH0sXG5cdC8qOjpbKi8weDAxYWEvKjo6XSovOiB7IC8qIG46XCJVc2VyU1ZpZXdCZWdpblwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMWFiLyo6Ol0qLzogeyAvKiBuOlwiVXNlclNWaWV3RW5kXCIsICovIH0sXG5cdC8qOjpbKi8weDAxYWMvKjo6XSovOiB7IC8qIG46XCJSUkRVc2VyVmlld1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMWFkLyo6Ol0qLzogeyAvKiBuOlwiUXNpXCIsICovIH0sXG5cdC8qOjpbKi8weDAxYWUvKjo6XSovOiB7IC8qIG46XCJTdXBCb29rXCIsICovIGY6cGFyc2VfU3VwQm9vayB9LFxuXHQvKjo6WyovMHgwMWFmLyo6Ol0qLzogeyAvKiBuOlwiUHJvdDRSZXZcIiwgKi8gZjpwYXJzZWJvb2wgfSxcblx0Lyo6OlsqLzB4MDFiMC8qOjpdKi86IHsgLyogbjpcIkNvbmRGbXRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDFiMS8qOjpdKi86IHsgLyogbjpcIkNGXCIsICovIH0sXG5cdC8qOjpbKi8weDAxYjIvKjo6XSovOiB7IC8qIG46XCJEVmFsXCIsICovIH0sXG5cdC8qOjpbKi8weDAxYjUvKjo6XSovOiB7IC8qIG46XCJEQ29uQmluXCIsICovIH0sXG5cdC8qOjpbKi8weDAxYjYvKjo6XSovOiB7IC8qIG46XCJUeE9cIiwgKi8gZjpwYXJzZV9UeE8gfSxcblx0Lyo6OlsqLzB4MDFiNy8qOjpdKi86IHsgLyogbjpcIlJlZnJlc2hBbGxcIiwgKi8gZjpwYXJzZWJvb2wgfSwgLy9cblx0Lyo6OlsqLzB4MDFiOC8qOjpdKi86IHsgLyogbjpcIkhMaW5rXCIsICovIGY6cGFyc2VfSExpbmsgfSxcblx0Lyo6OlsqLzB4MDFiOS8qOjpdKi86IHsgLyogbjpcIkxlbFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMWJhLyo6Ol0qLzogeyAvKiBuOlwiQ29kZU5hbWVcIiwgKi8gZjpwYXJzZV9YTFVuaWNvZGVTdHJpbmcgfSxcblx0Lyo6OlsqLzB4MDFiYi8qOjpdKi86IHsgLyogbjpcIlNYRkRCVHlwZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMWJjLyo6Ol0qLzogeyAvKiBuOlwiUHJvdDRSZXZQYXNzXCIsICovIGY6cGFyc2V1aW50MTYgfSxcblx0Lyo6OlsqLzB4MDFiZC8qOjpdKi86IHsgLyogbjpcIk9iTm9NYWNyb3NcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDFiZS8qOjpdKi86IHsgLyogbjpcIkR2XCIsICovIH0sXG5cdC8qOjpbKi8weDAxYzAvKjo6XSovOiB7IC8qIG46XCJFeGNlbDlGaWxlXCIsICovIGY6cGFyc2Vub29wMiB9LFxuXHQvKjo6WyovMHgwMWMxLyo6Ol0qLzogeyAvKiBuOlwiUmVjYWxjSWRcIiwgKi8gZjpwYXJzZV9SZWNhbGNJZCwgcjoyfSxcblx0Lyo6OlsqLzB4MDFjMi8qOjpdKi86IHsgLyogbjpcIkVudEV4VTJcIiwgKi8gZjpwYXJzZW5vb3AyIH0sXG5cdC8qOjpbKi8weDAyMDAvKjo6XSovOiB7IC8qIG46XCJEaW1lbnNpb25zXCIsICovIGY6cGFyc2VfRGltZW5zaW9ucyB9LFxuXHQvKjo6WyovMHgwMjAxLyo6Ol0qLzogeyAvKiBuOlwiQmxhbmtcIiwgKi8gZjpwYXJzZV9CbGFuayB9LFxuXHQvKjo6WyovMHgwMjAzLyo6Ol0qLzogeyAvKiBuOlwiTnVtYmVyXCIsICovIGY6cGFyc2VfTnVtYmVyIH0sXG5cdC8qOjpbKi8weDAyMDQvKjo6XSovOiB7IC8qIG46XCJMYWJlbFwiLCAqLyBmOnBhcnNlX0xhYmVsIH0sXG5cdC8qOjpbKi8weDAyMDUvKjo6XSovOiB7IC8qIG46XCJCb29sRXJyXCIsICovIGY6cGFyc2VfQm9vbEVyciB9LFxuXHQvKjo6WyovMHgwMjA3Lyo6Ol0qLzogeyAvKiBuOlwiU3RyaW5nXCIsICovIGY6cGFyc2VfU3RyaW5nIH0sXG5cdC8qOjpbKi8weDAyMDgvKjo6XSovOiB7IC8qIG46XCJSb3dcIiwgKi8gZjpwYXJzZV9Sb3cgfSxcblx0Lyo6OlsqLzB4MDIwYi8qOjpdKi86IHsgLyogbjpcIkluZGV4XCIsICovIH0sXG5cdC8qOjpbKi8weDAyMjEvKjo6XSovOiB7IC8qIG46XCJBcnJheVwiLCAqLyBmOnBhcnNlX0FycmF5IH0sXG5cdC8qOjpbKi8weDAyMjUvKjo6XSovOiB7IC8qIG46XCJEZWZhdWx0Um93SGVpZ2h0XCIsICovIGY6cGFyc2VfRGVmYXVsdFJvd0hlaWdodCB9LFxuXHQvKjo6WyovMHgwMjM2Lyo6Ol0qLzogeyAvKiBuOlwiVGFibGVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDIzZS8qOjpdKi86IHsgLyogbjpcIldpbmRvdzJcIiwgKi8gZjpwYXJzZV9XaW5kb3cyIH0sXG5cdC8qOjpbKi8weDAyN2UvKjo6XSovOiB7IC8qIG46XCJSS1wiLCAqLyBmOnBhcnNlX1JLIH0sXG5cdC8qOjpbKi8weDAyOTMvKjo6XSovOiB7IC8qIG46XCJTdHlsZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwNDE4Lyo6Ol0qLzogeyAvKiBuOlwiQmlnTmFtZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwNDFlLyo6Ol0qLzogeyAvKiBuOlwiRm9ybWF0XCIsICovIGY6cGFyc2VfRm9ybWF0IH0sXG5cdC8qOjpbKi8weDA0M2MvKjo6XSovOiB7IC8qIG46XCJDb250aW51ZUJpZ05hbWVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDRiYy8qOjpdKi86IHsgLyogbjpcIlNockZtbGFcIiwgKi8gZjpwYXJzZV9TaHJGbWxhIH0sXG5cdC8qOjpbKi8weDA4MDAvKjo6XSovOiB7IC8qIG46XCJITGlua1Rvb2x0aXBcIiwgKi8gZjpwYXJzZV9ITGlua1Rvb2x0aXAgfSxcblx0Lyo6OlsqLzB4MDgwMS8qOjpdKi86IHsgLyogbjpcIldlYlB1YlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODAyLyo6Ol0qLzogeyAvKiBuOlwiUXNpU1hUYWdcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDgwMy8qOjpdKi86IHsgLyogbjpcIkRCUXVlcnlFeHRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDgwNC8qOjpdKi86IHsgLyogbjpcIkV4dFN0cmluZ1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwODA1Lyo6Ol0qLzogeyAvKiBuOlwiVHh0UXJ5XCIsICovIH0sXG5cdC8qOjpbKi8weDA4MDYvKjo6XSovOiB7IC8qIG46XCJRc2lyXCIsICovIH0sXG5cdC8qOjpbKi8weDA4MDcvKjo6XSovOiB7IC8qIG46XCJRc2lmXCIsICovIH0sXG5cdC8qOjpbKi8weDA4MDgvKjo6XSovOiB7IC8qIG46XCJSUkRUUVNJRlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODA5Lyo6Ol0qLzogeyAvKiBuOlwiQk9GXCIsICovIGY6cGFyc2VfQk9GIH0sXG5cdC8qOjpbKi8weDA4MGEvKjo6XSovOiB7IC8qIG46XCJPbGVEYkNvbm5cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDgwYi8qOjpdKi86IHsgLyogbjpcIldPcHRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDgwYy8qOjpdKi86IHsgLyogbjpcIlNYVmlld0V4XCIsICovIH0sXG5cdC8qOjpbKi8weDA4MGQvKjo6XSovOiB7IC8qIG46XCJTWFRIXCIsICovIH0sXG5cdC8qOjpbKi8weDA4MGUvKjo6XSovOiB7IC8qIG46XCJTWFBJRXhcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDgwZi8qOjpdKi86IHsgLyogbjpcIlNYVkRURXhcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDgxMC8qOjpdKi86IHsgLyogbjpcIlNYVmlld0V4OVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODEyLyo6Ol0qLzogeyAvKiBuOlwiQ29udGludWVGcnRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDgxMy8qOjpdKi86IHsgLyogbjpcIlJlYWxUaW1lRGF0YVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODUwLyo6Ol0qLzogeyAvKiBuOlwiQ2hhcnRGcnRJbmZvXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NTEvKjo6XSovOiB7IC8qIG46XCJGcnRXcmFwcGVyXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NTIvKjo6XSovOiB7IC8qIG46XCJTdGFydEJsb2NrXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NTMvKjo6XSovOiB7IC8qIG46XCJFbmRCbG9ja1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwODU0Lyo6Ol0qLzogeyAvKiBuOlwiU3RhcnRPYmplY3RcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg1NS8qOjpdKi86IHsgLyogbjpcIkVuZE9iamVjdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODU2Lyo6Ol0qLzogeyAvKiBuOlwiQ2F0TGFiXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NTcvKjo6XSovOiB7IC8qIG46XCJZTXVsdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODU4Lyo6Ol0qLzogeyAvKiBuOlwiU1hWaWV3TGlua1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwODU5Lyo6Ol0qLzogeyAvKiBuOlwiUGl2b3RDaGFydEJpdHNcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg1YS8qOjpdKi86IHsgLyogbjpcIkZydEZvbnRMaXN0XCIsICovIH0sXG5cdC8qOjpbKi8weDA4NjIvKjo6XSovOiB7IC8qIG46XCJTaGVldEV4dFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODYzLyo6Ol0qLzogeyAvKiBuOlwiQm9va0V4dFwiLCAqLyByOjEyfSxcblx0Lyo6OlsqLzB4MDg2NC8qOjpdKi86IHsgLyogbjpcIlNYQWRkbFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODY1Lyo6Ol0qLzogeyAvKiBuOlwiQ3JFcnJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg2Ni8qOjpdKi86IHsgLyogbjpcIkhGUGljdHVyZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODY3Lyo6Ol0qLzogeyAvKiBuOlwiRmVhdEhkclwiLCAqLyBmOnBhcnNlbm9vcDIgfSxcblx0Lyo6OlsqLzB4MDg2OC8qOjpdKi86IHsgLyogbjpcIkZlYXRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg2YS8qOjpdKi86IHsgLyogbjpcIkRhdGFMYWJFeHRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg2Yi8qOjpdKi86IHsgLyogbjpcIkRhdGFMYWJFeHRDb250ZW50c1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwODZjLyo6Ol0qLzogeyAvKiBuOlwiQ2VsbFdhdGNoXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NzEvKjo6XSovOiB7IC8qIG46XCJGZWF0SGRyMTFcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg3Mi8qOjpdKi86IHsgLyogbjpcIkZlYXR1cmUxMVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODc0Lyo6Ol0qLzogeyAvKiBuOlwiRHJvcERvd25PYmpJZHNcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg3NS8qOjpdKi86IHsgLyogbjpcIkNvbnRpbnVlRnJ0MTFcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg3Ni8qOjpdKi86IHsgLyogbjpcIkRDb25uXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NzcvKjo6XSovOiB7IC8qIG46XCJMaXN0MTJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg3OC8qOjpdKi86IHsgLyogbjpcIkZlYXR1cmUxMlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODc5Lyo6Ol0qLzogeyAvKiBuOlwiQ29uZEZtdDEyXCIsICovIH0sXG5cdC8qOjpbKi8weDA4N2EvKjo6XSovOiB7IC8qIG46XCJDRjEyXCIsICovIH0sXG5cdC8qOjpbKi8weDA4N2IvKjo6XSovOiB7IC8qIG46XCJDRkV4XCIsICovIH0sXG5cdC8qOjpbKi8weDA4N2MvKjo6XSovOiB7IC8qIG46XCJYRkNSQ1wiLCAqLyBmOnBhcnNlX1hGQ1JDLCByOjEyIH0sXG5cdC8qOjpbKi8weDA4N2QvKjo6XSovOiB7IC8qIG46XCJYRkV4dFwiLCAqLyBmOnBhcnNlX1hGRXh0LCByOjEyIH0sXG5cdC8qOjpbKi8weDA4N2UvKjo6XSovOiB7IC8qIG46XCJBdXRvRmlsdGVyMTJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg3Zi8qOjpdKi86IHsgLyogbjpcIkNvbnRpbnVlRnJ0MTJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg4NC8qOjpdKi86IHsgLyogbjpcIk1EVEluZm9cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg4NS8qOjpdKi86IHsgLyogbjpcIk1EWFN0clwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODg2Lyo6Ol0qLzogeyAvKiBuOlwiTURYVHVwbGVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg4Ny8qOjpdKi86IHsgLyogbjpcIk1EWFNldFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODg4Lyo6Ol0qLzogeyAvKiBuOlwiTURYUHJvcFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODg5Lyo6Ol0qLzogeyAvKiBuOlwiTURYS1BJXCIsICovIH0sXG5cdC8qOjpbKi8weDA4OGEvKjo6XSovOiB7IC8qIG46XCJNREJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg4Yi8qOjpdKi86IHsgLyogbjpcIlBMVlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODhjLyo6Ol0qLzogeyAvKiBuOlwiQ29tcGF0MTJcIiwgKi8gZjpwYXJzZWJvb2wsIHI6MTIgfSxcblx0Lyo6OlsqLzB4MDg4ZC8qOjpdKi86IHsgLyogbjpcIkRYRlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODhlLyo6Ol0qLzogeyAvKiBuOlwiVGFibGVTdHlsZXNcIiwgKi8gcjoxMiB9LFxuXHQvKjo6WyovMHgwODhmLyo6Ol0qLzogeyAvKiBuOlwiVGFibGVTdHlsZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODkwLyo6Ol0qLzogeyAvKiBuOlwiVGFibGVTdHlsZUVsZW1lbnRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg5Mi8qOjpdKi86IHsgLyogbjpcIlN0eWxlRXh0XCIsICovIH0sXG5cdC8qOjpbKi8weDA4OTMvKjo6XSovOiB7IC8qIG46XCJOYW1lUHVibGlzaFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODk0Lyo6Ol0qLzogeyAvKiBuOlwiTmFtZUNtdFwiLCAqLyBmOnBhcnNlX05hbWVDbXQsIHI6MTIgfSxcblx0Lyo6OlsqLzB4MDg5NS8qOjpdKi86IHsgLyogbjpcIlNvcnREYXRhXCIsICovIH0sXG5cdC8qOjpbKi8weDA4OTYvKjo6XSovOiB7IC8qIG46XCJUaGVtZVwiLCAqLyBmOnBhcnNlX1RoZW1lLCByOjEyIH0sXG5cdC8qOjpbKi8weDA4OTcvKjo6XSovOiB7IC8qIG46XCJHVUlEVHlwZUxpYlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODk4Lyo6Ol0qLzogeyAvKiBuOlwiRm5HcnAxMlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODk5Lyo6Ol0qLzogeyAvKiBuOlwiTmFtZUZuR3JwMTJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg5YS8qOjpdKi86IHsgLyogbjpcIk1UUlNldHRpbmdzXCIsICovIGY6cGFyc2VfTVRSU2V0dGluZ3MsIHI6MTIgfSxcblx0Lyo6OlsqLzB4MDg5Yi8qOjpdKi86IHsgLyogbjpcIkNvbXByZXNzUGljdHVyZXNcIiwgKi8gZjpwYXJzZW5vb3AyIH0sXG5cdC8qOjpbKi8weDA4OWMvKjo6XSovOiB7IC8qIG46XCJIZWFkZXJGb290ZXJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg5ZC8qOjpdKi86IHsgLyogbjpcIkNydExheW91dDEyXCIsICovIH0sXG5cdC8qOjpbKi8weDA4OWUvKjo6XSovOiB7IC8qIG46XCJDcnRNbEZydFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODlmLyo6Ol0qLzogeyAvKiBuOlwiQ3J0TWxGcnRDb250aW51ZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwOGEzLyo6Ol0qLzogeyAvKiBuOlwiRm9yY2VGdWxsQ2FsY3VsYXRpb25cIiwgKi8gZjpwYXJzZV9Gb3JjZUZ1bGxDYWxjdWxhdGlvbiB9LFxuXHQvKjo6WyovMHgwOGE0Lyo6Ol0qLzogeyAvKiBuOlwiU2hhcGVQcm9wc1N0cmVhbVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwOGE1Lyo6Ol0qLzogeyAvKiBuOlwiVGV4dFByb3BzU3RyZWFtXCIsICovIH0sXG5cdC8qOjpbKi8weDA4YTYvKjo6XSovOiB7IC8qIG46XCJSaWNoVGV4dFN0cmVhbVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwOGE3Lyo6Ol0qLzogeyAvKiBuOlwiQ3J0TGF5b3V0MTJBXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMDEvKjo6XSovOiB7IC8qIG46XCJVbml0c1wiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDAyLyo6Ol0qLzogeyAvKiBuOlwiQ2hhcnRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAwMy8qOjpdKi86IHsgLyogbjpcIlNlcmllc1wiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDA2Lyo6Ol0qLzogeyAvKiBuOlwiRGF0YUZvcm1hdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDA3Lyo6Ol0qLzogeyAvKiBuOlwiTGluZUZvcm1hdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDA5Lyo6Ol0qLzogeyAvKiBuOlwiTWFya2VyRm9ybWF0XCIsICovIH0sXG5cdC8qOjpbKi8weDEwMGEvKjo6XSovOiB7IC8qIG46XCJBcmVhRm9ybWF0XCIsICovIH0sXG5cdC8qOjpbKi8weDEwMGIvKjo6XSovOiB7IC8qIG46XCJQaWVGb3JtYXRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAwYy8qOjpdKi86IHsgLyogbjpcIkF0dGFjaGVkTGFiZWxcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAwZC8qOjpdKi86IHsgLyogbjpcIlNlcmllc1RleHRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAxNC8qOjpdKi86IHsgLyogbjpcIkNoYXJ0Rm9ybWF0XCIsICovIH0sXG5cdC8qOjpbKi8weDEwMTUvKjo6XSovOiB7IC8qIG46XCJMZWdlbmRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAxNi8qOjpdKi86IHsgLyogbjpcIlNlcmllc0xpc3RcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAxNy8qOjpdKi86IHsgLyogbjpcIkJhclwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDE4Lyo6Ol0qLzogeyAvKiBuOlwiTGluZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDE5Lyo6Ol0qLzogeyAvKiBuOlwiUGllXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMWEvKjo6XSovOiB7IC8qIG46XCJBcmVhXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMWIvKjo6XSovOiB7IC8qIG46XCJTY2F0dGVyXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMWMvKjo6XSovOiB7IC8qIG46XCJDcnRMaW5lXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMWQvKjo6XSovOiB7IC8qIG46XCJBeGlzXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMWUvKjo6XSovOiB7IC8qIG46XCJUaWNrXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMWYvKjo6XSovOiB7IC8qIG46XCJWYWx1ZVJhbmdlXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMjAvKjo6XSovOiB7IC8qIG46XCJDYXRTZXJSYW5nZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDIxLyo6Ol0qLzogeyAvKiBuOlwiQXhpc0xpbmVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAyMi8qOjpdKi86IHsgLyogbjpcIkNydExpbmtcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAyNC8qOjpdKi86IHsgLyogbjpcIkRlZmF1bHRUZXh0XCIsICovIH0sXG5cdC8qOjpbKi8weDEwMjUvKjo6XSovOiB7IC8qIG46XCJUZXh0XCIsICovIH0sXG5cdC8qOjpbKi8weDEwMjYvKjo6XSovOiB7IC8qIG46XCJGb250WFwiLCAqLyBmOnBhcnNldWludDE2IH0sXG5cdC8qOjpbKi8weDEwMjcvKjo6XSovOiB7IC8qIG46XCJPYmplY3RMaW5rXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMzIvKjo6XSovOiB7IC8qIG46XCJGcmFtZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDMzLyo6Ol0qLzogeyAvKiBuOlwiQmVnaW5cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAzNC8qOjpdKi86IHsgLyogbjpcIkVuZFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDM1Lyo6Ol0qLzogeyAvKiBuOlwiUGxvdEFyZWFcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAzYS8qOjpdKi86IHsgLyogbjpcIkNoYXJ0M2RcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAzYy8qOjpdKi86IHsgLyogbjpcIlBpY0ZcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAzZC8qOjpdKi86IHsgLyogbjpcIkRyb3BCYXJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAzZS8qOjpdKi86IHsgLyogbjpcIlJhZGFyXCIsICovIH0sXG5cdC8qOjpbKi8weDEwM2YvKjo6XSovOiB7IC8qIG46XCJTdXJmXCIsICovIH0sXG5cdC8qOjpbKi8weDEwNDAvKjo6XSovOiB7IC8qIG46XCJSYWRhckFyZWFcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA0MS8qOjpdKi86IHsgLyogbjpcIkF4aXNQYXJlbnRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA0My8qOjpdKi86IHsgLyogbjpcIkxlZ2VuZEV4Y2VwdGlvblwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDQ0Lyo6Ol0qLzogeyAvKiBuOlwiU2h0UHJvcHNcIiwgKi8gZjpwYXJzZV9TaHRQcm9wcyB9LFxuXHQvKjo6WyovMHgxMDQ1Lyo6Ol0qLzogeyAvKiBuOlwiU2VyVG9DcnRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA0Ni8qOjpdKi86IHsgLyogbjpcIkF4ZXNVc2VkXCIsICovIH0sXG5cdC8qOjpbKi8weDEwNDgvKjo6XSovOiB7IC8qIG46XCJTQmFzZVJlZlwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDRhLyo6Ol0qLzogeyAvKiBuOlwiU2VyUGFyZW50XCIsICovIH0sXG5cdC8qOjpbKi8weDEwNGIvKjo6XSovOiB7IC8qIG46XCJTZXJBdXhUcmVuZFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDRlLyo6Ol0qLzogeyAvKiBuOlwiSUZtdFJlY29yZFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDRmLyo6Ol0qLzogeyAvKiBuOlwiUG9zXCIsICovIH0sXG5cdC8qOjpbKi8weDEwNTAvKjo6XSovOiB7IC8qIG46XCJBbFJ1bnNcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA1MS8qOjpdKi86IHsgLyogbjpcIkJSQUlcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA1Yi8qOjpdKi86IHsgLyogbjpcIlNlckF1eEVyckJhclwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDVjLyo6Ol0qLzogeyAvKiBuOlwiQ2xydENsaWVudFwiLCAqLyBmOnBhcnNlX0NscnRDbGllbnQgfSxcblx0Lyo6OlsqLzB4MTA1ZC8qOjpdKi86IHsgLyogbjpcIlNlckZtdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDVmLyo6Ol0qLzogeyAvKiBuOlwiQ2hhcnQzREJhclNoYXBlXCIsICovIH0sXG5cdC8qOjpbKi8weDEwNjAvKjo6XSovOiB7IC8qIG46XCJGYmlcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA2MS8qOjpdKi86IHsgLyogbjpcIkJvcFBvcFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDYyLyo6Ol0qLzogeyAvKiBuOlwiQXhjRXh0XCIsICovIH0sXG5cdC8qOjpbKi8weDEwNjMvKjo6XSovOiB7IC8qIG46XCJEYXRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA2NC8qOjpdKi86IHsgLyogbjpcIlBsb3RHcm93dGhcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA2NS8qOjpdKi86IHsgLyogbjpcIlNJSW5kZXhcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA2Ni8qOjpdKi86IHsgLyogbjpcIkdlbEZyYW1lXCIsICovIH0sXG5cdC8qOjpbKi8weDEwNjcvKjo6XSovOiB7IC8qIG46XCJCb3BQb3BDdXN0b21cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA2OC8qOjpdKi86IHsgLyogbjpcIkZiaTJcIiwgKi8gfSxcblxuXHQvKjo6WyovMHgwMDAwLyo6Ol0qLzogeyAvKiBuOlwiRGltZW5zaW9uc1wiLCAqLyBmOnBhcnNlX0RpbWVuc2lvbnMgfSxcblx0Lyo6OlsqLzB4MDAwMS8qOjpdKi86IHsgLyogbjpcIkJJRkYyQkxBTktcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDAwMi8qOjpdKi86IHsgLyogbjpcIkJJRkYySU5UXCIsICovIGY6cGFyc2VfQklGRjJJTlQgfSxcblx0Lyo6OlsqLzB4MDAwMy8qOjpdKi86IHsgLyogbjpcIkJJRkYyTlVNXCIsICovIGY6cGFyc2VfQklGRjJOVU0gfSxcblx0Lyo6OlsqLzB4MDAwNC8qOjpdKi86IHsgLyogbjpcIkJJRkYyU1RSXCIsICovIGY6cGFyc2VfQklGRjJTVFIgfSxcblx0Lyo6OlsqLzB4MDAwNS8qOjpdKi86IHsgLyogbjpcIkJvb2xFcnJcIiwgKi8gZjpwYXJzZV9Cb29sRXJyIH0sXG5cdC8qOjpbKi8weDAwMDcvKjo6XSovOiB7IC8qIG46XCJTdHJpbmdcIiwgKi8gZjpwYXJzZV9CSUZGMlNUUklORyB9LFxuXHQvKjo6WyovMHgwMDA4Lyo6Ol0qLzogeyAvKiBuOlwiQklGRjJST1dcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDAwOS8qOjpdKi86IHsgLyogbjpcIkJPRlwiLCAqLyBmOnBhcnNlX0JPRiB9LFxuXHQvKjo6WyovMHgwMDBiLyo6Ol0qLzogeyAvKiBuOlwiSW5kZXhcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDAxNi8qOjpdKi86IHsgLyogbjpcIkV4dGVybkNvdW50XCIsICovIGY6cGFyc2V1aW50MTYgfSxcblx0Lyo6OlsqLzB4MDAxZS8qOjpdKi86IHsgLyogbjpcIkJJRkYyRk9STUFUXCIsICovIGY6cGFyc2VfQklGRjJGb3JtYXQgfSxcblx0Lyo6OlsqLzB4MDAxZi8qOjpdKi86IHsgLyogbjpcIkJJRkYyRk1UQ05UXCIsICovIH0sIC8qIDE2LWJpdCBjbnQgb2YgQklGRjJGT1JNQVQgcmVjb3JkcyAqL1xuXHQvKjo6WyovMHgwMDIwLyo6Ol0qLzogeyAvKiBuOlwiQklGRjJDT0xJTkZPXCIsICovIH0sXG5cdC8qOjpbKi8weDAwMjEvKjo6XSovOiB7IC8qIG46XCJBcnJheVwiLCAqLyBmOnBhcnNlX0FycmF5IH0sXG5cdC8qOjpbKi8weDAwMjQvKjo6XSovOiB7IC8qIG46XCJDT0xXSURUSFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDI1Lyo6Ol0qLzogeyAvKiBuOlwiRGVmYXVsdFJvd0hlaWdodFwiLCAqLyBmOnBhcnNlX0RlZmF1bHRSb3dIZWlnaHQgfSxcblx0Ly8gMHgyYyA/P1xuXHQvLyAweDJkID8/XG5cdC8vIDB4MmUgPz9cblx0Ly8gMHgzMCBGT05UQ09VTlQ6IG51bWJlciBvZiBmb250c1xuXHQvKjo6WyovMHgwMDMyLyo6Ol0qLzogeyAvKiBuOlwiQklGRjJGT05UWFRSQVwiLCAqLyBmOnBhcnNlX0JJRkYyRk9OVFhUUkEgfSxcblx0Ly8gMHgzNTogSU5GT09QVFNcblx0Ly8gMHgzNjogVEFCTEUgKEJJRkYyIG9ubHkpXG5cdC8vIDB4Mzc6IFRBQkxFMiAoQklGRjIgb25seSlcblx0Ly8gMHgzODogV05ERVNLXG5cdC8vIDB4MzkgPz9cblx0Ly8gMHgzYTogQkVHSU5QUkVGXG5cdC8vIDB4M2I6IEVORFBSRUZcblx0Lyo6OlsqLzB4MDAzZS8qOjpdKi86IHsgLyogbjpcIkJJRkYyV0lORE9XMlwiLCAqLyB9LFxuXHQvLyAweDNmID8/XG5cdC8vIDB4NDY6IFNIT1dTQ1JPTExcblx0Ly8gMHg0NzogU0hPV0ZPUk1VTEFcblx0Ly8gMHg0ODogU1RBVFVTQkFSXG5cdC8vIDB4NDk6IFNIT1JUTUVOVVNcblx0Ly8gMHg0QTpcblx0Ly8gMHg0Qjpcblx0Ly8gMHg0Qzpcblx0Ly8gMHg0RTpcblx0Ly8gMHg0Rjpcblx0Ly8gMHg1ODogVE9PTEJBUiAoQklGRjMpXG5cblx0LyogLSAtIC0gKi9cblx0Lyo6OlsqLzB4MDAzNC8qOjpdKi86IHsgLyogbjpcIkRERU9iak5hbWVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA0My8qOjpdKi86IHsgLyogbjpcIkJJRkYyWEZcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA0NC8qOjpdKi86IHsgLyogbjpcIkJJRkYyWEZJTkRFWFwiLCAqLyBmOnBhcnNldWludDE2IH0sXG5cdC8qOjpbKi8weDAwNDUvKjo6XSovOiB7IC8qIG46XCJCSUZGMkZPTlRDTFJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA1Ni8qOjpdKi86IHsgLyogbjpcIkJJRkY0Rk1UQ05UXCIsICovIH0sIC8qIDE2LWJpdCBjbnQsIHNpbWlsYXIgdG8gQklGRjIgKi9cblx0Lyo6OlsqLzB4MDA3ZS8qOjpdKi86IHsgLyogbjpcIlJLXCIsICovIH0sIC8qIE5vdCBuZWNlc3NhcmlseSBzYW1lIGFzIDB4MDI3ZSAqL1xuXHQvKjo6WyovMHgwMDdmLyo6Ol0qLzogeyAvKiBuOlwiSW1EYXRhXCIsICovIGY6cGFyc2VfSW1EYXRhIH0sXG5cdC8qOjpbKi8weDAwODcvKjo6XSovOiB7IC8qIG46XCJBZGRpblwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDg4Lyo6Ol0qLzogeyAvKiBuOlwiRWRnXCIsICovIH0sXG5cdC8qOjpbKi8weDAwODkvKjo6XSovOiB7IC8qIG46XCJQdWJcIiwgKi8gfSxcblx0Ly8gMHg4QVxuXHQvLyAweDhCIExIOiBhbHRlcm5hdGUgbWVudSBrZXkgZmxhZyAoQklGRjMvNClcblx0Ly8gMHg4RVxuXHQvLyAweDhGXG5cdC8qOjpbKi8weDAwOTEvKjo6XSovOiB7IC8qIG46XCJTdWJcIiwgKi8gfSxcblx0Ly8gMHg5MyBTVFlMRVxuXHQvKjo6WyovMHgwMDk0Lyo6Ol0qLzogeyAvKiBuOlwiTEhSZWNvcmRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA5NS8qOjpdKi86IHsgLyogbjpcIkxITkdyYXBoXCIsICovIH0sXG5cdC8qOjpbKi8weDAwOTYvKjo6XSovOiB7IC8qIG46XCJTb3VuZFwiLCAqLyB9LFxuXHQvLyAweEEyIEZOUFJPVE86IGZ1bmN0aW9uIHByb3RvdHlwZXMgKEJJRkY0KVxuXHQvLyAweEEzXG5cdC8vIDB4QThcblx0Lyo6OlsqLzB4MDBhOS8qOjpdKi86IHsgLyogbjpcIkNvb3JkTGlzdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGFiLyo6Ol0qLzogeyAvKiBuOlwiR0NXXCIsICovIH0sXG5cdC8qOjpbKi8weDAwYmMvKjo6XSovOiB7IC8qIG46XCJTaHJGbWxhXCIsICovIH0sIC8qIE5vdCBuZWNlc3NhcmlseSBzYW1lIGFzIDB4MDRiYyAqL1xuXHQvKjo6WyovMHgwMGJmLyo6Ol0qLzogeyAvKiBuOlwiVG9vbGJhckhkclwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGMwLyo6Ol0qLzogeyAvKiBuOlwiVG9vbGJhckVuZFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGMyLyo6Ol0qLzogeyAvKiBuOlwiQWRkTWVudVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGMzLyo6Ol0qLzogeyAvKiBuOlwiRGVsTWVudVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGQ2Lyo6Ol0qLzogeyAvKiBuOlwiUlN0cmluZ1wiLCAqLyBmOnBhcnNlX1JTdHJpbmcgfSxcblx0Lyo6OlsqLzB4MDBkZi8qOjpdKi86IHsgLyogbjpcIlVERGVzY1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGVhLyo6Ol0qLzogeyAvKiBuOlwiVGFiSWRDb25mXCIsICovIH0sXG5cdC8qOjpbKi8weDAxNjIvKjo6XSovOiB7IC8qIG46XCJYTDVNb2RpZnlcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDFhNS8qOjpdKi86IHsgLyogbjpcIkZpbGVTaGFyaW5nMlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMjA2Lyo6Ol0qLzogeyAvKiBuOlwiRm9ybXVsYVwiLCAqLyBmOnBhcnNlX0Zvcm11bGEgfSxcblx0Lyo6OlsqLzB4MDIwOS8qOjpdKi86IHsgLyogbjpcIkJPRlwiLCAqLyBmOnBhcnNlX0JPRiB9LFxuXHQvKjo6WyovMHgwMjE4Lyo6Ol0qLzogeyAvKiBuOlwiTGJsXCIsICovIGY6cGFyc2VfTGJsIH0sXG5cdC8qOjpbKi8weDAyMjMvKjo6XSovOiB7IC8qIG46XCJFeHRlcm5OYW1lXCIsICovIGY6cGFyc2VfRXh0ZXJuTmFtZSB9LFxuXHQvKjo6WyovMHgwMjMxLyo6Ol0qLzogeyAvKiBuOlwiRm9udFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMjQzLyo6Ol0qLzogeyAvKiBuOlwiQklGRjNYRlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwNDA2Lyo6Ol0qLzogeyAvKiBuOlwiRm9ybXVsYVwiLCAqLyBmOnBhcnNlX0Zvcm11bGEgfSxcblx0Lyo6OlsqLzB4MDQwOS8qOjpdKi86IHsgLyogbjpcIkJPRlwiLCAqLyBmOnBhcnNlX0JPRiB9LFxuXHQvKjo6WyovMHgwNDQzLyo6Ol0qLzogeyAvKiBuOlwiQklGRjRYRlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODZkLyo6Ol0qLzogeyAvKiBuOlwiRmVhdEluZm9cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg3My8qOjpdKi86IHsgLyogbjpcIkZlYXRJbmZvMTFcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg4MS8qOjpdKi86IHsgLyogbjpcIlNYQWRkbDEyXCIsICovIH0sXG5cdC8qOjpbKi8weDA4YzAvKjo6XSovOiB7IC8qIG46XCJBdXRvV2ViUHViXCIsICovIH0sXG5cdC8qOjpbKi8weDA4YzEvKjo6XSovOiB7IC8qIG46XCJMaXN0T2JqXCIsICovIH0sXG5cdC8qOjpbKi8weDA4YzIvKjo6XSovOiB7IC8qIG46XCJMaXN0RmllbGRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDhjMy8qOjpdKi86IHsgLyogbjpcIkxpc3REVlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwOGM0Lyo6Ol0qLzogeyAvKiBuOlwiTGlzdENvbmRGbXRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDhjNS8qOjpdKi86IHsgLyogbjpcIkxpc3RDRlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwOGM2Lyo6Ol0qLzogeyAvKiBuOlwiRk1RcnlcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDhjNy8qOjpdKi86IHsgLyogbjpcIkZNU1FyeVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwOGM4Lyo6Ol0qLzogeyAvKiBuOlwiUExWXCIsICovIH0sXG5cdC8qOjpbKi8weDA4YzkvKjo6XSovOiB7IC8qIG46XCJMbkV4dFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwOGNhLyo6Ol0qLzogeyAvKiBuOlwiTWtyRXh0XCIsICovIH0sXG5cdC8qOjpbKi8weDA4Y2IvKjo6XSovOiB7IC8qIG46XCJDcnRDb29wdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwOGQ2Lyo6Ol0qLzogeyAvKiBuOlwiRlJUQXJjaElkJFwiLCAqLyByOjEyIH0sXG5cblx0Lyo6OlsqLzB4NzI2Mi8qOjpdKi86IHt9XG59O1xuXG5mdW5jdGlvbiB3cml0ZV9iaWZmX3JlYyhiYS8qOkJ1ZkFycmF5Ki8sIHR5cGUvKjpudW1iZXIqLywgcGF5bG9hZCwgbGVuZ3RoLyo6P251bWJlciovKS8qOnZvaWQqLyB7XG5cdHZhciB0Lyo6bnVtYmVyKi8gPSB0eXBlO1xuXHRpZihpc05hTih0KSkgcmV0dXJuO1xuXHR2YXIgbGVuID0gbGVuZ3RoIHx8IChwYXlsb2FkfHxbXSkubGVuZ3RoIHx8IDA7XG5cdHZhciBvID0gYmEubmV4dCg0KTtcblx0by53cml0ZV9zaGlmdCgyLCB0KTtcblx0by53cml0ZV9zaGlmdCgyLCBsZW4pO1xuXHRpZigvKjo6IGxlbiAhPSBudWxsICYmKi9sZW4gPiAwICYmIGlzX2J1ZihwYXlsb2FkKSkgYmEucHVzaChwYXlsb2FkKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfYmlmZl9jb250aW51ZShiYS8qOkJ1ZkFycmF5Ki8sIHR5cGUvKjpudW1iZXIqLywgcGF5bG9hZCwgbGVuZ3RoLyo6P251bWJlciovKS8qOnZvaWQqLyB7XG5cdHZhciBsZW4gPSBsZW5ndGggfHwgKHBheWxvYWR8fFtdKS5sZW5ndGggfHwgMDtcblx0aWYobGVuIDw9IDgyMjQpIHJldHVybiB3cml0ZV9iaWZmX3JlYyhiYSwgdHlwZSwgcGF5bG9hZCwgbGVuKTtcblx0dmFyIHQgPSB0eXBlO1xuXHRpZihpc05hTih0KSkgcmV0dXJuO1xuXHR2YXIgcGFydHMgPSBwYXlsb2FkLnBhcnRzIHx8IFtdLCBzaWR4ID0gMDtcblx0dmFyIGkgPSAwLCB3ID0gMDtcblx0d2hpbGUodyArIChwYXJ0c1tzaWR4XSB8fCA4MjI0KSA8PSA4MjI0KSB7IHcrPSAocGFydHNbc2lkeF0gfHwgODIyNCk7IHNpZHgrKzsgfVxuXHR2YXIgbyA9IGJhLm5leHQoNCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgdCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgdyk7XG5cdGJhLnB1c2gocGF5bG9hZC5zbGljZShpLCBpICsgdykpO1xuXHRpICs9IHc7XG5cdHdoaWxlKGkgPCBsZW4pIHtcblx0XHRvID0gYmEubmV4dCg0KTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIDB4M2MpOyAvLyBUT0RPOiBmaWd1cmUgb3V0IGNvcnJlY3QgY29udGludWUgdHlwZVxuXHRcdHcgPSAwO1xuXHRcdHdoaWxlKHcgKyAocGFydHNbc2lkeF0gfHwgODIyNCkgPD0gODIyNCkgeyB3Kz0gKHBhcnRzW3NpZHhdIHx8IDgyMjQpOyBzaWR4Kys7IH1cblx0XHRvLndyaXRlX3NoaWZ0KDIsIHcpO1xuXHRcdGJhLnB1c2gocGF5bG9hZC5zbGljZShpLCBpK3cpKTsgaSs9IHc7XG5cdH1cbn1cblxuZnVuY3Rpb24gd3JpdGVfQklGRjJDZWxsKG91dCwgci8qOm51bWJlciovLCBjLyo6bnVtYmVyKi8pIHtcblx0aWYoIW91dCkgb3V0ID0gbmV3X2J1Zig3KTtcblx0b3V0LndyaXRlX3NoaWZ0KDIsIHIpO1xuXHRvdXQud3JpdGVfc2hpZnQoMiwgYyk7XG5cdG91dC53cml0ZV9zaGlmdCgyLCAwKTtcblx0b3V0LndyaXRlX3NoaWZ0KDEsIDApO1xuXHRyZXR1cm4gb3V0O1xufVxuXG5mdW5jdGlvbiB3cml0ZV9CSUZGMkJFUlIoci8qOm51bWJlciovLCBjLyo6bnVtYmVyKi8sIHZhbCwgdC8qOj9zdHJpbmcqLykge1xuXHR2YXIgb3V0ID0gbmV3X2J1Zig5KTtcblx0d3JpdGVfQklGRjJDZWxsKG91dCwgciwgYyk7XG5cdHdyaXRlX0Jlcyh2YWwsIHQgfHwgJ2InLCBvdXQpO1xuXHRyZXR1cm4gb3V0O1xufVxuXG4vKiBUT0RPOiBjb2RlcGFnZSwgbGFyZ2Ugc3RyaW5ncyAqL1xuZnVuY3Rpb24gd3JpdGVfQklGRjJMQUJFTChyLyo6bnVtYmVyKi8sIGMvKjpudW1iZXIqLywgdmFsKSB7XG5cdHZhciBvdXQgPSBuZXdfYnVmKDggKyAyKnZhbC5sZW5ndGgpO1xuXHR3cml0ZV9CSUZGMkNlbGwob3V0LCByLCBjKTtcblx0b3V0LndyaXRlX3NoaWZ0KDEsIHZhbC5sZW5ndGgpO1xuXHRvdXQud3JpdGVfc2hpZnQodmFsLmxlbmd0aCwgdmFsLCAnc2JjcycpO1xuXHRyZXR1cm4gb3V0LmwgPCBvdXQubGVuZ3RoID8gb3V0LnNsaWNlKDAsIG91dC5sKSA6IG91dDtcbn1cblxuZnVuY3Rpb24gd3JpdGVfd3NfYmlmZjJfY2VsbChiYS8qOkJ1ZkFycmF5Ki8sIGNlbGwvKjpDZWxsKi8sIFIvKjpudW1iZXIqLywgQy8qOm51bWJlciovLyo6Oiwgb3B0cyovKSB7XG5cdGlmKGNlbGwudiAhPSBudWxsKSBzd2l0Y2goY2VsbC50KSB7XG5cdFx0Y2FzZSAnZCc6IGNhc2UgJ24nOlxuXHRcdFx0dmFyIHYgPSBjZWxsLnQgPT0gJ2QnID8gZGF0ZW51bShwYXJzZURhdGUoY2VsbC52KSkgOiBjZWxsLnY7XG5cdFx0XHRpZigodiA9PSAodnwwKSkgJiYgKHYgPj0gMCkgJiYgKHYgPCA2NTUzNikpXG5cdFx0XHRcdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwMDIsIHdyaXRlX0JJRkYySU5UKFIsIEMsIHYpKTtcblx0XHRcdGVsc2Vcblx0XHRcdFx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDAwMywgd3JpdGVfQklGRjJOVU0oUixDLCB2KSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0Y2FzZSAnYic6IGNhc2UgJ2UnOiB3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDA1LCB3cml0ZV9CSUZGMkJFUlIoUiwgQywgY2VsbC52LCBjZWxsLnQpKTsgcmV0dXJuO1xuXHRcdC8qIFRPRE86IGNvZGVwYWdlLCBzc3QgKi9cblx0XHRjYXNlICdzJzogY2FzZSAnc3RyJzpcblx0XHRcdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwMDQsIHdyaXRlX0JJRkYyTEFCRUwoUiwgQywgKGNlbGwudnx8XCJcIikuc2xpY2UoMCwyNTUpKSk7XG5cdFx0XHRyZXR1cm47XG5cdH1cblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDAwMSwgd3JpdGVfQklGRjJDZWxsKG51bGwsIFIsIEMpKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfd3NfYmlmZjIoYmEvKjpCdWZBcnJheSovLCB3cy8qOldvcmtzaGVldCovLCBpZHgvKjpudW1iZXIqLywgb3B0cy8qOjosIHdiOldvcmtib29rKi8pIHtcblx0dmFyIGRlbnNlID0gQXJyYXkuaXNBcnJheSh3cyk7XG5cdHZhciByYW5nZSA9IHNhZmVfZGVjb2RlX3JhbmdlKHdzWychcmVmJ10gfHwgXCJBMVwiKSwgcmVmLyo6c3RyaW5nKi8sIHJyID0gXCJcIiwgY29scy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRpZihyYW5nZS5lLmMgPiAweEZGIHx8IHJhbmdlLmUuciA+IDB4M0ZGRikge1xuXHRcdGlmKG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoXCJSYW5nZSBcIiArICh3c1snIXJlZiddIHx8IFwiQTFcIikgKyBcIiBleGNlZWRzIGZvcm1hdCBsaW1pdCBBMTpJVjE2Mzg0XCIpO1xuXHRcdHJhbmdlLmUuYyA9IE1hdGgubWluKHJhbmdlLmUuYywgMHhGRik7XG5cdFx0cmFuZ2UuZS5yID0gTWF0aC5taW4ocmFuZ2UuZS5jLCAweDNGRkYpO1xuXHRcdHJlZiA9IGVuY29kZV9yYW5nZShyYW5nZSk7XG5cdH1cblx0Zm9yKHZhciBSID0gcmFuZ2Uucy5yOyBSIDw9IHJhbmdlLmUucjsgKytSKSB7XG5cdFx0cnIgPSBlbmNvZGVfcm93KFIpO1xuXHRcdGZvcih2YXIgQyA9IHJhbmdlLnMuYzsgQyA8PSByYW5nZS5lLmM7ICsrQykge1xuXHRcdFx0aWYoUiA9PT0gcmFuZ2Uucy5yKSBjb2xzW0NdID0gZW5jb2RlX2NvbChDKTtcblx0XHRcdHJlZiA9IGNvbHNbQ10gKyBycjtcblx0XHRcdHZhciBjZWxsID0gZGVuc2UgPyAod3NbUl18fFtdKVtDXSA6IHdzW3JlZl07XG5cdFx0XHRpZighY2VsbCkgY29udGludWU7XG5cdFx0XHQvKiB3cml0ZSBjZWxsICovXG5cdFx0XHR3cml0ZV93c19iaWZmMl9jZWxsKGJhLCBjZWxsLCBSLCBDLCBvcHRzKTtcblx0XHR9XG5cdH1cbn1cblxuLyogQmFzZWQgb24gdGVzdCBmaWxlcyAqL1xuZnVuY3Rpb24gd3JpdGVfYmlmZjJfYnVmKHdiLyo6V29ya2Jvb2sqLywgb3B0cy8qOldyaXRlT3B0cyovKSB7XG5cdHZhciBvID0gb3B0cyB8fCB7fTtcblx0aWYoREVOU0UgIT0gbnVsbCAmJiBvLmRlbnNlID09IG51bGwpIG8uZGVuc2UgPSBERU5TRTtcblx0dmFyIGJhID0gYnVmX2FycmF5KCk7XG5cdHZhciBpZHggPSAwO1xuXHRmb3IodmFyIGk9MDtpPHdiLlNoZWV0TmFtZXMubGVuZ3RoOysraSkgaWYod2IuU2hlZXROYW1lc1tpXSA9PSBvLnNoZWV0KSBpZHg9aTtcblx0aWYoaWR4ID09IDAgJiYgISFvLnNoZWV0ICYmIHdiLlNoZWV0TmFtZXNbMF0gIT0gby5zaGVldCkgdGhyb3cgbmV3IEVycm9yKFwiU2hlZXQgbm90IGZvdW5kOiBcIiArIG8uc2hlZXQpO1xuXHR3cml0ZV9iaWZmX3JlYyhiYSwgKG8uYmlmZiA9PSA0ID8gMHgwNDA5IDogKG8uYmlmZiA9PSAzID8gMHgwMjA5IDogMHgwMDA5KSksIHdyaXRlX0JPRih3YiwgMHgxMCwgbykpO1xuXHQvKiAuLi4gKi9cblx0d3JpdGVfd3NfYmlmZjIoYmEsIHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW2lkeF1dLCBpZHgsIG8sIHdiKTtcblx0LyogLi4uICovXG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwMEEpO1xuXHRyZXR1cm4gYmEuZW5kKCk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0ZPTlRTX2JpZmY4KGJhLCBkYXRhLCBvcHRzKSB7XG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwMzEgLyogRm9udCAqLywgd3JpdGVfRm9udCh7XG5cdFx0c3o6MTIsXG5cdFx0Y29sb3I6IHt0aGVtZToxfSxcblx0XHRuYW1lOiBcIkFyaWFsXCIsXG5cdFx0ZmFtaWx5OiAyLFxuXHRcdHNjaGVtZTogXCJtaW5vclwiXG5cdH0sIG9wdHMpKTtcbn1cblxuXG5mdW5jdGlvbiB3cml0ZV9GTVRTX2JpZmY4KGJhLCBORi8qOj9TU0ZUYWJsZSovLCBvcHRzKSB7XG5cdGlmKCFORikgcmV0dXJuO1xuXHRbWzUsOF0sWzIzLDI2XSxbNDEsNDRdLFsvKjYzKi81MCwvKjY2XSxbMTY0LCovMzkyXV0uZm9yRWFjaChmdW5jdGlvbihyKSB7XG5cdFx0Lyo6OiBpZighTkYpIHJldHVybjsgKi9cblx0XHRmb3IodmFyIGkgPSByWzBdOyBpIDw9IHJbMV07ICsraSkgaWYoTkZbaV0gIT0gbnVsbCkgd3JpdGVfYmlmZl9yZWMoYmEsIDB4MDQxRSAvKiBGb3JtYXQgKi8sIHdyaXRlX0Zvcm1hdChpLCBORltpXSwgb3B0cykpO1xuXHR9KTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfRkVBVChiYSwgd3MpIHtcblx0LyogW01TLVhMU10gMi40LjExMiAqL1xuXHR2YXIgbyA9IG5ld19idWYoMTkpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDB4ODY3KTsgby53cml0ZV9zaGlmdCg0LCAwKTsgby53cml0ZV9zaGlmdCg0LCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCAzKTsgby53cml0ZV9zaGlmdCgxLCAxKTsgby53cml0ZV9zaGlmdCg0LCAwKTtcblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDg2NyAvKiBGZWF0SGRyICovLCBvKTtcblx0LyogW01TLVhMU10gMi40LjExMSAqL1xuXHRvID0gbmV3X2J1ZigzOSk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMHg4NjgpOyBvLndyaXRlX3NoaWZ0KDQsIDApOyBvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDMpOyBvLndyaXRlX3NoaWZ0KDEsIDApOyBvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDEpOyBvLndyaXRlX3NoaWZ0KDQsIDQpOyBvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHR3cml0ZV9SZWY4VShzYWZlX2RlY29kZV9yYW5nZSh3c1snIXJlZiddfHxcIkExXCIpLCBvKTtcblx0by53cml0ZV9zaGlmdCg0LCA0KTtcblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDg2OCAvKiBGZWF0ICovLCBvKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfQ0VMTFhGU19iaWZmOChiYSwgb3B0cykge1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgMTY7ICsraSkgd3JpdGVfYmlmZl9yZWMoYmEsIDB4MDBlMCAvKiBYRiAqLywgd3JpdGVfWEYoe251bUZtdElkOjAsIHN0eWxlOnRydWV9LCAwLCBvcHRzKSk7XG5cdG9wdHMuY2VsbFhmcy5mb3JFYWNoKGZ1bmN0aW9uKGMpIHtcblx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMGUwIC8qIFhGICovLCB3cml0ZV9YRihjLCAwLCBvcHRzKSk7XG5cdH0pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV93c19iaWZmOF9obGlua3MoYmEvKjpCdWZBcnJheSovLCB3cykge1xuXHRmb3IodmFyIFI9MDsgUjx3c1snIWxpbmtzJ10ubGVuZ3RoOyArK1IpIHtcblx0XHR2YXIgSEwgPSB3c1snIWxpbmtzJ11bUl07XG5cdFx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDFiOCAvKiBITGluayAqLywgd3JpdGVfSExpbmsoSEwpKTtcblx0XHRpZihITFsxXS5Ub29sdGlwKSB3cml0ZV9iaWZmX3JlYyhiYSwgMHgwODAwIC8qIEhMaW5rVG9vbHRpcCAqLywgd3JpdGVfSExpbmtUb29sdGlwKEhMKSk7XG5cdH1cblx0ZGVsZXRlIHdzWychbGlua3MnXTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfd3NfY29sc19iaWZmOChiYSwgY29scykge1xuXHRpZighY29scykgcmV0dXJuO1xuXHR2YXIgY250ID0gMDtcblx0Y29scy5mb3JFYWNoKGZ1bmN0aW9uKGNvbCwgaWR4KSB7XG5cdFx0aWYoKytjbnQgPD0gMjU2ICYmIGNvbCkge1xuXHRcdFx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDA3ZCAvKiBDb2xJbmZvICovLCB3cml0ZV9Db2xJbmZvKGNvbF9vYmpfdyhpZHgsIGNvbCksIGlkeCkpO1xuXHRcdH1cblx0fSk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3dzX2JpZmY4X2NlbGwoYmEvKjpCdWZBcnJheSovLCBjZWxsLyo6Q2VsbCovLCBSLyo6bnVtYmVyKi8sIEMvKjpudW1iZXIqLywgb3B0cykge1xuXHR2YXIgb3MgPSAxNiArIGdldF9jZWxsX3N0eWxlKG9wdHMuY2VsbFhmcywgY2VsbCwgb3B0cyk7XG5cdGlmKGNlbGwudiA9PSBudWxsICYmICFjZWxsLmJmKSB7XG5cdFx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDIwMSAvKiBCbGFuayAqLywgd3JpdGVfWExTQ2VsbChSLCBDLCBvcykpO1xuXHRcdHJldHVybjtcblx0fVxuXHRpZihjZWxsLmJmKSB3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDA2IC8qIEZvcm11bGEgKi8sIHdyaXRlX0Zvcm11bGEoY2VsbCwgUiwgQywgb3B0cywgb3MpKTtcblx0ZWxzZSBzd2l0Y2goY2VsbC50KSB7XG5cdFx0Y2FzZSAnZCc6IGNhc2UgJ24nOlxuXHRcdFx0dmFyIHYgPSBjZWxsLnQgPT0gJ2QnID8gZGF0ZW51bShwYXJzZURhdGUoY2VsbC52KSkgOiBjZWxsLnY7XG5cdFx0XHQvKiBUT0RPOiBlbWl0IFJLIGFzIGFwcHJvcHJpYXRlICovXG5cdFx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMjAzIC8qIE51bWJlciAqLywgd3JpdGVfTnVtYmVyKFIsIEMsIHYsIG9zLCBvcHRzKSk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICdiJzogY2FzZSAnZSc6XG5cdFx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMjA1IC8qIEJvb2xFcnIgKi8sIHdyaXRlX0Jvb2xFcnIoUiwgQywgY2VsbC52LCBvcywgb3B0cywgY2VsbC50KSk7XG5cdFx0XHRicmVhaztcblx0XHQvKiBUT0RPOiBjb2RlcGFnZSwgc3N0ICovXG5cdFx0Y2FzZSAncyc6IGNhc2UgJ3N0cic6XG5cdFx0XHRpZihvcHRzLmJvb2tTU1QpIHtcblx0XHRcdFx0dmFyIGlzc3QgPSBnZXRfc3N0X2lkKG9wdHMuU3RyaW5ncywgY2VsbC52LCBvcHRzLnJldlN0cmluZ3MpO1xuXHRcdFx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMGZkIC8qIExhYmVsU3N0ICovLCB3cml0ZV9MYWJlbFNzdChSLCBDLCBpc3N0LCBvcywgb3B0cykpO1xuXHRcdFx0fSBlbHNlIHdyaXRlX2JpZmZfcmVjKGJhLCAweDAyMDQgLyogTGFiZWwgKi8sIHdyaXRlX0xhYmVsKFIsIEMsIChjZWxsLnZ8fFwiXCIpLnNsaWNlKDAsMjU1KSwgb3MsIG9wdHMpKTtcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMjAxIC8qIEJsYW5rICovLCB3cml0ZV9YTFNDZWxsKFIsIEMsIG9zKSk7XG5cdH1cbn1cblxuLyogW01TLVhMU10gMi4xLjcuMjAuNSAqL1xuZnVuY3Rpb24gd3JpdGVfd3NfYmlmZjgoaWR4Lyo6bnVtYmVyKi8sIG9wdHMsIHdiLyo6V29ya2Jvb2sqLykge1xuXHR2YXIgYmEgPSBidWZfYXJyYXkoKTtcblx0dmFyIHMgPSB3Yi5TaGVldE5hbWVzW2lkeF0sIHdzID0gd2IuU2hlZXRzW3NdIHx8IHt9O1xuXHR2YXIgX1dCLyo6V0JXQlByb3BzKi8gPSAoKHdifHx7fSkuV29ya2Jvb2t8fHt9Lyo6YW55Ki8pO1xuXHR2YXIgX3NoZWV0Lyo6V0JXU1Byb3AqLyA9ICgoX1dCLlNoZWV0c3x8W10pW2lkeF18fHt9Lyo6YW55Ki8pO1xuXHR2YXIgZGVuc2UgPSBBcnJheS5pc0FycmF5KHdzKTtcblx0dmFyIGI4ID0gb3B0cy5iaWZmID09IDg7XG5cdHZhciByZWYvKjpzdHJpbmcqLywgcnIgPSBcIlwiLCBjb2xzLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdHZhciByYW5nZSA9IHNhZmVfZGVjb2RlX3JhbmdlKHdzWychcmVmJ10gfHwgXCJBMVwiKTtcblx0dmFyIE1BWF9ST1dTID0gYjggPyA2NTUzNiA6IDE2Mzg0O1xuXHRpZihyYW5nZS5lLmMgPiAweEZGIHx8IHJhbmdlLmUuciA+PSBNQVhfUk9XUykge1xuXHRcdGlmKG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoXCJSYW5nZSBcIiArICh3c1snIXJlZiddIHx8IFwiQTFcIikgKyBcIiBleGNlZWRzIGZvcm1hdCBsaW1pdCBBMTpJVjE2Mzg0XCIpO1xuXHRcdHJhbmdlLmUuYyA9IE1hdGgubWluKHJhbmdlLmUuYywgMHhGRik7XG5cdFx0cmFuZ2UuZS5yID0gTWF0aC5taW4ocmFuZ2UuZS5jLCBNQVhfUk9XUy0xKTtcblx0fVxuXG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDA4MDksIHdyaXRlX0JPRih3YiwgMHgxMCwgb3B0cykpO1xuXHQvKiBbVW5jYWxjZWRdIEluZGV4ICovXG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwMGQgLyogQ2FsY01vZGUgKi8sIHdyaXRldWludDE2KDEpKTtcblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDAwYyAvKiBDYWxjQ291bnQgKi8sIHdyaXRldWludDE2KDEwMCkpO1xuXHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDBmIC8qIENhbGNSZWZNb2RlICovLCB3cml0ZWJvb2wodHJ1ZSkpO1xuXHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDExIC8qIENhbGNJdGVyICovLCB3cml0ZWJvb2woZmFsc2UpKTtcblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDAxMCAvKiBDYWxjRGVsdGEgKi8sIHdyaXRlX1hudW0oMC4wMDEpKTtcblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDA1ZiAvKiBDYWxjU2F2ZVJlY2FsYyAqLywgd3JpdGVib29sKHRydWUpKTtcblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDAyYSAvKiBQcmludFJvd0NvbCAqLywgd3JpdGVib29sKGZhbHNlKSk7XG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwMmIgLyogUHJpbnRHcmlkICovLCB3cml0ZWJvb2woZmFsc2UpKTtcblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDA4MiAvKiBHcmlkU2V0ICovLCB3cml0ZXVpbnQxNigxKSk7XG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwODAgLyogR3V0cyAqLywgd3JpdGVfR3V0cyhbMCwwXSkpO1xuXHQvKiBEZWZhdWx0Um93SGVpZ2h0IFdzQm9vbCBbU3luY10gW0xQcl0gW0hvcml6b250YWxQYWdlQnJlYWtzXSBbVmVydGljYWxQYWdlQnJlYWtzXSAqL1xuXHQvKiBIZWFkZXIgKHN0cmluZykgKi9cblx0LyogRm9vdGVyIChzdHJpbmcpICovXG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwODMgLyogSENlbnRlciAqLywgd3JpdGVib29sKGZhbHNlKSk7XG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwODQgLyogVkNlbnRlciAqLywgd3JpdGVib29sKGZhbHNlKSk7XG5cdC8qIC4uLiAqL1xuXHRpZihiOCkgd3JpdGVfd3NfY29sc19iaWZmOChiYSwgd3NbXCIhY29sc1wiXSk7XG5cdC8qIC4uLiAqL1xuXHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgyMDAsIHdyaXRlX0RpbWVuc2lvbnMocmFuZ2UsIG9wdHMpKTtcblx0LyogLi4uICovXG5cblx0aWYoYjgpIHdzWychbGlua3MnXSA9IFtdO1xuXHRmb3IodmFyIFIgPSByYW5nZS5zLnI7IFIgPD0gcmFuZ2UuZS5yOyArK1IpIHtcblx0XHRyciA9IGVuY29kZV9yb3coUik7XG5cdFx0Zm9yKHZhciBDID0gcmFuZ2Uucy5jOyBDIDw9IHJhbmdlLmUuYzsgKytDKSB7XG5cdFx0XHRpZihSID09PSByYW5nZS5zLnIpIGNvbHNbQ10gPSBlbmNvZGVfY29sKEMpO1xuXHRcdFx0cmVmID0gY29sc1tDXSArIHJyO1xuXHRcdFx0dmFyIGNlbGwgPSBkZW5zZSA/ICh3c1tSXXx8W10pW0NdIDogd3NbcmVmXTtcblx0XHRcdGlmKCFjZWxsKSBjb250aW51ZTtcblx0XHRcdC8qIHdyaXRlIGNlbGwgKi9cblx0XHRcdHdyaXRlX3dzX2JpZmY4X2NlbGwoYmEsIGNlbGwsIFIsIEMsIG9wdHMpO1xuXHRcdFx0aWYoYjggJiYgY2VsbC5sKSB3c1snIWxpbmtzJ10ucHVzaChbcmVmLCBjZWxsLmxdKTtcblx0XHR9XG5cdH1cblx0dmFyIGNuYW1lLyo6c3RyaW5nKi8gPSBfc2hlZXQuQ29kZU5hbWUgfHwgX3NoZWV0Lm5hbWUgfHwgcztcblx0LyogLi4uICovXG5cdGlmKGI4KSB3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMjNlIC8qIFdpbmRvdzIgKi8sIHdyaXRlX1dpbmRvdzIoKF9XQi5WaWV3c3x8W10pWzBdKSk7XG5cdC8qIC4uLiAqL1xuXHRpZihiOCAmJiAod3NbJyFtZXJnZXMnXXx8W10pLmxlbmd0aCkgd3JpdGVfYmlmZl9yZWMoYmEsIDB4MDBlNSAvKiBNZXJnZUNlbGxzICovLCB3cml0ZV9NZXJnZUNlbGxzKHdzWychbWVyZ2VzJ10pKTtcblx0LyogW0xSbmddICpRVUVSWVRBQkxFIFtQSE9ORVRJQ0lORk9dIENPTkRGTVRTICovXG5cdGlmKGI4KSB3cml0ZV93c19iaWZmOF9obGlua3MoYmEsIHdzKTtcblx0LyogW0RWQUxdICovXG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAxYmEgLyogQ29kZU5hbWUgKi8sIHdyaXRlX1hMVW5pY29kZVN0cmluZyhjbmFtZSwgb3B0cykpO1xuXHQvKiAqV2ViUHViICpDZWxsV2F0Y2ggW1NoZWV0RXh0XSAqL1xuXHRpZihiOCkgd3JpdGVfRkVBVChiYSwgd3MpO1xuXHQvKiAqRkVBVDExICpSRUNPUkQxMiAqL1xuXHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDBhIC8qIEVPRiAqLyk7XG5cdHJldHVybiBiYS5lbmQoKTtcbn1cblxuLyogW01TLVhMU10gMi4xLjcuMjAuMyAqL1xuZnVuY3Rpb24gd3JpdGVfYmlmZjhfZ2xvYmFsKHdiLyo6V29ya2Jvb2sqLywgYnVmcywgb3B0cy8qOldyaXRlT3B0cyovKSB7XG5cdHZhciBBID0gYnVmX2FycmF5KCk7XG5cdHZhciBfV0IvKjpXQldCUHJvcHMqLyA9ICgod2J8fHt9KS5Xb3JrYm9va3x8e30vKjphbnkqLyk7XG5cdHZhciBfc2hlZXRzLyo6QXJyYXk8V0JXU1Byb3A+Ki8gPSAoX1dCLlNoZWV0c3x8W10pO1xuXHR2YXIgX3diLyo6V0JQcm9wcyovID0gLyo6OigoKi9fV0IuV0JQcm9wc3x8ey8qOjpDb2RlTmFtZTpcIlRoaXNXb3JrYm9va1wiKi99Lyo6OiApOmFueSkqLztcblx0dmFyIGI4ID0gb3B0cy5iaWZmID09IDgsIGI1ID0gb3B0cy5iaWZmID09IDU7XG5cdHdyaXRlX2JpZmZfcmVjKEEsIDB4MDgwOSwgd3JpdGVfQk9GKHdiLCAweDA1LCBvcHRzKSk7XG5cdGlmKG9wdHMuYm9va1R5cGUgPT0gXCJ4bGFcIikgd3JpdGVfYmlmZl9yZWMoQSwgMHgwMDg3IC8qIEFkZGluICovKTtcblx0d3JpdGVfYmlmZl9yZWMoQSwgMHgwMGUxIC8qIEludGVyZmFjZUhkciAqLywgYjggPyB3cml0ZXVpbnQxNigweDA0YjApIDogbnVsbCk7XG5cdHdyaXRlX2JpZmZfcmVjKEEsIDB4MDBjMSAvKiBNbXMgKi8sIHdyaXRlemVyb2VzKDIpKTtcblx0aWYoYjUpIHdyaXRlX2JpZmZfcmVjKEEsIDB4MDBiZiAvKiBUb29sYmFySGRyICovKTtcblx0aWYoYjUpIHdyaXRlX2JpZmZfcmVjKEEsIDB4MDBjMCAvKiBUb29sYmFyRW5kICovKTtcblx0d3JpdGVfYmlmZl9yZWMoQSwgMHgwMGUyIC8qIEludGVyZmFjZUVuZCAqLyk7XG5cdHdyaXRlX2JpZmZfcmVjKEEsIDB4MDA1YyAvKiBXcml0ZUFjY2VzcyAqLywgd3JpdGVfV3JpdGVBY2Nlc3MoXCJTaGVldEpTXCIsIG9wdHMpKTtcblx0LyogW0ZpbGVTaGFyaW5nXSAqL1xuXHR3cml0ZV9iaWZmX3JlYyhBLCAweDAwNDIgLyogQ29kZVBhZ2UgKi8sIHdyaXRldWludDE2KGI4ID8gMHgwNGIwIDogMHgwNEU0KSk7XG5cdC8qICoyMDQ3IExlbCAqL1xuXHRpZihiOCkgd3JpdGVfYmlmZl9yZWMoQSwgMHgwMTYxIC8qIERTRiAqLywgd3JpdGV1aW50MTYoMCkpO1xuXHRpZihiOCkgd3JpdGVfYmlmZl9yZWMoQSwgMHgwMWMwIC8qIEV4Y2VsOUZpbGUgKi8pO1xuXHR3cml0ZV9iaWZmX3JlYyhBLCAweDAxM2QgLyogUlJUYWJJZCAqLywgd3JpdGVfUlJUYWJJZCh3Yi5TaGVldE5hbWVzLmxlbmd0aCkpO1xuXHRpZihiOCAmJiB3Yi52YmFyYXcpIHdyaXRlX2JpZmZfcmVjKEEsIDB4MDBkMyAvKiBPYlByb2ogKi8pO1xuXHQvKiBbT2JOb01hY3Jvc10gKi9cblx0aWYoYjggJiYgd2IudmJhcmF3KSB7XG5cdFx0dmFyIGNuYW1lLyo6c3RyaW5nKi8gPSBfd2IuQ29kZU5hbWUgfHwgXCJUaGlzV29ya2Jvb2tcIjtcblx0XHR3cml0ZV9iaWZmX3JlYyhBLCAweDAxYmEgLyogQ29kZU5hbWUgKi8sIHdyaXRlX1hMVW5pY29kZVN0cmluZyhjbmFtZSwgb3B0cykpO1xuXHR9XG5cdHdyaXRlX2JpZmZfcmVjKEEsIDB4MDA5YyAvKiBCdWlsdEluRm5Hcm91cENvdW50ICovLCB3cml0ZXVpbnQxNigweDExKSk7XG5cdC8qICpGbkdyb3VwTmFtZSAqRm5HcnAxMiAqL1xuXHQvKiAqTGJsICovXG5cdC8qIFtPbGVPYmplY3RTaXplXSAqL1xuXHR3cml0ZV9iaWZmX3JlYyhBLCAweDAwMTkgLyogV2luUHJvdGVjdCAqLywgd3JpdGVib29sKGZhbHNlKSk7XG5cdHdyaXRlX2JpZmZfcmVjKEEsIDB4MDAxMiAvKiBQcm90ZWN0ICovLCB3cml0ZWJvb2woZmFsc2UpKTtcblx0d3JpdGVfYmlmZl9yZWMoQSwgMHgwMDEzIC8qIFBhc3N3b3JkICovLCB3cml0ZXVpbnQxNigwKSk7XG5cdGlmKGI4KSB3cml0ZV9iaWZmX3JlYyhBLCAweDAxYWYgLyogUHJvdDRSZXYgKi8sIHdyaXRlYm9vbChmYWxzZSkpO1xuXHRpZihiOCkgd3JpdGVfYmlmZl9yZWMoQSwgMHgwMWJjIC8qIFByb3Q0UmV2UGFzcyAqLywgd3JpdGV1aW50MTYoMCkpO1xuXHR3cml0ZV9iaWZmX3JlYyhBLCAweDAwM2QgLyogV2luZG93MSAqLywgd3JpdGVfV2luZG93MShvcHRzKSk7XG5cdHdyaXRlX2JpZmZfcmVjKEEsIDB4MDA0MCAvKiBCYWNrdXAgKi8sIHdyaXRlYm9vbChmYWxzZSkpO1xuXHR3cml0ZV9iaWZmX3JlYyhBLCAweDAwOGQgLyogSGlkZU9iaiAqLywgd3JpdGV1aW50MTYoMCkpO1xuXHR3cml0ZV9iaWZmX3JlYyhBLCAweDAwMjIgLyogRGF0ZTE5MDQgKi8sIHdyaXRlYm9vbChzYWZlMTkwNCh3Yik9PVwidHJ1ZVwiKSk7XG5cdHdyaXRlX2JpZmZfcmVjKEEsIDB4MDAwZSAvKiBDYWxjUHJlY2lzaW9uICovLCB3cml0ZWJvb2wodHJ1ZSkpO1xuXHRpZihiOCkgd3JpdGVfYmlmZl9yZWMoQSwgMHgwMWI3IC8qIFJlZnJlc2hBbGwgKi8sIHdyaXRlYm9vbChmYWxzZSkpO1xuXHR3cml0ZV9iaWZmX3JlYyhBLCAweDAwREEgLyogQm9va0Jvb2wgKi8sIHdyaXRldWludDE2KDApKTtcblx0LyogLi4uICovXG5cdHdyaXRlX0ZPTlRTX2JpZmY4KEEsIHdiLCBvcHRzKTtcblx0d3JpdGVfRk1UU19iaWZmOChBLCB3Yi5TU0YsIG9wdHMpO1xuXHR3cml0ZV9DRUxMWEZTX2JpZmY4KEEsIG9wdHMpO1xuXHQvKiAuLi4gKi9cblx0aWYoYjgpIHdyaXRlX2JpZmZfcmVjKEEsIDB4MDE2MCAvKiBVc2VzRUxGcyAqLywgd3JpdGVib29sKGZhbHNlKSk7XG5cdHZhciBhID0gQS5lbmQoKTtcblxuXHR2YXIgQyA9IGJ1Zl9hcnJheSgpO1xuXHQvKiBNRVRBREFUQSBbTVRSU2V0dGluZ3NdIFtGb3JjZUZ1bGxDYWxjdWxhdGlvbl0gKi9cblx0aWYoYjgpIHdyaXRlX2JpZmZfcmVjKEMsIDB4MDA4Qywgd3JpdGVfQ291bnRyeSgpKTtcblx0LyogKlNVUEJPT0sgKkxCTCAqUlREIFtSZWNhbGNJZF0gKkhGUGljdHVyZSAqTVNPRFJBV0lOR0dST1VQICovXG5cblx0LyogQklGRjg6IFtTU1QgKkNvbnRpbnVlXSBFeHRTU1QgKi9cblx0aWYoYjggJiYgb3B0cy5TdHJpbmdzKSB3cml0ZV9iaWZmX2NvbnRpbnVlKEMsIDB4MDBGQywgd3JpdGVfU1NUKG9wdHMuU3RyaW5ncywgb3B0cykpO1xuXG5cdC8qICpXZWJQdWIgW1dPcHRdIFtDckVycl0gW0Jvb2tFeHRdICpGZWF0SGRyICpEQ29ubiBbVEhFTUVdIFtDb21wcmVzc1BpY3R1cmVzXSBbQ29tcGF0MTJdIFtHVUlEVHlwZUxpYl0gKi9cblx0d3JpdGVfYmlmZl9yZWMoQywgMHgwMDBBIC8qIEVPRiAqLyk7XG5cdHZhciBjID0gQy5lbmQoKTtcblxuXHR2YXIgQiA9IGJ1Zl9hcnJheSgpO1xuXHR2YXIgYmxlbiA9IDAsIGogPSAwO1xuXHRmb3IoaiA9IDA7IGogPCB3Yi5TaGVldE5hbWVzLmxlbmd0aDsgKytqKSBibGVuICs9IChiOCA/IDEyIDogMTEpICsgKGI4ID8gMiA6IDEpICogd2IuU2hlZXROYW1lc1tqXS5sZW5ndGg7XG5cdHZhciBzdGFydCA9IGEubGVuZ3RoICsgYmxlbiArIGMubGVuZ3RoO1xuXHRmb3IoaiA9IDA7IGogPCB3Yi5TaGVldE5hbWVzLmxlbmd0aDsgKytqKSB7XG5cdFx0dmFyIF9zaGVldC8qOldCV1NQcm9wKi8gPSBfc2hlZXRzW2pdIHx8ICh7fS8qOmFueSovKTtcblx0XHR3cml0ZV9iaWZmX3JlYyhCLCAweDAwODUgLyogQm91bmRTaGVldDggKi8sIHdyaXRlX0JvdW5kU2hlZXQ4KHtwb3M6c3RhcnQsIGhzOl9zaGVldC5IaWRkZW58fDAsIGR0OjAsIG5hbWU6d2IuU2hlZXROYW1lc1tqXX0sIG9wdHMpKTtcblx0XHRzdGFydCArPSBidWZzW2pdLmxlbmd0aDtcblx0fVxuXHQvKiAxKkJvdW5kU2hlZXQ4ICovXG5cdHZhciBiID0gQi5lbmQoKTtcblx0aWYoYmxlbiAhPSBiLmxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKFwiQlM4IFwiICsgYmxlbiArIFwiICE9IFwiICsgYi5sZW5ndGgpO1xuXG5cdHZhciBvdXQgPSBbXTtcblx0aWYoYS5sZW5ndGgpIG91dC5wdXNoKGEpO1xuXHRpZihiLmxlbmd0aCkgb3V0LnB1c2goYik7XG5cdGlmKGMubGVuZ3RoKSBvdXQucHVzaChjKTtcblx0cmV0dXJuIGJjb25jYXQob3V0KTtcbn1cblxuLyogW01TLVhMU10gMi4xLjcuMjAgV29ya2Jvb2sgU3RyZWFtICovXG5mdW5jdGlvbiB3cml0ZV9iaWZmOF9idWYod2IvKjpXb3JrYm9vayovLCBvcHRzLyo6V3JpdGVPcHRzKi8pIHtcblx0dmFyIG8gPSBvcHRzIHx8IHt9O1xuXHR2YXIgYnVmcyA9IFtdO1xuXG5cdGlmKHdiICYmICF3Yi5TU0YpIHtcblx0XHR3Yi5TU0YgPSBkdXAodGFibGVfZm10KTtcblx0fVxuXHRpZih3YiAmJiB3Yi5TU0YpIHtcblx0XHRtYWtlX3NzZigpOyBTU0ZfbG9hZF90YWJsZSh3Yi5TU0YpO1xuXHRcdC8vICRGbG93SWdub3JlXG5cdFx0by5yZXZzc2YgPSBldmVydF9udW0od2IuU1NGKTsgby5yZXZzc2Zbd2IuU1NGWzY1NTM1XV0gPSAwO1xuXHRcdG8uc3NmID0gd2IuU1NGO1xuXHR9XG5cblx0by5TdHJpbmdzID0gLyo6OigoKi9bXS8qOjogOmFueSk6U1NUKSovOyBvLlN0cmluZ3MuQ291bnQgPSAwOyBvLlN0cmluZ3MuVW5pcXVlID0gMDtcblx0Zml4X3dyaXRlX29wdHMobyk7XG5cblx0by5jZWxsWGZzID0gW107XG5cdGdldF9jZWxsX3N0eWxlKG8uY2VsbFhmcywge30sIHtyZXZzc2Y6e1wiR2VuZXJhbFwiOjB9fSk7XG5cblx0aWYoIXdiLlByb3BzKSB3Yi5Qcm9wcyA9IHt9O1xuXG5cdGZvcih2YXIgaSA9IDA7IGkgPCB3Yi5TaGVldE5hbWVzLmxlbmd0aDsgKytpKSBidWZzW2J1ZnMubGVuZ3RoXSA9IHdyaXRlX3dzX2JpZmY4KGksIG8sIHdiKTtcblx0YnVmcy51bnNoaWZ0KHdyaXRlX2JpZmY4X2dsb2JhbCh3YiwgYnVmcywgbykpO1xuXHRyZXR1cm4gYmNvbmNhdChidWZzKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfYmlmZl9idWYod2IvKjpXb3JrYm9vayovLCBvcHRzLyo6V3JpdGVPcHRzKi8pIHtcblx0Zm9yKHZhciBpID0gMDsgaSA8PSB3Yi5TaGVldE5hbWVzLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIHdzID0gd2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbaV1dO1xuXHRcdGlmKCF3cyB8fCAhd3NbXCIhcmVmXCJdKSBjb250aW51ZTtcblx0XHR2YXIgcmFuZ2UgPSBkZWNvZGVfcmFuZ2Uod3NbXCIhcmVmXCJdKTtcblx0XHRpZihyYW5nZS5lLmMgPiAyNTUpIHsgLy8gbm90ZTogMjU1IGlzIElWXG5cdFx0aWYodHlwZW9mIGNvbnNvbGUgIT0gXCJ1bmRlZmluZWRcIiAmJiBjb25zb2xlLmVycm9yKSBjb25zb2xlLmVycm9yKFwiV29ya3NoZWV0ICdcIiArIHdiLlNoZWV0TmFtZXNbaV0gKyBcIicgZXh0ZW5kcyBiZXlvbmQgY29sdW1uIElWICgyNTUpLiAgRGF0YSBtYXkgYmUgbG9zdC5cIik7XG5cdFx0fVxuXHR9XG5cblx0dmFyIG8gPSBvcHRzIHx8IHt9O1xuXHRzd2l0Y2goby5iaWZmIHx8IDIpIHtcblx0XHRjYXNlIDg6IGNhc2UgNTogcmV0dXJuIHdyaXRlX2JpZmY4X2J1Zih3Yiwgb3B0cyk7XG5cdFx0Y2FzZSA0OiBjYXNlIDM6IGNhc2UgMjogcmV0dXJuIHdyaXRlX2JpZmYyX2J1Zih3Yiwgb3B0cyk7XG5cdH1cblx0dGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCB0eXBlIFwiICsgby5ib29rVHlwZSArIFwiIGZvciBCSUZGXCIpO1xufVxuLyogbm90ZTogYnJvd3NlciBET00gZWxlbWVudCBjYW5ub3Qgc2VlIG1zby0gc3R5bGUgYXR0cnMsIG11c3QgcGFyc2UgKi9cbmZ1bmN0aW9uIGh0bWxfdG9fc2hlZXQoc3RyLyo6c3RyaW5nKi8sIF9vcHRzKS8qOldvcmtib29rKi8ge1xuXHR2YXIgb3B0cyA9IF9vcHRzIHx8IHt9O1xuXHRpZihERU5TRSAhPSBudWxsICYmIG9wdHMuZGVuc2UgPT0gbnVsbCkgb3B0cy5kZW5zZSA9IERFTlNFO1xuXHR2YXIgd3MvKjpXb3Jrc2hlZXQqLyA9IG9wdHMuZGVuc2UgPyAoW10vKjphbnkqLykgOiAoe30vKjphbnkqLyk7XG5cdHN0ciA9IHN0ci5yZXBsYWNlKC88IS0tLio/LS0+L2csIFwiXCIpO1xuXHR2YXIgbXRjaC8qOmFueSovID0gc3RyLm1hdGNoKC88dGFibGUvaSk7XG5cdGlmKCFtdGNoKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIEhUTUw6IGNvdWxkIG5vdCBmaW5kIDx0YWJsZT5cIik7XG5cdHZhciBtdGNoMi8qOmFueSovID0gc3RyLm1hdGNoKC88XFwvdGFibGUvaSk7XG5cdHZhciBpLyo6bnVtYmVyKi8gPSBtdGNoLmluZGV4LCBqLyo6bnVtYmVyKi8gPSBtdGNoMiAmJiBtdGNoMi5pbmRleCB8fCBzdHIubGVuZ3RoO1xuXHR2YXIgcm93cyA9IHNwbGl0X3JlZ2V4KHN0ci5zbGljZShpLCBqKSwgLyg6Pzx0cltePl0qPikvaSwgXCI8dHI+XCIpO1xuXHR2YXIgUiA9IC0xLCBDID0gMCwgUlMgPSAwLCBDUyA9IDA7XG5cdHZhciByYW5nZS8qOlJhbmdlKi8gPSB7czp7cjoxMDAwMDAwMCwgYzoxMDAwMDAwMH0sZTp7cjowLGM6MH19O1xuXHR2YXIgbWVyZ2VzLyo6QXJyYXk8UmFuZ2U+Ki8gPSBbXTtcblx0Zm9yKGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7ICsraSkge1xuXHRcdHZhciByb3cgPSByb3dzW2ldLnRyaW0oKTtcblx0XHR2YXIgaGQgPSByb3cuc2xpY2UoMCwzKS50b0xvd2VyQ2FzZSgpO1xuXHRcdGlmKGhkID09IFwiPHRyXCIpIHsgKytSOyBpZihvcHRzLnNoZWV0Um93cyAmJiBvcHRzLnNoZWV0Um93cyA8PSBSKSB7IC0tUjsgYnJlYWs7IH0gQyA9IDA7IGNvbnRpbnVlOyB9XG5cdFx0aWYoaGQgIT0gXCI8dGRcIiAmJiBoZCAhPSBcIjx0aFwiKSBjb250aW51ZTtcblx0XHR2YXIgY2VsbHMgPSByb3cuc3BsaXQoLzxcXC90W2RoXT4vaSk7XG5cdFx0Zm9yKGogPSAwOyBqIDwgY2VsbHMubGVuZ3RoOyArK2opIHtcblx0XHRcdHZhciBjZWxsID0gY2VsbHNbal0udHJpbSgpO1xuXHRcdFx0aWYoIWNlbGwubWF0Y2goLzx0W2RoXS9pKSkgY29udGludWU7XG5cdFx0XHR2YXIgbSA9IGNlbGwsIGNjID0gMDtcblx0XHRcdC8qIFRPRE86IHBhcnNlIHN0eWxlcyBldGMgKi9cblx0XHRcdHdoaWxlKG0uY2hhckF0KDApID09IFwiPFwiICYmIChjYyA9IG0uaW5kZXhPZihcIj5cIikpID4gLTEpIG0gPSBtLnNsaWNlKGNjKzEpO1xuXHRcdFx0Zm9yKHZhciBtaWR4ID0gMDsgbWlkeCA8IG1lcmdlcy5sZW5ndGg7ICsrbWlkeCkge1xuXHRcdFx0XHR2YXIgX21lcmdlLyo6UmFuZ2UqLyA9IG1lcmdlc1ttaWR4XTtcblx0XHRcdFx0aWYoX21lcmdlLnMuYyA9PSBDICYmIF9tZXJnZS5zLnIgPCBSICYmIFIgPD0gX21lcmdlLmUucikgeyBDID0gX21lcmdlLmUuYyArIDE7IG1pZHggPSAtMTsgfVxuXHRcdFx0fVxuXHRcdFx0dmFyIHRhZyA9IHBhcnNleG1sdGFnKGNlbGwuc2xpY2UoMCwgY2VsbC5pbmRleE9mKFwiPlwiKSkpO1xuXHRcdFx0Q1MgPSB0YWcuY29sc3BhbiA/ICt0YWcuY29sc3BhbiA6IDE7XG5cdFx0XHRpZigoUlMgPSArdGFnLnJvd3NwYW4pPjEgfHwgQ1M+MSkgbWVyZ2VzLnB1c2goe3M6e3I6UixjOkN9LGU6e3I6UiArIChSU3x8MSkgLSAxLCBjOkMgKyBDUyAtIDF9fSk7XG5cdFx0XHR2YXIgX3QvKjpzdHJpbmcqLyA9IHRhZy50IHx8IHRhZ1tcImRhdGEtdFwiXSB8fCBcIlwiO1xuXHRcdFx0LyogVE9ETzogZ2VuZXJhdGUgc3R1YiBjZWxscyAqL1xuXHRcdFx0aWYoIW0ubGVuZ3RoKSB7IEMgKz0gQ1M7IGNvbnRpbnVlOyB9XG5cdFx0XHRtID0gaHRtbGRlY29kZShtKTtcblx0XHRcdGlmKHJhbmdlLnMuciA+IFIpIHJhbmdlLnMuciA9IFI7IGlmKHJhbmdlLmUuciA8IFIpIHJhbmdlLmUuciA9IFI7XG5cdFx0XHRpZihyYW5nZS5zLmMgPiBDKSByYW5nZS5zLmMgPSBDOyBpZihyYW5nZS5lLmMgPCBDKSByYW5nZS5lLmMgPSBDO1xuXHRcdFx0aWYoIW0ubGVuZ3RoKSB7IEMgKz0gQ1M7IGNvbnRpbnVlOyB9XG5cdFx0XHR2YXIgby8qOkNlbGwqLyA9IHt0OidzJywgdjptfTtcblx0XHRcdGlmKG9wdHMucmF3IHx8ICFtLnRyaW0oKS5sZW5ndGggfHwgX3QgPT0gJ3MnKXt9XG5cdFx0XHRlbHNlIGlmKG0gPT09ICdUUlVFJykgbyA9IHt0OidiJywgdjp0cnVlfTtcblx0XHRcdGVsc2UgaWYobSA9PT0gJ0ZBTFNFJykgbyA9IHt0OidiJywgdjpmYWxzZX07XG5cdFx0XHRlbHNlIGlmKCFpc05hTihmdXp6eW51bShtKSkpIG8gPSB7dDonbicsIHY6ZnV6enludW0obSl9O1xuXHRcdFx0ZWxzZSBpZighaXNOYU4oZnV6enlkYXRlKG0pLmdldERhdGUoKSkpIHtcblx0XHRcdFx0byA9ICh7dDonZCcsIHY6cGFyc2VEYXRlKG0pfS8qOmFueSovKTtcblx0XHRcdFx0aWYoIW9wdHMuY2VsbERhdGVzKSBvID0gKHt0OiduJywgdjpkYXRlbnVtKG8udil9Lyo6YW55Ki8pO1xuXHRcdFx0XHRvLnogPSBvcHRzLmRhdGVORiB8fCB0YWJsZV9mbXRbMTRdO1xuXHRcdFx0fVxuXHRcdFx0aWYob3B0cy5kZW5zZSkgeyBpZighd3NbUl0pIHdzW1JdID0gW107IHdzW1JdW0NdID0gbzsgfVxuXHRcdFx0ZWxzZSB3c1tlbmNvZGVfY2VsbCh7cjpSLCBjOkN9KV0gPSBvO1xuXHRcdFx0QyArPSBDUztcblx0XHR9XG5cdH1cblx0d3NbJyFyZWYnXSA9IGVuY29kZV9yYW5nZShyYW5nZSk7XG5cdGlmKG1lcmdlcy5sZW5ndGgpIHdzW1wiIW1lcmdlc1wiXSA9IG1lcmdlcztcblx0cmV0dXJuIHdzO1xufVxuZnVuY3Rpb24gbWFrZV9odG1sX3Jvdyh3cy8qOldvcmtzaGVldCovLCByLyo6UmFuZ2UqLywgUi8qOm51bWJlciovLCBvLyo6U2hlZXQySFRNTE9wdHMqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBNLyo6QXJyYXk8UmFuZ2U+Ki8gPSAod3NbJyFtZXJnZXMnXSB8fFtdKTtcblx0dmFyIG9vLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdGZvcih2YXIgQyA9IHIucy5jOyBDIDw9IHIuZS5jOyArK0MpIHtcblx0XHR2YXIgUlMgPSAwLCBDUyA9IDA7XG5cdFx0Zm9yKHZhciBqID0gMDsgaiA8IE0ubGVuZ3RoOyArK2opIHtcblx0XHRcdGlmKE1bal0ucy5yID4gUiB8fCBNW2pdLnMuYyA+IEMpIGNvbnRpbnVlO1xuXHRcdFx0aWYoTVtqXS5lLnIgPCBSIHx8IE1bal0uZS5jIDwgQykgY29udGludWU7XG5cdFx0XHRpZihNW2pdLnMuciA8IFIgfHwgTVtqXS5zLmMgPCBDKSB7IFJTID0gLTE7IGJyZWFrOyB9XG5cdFx0XHRSUyA9IE1bal0uZS5yIC0gTVtqXS5zLnIgKyAxOyBDUyA9IE1bal0uZS5jIC0gTVtqXS5zLmMgKyAxOyBicmVhaztcblx0XHR9XG5cdFx0aWYoUlMgPCAwKSBjb250aW51ZTtcblx0XHR2YXIgY29vcmQgPSBlbmNvZGVfY2VsbCh7cjpSLGM6Q30pO1xuXHRcdHZhciBjZWxsID0gby5kZW5zZSA/ICh3c1tSXXx8W10pW0NdIDogd3NbY29vcmRdO1xuXHRcdC8qIFRPRE86IGh0bWwgZW50aXRpZXMgKi9cblx0XHR2YXIgdyA9IChjZWxsICYmIGNlbGwudiAhPSBudWxsKSAmJiAoY2VsbC5oIHx8IGVzY2FwZWh0bWwoY2VsbC53IHx8IChmb3JtYXRfY2VsbChjZWxsKSwgY2VsbC53KSB8fCBcIlwiKSkgfHwgXCJcIjtcblx0XHR2YXIgc3AgPSAoe30vKjphbnkqLyk7XG5cdFx0aWYoUlMgPiAxKSBzcC5yb3dzcGFuID0gUlM7XG5cdFx0aWYoQ1MgPiAxKSBzcC5jb2xzcGFuID0gQ1M7XG5cdFx0aWYoby5lZGl0YWJsZSkgdyA9ICc8c3BhbiBjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCI+JyArIHcgKyAnPC9zcGFuPic7XG5cdFx0ZWxzZSBpZihjZWxsKSB7XG5cdFx0XHRzcFtcImRhdGEtdFwiXSA9IGNlbGwgJiYgY2VsbC50IHx8ICd6Jztcblx0XHRcdGlmKGNlbGwudiAhPSBudWxsKSBzcFtcImRhdGEtdlwiXSA9IGNlbGwudjtcblx0XHRcdGlmKGNlbGwueiAhPSBudWxsKSBzcFtcImRhdGEtelwiXSA9IGNlbGwuejtcblx0XHRcdGlmKGNlbGwubCAmJiAoY2VsbC5sLlRhcmdldCB8fCBcIiNcIikuY2hhckF0KDApICE9IFwiI1wiKSB3ID0gJzxhIGhyZWY9XCInICsgY2VsbC5sLlRhcmdldCArJ1wiPicgKyB3ICsgJzwvYT4nO1xuXHRcdH1cblx0XHRzcC5pZCA9IChvLmlkIHx8IFwic2pzXCIpICsgXCItXCIgKyBjb29yZDtcblx0XHRvby5wdXNoKHdyaXRleHRhZygndGQnLCB3LCBzcCkpO1xuXHR9XG5cdHZhciBwcmVhbWJsZSA9IFwiPHRyPlwiO1xuXHRyZXR1cm4gcHJlYW1ibGUgKyBvby5qb2luKFwiXCIpICsgXCI8L3RyPlwiO1xufVxuXG52YXIgSFRNTF9CRUdJTiA9ICc8aHRtbD48aGVhZD48bWV0YSBjaGFyc2V0PVwidXRmLThcIi8+PHRpdGxlPlNoZWV0SlMgVGFibGUgRXhwb3J0PC90aXRsZT48L2hlYWQ+PGJvZHk+JztcbnZhciBIVE1MX0VORCA9ICc8L2JvZHk+PC9odG1sPic7XG5cbmZ1bmN0aW9uIGh0bWxfdG9fd29ya2Jvb2soc3RyLyo6c3RyaW5nKi8sIG9wdHMpLyo6V29ya2Jvb2sqLyB7XG5cdHZhciBtdGNoID0gc3RyLm1hdGNoKC88dGFibGVbXFxzXFxTXSo/PltcXHNcXFNdKj88XFwvdGFibGU+L2dpKTtcblx0aWYoIW10Y2ggfHwgbXRjaC5sZW5ndGggPT0gMCkgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBIVE1MOiBjb3VsZCBub3QgZmluZCA8dGFibGU+XCIpO1xuXHRpZihtdGNoLmxlbmd0aCA9PSAxKSByZXR1cm4gc2hlZXRfdG9fd29ya2Jvb2soaHRtbF90b19zaGVldChtdGNoWzBdLCBvcHRzKSwgb3B0cyk7XG5cdHZhciB3YiA9IGJvb2tfbmV3KCk7XG5cdG10Y2guZm9yRWFjaChmdW5jdGlvbihzLCBpZHgpIHsgYm9va19hcHBlbmRfc2hlZXQod2IsIGh0bWxfdG9fc2hlZXQocywgb3B0cyksIFwiU2hlZXRcIiArIChpZHgrMSkpOyB9KTtcblx0cmV0dXJuIHdiO1xufVxuXG5mdW5jdGlvbiBtYWtlX2h0bWxfcHJlYW1ibGUod3MvKjpXb3Jrc2hlZXQqLywgUi8qOlJhbmdlKi8sIG8vKjpTaGVldDJIVE1MT3B0cyovKS8qOnN0cmluZyovIHtcblx0dmFyIG91dC8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRyZXR1cm4gb3V0LmpvaW4oXCJcIikgKyAnPHRhYmxlJyArIChvICYmIG8uaWQgPyAnIGlkPVwiJyArIG8uaWQgKyAnXCInIDogXCJcIikgKyAnPic7XG59XG5cbmZ1bmN0aW9uIHNoZWV0X3RvX2h0bWwod3MvKjpXb3Jrc2hlZXQqLywgb3B0cy8qOj9TaGVldDJIVE1MT3B0cyovLyosIHdiOj9Xb3JrYm9vayovKS8qOnN0cmluZyovIHtcblx0dmFyIG8gPSBvcHRzIHx8IHt9O1xuXHR2YXIgaGVhZGVyID0gby5oZWFkZXIgIT0gbnVsbCA/IG8uaGVhZGVyIDogSFRNTF9CRUdJTjtcblx0dmFyIGZvb3RlciA9IG8uZm9vdGVyICE9IG51bGwgPyBvLmZvb3RlciA6IEhUTUxfRU5EO1xuXHR2YXIgb3V0Lyo6QXJyYXk8c3RyaW5nPiovID0gW2hlYWRlcl07XG5cdHZhciByID0gZGVjb2RlX3JhbmdlKHdzWychcmVmJ10pO1xuXHRvLmRlbnNlID0gQXJyYXkuaXNBcnJheSh3cyk7XG5cdG91dC5wdXNoKG1ha2VfaHRtbF9wcmVhbWJsZSh3cywgciwgbykpO1xuXHRmb3IodmFyIFIgPSByLnMucjsgUiA8PSByLmUucjsgKytSKSBvdXQucHVzaChtYWtlX2h0bWxfcm93KHdzLCByLCBSLCBvKSk7XG5cdG91dC5wdXNoKFwiPC90YWJsZT5cIiArIGZvb3Rlcik7XG5cdHJldHVybiBvdXQuam9pbihcIlwiKTtcbn1cblxuZnVuY3Rpb24gc2hlZXRfYWRkX2RvbSh3cy8qOldvcmtzaGVldCovLCB0YWJsZS8qOkhUTUxFbGVtZW50Ki8sIF9vcHRzLyo6P2FueSovKS8qOldvcmtzaGVldCovIHtcblx0dmFyIG9wdHMgPSBfb3B0cyB8fCB7fTtcblx0aWYoREVOU0UgIT0gbnVsbCkgb3B0cy5kZW5zZSA9IERFTlNFO1xuXHR2YXIgb3JfUiA9IDAsIG9yX0MgPSAwO1xuXHRpZihvcHRzLm9yaWdpbiAhPSBudWxsKSB7XG5cdFx0aWYodHlwZW9mIG9wdHMub3JpZ2luID09ICdudW1iZXInKSBvcl9SID0gb3B0cy5vcmlnaW47XG5cdFx0ZWxzZSB7XG5cdFx0XHR2YXIgX29yaWdpbi8qOkNlbGxBZGRyZXNzKi8gPSB0eXBlb2Ygb3B0cy5vcmlnaW4gPT0gXCJzdHJpbmdcIiA/IGRlY29kZV9jZWxsKG9wdHMub3JpZ2luKSA6IG9wdHMub3JpZ2luO1xuXHRcdFx0b3JfUiA9IF9vcmlnaW4ucjsgb3JfQyA9IF9vcmlnaW4uYztcblx0XHR9XG5cdH1cblxuXHR2YXIgcm93cy8qOkhUTUxDb2xsZWN0aW9uPEhUTUxUYWJsZVJvd0VsZW1lbnQ+Ki8gPSB0YWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgndHInKTtcblx0dmFyIHNoZWV0Um93cyA9IE1hdGgubWluKG9wdHMuc2hlZXRSb3dzfHwxMDAwMDAwMCwgcm93cy5sZW5ndGgpO1xuXHR2YXIgcmFuZ2UvKjpSYW5nZSovID0ge3M6e3I6MCxjOjB9LGU6e3I6b3JfUixjOm9yX0N9fTtcblx0aWYod3NbXCIhcmVmXCJdKSB7XG5cdFx0dmFyIF9yYW5nZS8qOlJhbmdlKi8gPSBkZWNvZGVfcmFuZ2Uod3NbXCIhcmVmXCJdKTtcblx0XHRyYW5nZS5zLnIgPSBNYXRoLm1pbihyYW5nZS5zLnIsIF9yYW5nZS5zLnIpO1xuXHRcdHJhbmdlLnMuYyA9IE1hdGgubWluKHJhbmdlLnMuYywgX3JhbmdlLnMuYyk7XG5cdFx0cmFuZ2UuZS5yID0gTWF0aC5tYXgocmFuZ2UuZS5yLCBfcmFuZ2UuZS5yKTtcblx0XHRyYW5nZS5lLmMgPSBNYXRoLm1heChyYW5nZS5lLmMsIF9yYW5nZS5lLmMpO1xuXHRcdGlmKG9yX1IgPT0gLTEpIHJhbmdlLmUuciA9IG9yX1IgPSBfcmFuZ2UuZS5yICsgMTtcblx0fVxuXHR2YXIgbWVyZ2VzLyo6QXJyYXk8UmFuZ2U+Ki8gPSBbXSwgbWlkeCA9IDA7XG5cdHZhciByb3dpbmZvLyo6QXJyYXk8Um93SW5mbz4qLyA9IHdzW1wiIXJvd3NcIl0gfHwgKHdzW1wiIXJvd3NcIl0gPSBbXSk7XG5cdHZhciBfUiA9IDAsIFIgPSAwLCBfQyA9IDAsIEMgPSAwLCBSUyA9IDAsIENTID0gMDtcblx0aWYoIXdzW1wiIWNvbHNcIl0pIHdzWychY29scyddID0gW107XG5cdGZvcig7IF9SIDwgcm93cy5sZW5ndGggJiYgUiA8IHNoZWV0Um93czsgKytfUikge1xuXHRcdHZhciByb3cvKjpIVE1MVGFibGVSb3dFbGVtZW50Ki8gPSByb3dzW19SXTtcblx0XHRpZiAoaXNfZG9tX2VsZW1lbnRfaGlkZGVuKHJvdykpIHtcblx0XHRcdGlmIChvcHRzLmRpc3BsYXkpIGNvbnRpbnVlO1xuXHRcdFx0cm93aW5mb1tSXSA9IHtoaWRkZW46IHRydWV9O1xuXHRcdH1cblx0XHR2YXIgZWx0cy8qOkhUTUxDb2xsZWN0aW9uPEhUTUxUYWJsZUNlbGxFbGVtZW50PiovID0gKHJvdy5jaGlsZHJlbi8qOmFueSovKTtcblx0XHRmb3IoX0MgPSBDID0gMDsgX0MgPCBlbHRzLmxlbmd0aDsgKytfQykge1xuXHRcdFx0dmFyIGVsdC8qOkhUTUxUYWJsZUNlbGxFbGVtZW50Ki8gPSBlbHRzW19DXTtcblx0XHRcdGlmIChvcHRzLmRpc3BsYXkgJiYgaXNfZG9tX2VsZW1lbnRfaGlkZGVuKGVsdCkpIGNvbnRpbnVlO1xuXHRcdFx0dmFyIHYvKjo/c3RyaW5nKi8gPSBlbHQuaGFzQXR0cmlidXRlKCdkYXRhLXYnKSA/IGVsdC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdicpIDogZWx0Lmhhc0F0dHJpYnV0ZSgndicpID8gZWx0LmdldEF0dHJpYnV0ZSgndicpIDogaHRtbGRlY29kZShlbHQuaW5uZXJIVE1MKTtcblx0XHRcdHZhciB6Lyo6P3N0cmluZyovID0gZWx0LmdldEF0dHJpYnV0ZSgnZGF0YS16JykgfHwgZWx0LmdldEF0dHJpYnV0ZSgneicpO1xuXHRcdFx0Zm9yKG1pZHggPSAwOyBtaWR4IDwgbWVyZ2VzLmxlbmd0aDsgKyttaWR4KSB7XG5cdFx0XHRcdHZhciBtLyo6UmFuZ2UqLyA9IG1lcmdlc1ttaWR4XTtcblx0XHRcdFx0aWYobS5zLmMgPT0gQyArIG9yX0MgJiYgbS5zLnIgPCBSICsgb3JfUiAmJiBSICsgb3JfUiA8PSBtLmUucikgeyBDID0gbS5lLmMrMSAtIG9yX0M7IG1pZHggPSAtMTsgfVxuXHRcdFx0fVxuXHRcdFx0LyogVE9ETzogZmlndXJlIG91dCBob3cgdG8gZXh0cmFjdCBub25zdGFuZGFyZCBtc28tIHN0eWxlICovXG5cdFx0XHRDUyA9ICtlbHQuZ2V0QXR0cmlidXRlKFwiY29sc3BhblwiKSB8fCAxO1xuXHRcdFx0aWYoICgoUlMgPSAoK2VsdC5nZXRBdHRyaWJ1dGUoXCJyb3dzcGFuXCIpIHx8IDEpKSk+MSB8fCBDUz4xKSBtZXJnZXMucHVzaCh7czp7cjpSICsgb3JfUixjOkMgKyBvcl9DfSxlOntyOlIgKyBvcl9SICsgKFJTfHwxKSAtIDEsIGM6QyArIG9yX0MgKyAoQ1N8fDEpIC0gMX19KTtcblx0XHRcdHZhciBvLyo6Q2VsbCovID0ge3Q6J3MnLCB2OnZ9O1xuXHRcdFx0dmFyIF90Lyo6c3RyaW5nKi8gPSBlbHQuZ2V0QXR0cmlidXRlKFwiZGF0YS10XCIpIHx8IGVsdC5nZXRBdHRyaWJ1dGUoXCJ0XCIpIHx8IFwiXCI7XG5cdFx0XHRpZih2ICE9IG51bGwpIHtcblx0XHRcdFx0aWYodi5sZW5ndGggPT0gMCkgby50ID0gX3QgfHwgJ3onO1xuXHRcdFx0XHRlbHNlIGlmKG9wdHMucmF3IHx8IHYudHJpbSgpLmxlbmd0aCA9PSAwIHx8IF90ID09IFwic1wiKXt9XG5cdFx0XHRcdGVsc2UgaWYodiA9PT0gJ1RSVUUnKSBvID0ge3Q6J2InLCB2OnRydWV9O1xuXHRcdFx0XHRlbHNlIGlmKHYgPT09ICdGQUxTRScpIG8gPSB7dDonYicsIHY6ZmFsc2V9O1xuXHRcdFx0XHRlbHNlIGlmKCFpc05hTihmdXp6eW51bSh2KSkpIG8gPSB7dDonbicsIHY6ZnV6enludW0odil9O1xuXHRcdFx0XHRlbHNlIGlmKCFpc05hTihmdXp6eWRhdGUodikuZ2V0RGF0ZSgpKSkge1xuXHRcdFx0XHRcdG8gPSAoe3Q6J2QnLCB2OnBhcnNlRGF0ZSh2KX0vKjphbnkqLyk7XG5cdFx0XHRcdFx0aWYoIW9wdHMuY2VsbERhdGVzKSBvID0gKHt0OiduJywgdjpkYXRlbnVtKG8udil9Lyo6YW55Ki8pO1xuXHRcdFx0XHRcdG8ueiA9IG9wdHMuZGF0ZU5GIHx8IHRhYmxlX2ZtdFsxNF07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmKG8ueiA9PT0gdW5kZWZpbmVkICYmIHogIT0gbnVsbCkgby56ID0gejtcblx0XHRcdC8qIFRoZSBmaXJzdCBsaW5rIGlzIHVzZWQuICBMaW5rcyBhcmUgYXNzdW1lZCB0byBiZSBmdWxseSBzcGVjaWZpZWQuXG5cdFx0XHQgKiBUT0RPOiBUaGUgcmlnaHQgd2F5IHRvIHByb2Nlc3MgcmVsYXRpdmUgbGlua3MgaXMgdG8gbWFrZSBhIG5ldyA8YT4gKi9cblx0XHRcdHZhciBsID0gXCJcIiwgQWVsdHMgPSBlbHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJBXCIpO1xuXHRcdFx0aWYoQWVsdHMgJiYgQWVsdHMubGVuZ3RoKSBmb3IodmFyIEFlbHRpID0gMDsgQWVsdGkgPCBBZWx0cy5sZW5ndGg7ICsrQWVsdGkpXHRpZihBZWx0c1tBZWx0aV0uaGFzQXR0cmlidXRlKFwiaHJlZlwiKSkge1xuXHRcdFx0XHRsID0gQWVsdHNbQWVsdGldLmdldEF0dHJpYnV0ZShcImhyZWZcIik7IGlmKGwuY2hhckF0KDApICE9IFwiI1wiKSBicmVhaztcblx0XHRcdH1cblx0XHRcdGlmKGwgJiYgbC5jaGFyQXQoMCkgIT0gXCIjXCIpIG8ubCA9ICh7IFRhcmdldDogbCB9KTtcblx0XHRcdGlmKG9wdHMuZGVuc2UpIHsgaWYoIXdzW1IgKyBvcl9SXSkgd3NbUiArIG9yX1JdID0gW107IHdzW1IgKyBvcl9SXVtDICsgb3JfQ10gPSBvOyB9XG5cdFx0XHRlbHNlIHdzW2VuY29kZV9jZWxsKHtjOkMgKyBvcl9DLCByOlIgKyBvcl9SfSldID0gbztcblx0XHRcdGlmKHJhbmdlLmUuYyA8IEMgKyBvcl9DKSByYW5nZS5lLmMgPSBDICsgb3JfQztcblx0XHRcdEMgKz0gQ1M7XG5cdFx0fVxuXHRcdCsrUjtcblx0fVxuXHRpZihtZXJnZXMubGVuZ3RoKSB3c1snIW1lcmdlcyddID0gKHdzW1wiIW1lcmdlc1wiXSB8fCBbXSkuY29uY2F0KG1lcmdlcyk7XG5cdHJhbmdlLmUuciA9IE1hdGgubWF4KHJhbmdlLmUuciwgUiAtIDEgKyBvcl9SKTtcblx0d3NbJyFyZWYnXSA9IGVuY29kZV9yYW5nZShyYW5nZSk7XG5cdGlmKFIgPj0gc2hlZXRSb3dzKSB3c1snIWZ1bGxyZWYnXSA9IGVuY29kZV9yYW5nZSgocmFuZ2UuZS5yID0gcm93cy5sZW5ndGgtX1IrUi0xICsgb3JfUixyYW5nZSkpOyAvLyBXZSBjYW4gY291bnQgdGhlIHJlYWwgbnVtYmVyIG9mIHJvd3MgdG8gcGFyc2UgYnV0IHdlIGRvbid0IHRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlXG5cdHJldHVybiB3cztcbn1cblxuZnVuY3Rpb24gcGFyc2VfZG9tX3RhYmxlKHRhYmxlLyo6SFRNTEVsZW1lbnQqLywgX29wdHMvKjo/YW55Ki8pLyo6V29ya3NoZWV0Ki8ge1xuXHR2YXIgb3B0cyA9IF9vcHRzIHx8IHt9O1xuXHR2YXIgd3MvKjpXb3Jrc2hlZXQqLyA9IG9wdHMuZGVuc2UgPyAoW10vKjphbnkqLykgOiAoe30vKjphbnkqLyk7XG5cdHJldHVybiBzaGVldF9hZGRfZG9tKHdzLCB0YWJsZSwgX29wdHMpO1xufVxuXG5mdW5jdGlvbiB0YWJsZV90b19ib29rKHRhYmxlLyo6SFRNTEVsZW1lbnQqLywgb3B0cy8qOj9hbnkqLykvKjpXb3JrYm9vayovIHtcblx0cmV0dXJuIHNoZWV0X3RvX3dvcmtib29rKHBhcnNlX2RvbV90YWJsZSh0YWJsZSwgb3B0cyksIG9wdHMpO1xufVxuXG5mdW5jdGlvbiBpc19kb21fZWxlbWVudF9oaWRkZW4oZWxlbWVudC8qOkhUTUxFbGVtZW50Ki8pLyo6Ym9vbGVhbiovIHtcblx0dmFyIGRpc3BsYXkvKjpzdHJpbmcqLyA9ICcnO1xuXHR2YXIgZ2V0X2NvbXB1dGVkX3N0eWxlLyo6P2Z1bmN0aW9uKi8gPSBnZXRfZ2V0X2NvbXB1dGVkX3N0eWxlX2Z1bmN0aW9uKGVsZW1lbnQpO1xuXHRpZihnZXRfY29tcHV0ZWRfc3R5bGUpIGRpc3BsYXkgPSBnZXRfY29tcHV0ZWRfc3R5bGUoZWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgnZGlzcGxheScpO1xuXHRpZighZGlzcGxheSkgZGlzcGxheSA9IGVsZW1lbnQuc3R5bGUgJiYgZWxlbWVudC5zdHlsZS5kaXNwbGF5O1xuXHRyZXR1cm4gZGlzcGxheSA9PT0gJ25vbmUnO1xufVxuXG4vKiBnbG9iYWwgZ2V0Q29tcHV0ZWRTdHlsZSAqL1xuZnVuY3Rpb24gZ2V0X2dldF9jb21wdXRlZF9zdHlsZV9mdW5jdGlvbihlbGVtZW50Lyo6SFRNTEVsZW1lbnQqLykvKjo/ZnVuY3Rpb24qLyB7XG5cdC8vIFRoZSBwcm9wZXIgZ2V0Q29tcHV0ZWRTdHlsZSBpbXBsZW1lbnRhdGlvbiBpcyB0aGUgb25lIGRlZmluZWQgaW4gdGhlIGVsZW1lbnQgd2luZG93XG5cdGlmKGVsZW1lbnQub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyAmJiB0eXBlb2YgZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUgPT09ICdmdW5jdGlvbicpIHJldHVybiBlbGVtZW50Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZTtcblx0Ly8gSWYgaXQgaXMgbm90IGF2YWlsYWJsZSwgdHJ5IHRvIGdldCBvbmUgZnJvbSB0aGUgZ2xvYmFsIG5hbWVzcGFjZVxuXHRpZih0eXBlb2YgZ2V0Q29tcHV0ZWRTdHlsZSA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGdldENvbXB1dGVkU3R5bGU7XG5cdHJldHVybiBudWxsO1xufVxuLyogT3BlbkRvY3VtZW50ICovXG5mdW5jdGlvbiBwYXJzZV90ZXh0X3AodGV4dC8qOnN0cmluZyovLyo6OiwgdGFnKi8pLyo6QXJyYXk8YW55PiovIHtcblx0LyogNi4xLjIgV2hpdGUgU3BhY2UgQ2hhcmFjdGVycyAqL1xuXHR2YXIgZml4ZWQgPSB0ZXh0XG5cdFx0LnJlcGxhY2UoL1tcXHRcXHJcXG5dL2csIFwiIFwiKS50cmltKCkucmVwbGFjZSgvICsvZywgXCIgXCIpXG5cdFx0LnJlcGxhY2UoLzx0ZXh0OnNcXC8+L2csXCIgXCIpXG5cdFx0LnJlcGxhY2UoLzx0ZXh0OnMgdGV4dDpjPVwiKFxcZCspXCJcXC8+L2csIGZ1bmN0aW9uKCQkLCQxKSB7IHJldHVybiBBcnJheShwYXJzZUludCgkMSwxMCkrMSkuam9pbihcIiBcIik7IH0pXG5cdFx0LnJlcGxhY2UoLzx0ZXh0OnRhYltePl0qXFwvPi9nLFwiXFx0XCIpXG5cdFx0LnJlcGxhY2UoLzx0ZXh0OmxpbmUtYnJlYWtcXC8+L2csXCJcXG5cIik7XG5cdHZhciB2ID0gdW5lc2NhcGV4bWwoZml4ZWQucmVwbGFjZSgvPFtePl0qPi9nLFwiXCIpKTtcblxuXHRyZXR1cm4gW3ZdO1xufVxuXG52YXIgbnVtYmVyX2Zvcm1hdHNfb2RzID0ge1xuXHQvKiBvZHMgbmFtZTogW3Nob3J0IHNzZiBmbXQsIGxvbmcgc3NmIGZtdF0gKi9cblx0ZGF5OiAgICAgICAgICAgW1wiZFwiLCAgIFwiZGRcIl0sXG5cdG1vbnRoOiAgICAgICAgIFtcIm1cIiwgICBcIm1tXCJdLFxuXHR5ZWFyOiAgICAgICAgICBbXCJ5XCIsICAgXCJ5eVwiXSxcblx0aG91cnM6ICAgICAgICAgW1wiaFwiLCAgIFwiaGhcIl0sXG5cdG1pbnV0ZXM6ICAgICAgIFtcIm1cIiwgICBcIm1tXCJdLFxuXHRzZWNvbmRzOiAgICAgICBbXCJzXCIsICAgXCJzc1wiXSxcblx0XCJhbS1wbVwiOiAgICAgICBbXCJBL1BcIiwgXCJBTS9QTVwiXSxcblx0XCJkYXktb2Ytd2Vla1wiOiBbXCJkZGRcIiwgXCJkZGRkXCJdLFxuXHRlcmE6ICAgICAgICAgICBbXCJlXCIsICAgXCJlZVwiXSxcblx0LyogdGhlcmUgaXMgbm8gbmF0aXZlIHJlcHJlc2VudGF0aW9uIG9mIExPIFwiUVwiIGZvcm1hdCAqL1xuXHRxdWFydGVyOiAgICAgICBbXCJcXFxcUW1cIiwgXCJtXFxcXFxcXCJ0aCBxdWFydGVyXFxcIlwiXVxufTtcblxuXG5mdW5jdGlvbiBwYXJzZV9jb250ZW50X3htbChkLyo6c3RyaW5nKi8sIF9vcHRzKS8qOldvcmtib29rKi8ge1xuXHRcdHZhciBvcHRzID0gX29wdHMgfHwge307XG5cdFx0aWYoREVOU0UgIT0gbnVsbCAmJiBvcHRzLmRlbnNlID09IG51bGwpIG9wdHMuZGVuc2UgPSBERU5TRTtcblx0XHR2YXIgc3RyID0geGxtbF9ub3JtYWxpemUoZCk7XG5cdFx0dmFyIHN0YXRlLyo6QXJyYXk8YW55PiovID0gW10sIHRtcDtcblx0XHR2YXIgdGFnLyo6OiA9IHt9Ki87XG5cdFx0dmFyIE5GdGFnID0ge25hbWU6XCJcIn0sIE5GID0gXCJcIiwgcGlkeCA9IDA7XG5cdFx0dmFyIHNoZWV0YWcvKjo6ID0ge25hbWU6XCJcIiwgJ+WQjeensCc6XCJcIn0qLztcblx0XHR2YXIgcm93dGFnLyo6OiA9IHsn6KGM5Y+3JzpcIlwifSovO1xuXHRcdHZhciBTaGVldHMgPSB7fSwgU2hlZXROYW1lcy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRcdHZhciB3cyA9IG9wdHMuZGVuc2UgPyAoW10vKjphbnkqLykgOiAoe30vKjphbnkqLyk7XG5cdFx0dmFyIFJuLCBxLyo6OiA6YW55ID0gKHt0OlwiXCIsIHY6bnVsbCwgejpudWxsLCB3OlwiXCIsYzpbXSx9OmFueSkqLztcblx0XHR2YXIgY3RhZyA9ICh7dmFsdWU6XCJcIn0vKjphbnkqLyk7XG5cdFx0dmFyIHRleHRwID0gXCJcIiwgdGV4dHBpZHggPSAwLCB0ZXh0cHRhZy8qOjogPSB7fSovO1xuXHRcdHZhciB0ZXh0UiA9IFtdO1xuXHRcdHZhciBSID0gLTEsIEMgPSAtMSwgcmFuZ2UgPSB7czoge3I6MTAwMDAwMCxjOjEwMDAwMDAwfSwgZToge3I6MCwgYzowfX07XG5cdFx0dmFyIHJvd19vbCA9IDA7XG5cdFx0dmFyIG51bWJlcl9mb3JtYXRfbWFwID0ge307XG5cdFx0dmFyIG1lcmdlcy8qOkFycmF5PFJhbmdlPiovID0gW10sIG1yYW5nZSA9IHt9LCBtUiA9IDAsIG1DID0gMDtcblx0XHR2YXIgcm93aW5mby8qOkFycmF5PFJvd0luZm8+Ki8gPSBbXSwgcm93cGVhdCA9IDEsIGNvbHBlYXQgPSAxO1xuXHRcdHZhciBhcnJheWYvKjpBcnJheTxbUmFuZ2UsIHN0cmluZ10+Ki8gPSBbXTtcblx0XHR2YXIgV0IgPSB7TmFtZXM6W119O1xuXHRcdHZhciBhdGFnID0gKHt9Lyo6YW55Ki8pO1xuXHRcdHZhciBfUmVmLyo6W3N0cmluZywgc3RyaW5nXSovID0gW1wiXCIsIFwiXCJdO1xuXHRcdHZhciBjb21tZW50cy8qOkFycmF5PENvbW1lbnQ+Ki8gPSBbXSwgY29tbWVudC8qOkNvbW1lbnQqLyA9ICh7fS8qOmFueSovKTtcblx0XHR2YXIgY3JlYXRvciA9IFwiXCIsIGNyZWF0b3JpZHggPSAwO1xuXHRcdHZhciBpc3N0dWIgPSBmYWxzZSwgaW50YWJsZSA9IGZhbHNlO1xuXHRcdHZhciBpID0gMDtcblx0XHR4bG1scmVnZXgubGFzdEluZGV4ID0gMDtcblx0XHRzdHIgPSBzdHIucmVwbGFjZSgvPCEtLShbXFxzXFxTXSo/KS0tPi9tZyxcIlwiKS5yZXBsYWNlKC88IURPQ1RZUEVbXlxcW10qXFxbW15cXF1dKlxcXT4vZ20sXCJcIik7XG5cdFx0d2hpbGUoKFJuID0geGxtbHJlZ2V4LmV4ZWMoc3RyKSkpIHN3aXRjaCgoUm5bM109Um5bM10ucmVwbGFjZSgvXy4qJC8sXCJcIikpKSB7XG5cblx0XHRcdGNhc2UgJ3RhYmxlJzogY2FzZSAn5bel5L2c6KGoJzogLy8gOS4xLjIgPHRhYmxlOnRhYmxlPlxuXHRcdFx0XHRpZihSblsxXT09PScvJykge1xuXHRcdFx0XHRcdGlmKHJhbmdlLmUuYyA+PSByYW5nZS5zLmMgJiYgcmFuZ2UuZS5yID49IHJhbmdlLnMucikgd3NbJyFyZWYnXSA9IGVuY29kZV9yYW5nZShyYW5nZSk7XG5cdFx0XHRcdFx0ZWxzZSB3c1snIXJlZiddID0gXCJBMTpBMVwiO1xuXHRcdFx0XHRcdGlmKG9wdHMuc2hlZXRSb3dzID4gMCAmJiBvcHRzLnNoZWV0Um93cyA8PSByYW5nZS5lLnIpIHtcblx0XHRcdFx0XHRcdHdzWychZnVsbHJlZiddID0gd3NbJyFyZWYnXTtcblx0XHRcdFx0XHRcdHJhbmdlLmUuciA9IG9wdHMuc2hlZXRSb3dzIC0gMTtcblx0XHRcdFx0XHRcdHdzWychcmVmJ10gPSBlbmNvZGVfcmFuZ2UocmFuZ2UpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZihtZXJnZXMubGVuZ3RoKSB3c1snIW1lcmdlcyddID0gbWVyZ2VzO1xuXHRcdFx0XHRcdGlmKHJvd2luZm8ubGVuZ3RoKSB3c1tcIiFyb3dzXCJdID0gcm93aW5mbztcblx0XHRcdFx0XHRzaGVldGFnLm5hbWUgPSBzaGVldGFnWyflkI3np7AnXSB8fCBzaGVldGFnLm5hbWU7XG5cdFx0XHRcdFx0aWYodHlwZW9mIEpTT04gIT09ICd1bmRlZmluZWQnKSBKU09OLnN0cmluZ2lmeShzaGVldGFnKTtcblx0XHRcdFx0XHRTaGVldE5hbWVzLnB1c2goc2hlZXRhZy5uYW1lKTtcblx0XHRcdFx0XHRTaGVldHNbc2hlZXRhZy5uYW1lXSA9IHdzO1xuXHRcdFx0XHRcdGludGFibGUgPSBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmKFJuWzBdLmNoYXJBdChSblswXS5sZW5ndGgtMikgIT09ICcvJykge1xuXHRcdFx0XHRcdHNoZWV0YWcgPSBwYXJzZXhtbHRhZyhSblswXSwgZmFsc2UpO1xuXHRcdFx0XHRcdFIgPSBDID0gLTE7XG5cdFx0XHRcdFx0cmFuZ2Uucy5yID0gcmFuZ2Uucy5jID0gMTAwMDAwMDA7IHJhbmdlLmUuciA9IHJhbmdlLmUuYyA9IDA7XG5cdFx0XHRcdFx0d3MgPSBvcHRzLmRlbnNlID8gKFtdLyo6YW55Ki8pIDogKHt9Lyo6YW55Ki8pOyBtZXJnZXMgPSBbXTtcblx0XHRcdFx0XHRyb3dpbmZvID0gW107XG5cdFx0XHRcdFx0aW50YWJsZSA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ3RhYmxlLXJvdy1ncm91cCc6IC8vIDkuMS45IDx0YWJsZTp0YWJsZS1yb3ctZ3JvdXA+XG5cdFx0XHRcdGlmKFJuWzFdID09PSBcIi9cIikgLS1yb3dfb2w7IGVsc2UgKytyb3dfb2w7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAndGFibGUtcm93JzogY2FzZSAn6KGMJzogLy8gOS4xLjMgPHRhYmxlOnRhYmxlLXJvdz5cblx0XHRcdFx0aWYoUm5bMV0gPT09ICcvJykgeyBSKz1yb3dwZWF0OyByb3dwZWF0ID0gMTsgYnJlYWs7IH1cblx0XHRcdFx0cm93dGFnID0gcGFyc2V4bWx0YWcoUm5bMF0sIGZhbHNlKTtcblx0XHRcdFx0aWYocm93dGFnWyfooYzlj7cnXSkgUiA9IHJvd3RhZ1sn6KGM5Y+3J10gLSAxOyBlbHNlIGlmKFIgPT0gLTEpIFIgPSAwO1xuXHRcdFx0XHRyb3dwZWF0ID0gK3Jvd3RhZ1snbnVtYmVyLXJvd3MtcmVwZWF0ZWQnXSB8fCAxO1xuXHRcdFx0XHQvKiBUT0RPOiByZW1vdmUgbWFnaWMgKi9cblx0XHRcdFx0aWYocm93cGVhdCA8IDEwKSBmb3IoaSA9IDA7IGkgPCByb3dwZWF0OyArK2kpIGlmKHJvd19vbCA+IDApIHJvd2luZm9bUiArIGldID0ge2xldmVsOiByb3dfb2x9O1xuXHRcdFx0XHRDID0gLTE7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnY292ZXJlZC10YWJsZS1jZWxsJzogLy8gOS4xLjUgPHRhYmxlOmNvdmVyZWQtdGFibGUtY2VsbD5cblx0XHRcdFx0aWYoUm5bMV0gIT09ICcvJykgKytDO1xuXHRcdFx0XHRpZihvcHRzLnNoZWV0U3R1YnMpIHtcblx0XHRcdFx0XHRpZihvcHRzLmRlbnNlKSB7IGlmKCF3c1tSXSkgd3NbUl0gPSBbXTsgd3NbUl1bQ10gPSB7dDoneid9OyB9XG5cdFx0XHRcdFx0ZWxzZSB3c1tlbmNvZGVfY2VsbCh7cjpSLGM6Q30pXSA9IHt0Oid6J307XG5cdFx0XHRcdH1cblx0XHRcdFx0dGV4dHAgPSBcIlwiOyB0ZXh0UiA9IFtdO1xuXHRcdFx0XHRicmVhazsgLyogc3R1YiAqL1xuXHRcdFx0Y2FzZSAndGFibGUtY2VsbCc6IGNhc2UgJ+aVsOaNric6XG5cdFx0XHRcdGlmKFJuWzBdLmNoYXJBdChSblswXS5sZW5ndGgtMikgPT09ICcvJykge1xuXHRcdFx0XHRcdCsrQztcblx0XHRcdFx0XHRjdGFnID0gcGFyc2V4bWx0YWcoUm5bMF0sIGZhbHNlKTtcblx0XHRcdFx0XHRjb2xwZWF0ID0gcGFyc2VJbnQoY3RhZ1snbnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQnXXx8XCIxXCIsIDEwKTtcblx0XHRcdFx0XHRxID0gKHt0Oid6JywgdjpudWxsLyo6OiAsIHo6bnVsbCwgdzpcIlwiLGM6W10qL30vKjphbnkqLyk7XG5cdFx0XHRcdFx0aWYoY3RhZy5mb3JtdWxhICYmIG9wdHMuY2VsbEZvcm11bGEgIT0gZmFsc2UpIHEuZiA9IG9kc190b19jc2ZfZm9ybXVsYSh1bmVzY2FwZXhtbChjdGFnLmZvcm11bGEpKTtcblx0XHRcdFx0XHRpZigoY3RhZ1sn5pWw5o2u57G75Z6LJ10gfHwgY3RhZ1sndmFsdWUtdHlwZSddKSA9PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdFx0XHRxLnQgPSBcInNcIjsgcS52ID0gdW5lc2NhcGV4bWwoY3RhZ1snc3RyaW5nLXZhbHVlJ10gfHwgXCJcIik7XG5cdFx0XHRcdFx0XHRpZihvcHRzLmRlbnNlKSB7XG5cdFx0XHRcdFx0XHRcdGlmKCF3c1tSXSkgd3NbUl0gPSBbXTtcblx0XHRcdFx0XHRcdFx0d3NbUl1bQ10gPSBxO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0d3NbZW5jb2RlX2NlbGwoe3I6UixjOkN9KV0gPSBxO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRDKz0gY29scGVhdC0xO1xuXHRcdFx0XHR9IGVsc2UgaWYoUm5bMV0hPT0nLycpIHtcblx0XHRcdFx0XHQrK0M7XG5cdFx0XHRcdFx0dGV4dHAgPSBcIlwiOyB0ZXh0cGlkeCA9IDA7IHRleHRSID0gW107XG5cdFx0XHRcdFx0Y29scGVhdCA9IDE7XG5cdFx0XHRcdFx0dmFyIHJwdFIgPSByb3dwZWF0ID8gUiArIHJvd3BlYXQgLSAxIDogUjtcblx0XHRcdFx0XHRpZihDID4gcmFuZ2UuZS5jKSByYW5nZS5lLmMgPSBDO1xuXHRcdFx0XHRcdGlmKEMgPCByYW5nZS5zLmMpIHJhbmdlLnMuYyA9IEM7XG5cdFx0XHRcdFx0aWYoUiA8IHJhbmdlLnMucikgcmFuZ2Uucy5yID0gUjtcblx0XHRcdFx0XHRpZihycHRSID4gcmFuZ2UuZS5yKSByYW5nZS5lLnIgPSBycHRSO1xuXHRcdFx0XHRcdGN0YWcgPSBwYXJzZXhtbHRhZyhSblswXSwgZmFsc2UpO1xuXHRcdFx0XHRcdGNvbW1lbnRzID0gW107IGNvbW1lbnQgPSAoe30vKjphbnkqLyk7XG5cdFx0XHRcdFx0cSA9ICh7dDpjdGFnWyfmlbDmja7nsbvlnosnXSB8fCBjdGFnWyd2YWx1ZS10eXBlJ10sIHY6bnVsbC8qOjogLCB6Om51bGwsIHc6XCJcIixjOltdKi99Lyo6YW55Ki8pO1xuXHRcdFx0XHRcdGlmKG9wdHMuY2VsbEZvcm11bGEpIHtcblx0XHRcdFx0XHRcdGlmKGN0YWcuZm9ybXVsYSkgY3RhZy5mb3JtdWxhID0gdW5lc2NhcGV4bWwoY3RhZy5mb3JtdWxhKTtcblx0XHRcdFx0XHRcdGlmKGN0YWdbJ251bWJlci1tYXRyaXgtY29sdW1ucy1zcGFubmVkJ10gJiYgY3RhZ1snbnVtYmVyLW1hdHJpeC1yb3dzLXNwYW5uZWQnXSkge1xuXHRcdFx0XHRcdFx0XHRtUiA9IHBhcnNlSW50KGN0YWdbJ251bWJlci1tYXRyaXgtcm93cy1zcGFubmVkJ10sMTApIHx8IDA7XG5cdFx0XHRcdFx0XHRcdG1DID0gcGFyc2VJbnQoY3RhZ1snbnVtYmVyLW1hdHJpeC1jb2x1bW5zLXNwYW5uZWQnXSwxMCkgfHwgMDtcblx0XHRcdFx0XHRcdFx0bXJhbmdlID0ge3M6IHtyOlIsYzpDfSwgZTp7cjpSICsgbVItMSxjOkMgKyBtQy0xfX07XG5cdFx0XHRcdFx0XHRcdHEuRiA9IGVuY29kZV9yYW5nZShtcmFuZ2UpO1xuXHRcdFx0XHRcdFx0XHRhcnJheWYucHVzaChbbXJhbmdlLCBxLkZdKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmKGN0YWcuZm9ybXVsYSkgcS5mID0gb2RzX3RvX2NzZl9mb3JtdWxhKGN0YWcuZm9ybXVsYSk7XG5cdFx0XHRcdFx0XHRlbHNlIGZvcihpID0gMDsgaSA8IGFycmF5Zi5sZW5ndGg7ICsraSlcblx0XHRcdFx0XHRcdFx0aWYoUiA+PSBhcnJheWZbaV1bMF0ucy5yICYmIFIgPD0gYXJyYXlmW2ldWzBdLmUucilcblx0XHRcdFx0XHRcdFx0XHRpZihDID49IGFycmF5ZltpXVswXS5zLmMgJiYgQyA8PSBhcnJheWZbaV1bMF0uZS5jKVxuXHRcdFx0XHRcdFx0XHRcdFx0cS5GID0gYXJyYXlmW2ldWzFdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZihjdGFnWydudW1iZXItY29sdW1ucy1zcGFubmVkJ10gfHwgY3RhZ1snbnVtYmVyLXJvd3Mtc3Bhbm5lZCddKSB7XG5cdFx0XHRcdFx0XHRtUiA9IHBhcnNlSW50KGN0YWdbJ251bWJlci1yb3dzLXNwYW5uZWQnXSwxMCkgfHwgMDtcblx0XHRcdFx0XHRcdG1DID0gcGFyc2VJbnQoY3RhZ1snbnVtYmVyLWNvbHVtbnMtc3Bhbm5lZCddLDEwKSB8fCAwO1xuXHRcdFx0XHRcdFx0bXJhbmdlID0ge3M6IHtyOlIsYzpDfSwgZTp7cjpSICsgbVItMSxjOkMgKyBtQy0xfX07XG5cdFx0XHRcdFx0XHRtZXJnZXMucHVzaChtcmFuZ2UpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8qIDE5LjY3NS4yIHRhYmxlOm51bWJlci1jb2x1bW5zLXJlcGVhdGVkICovXG5cdFx0XHRcdFx0aWYoY3RhZ1snbnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQnXSkgY29scGVhdCA9IHBhcnNlSW50KGN0YWdbJ251bWJlci1jb2x1bW5zLXJlcGVhdGVkJ10sIDEwKTtcblxuXHRcdFx0XHRcdC8qIDE5LjM4NSBvZmZpY2U6dmFsdWUtdHlwZSAqL1xuXHRcdFx0XHRcdHN3aXRjaChxLnQpIHtcblx0XHRcdFx0XHRcdGNhc2UgJ2Jvb2xlYW4nOiBxLnQgPSAnYic7IHEudiA9IHBhcnNleG1sYm9vbChjdGFnWydib29sZWFuLXZhbHVlJ10pOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ2Zsb2F0JzogcS50ID0gJ24nOyBxLnYgPSBwYXJzZUZsb2F0KGN0YWcudmFsdWUpOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ3BlcmNlbnRhZ2UnOiBxLnQgPSAnbic7IHEudiA9IHBhcnNlRmxvYXQoY3RhZy52YWx1ZSk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnY3VycmVuY3knOiBxLnQgPSAnbic7IHEudiA9IHBhcnNlRmxvYXQoY3RhZy52YWx1ZSk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnZGF0ZSc6IHEudCA9ICdkJzsgcS52ID0gcGFyc2VEYXRlKGN0YWdbJ2RhdGUtdmFsdWUnXSk7XG5cdFx0XHRcdFx0XHRcdGlmKCFvcHRzLmNlbGxEYXRlcykgeyBxLnQgPSAnbic7IHEudiA9IGRhdGVudW0ocS52KTsgfVxuXHRcdFx0XHRcdFx0XHRxLnogPSAnbS9kL3l5JzsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICd0aW1lJzogcS50ID0gJ24nOyBxLnYgPSBwYXJzZV9pc29kdXIoY3RhZ1sndGltZS12YWx1ZSddKS84NjQwMDtcblx0XHRcdFx0XHRcdFx0aWYob3B0cy5jZWxsRGF0ZXMpIHsgcS50ID0gJ2QnOyBxLnYgPSBudW1kYXRlKHEudik7IH1cblx0XHRcdFx0XHRcdFx0cS56ID0gJ0hIOk1NOlNTJzsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdudW1iZXInOiBxLnQgPSAnbic7IHEudiA9IHBhcnNlRmxvYXQoY3RhZ1sn5pWw5o2u5pWw5YC8J10pOyBicmVhaztcblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdGlmKHEudCA9PT0gJ3N0cmluZycgfHwgcS50ID09PSAndGV4dCcgfHwgIXEudCkge1xuXHRcdFx0XHRcdFx0XHRcdHEudCA9ICdzJztcblx0XHRcdFx0XHRcdFx0XHRpZihjdGFnWydzdHJpbmctdmFsdWUnXSAhPSBudWxsKSB7IHRleHRwID0gdW5lc2NhcGV4bWwoY3RhZ1snc3RyaW5nLXZhbHVlJ10pOyB0ZXh0UiA9IFtdOyB9XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHZhbHVlIHR5cGUgJyArIHEudCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGlzc3R1YiA9IGZhbHNlO1xuXHRcdFx0XHRcdGlmKHEudCA9PT0gJ3MnKSB7XG5cdFx0XHRcdFx0XHRxLnYgPSB0ZXh0cCB8fCAnJztcblx0XHRcdFx0XHRcdGlmKHRleHRSLmxlbmd0aCkgcS5SID0gdGV4dFI7XG5cdFx0XHRcdFx0XHRpc3N0dWIgPSB0ZXh0cGlkeCA9PSAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZihhdGFnLlRhcmdldCkgcS5sID0gYXRhZztcblx0XHRcdFx0XHRpZihjb21tZW50cy5sZW5ndGggPiAwKSB7IHEuYyA9IGNvbW1lbnRzOyBjb21tZW50cyA9IFtdOyB9XG5cdFx0XHRcdFx0aWYodGV4dHAgJiYgb3B0cy5jZWxsVGV4dCAhPT0gZmFsc2UpIHEudyA9IHRleHRwO1xuXHRcdFx0XHRcdGlmKGlzc3R1YikgeyBxLnQgPSBcInpcIjsgZGVsZXRlIHEudjsgfVxuXHRcdFx0XHRcdGlmKCFpc3N0dWIgfHwgb3B0cy5zaGVldFN0dWJzKSB7XG5cdFx0XHRcdFx0XHRpZighKG9wdHMuc2hlZXRSb3dzICYmIG9wdHMuc2hlZXRSb3dzIDw9IFIpKSB7XG5cdFx0XHRcdFx0XHRcdGZvcih2YXIgcnB0ID0gMDsgcnB0IDwgcm93cGVhdDsgKytycHQpIHtcblx0XHRcdFx0XHRcdFx0XHRjb2xwZWF0ID0gcGFyc2VJbnQoY3RhZ1snbnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQnXXx8XCIxXCIsIDEwKTtcblx0XHRcdFx0XHRcdFx0XHRpZihvcHRzLmRlbnNlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZighd3NbUiArIHJwdF0pIHdzW1IgKyBycHRdID0gW107XG5cdFx0XHRcdFx0XHRcdFx0XHR3c1tSICsgcnB0XVtDXSA9IHJwdCA9PSAwID8gcSA6IGR1cChxKTtcblx0XHRcdFx0XHRcdFx0XHRcdHdoaWxlKC0tY29scGVhdCA+IDApIHdzW1IgKyBycHRdW0MgKyBjb2xwZWF0XSA9IGR1cChxKTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0d3NbZW5jb2RlX2NlbGwoe3I6UiArIHJwdCxjOkN9KV0gPSBxO1xuXHRcdFx0XHRcdFx0XHRcdFx0d2hpbGUoLS1jb2xwZWF0ID4gMCkgd3NbZW5jb2RlX2NlbGwoe3I6UiArIHJwdCxjOkMgKyBjb2xwZWF0fSldID0gZHVwKHEpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRpZihyYW5nZS5lLmMgPD0gQykgcmFuZ2UuZS5jID0gQztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjb2xwZWF0ID0gcGFyc2VJbnQoY3RhZ1snbnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQnXXx8XCIxXCIsIDEwKTtcblx0XHRcdFx0XHRDICs9IGNvbHBlYXQtMTsgY29scGVhdCA9IDA7XG5cdFx0XHRcdFx0cSA9IHsvKjo6IHQ6XCJcIiwgdjpudWxsLCB6Om51bGwsIHc6XCJcIixjOltdKi99O1xuXHRcdFx0XHRcdHRleHRwID0gXCJcIjsgdGV4dFIgPSBbXTtcblx0XHRcdFx0fVxuXHRcdFx0XHRhdGFnID0gKHt9Lyo6YW55Ki8pO1xuXHRcdFx0XHRicmVhazsgLy8gOS4xLjQgPHRhYmxlOnRhYmxlLWNlbGw+XG5cblx0XHRcdC8qIHB1cmUgc3RhdGUgKi9cblx0XHRcdGNhc2UgJ2RvY3VtZW50JzogLy8gVE9ETzogPG9mZmljZTpkb2N1bWVudD4gaXMgdGhlIHJvb3QgZm9yIEZPRFNcblx0XHRcdGNhc2UgJ2RvY3VtZW50LWNvbnRlbnQnOiBjYXNlICfnlLXlrZDooajmoLzmlofmoaMnOiAvLyAzLjEuMy4yIDxvZmZpY2U6ZG9jdW1lbnQtY29udGVudD5cblx0XHRcdGNhc2UgJ3NwcmVhZHNoZWV0JzogY2FzZSAn5Li75L2TJzogLy8gMy43IDxvZmZpY2U6c3ByZWFkc2hlZXQ+XG5cdFx0XHRjYXNlICdzY3JpcHRzJzogLy8gMy4xMiA8b2ZmaWNlOnNjcmlwdHM+XG5cdFx0XHRjYXNlICdzdHlsZXMnOiAvLyBUT0RPIDxvZmZpY2U6c3R5bGVzPlxuXHRcdFx0Y2FzZSAnZm9udC1mYWNlLWRlY2xzJzogLy8gMy4xNCA8b2ZmaWNlOmZvbnQtZmFjZS1kZWNscz5cblx0XHRcdGNhc2UgJ21hc3Rlci1zdHlsZXMnOiAvLyAzLjE1LjQgPG9mZmljZTptYXN0ZXItc3R5bGVzPiAtLSByZWxldmFudCBmb3IgRk9EU1xuXHRcdFx0XHRpZihSblsxXT09PScvJyl7aWYoKHRtcD1zdGF0ZS5wb3AoKSlbMF0hPT1SblszXSkgdGhyb3cgXCJCYWQgc3RhdGU6IFwiK3RtcDt9XG5cdFx0XHRcdGVsc2UgaWYoUm5bMF0uY2hhckF0KFJuWzBdLmxlbmd0aC0yKSAhPT0gJy8nKSBzdGF0ZS5wdXNoKFtSblszXSwgdHJ1ZV0pO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnYW5ub3RhdGlvbic6IC8vIDE0LjEgPG9mZmljZTphbm5vdGF0aW9uPlxuXHRcdFx0XHRpZihSblsxXT09PScvJyl7XG5cdFx0XHRcdFx0aWYoKHRtcD1zdGF0ZS5wb3AoKSlbMF0hPT1SblszXSkgdGhyb3cgXCJCYWQgc3RhdGU6IFwiK3RtcDtcblx0XHRcdFx0XHRjb21tZW50LnQgPSB0ZXh0cDtcblx0XHRcdFx0XHRpZih0ZXh0Ui5sZW5ndGgpIC8qOjooKi9jb21tZW50Lyo6OiA6YW55KSovLlIgPSB0ZXh0Ujtcblx0XHRcdFx0XHRjb21tZW50LmEgPSBjcmVhdG9yO1xuXHRcdFx0XHRcdGNvbW1lbnRzLnB1c2goY29tbWVudCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZihSblswXS5jaGFyQXQoUm5bMF0ubGVuZ3RoLTIpICE9PSAnLycpIHtzdGF0ZS5wdXNoKFtSblszXSwgZmFsc2VdKTt9XG5cdFx0XHRcdGNyZWF0b3IgPSBcIlwiOyBjcmVhdG9yaWR4ID0gMDtcblx0XHRcdFx0dGV4dHAgPSBcIlwiOyB0ZXh0cGlkeCA9IDA7IHRleHRSID0gW107XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdjcmVhdG9yJzogLy8gNC4zLjIuNyA8ZGM6Y3JlYXRvcj5cblx0XHRcdFx0aWYoUm5bMV09PT0nLycpIHsgY3JlYXRvciA9IHN0ci5zbGljZShjcmVhdG9yaWR4LFJuLmluZGV4KTsgfVxuXHRcdFx0XHRlbHNlIGNyZWF0b3JpZHggPSBSbi5pbmRleCArIFJuWzBdLmxlbmd0aDtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdC8qIGlnbm9yZSBzdGF0ZSAqL1xuXHRcdFx0Y2FzZSAnbWV0YSc6IGNhc2UgJ+WFg+aVsOaNric6IC8vIFRPRE86IDxvZmZpY2U6bWV0YT4gPHVvZjrlhYPmlbDmja4+IEZPRFMvVU9GXG5cdFx0XHRjYXNlICdzZXR0aW5ncyc6IC8vIFRPRE86IDxvZmZpY2U6c2V0dGluZ3M+XG5cdFx0XHRjYXNlICdjb25maWctaXRlbS1zZXQnOiAvLyBUT0RPOiA8b2ZmaWNlOmNvbmZpZy1pdGVtLXNldD5cblx0XHRcdGNhc2UgJ2NvbmZpZy1pdGVtLW1hcC1pbmRleGVkJzogLy8gVE9ETzogPG9mZmljZTpjb25maWctaXRlbS1tYXAtaW5kZXhlZD5cblx0XHRcdGNhc2UgJ2NvbmZpZy1pdGVtLW1hcC1lbnRyeSc6IC8vIFRPRE86IDxvZmZpY2U6Y29uZmlnLWl0ZW0tbWFwLWVudHJ5PlxuXHRcdFx0Y2FzZSAnY29uZmlnLWl0ZW0tbWFwLW5hbWVkJzogLy8gVE9ETzogPG9mZmljZTpjb25maWctaXRlbS1tYXAtZW50cnk+XG5cdFx0XHRjYXNlICdzaGFwZXMnOiAvLyA5LjIuOCA8dGFibGU6c2hhcGVzPlxuXHRcdFx0Y2FzZSAnZnJhbWUnOiAvLyAxMC40LjIgPGRyYXc6ZnJhbWU+XG5cdFx0XHRjYXNlICd0ZXh0LWJveCc6IC8vIDEwLjQuMyA8ZHJhdzp0ZXh0LWJveD5cblx0XHRcdGNhc2UgJ2ltYWdlJzogLy8gMTAuNC40IDxkcmF3OmltYWdlPlxuXHRcdFx0Y2FzZSAnZGF0YS1waWxvdC10YWJsZXMnOiAvLyA5LjYuMiA8dGFibGU6ZGF0YS1waWxvdC10YWJsZXM+XG5cdFx0XHRjYXNlICdsaXN0LXN0eWxlJzogLy8gMTYuMzAgPHRleHQ6bGlzdC1zdHlsZT5cblx0XHRcdGNhc2UgJ2Zvcm0nOiAvLyAxMy4xMyA8Zm9ybTpmb3JtPlxuXHRcdFx0Y2FzZSAnZGRlLWxpbmtzJzogLy8gOS44IDx0YWJsZTpkZGUtbGlua3M+XG5cdFx0XHRjYXNlICdldmVudC1saXN0ZW5lcnMnOiAvLyBUT0RPXG5cdFx0XHRjYXNlICdjaGFydCc6IC8vIFRPRE9cblx0XHRcdFx0aWYoUm5bMV09PT0nLycpe2lmKCh0bXA9c3RhdGUucG9wKCkpWzBdIT09Um5bM10pIHRocm93IFwiQmFkIHN0YXRlOiBcIit0bXA7fVxuXHRcdFx0XHRlbHNlIGlmKFJuWzBdLmNoYXJBdChSblswXS5sZW5ndGgtMikgIT09ICcvJykgc3RhdGUucHVzaChbUm5bM10sIGZhbHNlXSk7XG5cdFx0XHRcdHRleHRwID0gXCJcIjsgdGV4dHBpZHggPSAwOyB0ZXh0UiA9IFtdO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnc2NpZW50aWZpYy1udW1iZXInOiAvLyBUT0RPOiA8bnVtYmVyOnNjaWVudGlmaWMtbnVtYmVyPlxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2N1cnJlbmN5LXN5bWJvbCc6IC8vIFRPRE86IDxudW1iZXI6Y3VycmVuY3ktc3ltYm9sPlxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2N1cnJlbmN5LXN0eWxlJzogLy8gVE9ETzogPG51bWJlcjpjdXJyZW5jeS1zdHlsZT5cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdudW1iZXItc3R5bGUnOiAvLyAxNi4yNy4yIDxudW1iZXI6bnVtYmVyLXN0eWxlPlxuXHRcdFx0Y2FzZSAncGVyY2VudGFnZS1zdHlsZSc6IC8vIDE2LjI3LjkgPG51bWJlcjpwZXJjZW50YWdlLXN0eWxlPlxuXHRcdFx0Y2FzZSAnZGF0ZS1zdHlsZSc6IC8vIDE2LjI3LjEwIDxudW1iZXI6ZGF0ZS1zdHlsZT5cblx0XHRcdGNhc2UgJ3RpbWUtc3R5bGUnOiAvLyAxNi4yNy4xOCA8bnVtYmVyOnRpbWUtc3R5bGU+XG5cdFx0XHRcdGlmKFJuWzFdPT09Jy8nKXtcblx0XHRcdFx0XHRudW1iZXJfZm9ybWF0X21hcFtORnRhZy5uYW1lXSA9IE5GO1xuXHRcdFx0XHRcdGlmKCh0bXA9c3RhdGUucG9wKCkpWzBdIT09Um5bM10pIHRocm93IFwiQmFkIHN0YXRlOiBcIit0bXA7XG5cdFx0XHRcdH0gZWxzZSBpZihSblswXS5jaGFyQXQoUm5bMF0ubGVuZ3RoLTIpICE9PSAnLycpIHtcblx0XHRcdFx0XHRORiA9IFwiXCI7XG5cdFx0XHRcdFx0TkZ0YWcgPSBwYXJzZXhtbHRhZyhSblswXSwgZmFsc2UpO1xuXHRcdFx0XHRcdHN0YXRlLnB1c2goW1JuWzNdLCB0cnVlXSk7XG5cdFx0XHRcdH0gYnJlYWs7XG5cblx0XHRcdGNhc2UgJ3NjcmlwdCc6IGJyZWFrOyAvLyAzLjEzIDxvZmZpY2U6c2NyaXB0PlxuXHRcdFx0Y2FzZSAnbGlicmFyaWVzJzogYnJlYWs7IC8vIFRPRE86IDxvb286bGlicmFyaWVzPlxuXHRcdFx0Y2FzZSAnYXV0b21hdGljLXN0eWxlcyc6IGJyZWFrOyAvLyAzLjE1LjMgPG9mZmljZTphdXRvbWF0aWMtc3R5bGVzPlxuXG5cdFx0XHRjYXNlICdkZWZhdWx0LXN0eWxlJzogLy8gVE9ETzogPHN0eWxlOmRlZmF1bHQtc3R5bGU+XG5cdFx0XHRjYXNlICdwYWdlLWxheW91dCc6IGJyZWFrOyAvLyBUT0RPOiA8c3R5bGU6cGFnZS1sYXlvdXQ+XG5cdFx0XHRjYXNlICdzdHlsZSc6IC8vIDE2LjIgPHN0eWxlOnN0eWxlPlxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ21hcCc6IGJyZWFrOyAvLyAxNi4zIDxzdHlsZTptYXA+XG5cdFx0XHRjYXNlICdmb250LWZhY2UnOiBicmVhazsgLy8gMTYuMjEgPHN0eWxlOmZvbnQtZmFjZT5cblxuXHRcdFx0Y2FzZSAncGFyYWdyYXBoLXByb3BlcnRpZXMnOiBicmVhazsgLy8gMTcuNiA8c3R5bGU6cGFyYWdyYXBoLXByb3BlcnRpZXM+XG5cdFx0XHRjYXNlICd0YWJsZS1wcm9wZXJ0aWVzJzogYnJlYWs7IC8vIDE3LjE1IDxzdHlsZTp0YWJsZS1wcm9wZXJ0aWVzPlxuXHRcdFx0Y2FzZSAndGFibGUtY29sdW1uLXByb3BlcnRpZXMnOiBicmVhazsgLy8gMTcuMTYgPHN0eWxlOnRhYmxlLWNvbHVtbi1wcm9wZXJ0aWVzPlxuXHRcdFx0Y2FzZSAndGFibGUtcm93LXByb3BlcnRpZXMnOiBicmVhazsgLy8gMTcuMTcgPHN0eWxlOnRhYmxlLXJvdy1wcm9wZXJ0aWVzPlxuXHRcdFx0Y2FzZSAndGFibGUtY2VsbC1wcm9wZXJ0aWVzJzogYnJlYWs7IC8vIDE3LjE4IDxzdHlsZTp0YWJsZS1jZWxsLXByb3BlcnRpZXM+XG5cblx0XHRcdGNhc2UgJ251bWJlcic6IC8vIDE2LjI3LjMgPG51bWJlcjpudW1iZXI+XG5cdFx0XHRcdHN3aXRjaChzdGF0ZVtzdGF0ZS5sZW5ndGgtMV1bMF0pIHtcblx0XHRcdFx0XHRjYXNlICd0aW1lLXN0eWxlJzpcblx0XHRcdFx0XHRjYXNlICdkYXRlLXN0eWxlJzpcblx0XHRcdFx0XHRcdHRhZyA9IHBhcnNleG1sdGFnKFJuWzBdLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRORiArPSBudW1iZXJfZm9ybWF0c19vZHNbUm5bM11dW3RhZy5zdHlsZT09PSdsb25nJz8xOjBdOyBicmVhaztcblx0XHRcdFx0fSBicmVhaztcblxuXHRcdFx0Y2FzZSAnZnJhY3Rpb24nOiBicmVhazsgLy8gVE9ETyAxNi4yNy42IDxudW1iZXI6ZnJhY3Rpb24+XG5cblx0XHRcdGNhc2UgJ2RheSc6IC8vIDE2LjI3LjExIDxudW1iZXI6ZGF5PlxuXHRcdFx0Y2FzZSAnbW9udGgnOiAvLyAxNi4yNy4xMiA8bnVtYmVyOm1vbnRoPlxuXHRcdFx0Y2FzZSAneWVhcic6IC8vIDE2LjI3LjEzIDxudW1iZXI6eWVhcj5cblx0XHRcdGNhc2UgJ2VyYSc6IC8vIDE2LjI3LjE0IDxudW1iZXI6ZXJhPlxuXHRcdFx0Y2FzZSAnZGF5LW9mLXdlZWsnOiAvLyAxNi4yNy4xNSA8bnVtYmVyOmRheS1vZi13ZWVrPlxuXHRcdFx0Y2FzZSAnd2Vlay1vZi15ZWFyJzogLy8gMTYuMjcuMTYgPG51bWJlcjp3ZWVrLW9mLXllYXI+XG5cdFx0XHRjYXNlICdxdWFydGVyJzogLy8gMTYuMjcuMTcgPG51bWJlcjpxdWFydGVyPlxuXHRcdFx0Y2FzZSAnaG91cnMnOiAvLyAxNi4yNy4xOSA8bnVtYmVyOmhvdXJzPlxuXHRcdFx0Y2FzZSAnbWludXRlcyc6IC8vIDE2LjI3LjIwIDxudW1iZXI6bWludXRlcz5cblx0XHRcdGNhc2UgJ3NlY29uZHMnOiAvLyAxNi4yNy4yMSA8bnVtYmVyOnNlY29uZHM+XG5cdFx0XHRjYXNlICdhbS1wbSc6IC8vIDE2LjI3LjIyIDxudW1iZXI6YW0tcG0+XG5cdFx0XHRcdHN3aXRjaChzdGF0ZVtzdGF0ZS5sZW5ndGgtMV1bMF0pIHtcblx0XHRcdFx0XHRjYXNlICd0aW1lLXN0eWxlJzpcblx0XHRcdFx0XHRjYXNlICdkYXRlLXN0eWxlJzpcblx0XHRcdFx0XHRcdHRhZyA9IHBhcnNleG1sdGFnKFJuWzBdLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRORiArPSBudW1iZXJfZm9ybWF0c19vZHNbUm5bM11dW3RhZy5zdHlsZT09PSdsb25nJz8xOjBdOyBicmVhaztcblx0XHRcdFx0fSBicmVhaztcblxuXHRcdFx0Y2FzZSAnYm9vbGVhbi1zdHlsZSc6IGJyZWFrOyAvLyAxNi4yNy4yMyA8bnVtYmVyOmJvb2xlYW4tc3R5bGU+XG5cdFx0XHRjYXNlICdib29sZWFuJzogYnJlYWs7IC8vIDE2LjI3LjI0IDxudW1iZXI6Ym9vbGVhbj5cblx0XHRcdGNhc2UgJ3RleHQtc3R5bGUnOiBicmVhazsgLy8gMTYuMjcuMjUgPG51bWJlcjp0ZXh0LXN0eWxlPlxuXHRcdFx0Y2FzZSAndGV4dCc6IC8vIDE2LjI3LjI2IDxudW1iZXI6dGV4dD5cblx0XHRcdFx0aWYoUm5bMF0uc2xpY2UoLTIpID09PSBcIi8+XCIpIGJyZWFrO1xuXHRcdFx0XHRlbHNlIGlmKFJuWzFdPT09XCIvXCIpIHN3aXRjaChzdGF0ZVtzdGF0ZS5sZW5ndGgtMV1bMF0pIHtcblx0XHRcdFx0XHRjYXNlICdudW1iZXItc3R5bGUnOlxuXHRcdFx0XHRcdGNhc2UgJ2RhdGUtc3R5bGUnOlxuXHRcdFx0XHRcdGNhc2UgJ3RpbWUtc3R5bGUnOlxuXHRcdFx0XHRcdFx0TkYgKz0gc3RyLnNsaWNlKHBpZHgsIFJuLmluZGV4KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgcGlkeCA9IFJuLmluZGV4ICsgUm5bMF0ubGVuZ3RoO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnbmFtZWQtcmFuZ2UnOiAvLyA5LjQuMTIgPHRhYmxlOm5hbWVkLXJhbmdlPlxuXHRcdFx0XHR0YWcgPSBwYXJzZXhtbHRhZyhSblswXSwgZmFsc2UpO1xuXHRcdFx0XHRfUmVmID0gb2RzX3RvX2NzZl8zRCh0YWdbJ2NlbGwtcmFuZ2UtYWRkcmVzcyddKTtcblx0XHRcdFx0dmFyIG5yYW5nZSA9ICh7TmFtZTp0YWcubmFtZSwgUmVmOl9SZWZbMF0gKyAnIScgKyBfUmVmWzFdfS8qOmFueSovKTtcblx0XHRcdFx0aWYoaW50YWJsZSkgbnJhbmdlLlNoZWV0ID0gU2hlZXROYW1lcy5sZW5ndGg7XG5cdFx0XHRcdFdCLk5hbWVzLnB1c2gobnJhbmdlKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ3RleHQtY29udGVudCc6IGJyZWFrOyAvLyAxNi4yNy4yNyA8bnVtYmVyOnRleHQtY29udGVudD5cblx0XHRcdGNhc2UgJ3RleHQtcHJvcGVydGllcyc6IGJyZWFrOyAvLyAxNi4yNy4yNyA8c3R5bGU6dGV4dC1wcm9wZXJ0aWVzPlxuXHRcdFx0Y2FzZSAnZW1iZWRkZWQtdGV4dCc6IGJyZWFrOyAvLyAxNi4yNy40IDxudW1iZXI6ZW1iZWRkZWQtdGV4dD5cblxuXHRcdFx0Y2FzZSAnYm9keSc6IGNhc2UgJ+eUteWtkOihqOagvCc6IGJyZWFrOyAvLyAzLjMgMTYuOS42IDE5LjcyNi4zXG5cblx0XHRcdGNhc2UgJ2Zvcm1zJzogYnJlYWs7IC8vIDEyLjI1LjIgMTMuMlxuXHRcdFx0Y2FzZSAndGFibGUtY29sdW1uJzogYnJlYWs7IC8vIDkuMS42IDx0YWJsZTp0YWJsZS1jb2x1bW4+XG5cdFx0XHRjYXNlICd0YWJsZS1oZWFkZXItcm93cyc6IGJyZWFrOyAvLyA5LjEuNyA8dGFibGU6dGFibGUtaGVhZGVyLXJvd3M+XG5cdFx0XHRjYXNlICd0YWJsZS1yb3dzJzogYnJlYWs7IC8vIDkuMS4xMiA8dGFibGU6dGFibGUtcm93cz5cblx0XHRcdC8qIFRPRE86IG91dGxpbmUgbGV2ZWxzICovXG5cdFx0XHRjYXNlICd0YWJsZS1jb2x1bW4tZ3JvdXAnOiBicmVhazsgLy8gOS4xLjEwIDx0YWJsZTp0YWJsZS1jb2x1bW4tZ3JvdXA+XG5cdFx0XHRjYXNlICd0YWJsZS1oZWFkZXItY29sdW1ucyc6IGJyZWFrOyAvLyA5LjEuMTEgPHRhYmxlOnRhYmxlLWhlYWRlci1jb2x1bW5zPlxuXHRcdFx0Y2FzZSAndGFibGUtY29sdW1ucyc6IGJyZWFrOyAvLyA5LjEuMTIgPHRhYmxlOnRhYmxlLWNvbHVtbnM+XG5cblx0XHRcdGNhc2UgJ251bGwtZGF0ZSc6IGJyZWFrOyAvLyA5LjQuMiA8dGFibGU6bnVsbC1kYXRlPiBUT0RPOiBkYXRlMTkwNFxuXG5cdFx0XHRjYXNlICdncmFwaGljLXByb3BlcnRpZXMnOiBicmVhazsgLy8gMTcuMjEgPHN0eWxlOmdyYXBoaWMtcHJvcGVydGllcz5cblx0XHRcdGNhc2UgJ2NhbGN1bGF0aW9uLXNldHRpbmdzJzogYnJlYWs7IC8vIDkuNC4xIDx0YWJsZTpjYWxjdWxhdGlvbi1zZXR0aW5ncz5cblx0XHRcdGNhc2UgJ25hbWVkLWV4cHJlc3Npb25zJzogYnJlYWs7IC8vIDkuNC4xMSA8dGFibGU6bmFtZWQtZXhwcmVzc2lvbnM+XG5cdFx0XHRjYXNlICdsYWJlbC1yYW5nZSc6IGJyZWFrOyAvLyA5LjQuOSA8dGFibGU6bGFiZWwtcmFuZ2U+XG5cdFx0XHRjYXNlICdsYWJlbC1yYW5nZXMnOiBicmVhazsgLy8gOS40LjEwIDx0YWJsZTpsYWJlbC1yYW5nZXM+XG5cdFx0XHRjYXNlICduYW1lZC1leHByZXNzaW9uJzogYnJlYWs7IC8vIDkuNC4xMyA8dGFibGU6bmFtZWQtZXhwcmVzc2lvbj5cblx0XHRcdGNhc2UgJ3NvcnQnOiBicmVhazsgLy8gOS40LjE5IDx0YWJsZTpzb3J0PlxuXHRcdFx0Y2FzZSAnc29ydC1ieSc6IGJyZWFrOyAvLyA5LjQuMjAgPHRhYmxlOnNvcnQtYnk+XG5cdFx0XHRjYXNlICdzb3J0LWdyb3Vwcyc6IGJyZWFrOyAvLyA5LjQuMjIgPHRhYmxlOnNvcnQtZ3JvdXBzPlxuXG5cdFx0XHRjYXNlICd0YWInOiBicmVhazsgLy8gNi4xLjQgPHRleHQ6dGFiPlxuXHRcdFx0Y2FzZSAnbGluZS1icmVhayc6IGJyZWFrOyAvLyA2LjEuNSA8dGV4dDpsaW5lLWJyZWFrPlxuXHRcdFx0Y2FzZSAnc3Bhbic6IGJyZWFrOyAvLyA2LjEuNyA8dGV4dDpzcGFuPlxuXHRcdFx0Y2FzZSAncCc6IGNhc2UgJ+aWh+acrOS4sic6IC8vIDUuMS4zIDx0ZXh0OnA+XG5cdFx0XHRcdGlmKFsnbWFzdGVyLXN0eWxlcyddLmluZGV4T2Yoc3RhdGVbc3RhdGUubGVuZ3RoLTFdWzBdKSA+IC0xKSBicmVhaztcblx0XHRcdFx0aWYoUm5bMV09PT0nLycgJiYgKCFjdGFnIHx8ICFjdGFnWydzdHJpbmctdmFsdWUnXSkpIHtcblx0XHRcdFx0XHR2YXIgcHRwID0gcGFyc2VfdGV4dF9wKHN0ci5zbGljZSh0ZXh0cGlkeCxSbi5pbmRleCksIHRleHRwdGFnKTtcblx0XHRcdFx0XHR0ZXh0cCA9ICh0ZXh0cC5sZW5ndGggPiAwID8gdGV4dHAgKyBcIlxcblwiIDogXCJcIikgKyBwdHBbMF07XG5cdFx0XHRcdH0gZWxzZSB7IHRleHRwdGFnID0gcGFyc2V4bWx0YWcoUm5bMF0sIGZhbHNlKTsgdGV4dHBpZHggPSBSbi5pbmRleCArIFJuWzBdLmxlbmd0aDsgfVxuXHRcdFx0XHRicmVhazsgLy8gPHRleHQ6cD5cblx0XHRcdGNhc2UgJ3MnOiBicmVhazsgLy8gPHRleHQ6cz5cblxuXHRcdFx0Y2FzZSAnZGF0YWJhc2UtcmFuZ2UnOiAvLyA5LjQuMTUgPHRhYmxlOmRhdGFiYXNlLXJhbmdlPlxuXHRcdFx0XHRpZihSblsxXT09PScvJykgYnJlYWs7XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0X1JlZiA9IG9kc190b19jc2ZfM0QocGFyc2V4bWx0YWcoUm5bMF0pWyd0YXJnZXQtcmFuZ2UtYWRkcmVzcyddKTtcblx0XHRcdFx0XHRTaGVldHNbX1JlZlswXV1bJyFhdXRvZmlsdGVyJ10gPSB7IHJlZjpfUmVmWzFdIH07XG5cdFx0XHRcdH0gY2F0Y2goZSkgey8qIGVtcHR5ICovfVxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnZGF0ZSc6IGJyZWFrOyAvLyA8KjpkYXRlPlxuXG5cdFx0XHRjYXNlICdvYmplY3QnOiBicmVhazsgLy8gMTAuNC42LjIgPGRyYXc6b2JqZWN0PlxuXHRcdFx0Y2FzZSAndGl0bGUnOiBjYXNlICfmoIfpopgnOiBicmVhazsgLy8gPCo6dGl0bGU+IE9SIDx1b2Y65qCH6aKYPlxuXHRcdFx0Y2FzZSAnZGVzYyc6IGJyZWFrOyAvLyA8KjpkZXNjPlxuXHRcdFx0Y2FzZSAnYmluYXJ5LWRhdGEnOiBicmVhazsgLy8gMTAuNC41IFRPRE86IGI2NCBibG9iXG5cblx0XHRcdC8qIDkuMiBBZHZhbmNlZCBUYWJsZXMgKi9cblx0XHRcdGNhc2UgJ3RhYmxlLXNvdXJjZSc6IGJyZWFrOyAvLyA5LjIuNlxuXHRcdFx0Y2FzZSAnc2NlbmFyaW8nOiBicmVhazsgLy8gOS4yLjZcblxuXHRcdFx0Y2FzZSAnaXRlcmF0aW9uJzogYnJlYWs7IC8vIDkuNC4zIDx0YWJsZTppdGVyYXRpb24+XG5cdFx0XHRjYXNlICdjb250ZW50LXZhbGlkYXRpb25zJzogYnJlYWs7IC8vIDkuNC40IDx0YWJsZTpcblx0XHRcdGNhc2UgJ2NvbnRlbnQtdmFsaWRhdGlvbic6IGJyZWFrOyAvLyA5LjQuNSA8dGFibGU6XG5cdFx0XHRjYXNlICdoZWxwLW1lc3NhZ2UnOiBicmVhazsgLy8gOS40LjYgPHRhYmxlOlxuXHRcdFx0Y2FzZSAnZXJyb3ItbWVzc2FnZSc6IGJyZWFrOyAvLyA5LjQuNyA8dGFibGU6XG5cdFx0XHRjYXNlICdkYXRhYmFzZS1yYW5nZXMnOiBicmVhazsgLy8gOS40LjE0IDx0YWJsZTpkYXRhYmFzZS1yYW5nZXM+XG5cdFx0XHRjYXNlICdmaWx0ZXInOiBicmVhazsgLy8gOS41LjIgPHRhYmxlOmZpbHRlcj5cblx0XHRcdGNhc2UgJ2ZpbHRlci1hbmQnOiBicmVhazsgLy8gOS41LjMgPHRhYmxlOmZpbHRlci1hbmQ+XG5cdFx0XHRjYXNlICdmaWx0ZXItb3InOiBicmVhazsgLy8gOS41LjQgPHRhYmxlOmZpbHRlci1vcj5cblx0XHRcdGNhc2UgJ2ZpbHRlci1jb25kaXRpb24nOiBicmVhazsgLy8gOS41LjUgPHRhYmxlOmZpbHRlci1jb25kaXRpb24+XG5cblx0XHRcdGNhc2UgJ2xpc3QtbGV2ZWwtc3R5bGUtYnVsbGV0JzogYnJlYWs7IC8vIDE2LjMxIDx0ZXh0OlxuXHRcdFx0Y2FzZSAnbGlzdC1sZXZlbC1zdHlsZS1udW1iZXInOiBicmVhazsgLy8gMTYuMzIgPHRleHQ6XG5cdFx0XHRjYXNlICdsaXN0LWxldmVsLXByb3BlcnRpZXMnOiBicmVhazsgLy8gMTcuMTkgPHN0eWxlOlxuXG5cdFx0XHQvKiA3LjMgRG9jdW1lbnQgRmllbGRzICovXG5cdFx0XHRjYXNlICdzZW5kZXItZmlyc3RuYW1lJzogLy8gNy4zLjYuMlxuXHRcdFx0Y2FzZSAnc2VuZGVyLWxhc3RuYW1lJzogLy8gNy4zLjYuM1xuXHRcdFx0Y2FzZSAnc2VuZGVyLWluaXRpYWxzJzogLy8gNy4zLjYuNFxuXHRcdFx0Y2FzZSAnc2VuZGVyLXRpdGxlJzogLy8gNy4zLjYuNVxuXHRcdFx0Y2FzZSAnc2VuZGVyLXBvc2l0aW9uJzogLy8gNy4zLjYuNlxuXHRcdFx0Y2FzZSAnc2VuZGVyLWVtYWlsJzogLy8gNy4zLjYuN1xuXHRcdFx0Y2FzZSAnc2VuZGVyLXBob25lLXByaXZhdGUnOiAvLyA3LjMuNi44XG5cdFx0XHRjYXNlICdzZW5kZXItZmF4JzogLy8gNy4zLjYuOVxuXHRcdFx0Y2FzZSAnc2VuZGVyLWNvbXBhbnknOiAvLyA3LjMuNi4xMFxuXHRcdFx0Y2FzZSAnc2VuZGVyLXBob25lLXdvcmsnOiAvLyA3LjMuNi4xMVxuXHRcdFx0Y2FzZSAnc2VuZGVyLXN0cmVldCc6IC8vIDcuMy42LjEyXG5cdFx0XHRjYXNlICdzZW5kZXItY2l0eSc6IC8vIDcuMy42LjEzXG5cdFx0XHRjYXNlICdzZW5kZXItcG9zdGFsLWNvZGUnOiAvLyA3LjMuNi4xNFxuXHRcdFx0Y2FzZSAnc2VuZGVyLWNvdW50cnknOiAvLyA3LjMuNi4xNVxuXHRcdFx0Y2FzZSAnc2VuZGVyLXN0YXRlLW9yLXByb3ZpbmNlJzogLy8gNy4zLjYuMTZcblx0XHRcdGNhc2UgJ2F1dGhvci1uYW1lJzogLy8gNy4zLjcuMVxuXHRcdFx0Y2FzZSAnYXV0aG9yLWluaXRpYWxzJzogLy8gNy4zLjcuMlxuXHRcdFx0Y2FzZSAnY2hhcHRlcic6IC8vIDcuMy44XG5cdFx0XHRjYXNlICdmaWxlLW5hbWUnOiAvLyA3LjMuOVxuXHRcdFx0Y2FzZSAndGVtcGxhdGUtbmFtZSc6IC8vIDcuMy45XG5cdFx0XHRjYXNlICdzaGVldC1uYW1lJzogLy8gNy4zLjlcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ2V2ZW50LWxpc3RlbmVyJzpcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHQvKiBUT0RPOiBGT0RTIFByb3BlcnRpZXMgKi9cblx0XHRcdGNhc2UgJ2luaXRpYWwtY3JlYXRvcic6XG5cdFx0XHRjYXNlICdjcmVhdGlvbi1kYXRlJzpcblx0XHRcdGNhc2UgJ3ByaW50LWRhdGUnOlxuXHRcdFx0Y2FzZSAnZ2VuZXJhdG9yJzpcblx0XHRcdGNhc2UgJ2RvY3VtZW50LXN0YXRpc3RpYyc6XG5cdFx0XHRjYXNlICd1c2VyLWRlZmluZWQnOlxuXHRcdFx0Y2FzZSAnZWRpdGluZy1kdXJhdGlvbic6XG5cdFx0XHRjYXNlICdlZGl0aW5nLWN5Y2xlcyc6XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHQvKiBUT0RPOiBGT0RTIENvbmZpZyAqL1xuXHRcdFx0Y2FzZSAnY29uZmlnLWl0ZW0nOlxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0LyogVE9ETzogc3R5bGUgdG9rZW5zICovXG5cdFx0XHRjYXNlICdwYWdlLW51bWJlcic6IGJyZWFrOyAvLyBUT0RPIDx0ZXh0OnBhZ2UtbnVtYmVyPlxuXHRcdFx0Y2FzZSAncGFnZS1jb3VudCc6IGJyZWFrOyAvLyBUT0RPIDx0ZXh0OnBhZ2UtY291bnQ+XG5cdFx0XHRjYXNlICd0aW1lJzogYnJlYWs7IC8vIFRPRE8gPHRleHQ6dGltZT5cblxuXHRcdFx0LyogOS4zIEFkdmFuY2VkIFRhYmxlIENlbGxzICovXG5cdFx0XHRjYXNlICdjZWxsLXJhbmdlLXNvdXJjZSc6IGJyZWFrOyAvLyA5LjMuMSA8dGFibGU6XG5cdFx0XHRjYXNlICdkZXRlY3RpdmUnOiBicmVhazsgLy8gOS4zLjIgPHRhYmxlOlxuXHRcdFx0Y2FzZSAnb3BlcmF0aW9uJzogYnJlYWs7IC8vIDkuMy4zIDx0YWJsZTpcblx0XHRcdGNhc2UgJ2hpZ2hsaWdodGVkLXJhbmdlJzogYnJlYWs7IC8vIDkuMy40IDx0YWJsZTpcblxuXHRcdFx0LyogOS42IERhdGEgUGlsb3QgVGFibGVzIDx0YWJsZTogKi9cblx0XHRcdGNhc2UgJ2RhdGEtcGlsb3QtdGFibGUnOiAvLyA5LjYuM1xuXHRcdFx0Y2FzZSAnc291cmNlLWNlbGwtcmFuZ2UnOiAvLyA5LjYuNVxuXHRcdFx0Y2FzZSAnc291cmNlLXNlcnZpY2UnOiAvLyA5LjYuNlxuXHRcdFx0Y2FzZSAnZGF0YS1waWxvdC1maWVsZCc6IC8vIDkuNi43XG5cdFx0XHRjYXNlICdkYXRhLXBpbG90LWxldmVsJzogLy8gOS42Ljhcblx0XHRcdGNhc2UgJ2RhdGEtcGlsb3Qtc3VidG90YWxzJzogLy8gOS42Ljlcblx0XHRcdGNhc2UgJ2RhdGEtcGlsb3Qtc3VidG90YWwnOiAvLyA5LjYuMTBcblx0XHRcdGNhc2UgJ2RhdGEtcGlsb3QtbWVtYmVycyc6IC8vIDkuNi4xMVxuXHRcdFx0Y2FzZSAnZGF0YS1waWxvdC1tZW1iZXInOiAvLyA5LjYuMTJcblx0XHRcdGNhc2UgJ2RhdGEtcGlsb3QtZGlzcGxheS1pbmZvJzogLy8gOS42LjEzXG5cdFx0XHRjYXNlICdkYXRhLXBpbG90LXNvcnQtaW5mbyc6IC8vIDkuNi4xNFxuXHRcdFx0Y2FzZSAnZGF0YS1waWxvdC1sYXlvdXQtaW5mbyc6IC8vIDkuNi4xNVxuXHRcdFx0Y2FzZSAnZGF0YS1waWxvdC1maWVsZC1yZWZlcmVuY2UnOiAvLyA5LjYuMTZcblx0XHRcdGNhc2UgJ2RhdGEtcGlsb3QtZ3JvdXBzJzogLy8gOS42LjE3XG5cdFx0XHRjYXNlICdkYXRhLXBpbG90LWdyb3VwJzogLy8gOS42LjE4XG5cdFx0XHRjYXNlICdkYXRhLXBpbG90LWdyb3VwLW1lbWJlcic6IC8vIDkuNi4xOVxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0LyogMTAuMyBEcmF3aW5nIFNoYXBlcyAqL1xuXHRcdFx0Y2FzZSAncmVjdCc6IC8vIDEwLjMuMlxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0LyogMTQuNiBEREUgQ29ubmVjdGlvbnMgKi9cblx0XHRcdGNhc2UgJ2RkZS1jb25uZWN0aW9uLWRlY2xzJzogLy8gMTQuNi4yIDx0ZXh0OlxuXHRcdFx0Y2FzZSAnZGRlLWNvbm5lY3Rpb24tZGVjbCc6IC8vIDE0LjYuMyA8dGV4dDpcblx0XHRcdGNhc2UgJ2RkZS1saW5rJzogLy8gMTQuNi40IDx0YWJsZTpcblx0XHRcdGNhc2UgJ2RkZS1zb3VyY2UnOiAvLyAxNC42LjUgPG9mZmljZTpcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ3Byb3BlcnRpZXMnOiBicmVhazsgLy8gMTMuNyA8Zm9ybTpwcm9wZXJ0aWVzPlxuXHRcdFx0Y2FzZSAncHJvcGVydHknOiBicmVhazsgLy8gMTMuOCA8Zm9ybTpwcm9wZXJ0eT5cblxuXHRcdFx0Y2FzZSAnYSc6IC8vIDYuMS44IGh5cGVybGlua1xuXHRcdFx0XHRpZihSblsxXSE9PSAnLycpIHtcblx0XHRcdFx0XHRhdGFnID0gcGFyc2V4bWx0YWcoUm5bMF0sIGZhbHNlKTtcblx0XHRcdFx0XHRpZighYXRhZy5ocmVmKSBicmVhaztcblx0XHRcdFx0XHRhdGFnLlRhcmdldCA9IHVuZXNjYXBleG1sKGF0YWcuaHJlZik7IGRlbGV0ZSBhdGFnLmhyZWY7XG5cdFx0XHRcdFx0aWYoYXRhZy5UYXJnZXQuY2hhckF0KDApID09IFwiI1wiICYmIGF0YWcuVGFyZ2V0LmluZGV4T2YoXCIuXCIpID4gLTEpIHtcblx0XHRcdFx0XHRcdF9SZWYgPSBvZHNfdG9fY3NmXzNEKGF0YWcuVGFyZ2V0LnNsaWNlKDEpKTtcblx0XHRcdFx0XHRcdGF0YWcuVGFyZ2V0ID0gXCIjXCIgKyBfUmVmWzBdICsgXCIhXCIgKyBfUmVmWzFdO1xuXHRcdFx0XHRcdH0gZWxzZSBpZihhdGFnLlRhcmdldC5tYXRjaCgvXlxcLlxcLltcXFxcXFwvXS8pKSBhdGFnLlRhcmdldCA9IGF0YWcuVGFyZ2V0LnNsaWNlKDMpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHQvKiBub24tc3RhbmRhcmQgKi9cblx0XHRcdGNhc2UgJ3RhYmxlLXByb3RlY3Rpb24nOiBicmVhaztcblx0XHRcdGNhc2UgJ2RhdGEtcGlsb3QtZ3JhbmQtdG90YWwnOiBicmVhazsgLy8gPHRhYmxlOlxuXHRcdFx0Y2FzZSAnb2ZmaWNlLWRvY3VtZW50LWNvbW1vbi1hdHRycyc6IGJyZWFrOyAvLyBiYXJlXG5cdFx0XHRkZWZhdWx0OiBzd2l0Y2goUm5bMl0pIHtcblx0XHRcdFx0Y2FzZSAnZGM6JzogICAgICAgLy8gVE9ETzogcHJvcGVydGllc1xuXHRcdFx0XHRjYXNlICdjYWxjZXh0Oic6ICAvLyBpZ25vcmUgdW5kb2N1bWVudGVkIGV4dGVuc2lvbnNcblx0XHRcdFx0Y2FzZSAnbG9leHQ6JzogICAgLy8gaWdub3JlIHVuZG9jdW1lbnRlZCBleHRlbnNpb25zXG5cdFx0XHRcdGNhc2UgJ29vbzonOiAgICAgIC8vIGlnbm9yZSB1bmRvY3VtZW50ZWQgZXh0ZW5zaW9uc1xuXHRcdFx0XHRjYXNlICdjaGFydG9vbzonOiAvLyBpZ25vcmUgdW5kb2N1bWVudGVkIGV4dGVuc2lvbnNcblx0XHRcdFx0Y2FzZSAnZHJhdzonOiAgICAgLy8gVE9ETzogZHJhd2luZ1xuXHRcdFx0XHRjYXNlICdzdHlsZTonOiAgICAvLyBUT0RPOiBzdHlsZXNcblx0XHRcdFx0Y2FzZSAnY2hhcnQ6JzogICAgLy8gVE9ETzogY2hhcnRzXG5cdFx0XHRcdGNhc2UgJ2Zvcm06JzogICAgIC8vIFRPRE86IGZvcm1zXG5cdFx0XHRcdGNhc2UgJ3VvZjonOiAgICAgIC8vIFRPRE86IHVvZlxuXHRcdFx0XHRjYXNlICfooag6JzogICAgICAgLy8gVE9ETzogdW9mXG5cdFx0XHRcdGNhc2UgJ+WtlzonOiAgICAgICAvLyBUT0RPOiB1b2Zcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDogaWYob3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcihSbik7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHZhciBvdXQvKjpXb3JrYm9vayovID0gKHtcblx0XHRcdFNoZWV0czogU2hlZXRzLFxuXHRcdFx0U2hlZXROYW1lczogU2hlZXROYW1lcyxcblx0XHRcdFdvcmtib29rOiBXQlxuXHRcdH0vKjphbnkqLyk7XG5cdFx0aWYob3B0cy5ib29rU2hlZXRzKSBkZWxldGUgLyo6OigqL291dC8qOjogOmFueSkqLy5TaGVldHM7XG5cdFx0cmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gcGFyc2Vfb2RzKHppcC8qOlpJUEZpbGUqLywgb3B0cy8qOj9QYXJzZU9wdHMqLykvKjpXb3JrYm9vayovIHtcblx0b3B0cyA9IG9wdHMgfHwgKHt9Lyo6YW55Ki8pO1xuXHRpZihzYWZlZ2V0emlwZmlsZSh6aXAsICdNRVRBLUlORi9tYW5pZmVzdC54bWwnKSkgcGFyc2VfbWFuaWZlc3QoZ2V0emlwZGF0YSh6aXAsICdNRVRBLUlORi9tYW5pZmVzdC54bWwnKSwgb3B0cyk7XG5cdHZhciBjb250ZW50ID0gZ2V0emlwc3RyKHppcCwgJ2NvbnRlbnQueG1sJyk7XG5cdGlmKCFjb250ZW50KSB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIGNvbnRlbnQueG1sIGluIE9EUyAvIFVPRiBmaWxlXCIpO1xuXHR2YXIgd2IgPSBwYXJzZV9jb250ZW50X3htbCh1dGY4cmVhZChjb250ZW50KSwgb3B0cyk7XG5cdGlmKHNhZmVnZXR6aXBmaWxlKHppcCwgJ21ldGEueG1sJykpIHdiLlByb3BzID0gcGFyc2VfY29yZV9wcm9wcyhnZXR6aXBkYXRhKHppcCwgJ21ldGEueG1sJykpO1xuXHRyZXR1cm4gd2I7XG59XG5mdW5jdGlvbiBwYXJzZV9mb2RzKGRhdGEvKjpzdHJpbmcqLywgb3B0cy8qOj9QYXJzZU9wdHMqLykvKjpXb3JrYm9vayovIHtcblx0cmV0dXJuIHBhcnNlX2NvbnRlbnRfeG1sKGRhdGEsIG9wdHMpO1xufVxuXG4vKiBPcGVuRG9jdW1lbnQgKi9cbnZhciB3cml0ZV9zdHlsZXNfb2RzLyo6eyh3YjphbnksIG9wdHM6YW55KTpzdHJpbmd9Ki8gPSAvKiBAX19QVVJFX18gKi8oZnVuY3Rpb24oKSB7XG5cdHZhciBtYXN0ZXJfc3R5bGVzID0gW1xuXHRcdCc8b2ZmaWNlOm1hc3Rlci1zdHlsZXM+Jyxcblx0XHRcdCc8c3R5bGU6bWFzdGVyLXBhZ2Ugc3R5bGU6bmFtZT1cIm1wMVwiIHN0eWxlOnBhZ2UtbGF5b3V0LW5hbWU9XCJtcDFcIj4nLFxuXHRcdFx0XHQnPHN0eWxlOmhlYWRlci8+Jyxcblx0XHRcdFx0JzxzdHlsZTpoZWFkZXItbGVmdCBzdHlsZTpkaXNwbGF5PVwiZmFsc2VcIi8+Jyxcblx0XHRcdFx0JzxzdHlsZTpmb290ZXIvPicsXG5cdFx0XHRcdCc8c3R5bGU6Zm9vdGVyLWxlZnQgc3R5bGU6ZGlzcGxheT1cImZhbHNlXCIvPicsXG5cdFx0XHQnPC9zdHlsZTptYXN0ZXItcGFnZT4nLFxuXHRcdCc8L29mZmljZTptYXN0ZXItc3R5bGVzPidcblx0XS5qb2luKFwiXCIpO1xuXG5cdHZhciBwYXlsb2FkID0gJzxvZmZpY2U6ZG9jdW1lbnQtc3R5bGVzICcgKyB3eHRfaGVscGVyKHtcblx0XHQneG1sbnM6b2ZmaWNlJzogICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEuMFwiLFxuXHRcdCd4bWxuczp0YWJsZSc6ICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp0YWJsZToxLjBcIixcblx0XHQneG1sbnM6c3R5bGUnOiAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6c3R5bGU6MS4wXCIsXG5cdFx0J3htbG5zOnRleHQnOiAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnRleHQ6MS4wXCIsXG5cdFx0J3htbG5zOmRyYXcnOiAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmRyYXdpbmc6MS4wXCIsXG5cdFx0J3htbG5zOmZvJzogICAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnhzbC1mby1jb21wYXRpYmxlOjEuMFwiLFxuXHRcdCd4bWxuczp4bGluayc6ICAgIFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLFxuXHRcdCd4bWxuczpkYyc6ICAgICAgIFwiaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS9cIixcblx0XHQneG1sbnM6bnVtYmVyJzogICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6ZGF0YXN0eWxlOjEuMFwiLFxuXHRcdCd4bWxuczpzdmcnOiAgICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpzdmctY29tcGF0aWJsZToxLjBcIixcblx0XHQneG1sbnM6b2YnOiAgICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2Y6MS4yXCIsXG5cdFx0J29mZmljZTp2ZXJzaW9uJzogXCIxLjJcIlxuXHR9KSArICc+JyArIG1hc3Rlcl9zdHlsZXMgKyAnPC9vZmZpY2U6ZG9jdW1lbnQtc3R5bGVzPic7XG5cblx0cmV0dXJuIGZ1bmN0aW9uIHdzbygvKjo6d2IsIG9wdHMqLykge1xuXHRcdHJldHVybiBYTUxfSEVBREVSICsgcGF5bG9hZDtcblx0fTtcbn0pKCk7XG52YXIgd3JpdGVfY29udGVudF9vZHMvKjp7KHdiOmFueSwgb3B0czphbnkpOnN0cmluZ30qLyA9IC8qIEBfX1BVUkVfXyAqLyhmdW5jdGlvbigpIHtcblx0LyogNi4xLjIgV2hpdGUgU3BhY2UgQ2hhcmFjdGVycyAqL1xuXHR2YXIgd3JpdGVfdGV4dF9wID0gZnVuY3Rpb24odGV4dC8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0XHRyZXR1cm4gZXNjYXBleG1sKHRleHQpXG5cdFx0XHQucmVwbGFjZSgvICArL2csIGZ1bmN0aW9uKCQkKXtyZXR1cm4gJzx0ZXh0OnMgdGV4dDpjPVwiJyskJC5sZW5ndGgrJ1wiLz4nO30pXG5cdFx0XHQucmVwbGFjZSgvXFx0L2csIFwiPHRleHQ6dGFiLz5cIilcblx0XHRcdC5yZXBsYWNlKC9cXG4vZywgXCI8L3RleHQ6cD48dGV4dDpwPlwiKVxuXHRcdFx0LnJlcGxhY2UoL14gLywgXCI8dGV4dDpzLz5cIikucmVwbGFjZSgvICQvLCBcIjx0ZXh0OnMvPlwiKTtcblx0fTtcblxuXHR2YXIgbnVsbF9jZWxsX3htbCA9ICcgICAgICAgICAgPHRhYmxlOnRhYmxlLWNlbGwgLz5cXG4nO1xuXHR2YXIgY292ZXJlZF9jZWxsX3htbCA9ICcgICAgICAgICAgPHRhYmxlOmNvdmVyZWQtdGFibGUtY2VsbC8+XFxuJztcblx0dmFyIHdyaXRlX3dzID0gZnVuY3Rpb24od3MsIHdiLyo6V29ya2Jvb2sqLywgaS8qOm51bWJlciovLyo6Oiwgb3B0cyovKS8qOnN0cmluZyovIHtcblx0XHQvKiBTZWN0aW9uIDkgVGFibGVzICovXG5cdFx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0XHRvLnB1c2goJyAgICAgIDx0YWJsZTp0YWJsZSB0YWJsZTpuYW1lPVwiJyArIGVzY2FwZXhtbCh3Yi5TaGVldE5hbWVzW2ldKSArICdcIiB0YWJsZTpzdHlsZS1uYW1lPVwidGExXCI+XFxuJyk7XG5cdFx0dmFyIFI9MCxDPTAsIHJhbmdlID0gZGVjb2RlX3JhbmdlKHdzWychcmVmJ118fFwiQTFcIik7XG5cdFx0dmFyIG1hcnIvKjpBcnJheTxSYW5nZT4qLyA9IHdzWychbWVyZ2VzJ10gfHwgW10sIG1pID0gMDtcblx0XHR2YXIgZGVuc2UgPSBBcnJheS5pc0FycmF5KHdzKTtcblx0XHRpZih3c1tcIiFjb2xzXCJdKSB7XG5cdFx0XHRmb3IoQyA9IDA7IEMgPD0gcmFuZ2UuZS5jOyArK0MpIG8ucHVzaCgnICAgICAgICA8dGFibGU6dGFibGUtY29sdW1uJyArICh3c1tcIiFjb2xzXCJdW0NdID8gJyB0YWJsZTpzdHlsZS1uYW1lPVwiY28nICsgd3NbXCIhY29sc1wiXVtDXS5vZHMgKyAnXCInIDogJycpICsgJz48L3RhYmxlOnRhYmxlLWNvbHVtbj5cXG4nKTtcblx0XHR9XG5cdFx0dmFyIEggPSBcIlwiLCBST1dTID0gd3NbXCIhcm93c1wiXXx8W107XG5cdFx0Zm9yKFIgPSAwOyBSIDwgcmFuZ2Uucy5yOyArK1IpIHtcblx0XHRcdEggPSBST1dTW1JdID8gJyB0YWJsZTpzdHlsZS1uYW1lPVwicm8nICsgUk9XU1tSXS5vZHMgKyAnXCInIDogXCJcIjtcblx0XHRcdG8ucHVzaCgnICAgICAgICA8dGFibGU6dGFibGUtcm93JyArIEggKyAnPjwvdGFibGU6dGFibGUtcm93PlxcbicpO1xuXHRcdH1cblx0XHRmb3IoOyBSIDw9IHJhbmdlLmUucjsgKytSKSB7XG5cdFx0XHRIID0gUk9XU1tSXSA/ICcgdGFibGU6c3R5bGUtbmFtZT1cInJvJyArIFJPV1NbUl0ub2RzICsgJ1wiJyA6IFwiXCI7XG5cdFx0XHRvLnB1c2goJyAgICAgICAgPHRhYmxlOnRhYmxlLXJvdycgKyBIICsgJz5cXG4nKTtcblx0XHRcdGZvcihDPTA7IEMgPCByYW5nZS5zLmM7ICsrQykgby5wdXNoKG51bGxfY2VsbF94bWwpO1xuXHRcdFx0Zm9yKDsgQyA8PSByYW5nZS5lLmM7ICsrQykge1xuXHRcdFx0XHR2YXIgc2tpcCA9IGZhbHNlLCBjdCA9IHt9LCB0ZXh0cCA9IFwiXCI7XG5cdFx0XHRcdGZvcihtaSA9IDA7IG1pICE9IG1hcnIubGVuZ3RoOyArK21pKSB7XG5cdFx0XHRcdFx0aWYobWFyclttaV0ucy5jID4gQykgY29udGludWU7XG5cdFx0XHRcdFx0aWYobWFyclttaV0ucy5yID4gUikgY29udGludWU7XG5cdFx0XHRcdFx0aWYobWFyclttaV0uZS5jIDwgQykgY29udGludWU7XG5cdFx0XHRcdFx0aWYobWFyclttaV0uZS5yIDwgUikgY29udGludWU7XG5cdFx0XHRcdFx0aWYobWFyclttaV0ucy5jICE9IEMgfHwgbWFyclttaV0ucy5yICE9IFIpIHNraXAgPSB0cnVlO1xuXHRcdFx0XHRcdGN0Wyd0YWJsZTpudW1iZXItY29sdW1ucy1zcGFubmVkJ10gPSAobWFyclttaV0uZS5jIC0gbWFyclttaV0ucy5jICsgMSk7XG5cdFx0XHRcdFx0Y3RbJ3RhYmxlOm51bWJlci1yb3dzLXNwYW5uZWQnXSA9ICAgIChtYXJyW21pXS5lLnIgLSBtYXJyW21pXS5zLnIgKyAxKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRpZihza2lwKSB7IG8ucHVzaChjb3ZlcmVkX2NlbGxfeG1sKTsgY29udGludWU7IH1cblx0XHRcdFx0dmFyIHJlZiA9IGVuY29kZV9jZWxsKHtyOlIsIGM6Q30pLCBjZWxsID0gZGVuc2UgPyAod3NbUl18fFtdKVtDXTogd3NbcmVmXTtcblx0XHRcdFx0aWYoY2VsbCAmJiBjZWxsLmYpIHtcblx0XHRcdFx0XHRjdFsndGFibGU6Zm9ybXVsYSddID0gZXNjYXBleG1sKGNzZl90b19vZHNfZm9ybXVsYShjZWxsLmYpKTtcblx0XHRcdFx0XHRpZihjZWxsLkYpIHtcblx0XHRcdFx0XHRcdGlmKGNlbGwuRi5zbGljZSgwLCByZWYubGVuZ3RoKSA9PSByZWYpIHtcblx0XHRcdFx0XHRcdFx0dmFyIF9GcmVmID0gZGVjb2RlX3JhbmdlKGNlbGwuRik7XG5cdFx0XHRcdFx0XHRcdGN0Wyd0YWJsZTpudW1iZXItbWF0cml4LWNvbHVtbnMtc3Bhbm5lZCddID0gKF9GcmVmLmUuYyAtIF9GcmVmLnMuYyArIDEpO1xuXHRcdFx0XHRcdFx0XHRjdFsndGFibGU6bnVtYmVyLW1hdHJpeC1yb3dzLXNwYW5uZWQnXSA9ICAgIChfRnJlZi5lLnIgLSBfRnJlZi5zLnIgKyAxKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYoIWNlbGwpIHsgby5wdXNoKG51bGxfY2VsbF94bWwpOyBjb250aW51ZTsgfVxuXHRcdFx0XHRzd2l0Y2goY2VsbC50KSB7XG5cdFx0XHRcdFx0Y2FzZSAnYic6XG5cdFx0XHRcdFx0XHR0ZXh0cCA9IChjZWxsLnYgPyAnVFJVRScgOiAnRkFMU0UnKTtcblx0XHRcdFx0XHRcdGN0WydvZmZpY2U6dmFsdWUtdHlwZSddID0gXCJib29sZWFuXCI7XG5cdFx0XHRcdFx0XHRjdFsnb2ZmaWNlOmJvb2xlYW4tdmFsdWUnXSA9IChjZWxsLnYgPyAndHJ1ZScgOiAnZmFsc2UnKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ24nOlxuXHRcdFx0XHRcdFx0dGV4dHAgPSAoY2VsbC53fHxTdHJpbmcoY2VsbC52fHwwKSk7XG5cdFx0XHRcdFx0XHRjdFsnb2ZmaWNlOnZhbHVlLXR5cGUnXSA9IFwiZmxvYXRcIjtcblx0XHRcdFx0XHRcdGN0WydvZmZpY2U6dmFsdWUnXSA9IChjZWxsLnZ8fDApO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncyc6IGNhc2UgJ3N0cic6XG5cdFx0XHRcdFx0XHR0ZXh0cCA9IGNlbGwudiA9PSBudWxsID8gXCJcIiA6IGNlbGwudjtcblx0XHRcdFx0XHRcdGN0WydvZmZpY2U6dmFsdWUtdHlwZSddID0gXCJzdHJpbmdcIjtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2QnOlxuXHRcdFx0XHRcdFx0dGV4dHAgPSAoY2VsbC53fHwocGFyc2VEYXRlKGNlbGwudikudG9JU09TdHJpbmcoKSkpO1xuXHRcdFx0XHRcdFx0Y3RbJ29mZmljZTp2YWx1ZS10eXBlJ10gPSBcImRhdGVcIjtcblx0XHRcdFx0XHRcdGN0WydvZmZpY2U6ZGF0ZS12YWx1ZSddID0gKHBhcnNlRGF0ZShjZWxsLnYpLnRvSVNPU3RyaW5nKCkpO1xuXHRcdFx0XHRcdFx0Y3RbJ3RhYmxlOnN0eWxlLW5hbWUnXSA9IFwiY2UxXCI7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHQvL2Nhc2UgJ2UnOlxuXHRcdFx0XHRcdGRlZmF1bHQ6IG8ucHVzaChudWxsX2NlbGxfeG1sKTsgY29udGludWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0dmFyIHRleHRfcCA9IHdyaXRlX3RleHRfcCh0ZXh0cCk7XG5cdFx0XHRcdGlmKGNlbGwubCAmJiBjZWxsLmwuVGFyZ2V0KSB7XG5cdFx0XHRcdFx0dmFyIF90Z3QgPSBjZWxsLmwuVGFyZ2V0O1xuXHRcdFx0XHRcdF90Z3QgPSBfdGd0LmNoYXJBdCgwKSA9PSBcIiNcIiA/IFwiI1wiICsgY3NmX3RvX29kc18zRChfdGd0LnNsaWNlKDEpKSA6IF90Z3Q7XG5cdFx0XHRcdFx0Ly8gVE9ETzogY2hvb3NlIGNvcnJlY3QgcGFyZW50IHBhdGggZm9ybWF0IGJhc2VkIG9uIGxpbmsgZGVsaW1pdGVyc1xuXHRcdFx0XHRcdGlmKF90Z3QuY2hhckF0KDApICE9IFwiI1wiICYmICFfdGd0Lm1hdGNoKC9eXFx3KzovKSkgX3RndCA9ICcuLi8nICsgX3RndDtcblx0XHRcdFx0XHR0ZXh0X3AgPSB3cml0ZXh0YWcoJ3RleHQ6YScsIHRleHRfcCwgeyd4bGluazpocmVmJzogX3RndC5yZXBsYWNlKC8mL2csIFwiJmFtcDtcIil9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRvLnB1c2goJyAgICAgICAgICAnICsgd3JpdGV4dGFnKCd0YWJsZTp0YWJsZS1jZWxsJywgd3JpdGV4dGFnKCd0ZXh0OnAnLCB0ZXh0X3AsIHt9KSwgY3QpICsgJ1xcbicpO1xuXHRcdFx0fVxuXHRcdFx0by5wdXNoKCcgICAgICAgIDwvdGFibGU6dGFibGUtcm93PlxcbicpO1xuXHRcdH1cblx0XHRvLnB1c2goJyAgICAgIDwvdGFibGU6dGFibGU+XFxuJyk7XG5cdFx0cmV0dXJuIG8uam9pbihcIlwiKTtcblx0fTtcblxuXHR2YXIgd3JpdGVfYXV0b21hdGljX3N0eWxlc19vZHMgPSBmdW5jdGlvbihvLyo6QXJyYXk8c3RyaW5nPiovLCB3Yikge1xuXHRcdG8ucHVzaCgnIDxvZmZpY2U6YXV0b21hdGljLXN0eWxlcz5cXG4nKTtcblxuXHRcdG8ucHVzaCgnICA8bnVtYmVyOmRhdGUtc3R5bGUgc3R5bGU6bmFtZT1cIk4zN1wiIG51bWJlcjphdXRvbWF0aWMtb3JkZXI9XCJ0cnVlXCI+XFxuJyk7XG5cdFx0by5wdXNoKCcgICA8bnVtYmVyOm1vbnRoIG51bWJlcjpzdHlsZT1cImxvbmdcIi8+XFxuJyk7XG5cdFx0by5wdXNoKCcgICA8bnVtYmVyOnRleHQ+LzwvbnVtYmVyOnRleHQ+XFxuJyk7XG5cdFx0by5wdXNoKCcgICA8bnVtYmVyOmRheSBudW1iZXI6c3R5bGU9XCJsb25nXCIvPlxcbicpO1xuXHRcdG8ucHVzaCgnICAgPG51bWJlcjp0ZXh0Pi88L251bWJlcjp0ZXh0PlxcbicpO1xuXHRcdG8ucHVzaCgnICAgPG51bWJlcjp5ZWFyLz5cXG4nKTtcblx0XHRvLnB1c2goJyAgPC9udW1iZXI6ZGF0ZS1zdHlsZT5cXG4nKTtcblxuXHRcdC8qIGNvbHVtbiBzdHlsZXMgKi9cblx0XHR2YXIgY2lkeCA9IDA7XG5cdFx0d2IuU2hlZXROYW1lcy5tYXAoZnVuY3Rpb24obikgeyByZXR1cm4gd2IuU2hlZXRzW25dOyB9KS5mb3JFYWNoKGZ1bmN0aW9uKHdzKSB7XG5cdFx0XHRpZighd3MpIHJldHVybjtcblx0XHRcdGlmKHdzW1wiIWNvbHNcIl0pIHtcblx0XHRcdFx0Zm9yKHZhciBDID0gMDsgQyA8IHdzW1wiIWNvbHNcIl0ubGVuZ3RoOyArK0MpIGlmKHdzW1wiIWNvbHNcIl1bQ10pIHtcblx0XHRcdFx0XHR2YXIgY29sb2JqID0gd3NbXCIhY29sc1wiXVtDXTtcblx0XHRcdFx0XHRpZihjb2xvYmoud2lkdGggPT0gbnVsbCAmJiBjb2xvYmoud3B4ID09IG51bGwgJiYgY29sb2JqLndjaCA9PSBudWxsKSBjb250aW51ZTtcblx0XHRcdFx0XHRwcm9jZXNzX2NvbChjb2xvYmopO1xuXHRcdFx0XHRcdGNvbG9iai5vZHMgPSBjaWR4O1xuXHRcdFx0XHRcdHZhciB3ID0gd3NbXCIhY29sc1wiXVtDXS53cHggKyBcInB4XCI7XG5cdFx0XHRcdFx0by5wdXNoKCcgIDxzdHlsZTpzdHlsZSBzdHlsZTpuYW1lPVwiY28nICsgY2lkeCArICdcIiBzdHlsZTpmYW1pbHk9XCJ0YWJsZS1jb2x1bW5cIj5cXG4nKTtcblx0XHRcdFx0XHRvLnB1c2goJyAgIDxzdHlsZTp0YWJsZS1jb2x1bW4tcHJvcGVydGllcyBmbzpicmVhay1iZWZvcmU9XCJhdXRvXCIgc3R5bGU6Y29sdW1uLXdpZHRoPVwiJyArIHcgKyAnXCIvPlxcbicpO1xuXHRcdFx0XHRcdG8ucHVzaCgnICA8L3N0eWxlOnN0eWxlPlxcbicpO1xuXHRcdFx0XHRcdCsrY2lkeDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0Lyogcm93IHN0eWxlcyAqL1xuXHRcdHZhciByaWR4ID0gMDtcblx0XHR3Yi5TaGVldE5hbWVzLm1hcChmdW5jdGlvbihuKSB7IHJldHVybiB3Yi5TaGVldHNbbl07IH0pLmZvckVhY2goZnVuY3Rpb24od3MpIHtcblx0XHRcdGlmKCF3cykgcmV0dXJuO1xuXHRcdFx0aWYod3NbXCIhcm93c1wiXSkge1xuXHRcdFx0XHRmb3IodmFyIFIgPSAwOyBSIDwgd3NbXCIhcm93c1wiXS5sZW5ndGg7ICsrUikgaWYod3NbXCIhcm93c1wiXVtSXSkge1xuXHRcdFx0XHRcdHdzW1wiIXJvd3NcIl1bUl0ub2RzID0gcmlkeDtcblx0XHRcdFx0XHR2YXIgaCA9IHdzW1wiIXJvd3NcIl1bUl0uaHB4ICsgXCJweFwiO1xuXHRcdFx0XHRcdG8ucHVzaCgnICA8c3R5bGU6c3R5bGUgc3R5bGU6bmFtZT1cInJvJyArIHJpZHggKyAnXCIgc3R5bGU6ZmFtaWx5PVwidGFibGUtcm93XCI+XFxuJyk7XG5cdFx0XHRcdFx0by5wdXNoKCcgICA8c3R5bGU6dGFibGUtcm93LXByb3BlcnRpZXMgZm86YnJlYWstYmVmb3JlPVwiYXV0b1wiIHN0eWxlOnJvdy1oZWlnaHQ9XCInICsgaCArICdcIi8+XFxuJyk7XG5cdFx0XHRcdFx0by5wdXNoKCcgIDwvc3R5bGU6c3R5bGU+XFxuJyk7XG5cdFx0XHRcdFx0KytyaWR4O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHQvKiB0YWJsZSAqL1xuXHRcdG8ucHVzaCgnICA8c3R5bGU6c3R5bGUgc3R5bGU6bmFtZT1cInRhMVwiIHN0eWxlOmZhbWlseT1cInRhYmxlXCIgc3R5bGU6bWFzdGVyLXBhZ2UtbmFtZT1cIm1wMVwiPlxcbicpO1xuXHRcdG8ucHVzaCgnICAgPHN0eWxlOnRhYmxlLXByb3BlcnRpZXMgdGFibGU6ZGlzcGxheT1cInRydWVcIiBzdHlsZTp3cml0aW5nLW1vZGU9XCJsci10YlwiLz5cXG4nKTtcblx0XHRvLnB1c2goJyAgPC9zdHlsZTpzdHlsZT5cXG4nKTtcblxuXHRcdC8qIHRhYmxlIGNlbGxzLCB0ZXh0ICovXG5cdFx0by5wdXNoKCcgIDxzdHlsZTpzdHlsZSBzdHlsZTpuYW1lPVwiY2UxXCIgc3R5bGU6ZmFtaWx5PVwidGFibGUtY2VsbFwiIHN0eWxlOnBhcmVudC1zdHlsZS1uYW1lPVwiRGVmYXVsdFwiIHN0eWxlOmRhdGEtc3R5bGUtbmFtZT1cIk4zN1wiLz5cXG4nKTtcblxuXHRcdC8qIHBhZ2UtbGF5b3V0ICovXG5cblx0XHRvLnB1c2goJyA8L29mZmljZTphdXRvbWF0aWMtc3R5bGVzPlxcbicpO1xuXHR9O1xuXG5cdHJldHVybiBmdW5jdGlvbiB3Y3god2IsIG9wdHMpIHtcblx0XHR2YXIgbyA9IFtYTUxfSEVBREVSXTtcblx0XHQvKiAzLjEuMy4yICovXG5cdFx0dmFyIGF0dHIgPSB3eHRfaGVscGVyKHtcblx0XHRcdCd4bWxuczpvZmZpY2UnOiAgICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEuMFwiLFxuXHRcdFx0J3htbG5zOnRhYmxlJzogICAgICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp0YWJsZToxLjBcIixcblx0XHRcdCd4bWxuczpzdHlsZSc6ICAgICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6c3R5bGU6MS4wXCIsXG5cdFx0XHQneG1sbnM6dGV4dCc6ICAgICAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnRleHQ6MS4wXCIsXG5cdFx0XHQneG1sbnM6ZHJhdyc6ICAgICAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmRyYXdpbmc6MS4wXCIsXG5cdFx0XHQneG1sbnM6Zm8nOiAgICAgICAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnhzbC1mby1jb21wYXRpYmxlOjEuMFwiLFxuXHRcdFx0J3htbG5zOnhsaW5rJzogICAgICAgIFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLFxuXHRcdFx0J3htbG5zOmRjJzogICAgICAgICAgIFwiaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS9cIixcblx0XHRcdCd4bWxuczptZXRhJzogICAgICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6bWV0YToxLjBcIixcblx0XHRcdCd4bWxuczpudW1iZXInOiAgICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6ZGF0YXN0eWxlOjEuMFwiLFxuXHRcdFx0J3htbG5zOnByZXNlbnRhdGlvbic6IFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpwcmVzZW50YXRpb246MS4wXCIsXG5cdFx0XHQneG1sbnM6c3ZnJzogICAgICAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnN2Zy1jb21wYXRpYmxlOjEuMFwiLFxuXHRcdFx0J3htbG5zOmNoYXJ0JzogICAgICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpjaGFydDoxLjBcIixcblx0XHRcdCd4bWxuczpkcjNkJzogICAgICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6ZHIzZDoxLjBcIixcblx0XHRcdCd4bWxuczptYXRoJzogICAgICAgICBcImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUxcIixcblx0XHRcdCd4bWxuczpmb3JtJzogICAgICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6Zm9ybToxLjBcIixcblx0XHRcdCd4bWxuczpzY3JpcHQnOiAgICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6c2NyaXB0OjEuMFwiLFxuXHRcdFx0J3htbG5zOm9vbyc6ICAgICAgICAgIFwiaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMDQvb2ZmaWNlXCIsXG5cdFx0XHQneG1sbnM6b29vdyc6ICAgICAgICAgXCJodHRwOi8vb3Blbm9mZmljZS5vcmcvMjAwNC93cml0ZXJcIixcblx0XHRcdCd4bWxuczpvb29jJzogICAgICAgICBcImh0dHA6Ly9vcGVub2ZmaWNlLm9yZy8yMDA0L2NhbGNcIixcblx0XHRcdCd4bWxuczpkb20nOiAgICAgICAgICBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEveG1sLWV2ZW50c1wiLFxuXHRcdFx0J3htbG5zOnhmb3Jtcyc6ICAgICAgIFwiaHR0cDovL3d3dy53My5vcmcvMjAwMi94Zm9ybXNcIixcblx0XHRcdCd4bWxuczp4c2QnOiAgICAgICAgICBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hXCIsXG5cdFx0XHQneG1sbnM6eHNpJzogICAgICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZVwiLFxuXHRcdFx0J3htbG5zOnNoZWV0JzogICAgICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDpzaDMzdGpzOjEuMFwiLFxuXHRcdFx0J3htbG5zOnJwdCc6ICAgICAgICAgIFwiaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMDUvcmVwb3J0XCIsXG5cdFx0XHQneG1sbnM6b2YnOiAgICAgICAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mOjEuMlwiLFxuXHRcdFx0J3htbG5zOnhodG1sJzogICAgICAgIFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiLFxuXHRcdFx0J3htbG5zOmdyZGRsJzogICAgICAgIFwiaHR0cDovL3d3dy53My5vcmcvMjAwMy9nL2RhdGEtdmlldyNcIixcblx0XHRcdCd4bWxuczp0YWJsZW9vbyc6ICAgICBcImh0dHA6Ly9vcGVub2ZmaWNlLm9yZy8yMDA5L3RhYmxlXCIsXG5cdFx0XHQneG1sbnM6ZHJhd29vbyc6ICAgICAgXCJodHRwOi8vb3Blbm9mZmljZS5vcmcvMjAxMC9kcmF3XCIsXG5cdFx0XHQneG1sbnM6Y2FsY2V4dCc6ICAgICAgXCJ1cm46b3JnOmRvY3VtZW50Zm91bmRhdGlvbjpuYW1lczpleHBlcmltZW50YWw6Y2FsYzp4bWxuczpjYWxjZXh0OjEuMFwiLFxuXHRcdFx0J3htbG5zOmxvZXh0JzogICAgICAgIFwidXJuOm9yZzpkb2N1bWVudGZvdW5kYXRpb246bmFtZXM6ZXhwZXJpbWVudGFsOm9mZmljZTp4bWxuczpsb2V4dDoxLjBcIixcblx0XHRcdCd4bWxuczpmaWVsZCc6ICAgICAgICBcInVybjpvcGVub2ZmaWNlOm5hbWVzOmV4cGVyaW1lbnRhbDpvb28tbXMtaW50ZXJvcDp4bWxuczpmaWVsZDoxLjBcIixcblx0XHRcdCd4bWxuczpmb3JteCc6ICAgICAgICBcInVybjpvcGVub2ZmaWNlOm5hbWVzOmV4cGVyaW1lbnRhbDpvb3htbC1vZGYtaW50ZXJvcDp4bWxuczpmb3JtOjEuMFwiLFxuXHRcdFx0J3htbG5zOmNzczN0JzogICAgICAgIFwiaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy10ZXh0L1wiLFxuXHRcdFx0J29mZmljZTp2ZXJzaW9uJzogICAgIFwiMS4yXCJcblx0XHR9KTtcblxuXHRcdHZhciBmb2RzID0gd3h0X2hlbHBlcih7XG5cdFx0XHQneG1sbnM6Y29uZmlnJzogICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmNvbmZpZzoxLjBcIixcblx0XHRcdCdvZmZpY2U6bWltZXR5cGUnOiBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3ByZWFkc2hlZXRcIlxuXHRcdH0pO1xuXG5cdFx0aWYob3B0cy5ib29rVHlwZSA9PSBcImZvZHNcIikge1xuXHRcdFx0by5wdXNoKCc8b2ZmaWNlOmRvY3VtZW50JyArIGF0dHIgKyBmb2RzICsgJz5cXG4nKTtcblx0XHRcdG8ucHVzaCh3cml0ZV9tZXRhX29kcygpLnJlcGxhY2UoL29mZmljZTpkb2N1bWVudC1tZXRhL2csIFwib2ZmaWNlOm1ldGFcIikpO1xuXHRcdFx0Ly8gVE9ETzogc2V0dGluZ3MgKGVxdWl2IG9mIHNldHRpbmdzLnhtbCBmb3IgT0RTKVxuXHRcdH0gZWxzZSBvLnB1c2goJzxvZmZpY2U6ZG9jdW1lbnQtY29udGVudCcgKyBhdHRyICArICc+XFxuJyk7XG5cdFx0Ly8gby5wdXNoKCcgIDxvZmZpY2U6c2NyaXB0cy8+XFxuJyk7XG5cdFx0d3JpdGVfYXV0b21hdGljX3N0eWxlc19vZHMobywgd2IpO1xuXHRcdG8ucHVzaCgnICA8b2ZmaWNlOmJvZHk+XFxuJyk7XG5cdFx0by5wdXNoKCcgICAgPG9mZmljZTpzcHJlYWRzaGVldD5cXG4nKTtcblx0XHRmb3IodmFyIGkgPSAwOyBpICE9IHdiLlNoZWV0TmFtZXMubGVuZ3RoOyArK2kpIG8ucHVzaCh3cml0ZV93cyh3Yi5TaGVldHNbd2IuU2hlZXROYW1lc1tpXV0sIHdiLCBpLCBvcHRzKSk7XG5cdFx0by5wdXNoKCcgICAgPC9vZmZpY2U6c3ByZWFkc2hlZXQ+XFxuJyk7XG5cdFx0by5wdXNoKCcgIDwvb2ZmaWNlOmJvZHk+XFxuJyk7XG5cdFx0aWYob3B0cy5ib29rVHlwZSA9PSBcImZvZHNcIikgby5wdXNoKCc8L29mZmljZTpkb2N1bWVudD4nKTtcblx0XHRlbHNlIG8ucHVzaCgnPC9vZmZpY2U6ZG9jdW1lbnQtY29udGVudD4nKTtcblx0XHRyZXR1cm4gby5qb2luKFwiXCIpO1xuXHR9O1xufSkoKTtcblxuZnVuY3Rpb24gd3JpdGVfb2RzKHdiLyo6YW55Ki8sIG9wdHMvKjphbnkqLykge1xuXHRpZihvcHRzLmJvb2tUeXBlID09IFwiZm9kc1wiKSByZXR1cm4gd3JpdGVfY29udGVudF9vZHMod2IsIG9wdHMpO1xuXG5cdHZhciB6aXAgPSB6aXBfbmV3KCk7XG5cdHZhciBmID0gXCJcIjtcblxuXHR2YXIgbWFuaWZlc3QvKjpBcnJheTxBcnJheTxzdHJpbmc+ID4qLyA9IFtdO1xuXHR2YXIgcmRmLyo6QXJyYXk8W3N0cmluZywgc3RyaW5nXT4qLyA9IFtdO1xuXG5cdC8qIFBhcnQgMyBTZWN0aW9uIDMuMyBNSU1FIE1lZGlhIFR5cGUgKi9cblx0ZiA9IFwibWltZXR5cGVcIjtcblx0emlwX2FkZF9maWxlKHppcCwgZiwgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0XCIpO1xuXG5cdC8qIFBhcnQgMSBTZWN0aW9uIDIuMiBEb2N1bWVudHMgKi9cblx0ZiA9IFwiY29udGVudC54bWxcIjtcblx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfY29udGVudF9vZHMod2IsIG9wdHMpKTtcblx0bWFuaWZlc3QucHVzaChbZiwgXCJ0ZXh0L3htbFwiXSk7XG5cdHJkZi5wdXNoKFtmLCBcIkNvbnRlbnRGaWxlXCJdKTtcblxuXHQvKiBUT0RPOiB0aGVzZSBhcmUgaGFyZC1jb2RlZCBzdHlsZXMgdG8gc2F0aWF0ZSBleGNlbCAqL1xuXHRmID0gXCJzdHlsZXMueG1sXCI7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX3N0eWxlc19vZHMod2IsIG9wdHMpKTtcblx0bWFuaWZlc3QucHVzaChbZiwgXCJ0ZXh0L3htbFwiXSk7XG5cdHJkZi5wdXNoKFtmLCBcIlN0eWxlc0ZpbGVcIl0pO1xuXG5cdC8qIFRPRE86IHRoaXMgaXMgaGFyZC1jb2RlZCB0byBzYXRpYXRlIGV4Y2VsICovXG5cdGYgPSBcIm1ldGEueG1sXCI7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIFhNTF9IRUFERVIgKyB3cml0ZV9tZXRhX29kcygvKjo6d2IsIG9wdHMqLykpO1xuXHRtYW5pZmVzdC5wdXNoKFtmLCBcInRleHQveG1sXCJdKTtcblx0cmRmLnB1c2goW2YsIFwiTWV0YWRhdGFGaWxlXCJdKTtcblxuXHQvKiBQYXJ0IDMgU2VjdGlvbiA2IE1ldGFkYXRhIE1hbmlmZXN0IEZpbGUgKi9cblx0ZiA9IFwibWFuaWZlc3QucmRmXCI7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX3JkZihyZGYvKiwgb3B0cyovKSk7XG5cdG1hbmlmZXN0LnB1c2goW2YsIFwiYXBwbGljYXRpb24vcmRmK3htbFwiXSk7XG5cblx0LyogUGFydCAzIFNlY3Rpb24gNCBNYW5pZmVzdCBGaWxlICovXG5cdGYgPSBcIk1FVEEtSU5GL21hbmlmZXN0LnhtbFwiO1xuXHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV9tYW5pZmVzdChtYW5pZmVzdC8qLCBvcHRzKi8pKTtcblxuXHRyZXR1cm4gemlwO1xufVxuXG4vKiEgc2hlZXRqcyAoQykgMjAxMy1wcmVzZW50IFNoZWV0SlMgLS0gaHR0cDovL3NoZWV0anMuY29tICovXG5mdW5jdGlvbiB1OF90b19kYXRhdmlldyhhcnJheSkge1xuICByZXR1cm4gbmV3IERhdGFWaWV3KGFycmF5LmJ1ZmZlciwgYXJyYXkuYnl0ZU9mZnNldCwgYXJyYXkuYnl0ZUxlbmd0aCk7XG59XG5mdW5jdGlvbiB1OHN0cih1OCkge1xuICByZXR1cm4gdHlwZW9mIFRleHREZWNvZGVyICE9IFwidW5kZWZpbmVkXCIgPyBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUodTgpIDogdXRmOHJlYWQoYTJzKHU4KSk7XG59XG5mdW5jdGlvbiBzdHJ1OChzdHIpIHtcbiAgcmV0dXJuIHR5cGVvZiBUZXh0RW5jb2RlciAhPSBcInVuZGVmaW5lZFwiID8gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHN0cikgOiBzMmEodXRmOHdyaXRlKHN0cikpO1xufVxuZnVuY3Rpb24gdThjb250YWlucyhib2R5LCBzZWFyY2gpIHtcbiAgb3V0ZXI6XG4gICAgZm9yICh2YXIgTCA9IDA7IEwgPD0gYm9keS5sZW5ndGggLSBzZWFyY2gubGVuZ3RoOyArK0wpIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2VhcmNoLmxlbmd0aDsgKytqKVxuICAgICAgICBpZiAoYm9keVtMICsgal0gIT0gc2VhcmNoW2pdKVxuICAgICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiB1OGNvbmNhdCh1OGEpIHtcbiAgdmFyIGxlbiA9IHU4YS5yZWR1Y2UoZnVuY3Rpb24oYWNjLCB4KSB7XG4gICAgcmV0dXJuIGFjYyArIHgubGVuZ3RoO1xuICB9LCAwKTtcbiAgdmFyIG91dCA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gIHZhciBvZmYgPSAwO1xuICB1OGEuZm9yRWFjaChmdW5jdGlvbih1OCkge1xuICAgIG91dC5zZXQodTgsIG9mZik7XG4gICAgb2ZmICs9IHU4Lmxlbmd0aDtcbiAgfSk7XG4gIHJldHVybiBvdXQ7XG59XG5mdW5jdGlvbiBwb3BjbnQoeCkge1xuICB4IC09IHggPj4gMSAmIDE0MzE2NTU3NjU7XG4gIHggPSAoeCAmIDg1ODk5MzQ1OSkgKyAoeCA+PiAyICYgODU4OTkzNDU5KTtcbiAgcmV0dXJuICh4ICsgKHggPj4gNCkgJiAyNTI2NDUxMzUpICogMTY4NDMwMDkgPj4+IDI0O1xufVxuZnVuY3Rpb24gcmVhZERlY2ltYWwxMjhMRShidWYsIG9mZnNldCkge1xuICB2YXIgZXhwID0gKGJ1ZltvZmZzZXQgKyAxNV0gJiAxMjcpIDw8IDcgfCBidWZbb2Zmc2V0ICsgMTRdID4+IDE7XG4gIHZhciBtYW50aXNzYSA9IGJ1ZltvZmZzZXQgKyAxNF0gJiAxO1xuICBmb3IgKHZhciBqID0gb2Zmc2V0ICsgMTM7IGogPj0gb2Zmc2V0OyAtLWopXG4gICAgbWFudGlzc2EgPSBtYW50aXNzYSAqIDI1NiArIGJ1ZltqXTtcbiAgcmV0dXJuIChidWZbb2Zmc2V0ICsgMTVdICYgMTI4ID8gLW1hbnRpc3NhIDogbWFudGlzc2EpICogTWF0aC5wb3coMTAsIGV4cCAtIDYxNzYpO1xufVxuZnVuY3Rpb24gd3JpdGVEZWNpbWFsMTI4TEUoYnVmLCBvZmZzZXQsIHZhbHVlKSB7XG4gIHZhciBleHAgPSBNYXRoLmZsb29yKHZhbHVlID09IDAgPyAwIDogTWF0aC5MT0cxMEUgKiBNYXRoLmxvZyhNYXRoLmFicyh2YWx1ZSkpKSArIDYxNzYgLSAyMDtcbiAgdmFyIG1hbnRpc3NhID0gdmFsdWUgLyBNYXRoLnBvdygxMCwgZXhwIC0gNjE3Nik7XG4gIGJ1ZltvZmZzZXQgKyAxNV0gfD0gZXhwID4+IDc7XG4gIGJ1ZltvZmZzZXQgKyAxNF0gfD0gKGV4cCAmIDEyNykgPDwgMTtcbiAgZm9yICh2YXIgaSA9IDA7IG1hbnRpc3NhID49IDE7ICsraSwgbWFudGlzc2EgLz0gMjU2KVxuICAgIGJ1ZltvZmZzZXQgKyBpXSA9IG1hbnRpc3NhICYgMjU1O1xuICBidWZbb2Zmc2V0ICsgMTVdIHw9IHZhbHVlID49IDAgPyAwIDogMTI4O1xufVxuZnVuY3Rpb24gcGFyc2VfdmFyaW50NDkoYnVmLCBwdHIpIHtcbiAgdmFyIGwgPSBwdHIgPyBwdHJbMF0gOiAwO1xuICB2YXIgdXN6ID0gYnVmW2xdICYgMTI3O1xuICB2YXJpbnQ6XG4gICAgaWYgKGJ1ZltsKytdID49IDEyOCkge1xuICAgICAgdXN6IHw9IChidWZbbF0gJiAxMjcpIDw8IDc7XG4gICAgICBpZiAoYnVmW2wrK10gPCAxMjgpXG4gICAgICAgIGJyZWFrIHZhcmludDtcbiAgICAgIHVzeiB8PSAoYnVmW2xdICYgMTI3KSA8PCAxNDtcbiAgICAgIGlmIChidWZbbCsrXSA8IDEyOClcbiAgICAgICAgYnJlYWsgdmFyaW50O1xuICAgICAgdXN6IHw9IChidWZbbF0gJiAxMjcpIDw8IDIxO1xuICAgICAgaWYgKGJ1ZltsKytdIDwgMTI4KVxuICAgICAgICBicmVhayB2YXJpbnQ7XG4gICAgICB1c3ogKz0gKGJ1ZltsXSAmIDEyNykgKiBNYXRoLnBvdygyLCAyOCk7XG4gICAgICArK2w7XG4gICAgICBpZiAoYnVmW2wrK10gPCAxMjgpXG4gICAgICAgIGJyZWFrIHZhcmludDtcbiAgICAgIHVzeiArPSAoYnVmW2xdICYgMTI3KSAqIE1hdGgucG93KDIsIDM1KTtcbiAgICAgICsrbDtcbiAgICAgIGlmIChidWZbbCsrXSA8IDEyOClcbiAgICAgICAgYnJlYWsgdmFyaW50O1xuICAgICAgdXN6ICs9IChidWZbbF0gJiAxMjcpICogTWF0aC5wb3coMiwgNDIpO1xuICAgICAgKytsO1xuICAgICAgaWYgKGJ1ZltsKytdIDwgMTI4KVxuICAgICAgICBicmVhayB2YXJpbnQ7XG4gICAgfVxuICBpZiAocHRyKVxuICAgIHB0clswXSA9IGw7XG4gIHJldHVybiB1c3o7XG59XG5mdW5jdGlvbiB3cml0ZV92YXJpbnQ0OSh2KSB7XG4gIHZhciB1c3ogPSBuZXcgVWludDhBcnJheSg3KTtcbiAgdXN6WzBdID0gdiAmIDEyNztcbiAgdmFyIEwgPSAxO1xuICBzejpcbiAgICBpZiAodiA+IDEyNykge1xuICAgICAgdXN6W0wgLSAxXSB8PSAxMjg7XG4gICAgICB1c3pbTF0gPSB2ID4+IDcgJiAxMjc7XG4gICAgICArK0w7XG4gICAgICBpZiAodiA8PSAxNjM4MylcbiAgICAgICAgYnJlYWsgc3o7XG4gICAgICB1c3pbTCAtIDFdIHw9IDEyODtcbiAgICAgIHVzeltMXSA9IHYgPj4gMTQgJiAxMjc7XG4gICAgICArK0w7XG4gICAgICBpZiAodiA8PSAyMDk3MTUxKVxuICAgICAgICBicmVhayBzejtcbiAgICAgIHVzeltMIC0gMV0gfD0gMTI4O1xuICAgICAgdXN6W0xdID0gdiA+PiAyMSAmIDEyNztcbiAgICAgICsrTDtcbiAgICAgIGlmICh2IDw9IDI2ODQzNTQ1NSlcbiAgICAgICAgYnJlYWsgc3o7XG4gICAgICB1c3pbTCAtIDFdIHw9IDEyODtcbiAgICAgIHVzeltMXSA9IHYgLyAyNTYgPj4+IDIxICYgMTI3O1xuICAgICAgKytMO1xuICAgICAgaWYgKHYgPD0gMzQzNTk3MzgzNjcpXG4gICAgICAgIGJyZWFrIHN6O1xuICAgICAgdXN6W0wgLSAxXSB8PSAxMjg7XG4gICAgICB1c3pbTF0gPSB2IC8gNjU1MzYgPj4+IDIxICYgMTI3O1xuICAgICAgKytMO1xuICAgICAgaWYgKHYgPD0gNDM5ODA0NjUxMTEwMylcbiAgICAgICAgYnJlYWsgc3o7XG4gICAgICB1c3pbTCAtIDFdIHw9IDEyODtcbiAgICAgIHVzeltMXSA9IHYgLyAxNjc3NzIxNiA+Pj4gMjEgJiAxMjc7XG4gICAgICArK0w7XG4gICAgfVxuICByZXR1cm4gdXN6LnNsaWNlKDAsIEwpO1xufVxuZnVuY3Rpb24gdmFyaW50X3RvX2kzMihidWYpIHtcbiAgdmFyIGwgPSAwLCBpMzIgPSBidWZbbF0gJiAxMjc7XG4gIHZhcmludDpcbiAgICBpZiAoYnVmW2wrK10gPj0gMTI4KSB7XG4gICAgICBpMzIgfD0gKGJ1ZltsXSAmIDEyNykgPDwgNztcbiAgICAgIGlmIChidWZbbCsrXSA8IDEyOClcbiAgICAgICAgYnJlYWsgdmFyaW50O1xuICAgICAgaTMyIHw9IChidWZbbF0gJiAxMjcpIDw8IDE0O1xuICAgICAgaWYgKGJ1ZltsKytdIDwgMTI4KVxuICAgICAgICBicmVhayB2YXJpbnQ7XG4gICAgICBpMzIgfD0gKGJ1ZltsXSAmIDEyNykgPDwgMjE7XG4gICAgICBpZiAoYnVmW2wrK10gPCAxMjgpXG4gICAgICAgIGJyZWFrIHZhcmludDtcbiAgICAgIGkzMiB8PSAoYnVmW2xdICYgMTI3KSA8PCAyODtcbiAgICB9XG4gIHJldHVybiBpMzI7XG59XG5mdW5jdGlvbiBwYXJzZV9zaGFsbG93KGJ1Zikge1xuICB2YXIgb3V0ID0gW10sIHB0ciA9IFswXTtcbiAgd2hpbGUgKHB0clswXSA8IGJ1Zi5sZW5ndGgpIHtcbiAgICB2YXIgb2ZmID0gcHRyWzBdO1xuICAgIHZhciBudW0gPSBwYXJzZV92YXJpbnQ0OShidWYsIHB0cik7XG4gICAgdmFyIHR5cGUgPSBudW0gJiA3O1xuICAgIG51bSA9IE1hdGguZmxvb3IobnVtIC8gOCk7XG4gICAgdmFyIGxlbiA9IDA7XG4gICAgdmFyIHJlcztcbiAgICBpZiAobnVtID09IDApXG4gICAgICBicmVhaztcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBsID0gcHRyWzBdO1xuICAgICAgICAgIHdoaWxlIChidWZbcHRyWzBdKytdID49IDEyOClcbiAgICAgICAgICAgIDtcbiAgICAgICAgICByZXMgPSBidWYuc2xpY2UobCwgcHRyWzBdKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNTpcbiAgICAgICAgbGVuID0gNDtcbiAgICAgICAgcmVzID0gYnVmLnNsaWNlKHB0clswXSwgcHRyWzBdICsgbGVuKTtcbiAgICAgICAgcHRyWzBdICs9IGxlbjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIGxlbiA9IDg7XG4gICAgICAgIHJlcyA9IGJ1Zi5zbGljZShwdHJbMF0sIHB0clswXSArIGxlbik7XG4gICAgICAgIHB0clswXSArPSBsZW47XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBsZW4gPSBwYXJzZV92YXJpbnQ0OShidWYsIHB0cik7XG4gICAgICAgIHJlcyA9IGJ1Zi5zbGljZShwdHJbMF0sIHB0clswXSArIGxlbik7XG4gICAgICAgIHB0clswXSArPSBsZW47XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgY2FzZSA0OlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUEIgVHlwZSBcIi5jb25jYXQodHlwZSwgXCIgZm9yIEZpZWxkIFwiKS5jb25jYXQobnVtLCBcIiBhdCBvZmZzZXQgXCIpLmNvbmNhdChvZmYpKTtcbiAgICB9XG4gICAgdmFyIHYgPSB7IGRhdGE6IHJlcywgdHlwZTogdHlwZSB9O1xuICAgIGlmIChvdXRbbnVtXSA9PSBudWxsKVxuICAgICAgb3V0W251bV0gPSBbdl07XG4gICAgZWxzZVxuICAgICAgb3V0W251bV0ucHVzaCh2KTtcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuZnVuY3Rpb24gd3JpdGVfc2hhbGxvdyhwcm90bykge1xuICB2YXIgb3V0ID0gW107XG4gIHByb3RvLmZvckVhY2goZnVuY3Rpb24oZmllbGQsIGlkeCkge1xuICAgIGZpZWxkLmZvckVhY2goZnVuY3Rpb24oaXRlbSkge1xuICAgICAgaWYgKCFpdGVtLmRhdGEpXG4gICAgICAgIHJldHVybjtcbiAgICAgIG91dC5wdXNoKHdyaXRlX3ZhcmludDQ5KGlkeCAqIDggKyBpdGVtLnR5cGUpKTtcbiAgICAgIGlmIChpdGVtLnR5cGUgPT0gMilcbiAgICAgICAgb3V0LnB1c2god3JpdGVfdmFyaW50NDkoaXRlbS5kYXRhLmxlbmd0aCkpO1xuICAgICAgb3V0LnB1c2goaXRlbS5kYXRhKTtcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiB1OGNvbmNhdChvdXQpO1xufVxuZnVuY3Rpb24gbWFwcGEoZGF0YSwgY2IpIHtcbiAgcmV0dXJuIChkYXRhID09IG51bGwgPyB2b2lkIDAgOiBkYXRhLm1hcChmdW5jdGlvbihkKSB7XG4gICAgcmV0dXJuIGNiKGQuZGF0YSk7XG4gIH0pKSB8fCBbXTtcbn1cbmZ1bmN0aW9uIHBhcnNlX2l3YV9maWxlKGJ1Zikge1xuICB2YXIgX2E7XG4gIHZhciBvdXQgPSBbXSwgcHRyID0gWzBdO1xuICB3aGlsZSAocHRyWzBdIDwgYnVmLmxlbmd0aCkge1xuICAgIHZhciBsZW4gPSBwYXJzZV92YXJpbnQ0OShidWYsIHB0cik7XG4gICAgdmFyIGFpID0gcGFyc2Vfc2hhbGxvdyhidWYuc2xpY2UocHRyWzBdLCBwdHJbMF0gKyBsZW4pKTtcbiAgICBwdHJbMF0gKz0gbGVuO1xuICAgIHZhciByZXMgPSB7XG4gICAgICBpZDogdmFyaW50X3RvX2kzMihhaVsxXVswXS5kYXRhKSxcbiAgICAgIG1lc3NhZ2VzOiBbXVxuICAgIH07XG4gICAgYWlbMl0uZm9yRWFjaChmdW5jdGlvbihiKSB7XG4gICAgICB2YXIgbWkgPSBwYXJzZV9zaGFsbG93KGIuZGF0YSk7XG4gICAgICB2YXIgZmwgPSB2YXJpbnRfdG9faTMyKG1pWzNdWzBdLmRhdGEpO1xuICAgICAgcmVzLm1lc3NhZ2VzLnB1c2goe1xuICAgICAgICBtZXRhOiBtaSxcbiAgICAgICAgZGF0YTogYnVmLnNsaWNlKHB0clswXSwgcHRyWzBdICsgZmwpXG4gICAgICB9KTtcbiAgICAgIHB0clswXSArPSBmbDtcbiAgICB9KTtcbiAgICBpZiAoKF9hID0gYWlbM10pID09IG51bGwgPyB2b2lkIDAgOiBfYVswXSlcbiAgICAgIHJlcy5tZXJnZSA9IHZhcmludF90b19pMzIoYWlbM11bMF0uZGF0YSkgPj4+IDAgPiAwO1xuICAgIG91dC5wdXNoKHJlcyk7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIHdyaXRlX2l3YV9maWxlKGlhcykge1xuICB2YXIgYnVmcyA9IFtdO1xuICBpYXMuZm9yRWFjaChmdW5jdGlvbihpYSkge1xuICAgIHZhciBhaSA9IFtdO1xuICAgIGFpWzFdID0gW3sgZGF0YTogd3JpdGVfdmFyaW50NDkoaWEuaWQpLCB0eXBlOiAwIH1dO1xuICAgIGFpWzJdID0gW107XG4gICAgaWYgKGlhLm1lcmdlICE9IG51bGwpXG4gICAgICBhaVszXSA9IFt7IGRhdGE6IHdyaXRlX3ZhcmludDQ5KCshIWlhLm1lcmdlKSwgdHlwZTogMCB9XTtcbiAgICB2YXIgbWlkYXRhID0gW107XG4gICAgaWEubWVzc2FnZXMuZm9yRWFjaChmdW5jdGlvbihtaSkge1xuICAgICAgbWlkYXRhLnB1c2gobWkuZGF0YSk7XG4gICAgICBtaS5tZXRhWzNdID0gW3sgdHlwZTogMCwgZGF0YTogd3JpdGVfdmFyaW50NDkobWkuZGF0YS5sZW5ndGgpIH1dO1xuICAgICAgYWlbMl0ucHVzaCh7IGRhdGE6IHdyaXRlX3NoYWxsb3cobWkubWV0YSksIHR5cGU6IDIgfSk7XG4gICAgfSk7XG4gICAgdmFyIGFpcGF5bG9hZCA9IHdyaXRlX3NoYWxsb3coYWkpO1xuICAgIGJ1ZnMucHVzaCh3cml0ZV92YXJpbnQ0OShhaXBheWxvYWQubGVuZ3RoKSk7XG4gICAgYnVmcy5wdXNoKGFpcGF5bG9hZCk7XG4gICAgbWlkYXRhLmZvckVhY2goZnVuY3Rpb24obWlkKSB7XG4gICAgICByZXR1cm4gYnVmcy5wdXNoKG1pZCk7XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gdThjb25jYXQoYnVmcyk7XG59XG5mdW5jdGlvbiBwYXJzZV9zbmFwcHlfY2h1bmsodHlwZSwgYnVmKSB7XG4gIGlmICh0eXBlICE9IDApXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBTbmFwcHkgY2h1bmsgdHlwZSBcIi5jb25jYXQodHlwZSkpO1xuICB2YXIgcHRyID0gWzBdO1xuICB2YXIgdXN6ID0gcGFyc2VfdmFyaW50NDkoYnVmLCBwdHIpO1xuICB2YXIgY2h1bmtzID0gW107XG4gIHdoaWxlIChwdHJbMF0gPCBidWYubGVuZ3RoKSB7XG4gICAgdmFyIHRhZyA9IGJ1ZltwdHJbMF1dICYgMztcbiAgICBpZiAodGFnID09IDApIHtcbiAgICAgIHZhciBsZW4gPSBidWZbcHRyWzBdKytdID4+IDI7XG4gICAgICBpZiAobGVuIDwgNjApXG4gICAgICAgICsrbGVuO1xuICAgICAgZWxzZSB7XG4gICAgICAgIHZhciBjID0gbGVuIC0gNTk7XG4gICAgICAgIGxlbiA9IGJ1ZltwdHJbMF1dO1xuICAgICAgICBpZiAoYyA+IDEpXG4gICAgICAgICAgbGVuIHw9IGJ1ZltwdHJbMF0gKyAxXSA8PCA4O1xuICAgICAgICBpZiAoYyA+IDIpXG4gICAgICAgICAgbGVuIHw9IGJ1ZltwdHJbMF0gKyAyXSA8PCAxNjtcbiAgICAgICAgaWYgKGMgPiAzKVxuICAgICAgICAgIGxlbiB8PSBidWZbcHRyWzBdICsgM10gPDwgMjQ7XG4gICAgICAgIGxlbiA+Pj49IDA7XG4gICAgICAgIGxlbisrO1xuICAgICAgICBwdHJbMF0gKz0gYztcbiAgICAgIH1cbiAgICAgIGNodW5rcy5wdXNoKGJ1Zi5zbGljZShwdHJbMF0sIHB0clswXSArIGxlbikpO1xuICAgICAgcHRyWzBdICs9IGxlbjtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgb2Zmc2V0ID0gMCwgbGVuZ3RoID0gMDtcbiAgICAgIGlmICh0YWcgPT0gMSkge1xuICAgICAgICBsZW5ndGggPSAoYnVmW3B0clswXV0gPj4gMiAmIDcpICsgNDtcbiAgICAgICAgb2Zmc2V0ID0gKGJ1ZltwdHJbMF0rK10gJiAyMjQpIDw8IDM7XG4gICAgICAgIG9mZnNldCB8PSBidWZbcHRyWzBdKytdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGVuZ3RoID0gKGJ1ZltwdHJbMF0rK10gPj4gMikgKyAxO1xuICAgICAgICBpZiAodGFnID09IDIpIHtcbiAgICAgICAgICBvZmZzZXQgPSBidWZbcHRyWzBdXSB8IGJ1ZltwdHJbMF0gKyAxXSA8PCA4O1xuICAgICAgICAgIHB0clswXSArPSAyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9mZnNldCA9IChidWZbcHRyWzBdXSB8IGJ1ZltwdHJbMF0gKyAxXSA8PCA4IHwgYnVmW3B0clswXSArIDJdIDw8IDE2IHwgYnVmW3B0clswXSArIDNdIDw8IDI0KSA+Pj4gMDtcbiAgICAgICAgICBwdHJbMF0gKz0gNDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2h1bmtzID0gW3U4Y29uY2F0KGNodW5rcyldO1xuICAgICAgaWYgKG9mZnNldCA9PSAwKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG9mZnNldCAwXCIpO1xuICAgICAgaWYgKG9mZnNldCA+IGNodW5rc1swXS5sZW5ndGgpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgb2Zmc2V0IGJleW9uZCBsZW5ndGhcIik7XG4gICAgICBpZiAobGVuZ3RoID49IG9mZnNldCkge1xuICAgICAgICBjaHVua3MucHVzaChjaHVua3NbMF0uc2xpY2UoLW9mZnNldCkpO1xuICAgICAgICBsZW5ndGggLT0gb2Zmc2V0O1xuICAgICAgICB3aGlsZSAobGVuZ3RoID49IGNodW5rc1tjaHVua3MubGVuZ3RoIC0gMV0ubGVuZ3RoKSB7XG4gICAgICAgICAgY2h1bmtzLnB1c2goY2h1bmtzW2NodW5rcy5sZW5ndGggLSAxXSk7XG4gICAgICAgICAgbGVuZ3RoIC09IGNodW5rc1tjaHVua3MubGVuZ3RoIC0gMV0ubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjaHVua3MucHVzaChjaHVua3NbMF0uc2xpY2UoLW9mZnNldCwgLW9mZnNldCArIGxlbmd0aCkpO1xuICAgIH1cbiAgfVxuICB2YXIgbyA9IHU4Y29uY2F0KGNodW5rcyk7XG4gIGlmIChvLmxlbmd0aCAhPSB1c3opXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBsZW5ndGg6IFwiLmNvbmNhdChvLmxlbmd0aCwgXCIgIT0gXCIpLmNvbmNhdCh1c3opKTtcbiAgcmV0dXJuIG87XG59XG5mdW5jdGlvbiBkZWNvbXByZXNzX2l3YV9maWxlKGJ1Zikge1xuICB2YXIgb3V0ID0gW107XG4gIHZhciBsID0gMDtcbiAgd2hpbGUgKGwgPCBidWYubGVuZ3RoKSB7XG4gICAgdmFyIHQgPSBidWZbbCsrXTtcbiAgICB2YXIgbGVuID0gYnVmW2xdIHwgYnVmW2wgKyAxXSA8PCA4IHwgYnVmW2wgKyAyXSA8PCAxNjtcbiAgICBsICs9IDM7XG4gICAgb3V0LnB1c2gocGFyc2Vfc25hcHB5X2NodW5rKHQsIGJ1Zi5zbGljZShsLCBsICsgbGVuKSkpO1xuICAgIGwgKz0gbGVuO1xuICB9XG4gIGlmIChsICE9PSBidWYubGVuZ3RoKVxuICAgIHRocm93IG5ldyBFcnJvcihcImRhdGEgaXMgbm90IGEgdmFsaWQgZnJhbWVkIHN0cmVhbSFcIik7XG4gIHJldHVybiB1OGNvbmNhdChvdXQpO1xufVxuZnVuY3Rpb24gY29tcHJlc3NfaXdhX2ZpbGUoYnVmKSB7XG4gIHZhciBvdXQgPSBbXTtcbiAgdmFyIGwgPSAwO1xuICB3aGlsZSAobCA8IGJ1Zi5sZW5ndGgpIHtcbiAgICB2YXIgYyA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSBsLCAyNjg0MzU0NTUpO1xuICAgIHZhciBmcmFtZSA9IG5ldyBVaW50OEFycmF5KDQpO1xuICAgIG91dC5wdXNoKGZyYW1lKTtcbiAgICB2YXIgdXN6ID0gd3JpdGVfdmFyaW50NDkoYyk7XG4gICAgdmFyIEwgPSB1c3oubGVuZ3RoO1xuICAgIG91dC5wdXNoKHVzeik7XG4gICAgaWYgKGMgPD0gNjApIHtcbiAgICAgIEwrKztcbiAgICAgIG91dC5wdXNoKG5ldyBVaW50OEFycmF5KFtjIC0gMSA8PCAyXSkpO1xuICAgIH0gZWxzZSBpZiAoYyA8PSAyNTYpIHtcbiAgICAgIEwgKz0gMjtcbiAgICAgIG91dC5wdXNoKG5ldyBVaW50OEFycmF5KFsyNDAsIGMgLSAxICYgMjU1XSkpO1xuICAgIH0gZWxzZSBpZiAoYyA8PSA2NTUzNikge1xuICAgICAgTCArPSAzO1xuICAgICAgb3V0LnB1c2gobmV3IFVpbnQ4QXJyYXkoWzI0NCwgYyAtIDEgJiAyNTUsIGMgLSAxID4+IDggJiAyNTVdKSk7XG4gICAgfSBlbHNlIGlmIChjIDw9IDE2Nzc3MjE2KSB7XG4gICAgICBMICs9IDQ7XG4gICAgICBvdXQucHVzaChuZXcgVWludDhBcnJheShbMjQ4LCBjIC0gMSAmIDI1NSwgYyAtIDEgPj4gOCAmIDI1NSwgYyAtIDEgPj4gMTYgJiAyNTVdKSk7XG4gICAgfSBlbHNlIGlmIChjIDw9IDQyOTQ5NjcyOTYpIHtcbiAgICAgIEwgKz0gNTtcbiAgICAgIG91dC5wdXNoKG5ldyBVaW50OEFycmF5KFsyNTIsIGMgLSAxICYgMjU1LCBjIC0gMSA+PiA4ICYgMjU1LCBjIC0gMSA+PiAxNiAmIDI1NSwgYyAtIDEgPj4+IDI0ICYgMjU1XSkpO1xuICAgIH1cbiAgICBvdXQucHVzaChidWYuc2xpY2UobCwgbCArIGMpKTtcbiAgICBMICs9IGM7XG4gICAgZnJhbWVbMF0gPSAwO1xuICAgIGZyYW1lWzFdID0gTCAmIDI1NTtcbiAgICBmcmFtZVsyXSA9IEwgPj4gOCAmIDI1NTtcbiAgICBmcmFtZVszXSA9IEwgPj4gMTYgJiAyNTU7XG4gICAgbCArPSBjO1xuICB9XG4gIHJldHVybiB1OGNvbmNhdChvdXQpO1xufVxuZnVuY3Rpb24gcGFyc2Vfb2xkX3N0b3JhZ2UoYnVmLCBzc3QsIHJzc3QsIHYpIHtcbiAgdmFyIGR2ID0gdThfdG9fZGF0YXZpZXcoYnVmKTtcbiAgdmFyIGZsYWdzID0gZHYuZ2V0VWludDMyKDQsIHRydWUpO1xuICB2YXIgZGF0YV9vZmZzZXQgPSAodiA+IDEgPyAxMiA6IDgpICsgcG9wY250KGZsYWdzICYgKHYgPiAxID8gMzQ3MCA6IDM5OCkpICogNDtcbiAgdmFyIHJpZHggPSAtMSwgc2lkeCA9IC0xLCBpZWVlID0gTmFOLCBkdCA9IG5ldyBEYXRlKDIwMDEsIDAsIDEpO1xuICBpZiAoZmxhZ3MgJiA1MTIpIHtcbiAgICByaWR4ID0gZHYuZ2V0VWludDMyKGRhdGFfb2Zmc2V0LCB0cnVlKTtcbiAgICBkYXRhX29mZnNldCArPSA0O1xuICB9XG4gIGRhdGFfb2Zmc2V0ICs9IHBvcGNudChmbGFncyAmICh2ID4gMSA/IDEyMjg4IDogNDA5NikpICogNDtcbiAgaWYgKGZsYWdzICYgMTYpIHtcbiAgICBzaWR4ID0gZHYuZ2V0VWludDMyKGRhdGFfb2Zmc2V0LCB0cnVlKTtcbiAgICBkYXRhX29mZnNldCArPSA0O1xuICB9XG4gIGlmIChmbGFncyAmIDMyKSB7XG4gICAgaWVlZSA9IGR2LmdldEZsb2F0NjQoZGF0YV9vZmZzZXQsIHRydWUpO1xuICAgIGRhdGFfb2Zmc2V0ICs9IDg7XG4gIH1cbiAgaWYgKGZsYWdzICYgNjQpIHtcbiAgICBkdC5zZXRUaW1lKGR0LmdldFRpbWUoKSArIGR2LmdldEZsb2F0NjQoZGF0YV9vZmZzZXQsIHRydWUpICogMWUzKTtcbiAgICBkYXRhX29mZnNldCArPSA4O1xuICB9XG4gIHZhciByZXQ7XG4gIHN3aXRjaCAoYnVmWzJdKSB7XG4gICAgY2FzZSAwOlxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyOlxuICAgICAgcmV0ID0geyB0OiBcIm5cIiwgdjogaWVlZSB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAzOlxuICAgICAgcmV0ID0geyB0OiBcInNcIiwgdjogc3N0W3NpZHhdIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIDU6XG4gICAgICByZXQgPSB7IHQ6IFwiZFwiLCB2OiBkdCB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA2OlxuICAgICAgcmV0ID0geyB0OiBcImJcIiwgdjogaWVlZSA+IDAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNzpcbiAgICAgIHJldCA9IHsgdDogXCJuXCIsIHY6IGllZWUgLyA4NjQwMCB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA4OlxuICAgICAgcmV0ID0geyB0OiBcImVcIiwgdjogMCB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA5OlxuICAgICAge1xuICAgICAgICBpZiAocmlkeCA+IC0xKVxuICAgICAgICAgIHJldCA9IHsgdDogXCJzXCIsIHY6IHJzc3RbcmlkeF0gfTtcbiAgICAgICAgZWxzZSBpZiAoc2lkeCA+IC0xKVxuICAgICAgICAgIHJldCA9IHsgdDogXCJzXCIsIHY6IHNzdFtzaWR4XSB9O1xuICAgICAgICBlbHNlIGlmICghaXNOYU4oaWVlZSkpXG4gICAgICAgICAgcmV0ID0geyB0OiBcIm5cIiwgdjogaWVlZSB9O1xuICAgICAgICBlbHNlXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgY2VsbCB0eXBlIFwiLmNvbmNhdChidWYuc2xpY2UoMCwgNCkpKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBjZWxsIHR5cGUgXCIuY29uY2F0KGJ1Zi5zbGljZSgwLCA0KSkpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5mdW5jdGlvbiBwYXJzZV9uZXdfc3RvcmFnZShidWYsIHNzdCwgcnNzdCkge1xuICB2YXIgZHYgPSB1OF90b19kYXRhdmlldyhidWYpO1xuICB2YXIgZmxhZ3MgPSBkdi5nZXRVaW50MzIoOCwgdHJ1ZSk7XG4gIHZhciBkYXRhX29mZnNldCA9IDEyO1xuICB2YXIgcmlkeCA9IC0xLCBzaWR4ID0gLTEsIGQxMjggPSBOYU4sIGllZWUgPSBOYU4sIGR0ID0gbmV3IERhdGUoMjAwMSwgMCwgMSk7XG4gIGlmIChmbGFncyAmIDEpIHtcbiAgICBkMTI4ID0gcmVhZERlY2ltYWwxMjhMRShidWYsIGRhdGFfb2Zmc2V0KTtcbiAgICBkYXRhX29mZnNldCArPSAxNjtcbiAgfVxuICBpZiAoZmxhZ3MgJiAyKSB7XG4gICAgaWVlZSA9IGR2LmdldEZsb2F0NjQoZGF0YV9vZmZzZXQsIHRydWUpO1xuICAgIGRhdGFfb2Zmc2V0ICs9IDg7XG4gIH1cbiAgaWYgKGZsYWdzICYgNCkge1xuICAgIGR0LnNldFRpbWUoZHQuZ2V0VGltZSgpICsgZHYuZ2V0RmxvYXQ2NChkYXRhX29mZnNldCwgdHJ1ZSkgKiAxZTMpO1xuICAgIGRhdGFfb2Zmc2V0ICs9IDg7XG4gIH1cbiAgaWYgKGZsYWdzICYgOCkge1xuICAgIHNpZHggPSBkdi5nZXRVaW50MzIoZGF0YV9vZmZzZXQsIHRydWUpO1xuICAgIGRhdGFfb2Zmc2V0ICs9IDQ7XG4gIH1cbiAgaWYgKGZsYWdzICYgMTYpIHtcbiAgICByaWR4ID0gZHYuZ2V0VWludDMyKGRhdGFfb2Zmc2V0LCB0cnVlKTtcbiAgICBkYXRhX29mZnNldCArPSA0O1xuICB9XG4gIHZhciByZXQ7XG4gIHN3aXRjaCAoYnVmWzFdKSB7XG4gICAgY2FzZSAwOlxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyOlxuICAgICAgcmV0ID0geyB0OiBcIm5cIiwgdjogZDEyOCB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAzOlxuICAgICAgcmV0ID0geyB0OiBcInNcIiwgdjogc3N0W3NpZHhdIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIDU6XG4gICAgICByZXQgPSB7IHQ6IFwiZFwiLCB2OiBkdCB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA2OlxuICAgICAgcmV0ID0geyB0OiBcImJcIiwgdjogaWVlZSA+IDAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNzpcbiAgICAgIHJldCA9IHsgdDogXCJuXCIsIHY6IGllZWUgLyA4NjQwMCB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA4OlxuICAgICAgcmV0ID0geyB0OiBcImVcIiwgdjogMCB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA5OlxuICAgICAge1xuICAgICAgICBpZiAocmlkeCA+IC0xKVxuICAgICAgICAgIHJldCA9IHsgdDogXCJzXCIsIHY6IHJzc3RbcmlkeF0gfTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIGNlbGwgdHlwZSBcIi5jb25jYXQoYnVmWzFdLCBcIiA6IFwiKS5jb25jYXQoZmxhZ3MgJiAzMSwgXCIgOiBcIikuY29uY2F0KGJ1Zi5zbGljZSgwLCA0KSkpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMDpcbiAgICAgIHJldCA9IHsgdDogXCJuXCIsIHY6IGQxMjggfTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBjZWxsIHR5cGUgXCIuY29uY2F0KGJ1ZlsxXSwgXCIgOiBcIikuY29uY2F0KGZsYWdzICYgMzEsIFwiIDogXCIpLmNvbmNhdChidWYuc2xpY2UoMCwgNCkpKTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuZnVuY3Rpb24gd3JpdGVfbmV3X3N0b3JhZ2UoY2VsbCwgc3N0KSB7XG4gIHZhciBvdXQgPSBuZXcgVWludDhBcnJheSgzMiksIGR2ID0gdThfdG9fZGF0YXZpZXcob3V0KSwgbCA9IDEyLCBmbGFncyA9IDA7XG4gIG91dFswXSA9IDU7XG4gIHN3aXRjaCAoY2VsbC50KSB7XG4gICAgY2FzZSBcIm5cIjpcbiAgICAgIG91dFsxXSA9IDI7XG4gICAgICB3cml0ZURlY2ltYWwxMjhMRShvdXQsIGwsIGNlbGwudik7XG4gICAgICBmbGFncyB8PSAxO1xuICAgICAgbCArPSAxNjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJiXCI6XG4gICAgICBvdXRbMV0gPSA2O1xuICAgICAgZHYuc2V0RmxvYXQ2NChsLCBjZWxsLnYgPyAxIDogMCwgdHJ1ZSk7XG4gICAgICBmbGFncyB8PSAyO1xuICAgICAgbCArPSA4O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcInNcIjpcbiAgICAgIGlmIChzc3QuaW5kZXhPZihjZWxsLnYpID09IC0xKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJWYWx1ZSBcIi5jb25jYXQoY2VsbC52LCBcIiBtaXNzaW5nIGZyb20gU1NUIVwiKSk7XG4gICAgICBvdXRbMV0gPSAzO1xuICAgICAgZHYuc2V0VWludDMyKGwsIHNzdC5pbmRleE9mKGNlbGwudiksIHRydWUpO1xuICAgICAgZmxhZ3MgfD0gODtcbiAgICAgIGwgKz0gNDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBcInVuc3VwcG9ydGVkIGNlbGwgdHlwZSBcIiArIGNlbGwudDtcbiAgfVxuICBkdi5zZXRVaW50MzIoOCwgZmxhZ3MsIHRydWUpO1xuICByZXR1cm4gb3V0LnNsaWNlKDAsIGwpO1xufVxuZnVuY3Rpb24gd3JpdGVfb2xkX3N0b3JhZ2UoY2VsbCwgc3N0KSB7XG4gIHZhciBvdXQgPSBuZXcgVWludDhBcnJheSgzMiksIGR2ID0gdThfdG9fZGF0YXZpZXcob3V0KSwgbCA9IDEyLCBmbGFncyA9IDA7XG4gIG91dFswXSA9IDM7XG4gIHN3aXRjaCAoY2VsbC50KSB7XG4gICAgY2FzZSBcIm5cIjpcbiAgICAgIG91dFsyXSA9IDI7XG4gICAgICBkdi5zZXRGbG9hdDY0KGwsIGNlbGwudiwgdHJ1ZSk7XG4gICAgICBmbGFncyB8PSAzMjtcbiAgICAgIGwgKz0gODtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJiXCI6XG4gICAgICBvdXRbMl0gPSA2O1xuICAgICAgZHYuc2V0RmxvYXQ2NChsLCBjZWxsLnYgPyAxIDogMCwgdHJ1ZSk7XG4gICAgICBmbGFncyB8PSAzMjtcbiAgICAgIGwgKz0gODtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJzXCI6XG4gICAgICBpZiAoc3N0LmluZGV4T2YoY2VsbC52KSA9PSAtMSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVmFsdWUgXCIuY29uY2F0KGNlbGwudiwgXCIgbWlzc2luZyBmcm9tIFNTVCFcIikpO1xuICAgICAgb3V0WzJdID0gMztcbiAgICAgIGR2LnNldFVpbnQzMihsLCBzc3QuaW5kZXhPZihjZWxsLnYpLCB0cnVlKTtcbiAgICAgIGZsYWdzIHw9IDE2O1xuICAgICAgbCArPSA0O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IFwidW5zdXBwb3J0ZWQgY2VsbCB0eXBlIFwiICsgY2VsbC50O1xuICB9XG4gIGR2LnNldFVpbnQzMig0LCBmbGFncywgdHJ1ZSk7XG4gIHJldHVybiBvdXQuc2xpY2UoMCwgbCk7XG59XG5mdW5jdGlvbiBwYXJzZV9jZWxsX3N0b3JhZ2UoYnVmLCBzc3QsIHJzc3QpIHtcbiAgc3dpdGNoIChidWZbMF0pIHtcbiAgICBjYXNlIDA6XG4gICAgY2FzZSAxOlxuICAgIGNhc2UgMjpcbiAgICBjYXNlIDM6XG4gICAgICByZXR1cm4gcGFyc2Vfb2xkX3N0b3JhZ2UoYnVmLCBzc3QsIHJzc3QsIGJ1ZlswXSk7XG4gICAgY2FzZSA1OlxuICAgICAgcmV0dXJuIHBhcnNlX25ld19zdG9yYWdlKGJ1Ziwgc3N0LCByc3N0KTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgcGF5bG9hZCB2ZXJzaW9uIFwiLmNvbmNhdChidWZbMF0pKTtcbiAgfVxufVxuZnVuY3Rpb24gcGFyc2VfVFNQX1JlZmVyZW5jZShidWYpIHtcbiAgdmFyIHBiID0gcGFyc2Vfc2hhbGxvdyhidWYpO1xuICByZXR1cm4gcGFyc2VfdmFyaW50NDkocGJbMV1bMF0uZGF0YSk7XG59XG5mdW5jdGlvbiB3cml0ZV9UU1BfUmVmZXJlbmNlKGlkeCkge1xuICB2YXIgb3V0ID0gW107XG4gIG91dFsxXSA9IFt7IHR5cGU6IDAsIGRhdGE6IHdyaXRlX3ZhcmludDQ5KGlkeCkgfV07XG4gIHJldHVybiB3cml0ZV9zaGFsbG93KG91dCk7XG59XG5mdW5jdGlvbiBwYXJzZV9UU1RfVGFibGVEYXRhTGlzdChNLCByb290KSB7XG4gIHZhciBwYiA9IHBhcnNlX3NoYWxsb3cocm9vdC5kYXRhKTtcbiAgdmFyIHR5cGUgPSB2YXJpbnRfdG9faTMyKHBiWzFdWzBdLmRhdGEpO1xuICB2YXIgZW50cmllcyA9IHBiWzNdO1xuICB2YXIgZGF0YSA9IFtdO1xuICAoZW50cmllcyB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbihlbnRyeSkge1xuICAgIHZhciBsZSA9IHBhcnNlX3NoYWxsb3coZW50cnkuZGF0YSk7XG4gICAgdmFyIGtleSA9IHZhcmludF90b19pMzIobGVbMV1bMF0uZGF0YSkgPj4+IDA7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIGRhdGFba2V5XSA9IHU4c3RyKGxlWzNdWzBdLmRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgODpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBydCA9IE1bcGFyc2VfVFNQX1JlZmVyZW5jZShsZVs5XVswXS5kYXRhKV1bMF07XG4gICAgICAgICAgdmFyIHJ0cCA9IHBhcnNlX3NoYWxsb3cocnQuZGF0YSk7XG4gICAgICAgICAgdmFyIHJ0cHJlZiA9IE1bcGFyc2VfVFNQX1JlZmVyZW5jZShydHBbMV1bMF0uZGF0YSldWzBdO1xuICAgICAgICAgIHZhciBtdHlwZSA9IHZhcmludF90b19pMzIocnRwcmVmLm1ldGFbMV1bMF0uZGF0YSk7XG4gICAgICAgICAgaWYgKG10eXBlICE9IDIwMDEpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCIyMDAwIHVuZXhwZWN0ZWQgcmVmZXJlbmNlIHRvIFwiLmNvbmNhdChtdHlwZSkpO1xuICAgICAgICAgIHZhciB0c3dwc2EgPSBwYXJzZV9zaGFsbG93KHJ0cHJlZi5kYXRhKTtcbiAgICAgICAgICBkYXRhW2tleV0gPSB0c3dwc2FbM10ubWFwKGZ1bmN0aW9uKHgpIHtcbiAgICAgICAgICAgIHJldHVybiB1OHN0cih4LmRhdGEpO1xuICAgICAgICAgIH0pLmpvaW4oXCJcIik7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGRhdGE7XG59XG5mdW5jdGlvbiBwYXJzZV9UU1RfVGlsZVJvd0luZm8odTgsIHR5cGUpIHtcbiAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nLCBfaCwgX2ksIF9qLCBfaywgX2wsIF9tLCBfbjtcbiAgdmFyIHBiID0gcGFyc2Vfc2hhbGxvdyh1OCk7XG4gIHZhciBSID0gdmFyaW50X3RvX2kzMihwYlsxXVswXS5kYXRhKSA+Pj4gMDtcbiAgdmFyIGNudCA9IHZhcmludF90b19pMzIocGJbMl1bMF0uZGF0YSkgPj4+IDA7XG4gIHZhciB3aWRlX29mZnNldHMgPSAoKF9iID0gKF9hID0gcGJbOF0pID09IG51bGwgPyB2b2lkIDAgOiBfYVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmRhdGEpICYmIHZhcmludF90b19pMzIocGJbOF1bMF0uZGF0YSkgPiAwIHx8IGZhbHNlO1xuICB2YXIgdXNlZF9zdG9yYWdlX3U4LCB1c2VkX3N0b3JhZ2U7XG4gIGlmICgoKF9kID0gKF9jID0gcGJbN10pID09IG51bGwgPyB2b2lkIDAgOiBfY1swXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9kLmRhdGEpICYmIHR5cGUgIT0gMCkge1xuICAgIHVzZWRfc3RvcmFnZV91OCA9IChfZiA9IChfZSA9IHBiWzddKSA9PSBudWxsID8gdm9pZCAwIDogX2VbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfZi5kYXRhO1xuICAgIHVzZWRfc3RvcmFnZSA9IChfaCA9IChfZyA9IHBiWzZdKSA9PSBudWxsID8gdm9pZCAwIDogX2dbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfaC5kYXRhO1xuICB9IGVsc2UgaWYgKCgoX2ogPSAoX2kgPSBwYls0XSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9pWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX2ouZGF0YSkgJiYgdHlwZSAhPSAxKSB7XG4gICAgdXNlZF9zdG9yYWdlX3U4ID0gKF9sID0gKF9rID0gcGJbNF0pID09IG51bGwgPyB2b2lkIDAgOiBfa1swXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9sLmRhdGE7XG4gICAgdXNlZF9zdG9yYWdlID0gKF9uID0gKF9tID0gcGJbM10pID09IG51bGwgPyB2b2lkIDAgOiBfbVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9uLmRhdGE7XG4gIH0gZWxzZVxuICAgIHRocm93IFwiTlVNQkVSUyBUaWxlIG1pc3NpbmcgXCIuY29uY2F0KHR5cGUsIFwiIGNlbGwgc3RvcmFnZVwiKTtcbiAgdmFyIHdpZHRoID0gd2lkZV9vZmZzZXRzID8gNCA6IDE7XG4gIHZhciB1c2VkX3N0b3JhZ2Vfb2Zmc2V0cyA9IHU4X3RvX2RhdGF2aWV3KHVzZWRfc3RvcmFnZV91OCk7XG4gIHZhciBvZmZzZXRzID0gW107XG4gIGZvciAodmFyIEMgPSAwOyBDIDwgdXNlZF9zdG9yYWdlX3U4Lmxlbmd0aCAvIDI7ICsrQykge1xuICAgIHZhciBvZmYgPSB1c2VkX3N0b3JhZ2Vfb2Zmc2V0cy5nZXRVaW50MTYoQyAqIDIsIHRydWUpO1xuICAgIGlmIChvZmYgPCA2NTUzNSlcbiAgICAgIG9mZnNldHMucHVzaChbQywgb2ZmXSk7XG4gIH1cbiAgaWYgKG9mZnNldHMubGVuZ3RoICE9IGNudClcbiAgICB0aHJvdyBcIkV4cGVjdGVkIFwiLmNvbmNhdChjbnQsIFwiIGNlbGxzLCBmb3VuZCBcIikuY29uY2F0KG9mZnNldHMubGVuZ3RoKTtcbiAgdmFyIGNlbGxzID0gW107XG4gIGZvciAoQyA9IDA7IEMgPCBvZmZzZXRzLmxlbmd0aCAtIDE7ICsrQylcbiAgICBjZWxsc1tvZmZzZXRzW0NdWzBdXSA9IHVzZWRfc3RvcmFnZS5zdWJhcnJheShvZmZzZXRzW0NdWzFdICogd2lkdGgsIG9mZnNldHNbQyArIDFdWzFdICogd2lkdGgpO1xuICBpZiAob2Zmc2V0cy5sZW5ndGggPj0gMSlcbiAgICBjZWxsc1tvZmZzZXRzW29mZnNldHMubGVuZ3RoIC0gMV1bMF1dID0gdXNlZF9zdG9yYWdlLnN1YmFycmF5KG9mZnNldHNbb2Zmc2V0cy5sZW5ndGggLSAxXVsxXSAqIHdpZHRoKTtcbiAgcmV0dXJuIHsgUjogUiwgY2VsbHM6IGNlbGxzIH07XG59XG5mdW5jdGlvbiBwYXJzZV9UU1RfVGlsZShNLCByb290KSB7XG4gIHZhciBfYTtcbiAgdmFyIHBiID0gcGFyc2Vfc2hhbGxvdyhyb290LmRhdGEpO1xuICB2YXIgc3RvcmFnZSA9ICgoX2EgPSBwYiA9PSBudWxsID8gdm9pZCAwIDogcGJbN10pID09IG51bGwgPyB2b2lkIDAgOiBfYVswXSkgPyB2YXJpbnRfdG9faTMyKHBiWzddWzBdLmRhdGEpID4+PiAwID4gMCA/IDEgOiAwIDogLTE7XG4gIHZhciByaSA9IG1hcHBhKHBiWzVdLCBmdW5jdGlvbih1OCkge1xuICAgIHJldHVybiBwYXJzZV9UU1RfVGlsZVJvd0luZm8odTgsIHN0b3JhZ2UpO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBucm93czogdmFyaW50X3RvX2kzMihwYls0XVswXS5kYXRhKSA+Pj4gMCxcbiAgICBkYXRhOiByaS5yZWR1Y2UoZnVuY3Rpb24oYWNjLCB4KSB7XG4gICAgICBpZiAoIWFjY1t4LlJdKVxuICAgICAgICBhY2NbeC5SXSA9IFtdO1xuICAgICAgeC5jZWxscy5mb3JFYWNoKGZ1bmN0aW9uKGNlbGwsIEMpIHtcbiAgICAgICAgaWYgKGFjY1t4LlJdW0NdKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkR1cGxpY2F0ZSBjZWxsIHI9XCIuY29uY2F0KHguUiwgXCIgYz1cIikuY29uY2F0KEMpKTtcbiAgICAgICAgYWNjW3guUl1bQ10gPSBjZWxsO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIFtdKVxuICB9O1xufVxuZnVuY3Rpb24gcGFyc2VfVFNUX1RhYmxlTW9kZWxBcmNoaXZlKE0sIHJvb3QsIHdzKSB7XG4gIHZhciBfYTtcbiAgdmFyIHBiID0gcGFyc2Vfc2hhbGxvdyhyb290LmRhdGEpO1xuICB2YXIgcmFuZ2UgPSB7IHM6IHsgcjogMCwgYzogMCB9LCBlOiB7IHI6IDAsIGM6IDAgfSB9O1xuICByYW5nZS5lLnIgPSAodmFyaW50X3RvX2kzMihwYls2XVswXS5kYXRhKSA+Pj4gMCkgLSAxO1xuICBpZiAocmFuZ2UuZS5yIDwgMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHJvdyB2YXJpbnQgXCIuY29uY2F0KHBiWzZdWzBdLmRhdGEpKTtcbiAgcmFuZ2UuZS5jID0gKHZhcmludF90b19pMzIocGJbN11bMF0uZGF0YSkgPj4+IDApIC0gMTtcbiAgaWYgKHJhbmdlLmUuYyA8IDApXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBjb2wgdmFyaW50IFwiLmNvbmNhdChwYls3XVswXS5kYXRhKSk7XG4gIHdzW1wiIXJlZlwiXSA9IGVuY29kZV9yYW5nZShyYW5nZSk7XG4gIHZhciBzdG9yZSA9IHBhcnNlX3NoYWxsb3cocGJbNF1bMF0uZGF0YSk7XG4gIHZhciBzc3QgPSBwYXJzZV9UU1RfVGFibGVEYXRhTGlzdChNLCBNW3BhcnNlX1RTUF9SZWZlcmVuY2Uoc3RvcmVbNF1bMF0uZGF0YSldWzBdKTtcbiAgdmFyIHJzc3QgPSAoKF9hID0gc3RvcmVbMTddKSA9PSBudWxsID8gdm9pZCAwIDogX2FbMF0pID8gcGFyc2VfVFNUX1RhYmxlRGF0YUxpc3QoTSwgTVtwYXJzZV9UU1BfUmVmZXJlbmNlKHN0b3JlWzE3XVswXS5kYXRhKV1bMF0pIDogW107XG4gIHZhciB0aWxlID0gcGFyc2Vfc2hhbGxvdyhzdG9yZVszXVswXS5kYXRhKTtcbiAgdmFyIF9SID0gMDtcbiAgdGlsZVsxXS5mb3JFYWNoKGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgdGwgPSBwYXJzZV9zaGFsbG93KHQuZGF0YSk7XG4gICAgdmFyIHJlZiA9IE1bcGFyc2VfVFNQX1JlZmVyZW5jZSh0bFsyXVswXS5kYXRhKV1bMF07XG4gICAgdmFyIG10eXBlID0gdmFyaW50X3RvX2kzMihyZWYubWV0YVsxXVswXS5kYXRhKTtcbiAgICBpZiAobXR5cGUgIT0gNjAwMilcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIjYwMDEgdW5leHBlY3RlZCByZWZlcmVuY2UgdG8gXCIuY29uY2F0KG10eXBlKSk7XG4gICAgdmFyIF90aWxlID0gcGFyc2VfVFNUX1RpbGUoTSwgcmVmKTtcbiAgICBfdGlsZS5kYXRhLmZvckVhY2goZnVuY3Rpb24ocm93LCBSKSB7XG4gICAgICByb3cuZm9yRWFjaChmdW5jdGlvbihidWYsIEMpIHtcbiAgICAgICAgdmFyIGFkZHIgPSBlbmNvZGVfY2VsbCh7IHI6IF9SICsgUiwgYzogQyB9KTtcbiAgICAgICAgdmFyIHJlcyA9IHBhcnNlX2NlbGxfc3RvcmFnZShidWYsIHNzdCwgcnNzdCk7XG4gICAgICAgIGlmIChyZXMpXG4gICAgICAgICAgd3NbYWRkcl0gPSByZXM7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBfUiArPSBfdGlsZS5ucm93cztcbiAgfSk7XG59XG5mdW5jdGlvbiBwYXJzZV9UU1RfVGFibGVJbmZvQXJjaGl2ZShNLCByb290KSB7XG4gIHZhciBwYiA9IHBhcnNlX3NoYWxsb3cocm9vdC5kYXRhKTtcbiAgdmFyIG91dCA9IHsgXCIhcmVmXCI6IFwiQTFcIiB9O1xuICB2YXIgdGFibGVyZWYgPSBNW3BhcnNlX1RTUF9SZWZlcmVuY2UocGJbMl1bMF0uZGF0YSldO1xuICB2YXIgbXR5cGUgPSB2YXJpbnRfdG9faTMyKHRhYmxlcmVmWzBdLm1ldGFbMV1bMF0uZGF0YSk7XG4gIGlmIChtdHlwZSAhPSA2MDAxKVxuICAgIHRocm93IG5ldyBFcnJvcihcIjYwMDAgdW5leHBlY3RlZCByZWZlcmVuY2UgdG8gXCIuY29uY2F0KG10eXBlKSk7XG4gIHBhcnNlX1RTVF9UYWJsZU1vZGVsQXJjaGl2ZShNLCB0YWJsZXJlZlswXSwgb3V0KTtcbiAgcmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIHBhcnNlX1ROX1NoZWV0QXJjaGl2ZShNLCByb290KSB7XG4gIHZhciBfYTtcbiAgdmFyIHBiID0gcGFyc2Vfc2hhbGxvdyhyb290LmRhdGEpO1xuICB2YXIgb3V0ID0ge1xuICAgIG5hbWU6ICgoX2EgPSBwYlsxXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hWzBdKSA/IHU4c3RyKHBiWzFdWzBdLmRhdGEpIDogXCJcIixcbiAgICBzaGVldHM6IFtdXG4gIH07XG4gIHZhciBzaGFwZW9mZnMgPSBtYXBwYShwYlsyXSwgcGFyc2VfVFNQX1JlZmVyZW5jZSk7XG4gIHNoYXBlb2Zmcy5mb3JFYWNoKGZ1bmN0aW9uKG9mZikge1xuICAgIE1bb2ZmXS5mb3JFYWNoKGZ1bmN0aW9uKG0pIHtcbiAgICAgIHZhciBtdHlwZSA9IHZhcmludF90b19pMzIobS5tZXRhWzFdWzBdLmRhdGEpO1xuICAgICAgaWYgKG10eXBlID09IDZlMylcbiAgICAgICAgb3V0LnNoZWV0cy5wdXNoKHBhcnNlX1RTVF9UYWJsZUluZm9BcmNoaXZlKE0sIG0pKTtcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBvdXQ7XG59XG5mdW5jdGlvbiBwYXJzZV9UTl9Eb2N1bWVudEFyY2hpdmUoTSwgcm9vdCkge1xuICB2YXIgb3V0ID0gYm9va19uZXcoKTtcbiAgdmFyIHBiID0gcGFyc2Vfc2hhbGxvdyhyb290LmRhdGEpO1xuICB2YXIgc2hlZXRvZmZzID0gbWFwcGEocGJbMV0sIHBhcnNlX1RTUF9SZWZlcmVuY2UpO1xuICBzaGVldG9mZnMuZm9yRWFjaChmdW5jdGlvbihvZmYpIHtcbiAgICBNW29mZl0uZm9yRWFjaChmdW5jdGlvbihtKSB7XG4gICAgICB2YXIgbXR5cGUgPSB2YXJpbnRfdG9faTMyKG0ubWV0YVsxXVswXS5kYXRhKTtcbiAgICAgIGlmIChtdHlwZSA9PSAyKSB7XG4gICAgICAgIHZhciByb290MiA9IHBhcnNlX1ROX1NoZWV0QXJjaGl2ZShNLCBtKTtcbiAgICAgICAgcm9vdDIuc2hlZXRzLmZvckVhY2goZnVuY3Rpb24oc2hlZXQsIGlkeCkge1xuICAgICAgICAgIGJvb2tfYXBwZW5kX3NoZWV0KG91dCwgc2hlZXQsIGlkeCA9PSAwID8gcm9vdDIubmFtZSA6IHJvb3QyLm5hbWUgKyBcIl9cIiArIGlkeCwgdHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgaWYgKG91dC5TaGVldE5hbWVzLmxlbmd0aCA9PSAwKVxuICAgIHRocm93IG5ldyBFcnJvcihcIkVtcHR5IE5VTUJFUlMgZmlsZVwiKTtcbiAgcmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIHBhcnNlX251bWJlcnNfaXdhKGNmYikge1xuICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gIHZhciBNID0ge30sIGluZGljZXMgPSBbXTtcbiAgY2ZiLkZ1bGxQYXRocy5mb3JFYWNoKGZ1bmN0aW9uKHApIHtcbiAgICBpZiAocC5tYXRjaCgvXFwuaXdwdjIvKSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIHBhc3N3b3JkIHByb3RlY3Rpb25cIik7XG4gIH0pO1xuICBjZmIuRmlsZUluZGV4LmZvckVhY2goZnVuY3Rpb24ocykge1xuICAgIGlmICghcy5uYW1lLm1hdGNoKC9cXC5pd2EkLykpXG4gICAgICByZXR1cm47XG4gICAgdmFyIG87XG4gICAgdHJ5IHtcbiAgICAgIG8gPSBkZWNvbXByZXNzX2l3YV9maWxlKHMuY29udGVudCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGNvbnNvbGUubG9nKFwiPz8gXCIgKyBzLmNvbnRlbnQubGVuZ3RoICsgXCIgXCIgKyAoZS5tZXNzYWdlIHx8IGUpKTtcbiAgICB9XG4gICAgdmFyIHBhY2tldHM7XG4gICAgdHJ5IHtcbiAgICAgIHBhY2tldHMgPSBwYXJzZV9pd2FfZmlsZShvKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gY29uc29sZS5sb2coXCIjIyBcIiArIChlLm1lc3NhZ2UgfHwgZSkpO1xuICAgIH1cbiAgICBwYWNrZXRzLmZvckVhY2goZnVuY3Rpb24ocGFja2V0KSB7XG4gICAgICBNW3BhY2tldC5pZF0gPSBwYWNrZXQubWVzc2FnZXM7XG4gICAgICBpbmRpY2VzLnB1c2gocGFja2V0LmlkKTtcbiAgICB9KTtcbiAgfSk7XG4gIGlmICghaW5kaWNlcy5sZW5ndGgpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiRmlsZSBoYXMgbm8gbWVzc2FnZXNcIik7XG4gIHZhciBkb2Nyb290ID0gKChfZCA9IChfYyA9IChfYiA9IChfYSA9IE0gPT0gbnVsbCA/IHZvaWQgMCA6IE1bMV0pID09IG51bGwgPyB2b2lkIDAgOiBfYVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLm1ldGEpID09IG51bGwgPyB2b2lkIDAgOiBfY1sxXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9kWzBdLmRhdGEpICYmIHZhcmludF90b19pMzIoTVsxXVswXS5tZXRhWzFdWzBdLmRhdGEpID09IDEgJiYgTVsxXVswXTtcbiAgaWYgKCFkb2Nyb290KVxuICAgIGluZGljZXMuZm9yRWFjaChmdW5jdGlvbihpZHgpIHtcbiAgICAgIE1baWR4XS5mb3JFYWNoKGZ1bmN0aW9uKGl3YW0pIHtcbiAgICAgICAgdmFyIG10eXBlID0gdmFyaW50X3RvX2kzMihpd2FtLm1ldGFbMV1bMF0uZGF0YSkgPj4+IDA7XG4gICAgICAgIGlmIChtdHlwZSA9PSAxKSB7XG4gICAgICAgICAgaWYgKCFkb2Nyb290KVxuICAgICAgICAgICAgZG9jcm9vdCA9IGl3YW07XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRG9jdW1lbnQgaGFzIG11bHRpcGxlIHJvb3RzXCIpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgaWYgKCFkb2Nyb290KVxuICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIERvY3VtZW50IHJvb3RcIik7XG4gIHJldHVybiBwYXJzZV9UTl9Eb2N1bWVudEFyY2hpdmUoTSwgZG9jcm9vdCk7XG59XG5mdW5jdGlvbiB3cml0ZV90aWxlX3Jvdyh0cmksIGRhdGEsIFNTVCkge1xuICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gIGlmICghKChfYSA9IHRyaVs2XSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hWzBdKSB8fCAhKChfYiA9IHRyaVs3XSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iWzBdKSlcbiAgICB0aHJvdyBcIk11dGF0aW9uIG9ubHkgd29ya3Mgb24gcG9zdC1CTkMgc3RvcmFnZXMhXCI7XG4gIHZhciB3aWRlX29mZnNldHMgPSAoKF9kID0gKF9jID0gdHJpWzhdKSA9PSBudWxsID8gdm9pZCAwIDogX2NbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfZC5kYXRhKSAmJiB2YXJpbnRfdG9faTMyKHRyaVs4XVswXS5kYXRhKSA+IDAgfHwgZmFsc2U7XG4gIGlmICh3aWRlX29mZnNldHMpXG4gICAgdGhyb3cgXCJNYXRoIG9ubHkgd29ya3Mgd2l0aCBub3JtYWwgb2Zmc2V0c1wiO1xuICB2YXIgY250ID0gMDtcbiAgdmFyIGR2ID0gdThfdG9fZGF0YXZpZXcodHJpWzddWzBdLmRhdGEpLCBsYXN0X29mZnNldCA9IDAsIGNlbGxfc3RvcmFnZSA9IFtdO1xuICB2YXIgX2R2ID0gdThfdG9fZGF0YXZpZXcodHJpWzRdWzBdLmRhdGEpLCBfbGFzdF9vZmZzZXQgPSAwLCBfY2VsbF9zdG9yYWdlID0gW107XG4gIGZvciAodmFyIEMgPSAwOyBDIDwgZGF0YS5sZW5ndGg7ICsrQykge1xuICAgIGlmIChkYXRhW0NdID09IG51bGwpIHtcbiAgICAgIGR2LnNldFVpbnQxNihDICogMiwgNjU1MzUsIHRydWUpO1xuICAgICAgX2R2LnNldFVpbnQxNihDICogMiwgNjU1MzUpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGR2LnNldFVpbnQxNihDICogMiwgbGFzdF9vZmZzZXQsIHRydWUpO1xuICAgIF9kdi5zZXRVaW50MTYoQyAqIDIsIF9sYXN0X29mZnNldCwgdHJ1ZSk7XG4gICAgdmFyIGNlbGxvYWQsIF9jZWxsb2FkO1xuICAgIHN3aXRjaCAodHlwZW9mIGRhdGFbQ10pIHtcbiAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgY2VsbG9hZCA9IHdyaXRlX25ld19zdG9yYWdlKHsgdDogXCJzXCIsIHY6IGRhdGFbQ10gfSwgU1NUKTtcbiAgICAgICAgX2NlbGxvYWQgPSB3cml0ZV9vbGRfc3RvcmFnZSh7IHQ6IFwic1wiLCB2OiBkYXRhW0NdIH0sIFNTVCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgICBjZWxsb2FkID0gd3JpdGVfbmV3X3N0b3JhZ2UoeyB0OiBcIm5cIiwgdjogZGF0YVtDXSB9LCBTU1QpO1xuICAgICAgICBfY2VsbG9hZCA9IHdyaXRlX29sZF9zdG9yYWdlKHsgdDogXCJuXCIsIHY6IGRhdGFbQ10gfSwgU1NUKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgICBjZWxsb2FkID0gd3JpdGVfbmV3X3N0b3JhZ2UoeyB0OiBcImJcIiwgdjogZGF0YVtDXSB9LCBTU1QpO1xuICAgICAgICBfY2VsbG9hZCA9IHdyaXRlX29sZF9zdG9yYWdlKHsgdDogXCJiXCIsIHY6IGRhdGFbQ10gfSwgU1NUKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCB2YWx1ZSBcIiArIGRhdGFbQ10pO1xuICAgIH1cbiAgICBjZWxsX3N0b3JhZ2UucHVzaChjZWxsb2FkKTtcbiAgICBsYXN0X29mZnNldCArPSBjZWxsb2FkLmxlbmd0aDtcbiAgICBfY2VsbF9zdG9yYWdlLnB1c2goX2NlbGxvYWQpO1xuICAgIF9sYXN0X29mZnNldCArPSBfY2VsbG9hZC5sZW5ndGg7XG4gICAgKytjbnQ7XG4gIH1cbiAgdHJpWzJdWzBdLmRhdGEgPSB3cml0ZV92YXJpbnQ0OShjbnQpO1xuICBmb3IgKDsgQyA8IHRyaVs3XVswXS5kYXRhLmxlbmd0aCAvIDI7ICsrQykge1xuICAgIGR2LnNldFVpbnQxNihDICogMiwgNjU1MzUsIHRydWUpO1xuICAgIF9kdi5zZXRVaW50MTYoQyAqIDIsIDY1NTM1LCB0cnVlKTtcbiAgfVxuICB0cmlbNl1bMF0uZGF0YSA9IHU4Y29uY2F0KGNlbGxfc3RvcmFnZSk7XG4gIHRyaVszXVswXS5kYXRhID0gdThjb25jYXQoX2NlbGxfc3RvcmFnZSk7XG4gIHJldHVybiBjbnQ7XG59XG5mdW5jdGlvbiB3cml0ZV9udW1iZXJzX2l3YSh3Yiwgb3B0cykge1xuICBpZiAoIW9wdHMgfHwgIW9wdHMubnVtYmVycylcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJNdXN0IHBhc3MgYSBgbnVtYmVyc2Agb3B0aW9uIC0tIGNoZWNrIHRoZSBSRUFETUVcIik7XG4gIHZhciB3cyA9IHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzWzBdXTtcbiAgaWYgKHdiLlNoZWV0TmFtZXMubGVuZ3RoID4gMSlcbiAgICBjb25zb2xlLmVycm9yKFwiVGhlIE51bWJlcnMgd3JpdGVyIGN1cnJlbnRseSB3cml0ZXMgb25seSB0aGUgZmlyc3QgdGFibGVcIik7XG4gIHZhciByYW5nZSA9IGRlY29kZV9yYW5nZSh3c1tcIiFyZWZcIl0pO1xuICByYW5nZS5zLnIgPSByYW5nZS5zLmMgPSAwO1xuICB2YXIgdHJ1bmMgPSBmYWxzZTtcbiAgaWYgKHJhbmdlLmUuYyA+IDkpIHtcbiAgICB0cnVuYyA9IHRydWU7XG4gICAgcmFuZ2UuZS5jID0gOTtcbiAgfVxuICBpZiAocmFuZ2UuZS5yID4gNDkpIHtcbiAgICB0cnVuYyA9IHRydWU7XG4gICAgcmFuZ2UuZS5yID0gNDk7XG4gIH1cbiAgaWYgKHRydW5jKVxuICAgIGNvbnNvbGUuZXJyb3IoXCJUaGUgTnVtYmVycyB3cml0ZXIgaXMgY3VycmVudGx5IGxpbWl0ZWQgdG8gXCIuY29uY2F0KGVuY29kZV9yYW5nZShyYW5nZSkpKTtcbiAgdmFyIGRhdGEgPSBzaGVldF90b19qc29uKHdzLCB7IHJhbmdlOiByYW5nZSwgaGVhZGVyOiAxIH0pO1xuICB2YXIgU1NUID0gW1wiflNoMzN0SjV+XCJdO1xuICBkYXRhLmZvckVhY2goZnVuY3Rpb24ocm93KSB7XG4gICAgcmV0dXJuIHJvdy5mb3JFYWNoKGZ1bmN0aW9uKGNlbGwpIHtcbiAgICAgIGlmICh0eXBlb2YgY2VsbCA9PSBcInN0cmluZ1wiKVxuICAgICAgICBTU1QucHVzaChjZWxsKTtcbiAgICB9KTtcbiAgfSk7XG4gIHZhciBkZXBlbmRlbnRzID0ge307XG4gIHZhciBpbmRpY2VzID0gW107XG4gIHZhciBjZmIgPSBDRkIucmVhZChvcHRzLm51bWJlcnMsIHsgdHlwZTogXCJiYXNlNjRcIiB9KTtcbiAgY2ZiLkZpbGVJbmRleC5tYXAoZnVuY3Rpb24oZmksIGlkeCkge1xuICAgIHJldHVybiBbZmksIGNmYi5GdWxsUGF0aHNbaWR4XV07XG4gIH0pLmZvckVhY2goZnVuY3Rpb24ocm93KSB7XG4gICAgdmFyIGZpID0gcm93WzBdLCBmcCA9IHJvd1sxXTtcbiAgICBpZiAoZmkudHlwZSAhPSAyKVxuICAgICAgcmV0dXJuO1xuICAgIGlmICghZmkubmFtZS5tYXRjaCgvXFwuaXdhLykpXG4gICAgICByZXR1cm47XG4gICAgdmFyIG9sZF9jb250ZW50ID0gZmkuY29udGVudDtcbiAgICB2YXIgcmF3MSA9IGRlY29tcHJlc3NfaXdhX2ZpbGUob2xkX2NvbnRlbnQpO1xuICAgIHZhciB4MiA9IHBhcnNlX2l3YV9maWxlKHJhdzEpO1xuICAgIHgyLmZvckVhY2goZnVuY3Rpb24ocGFja2V0Mikge1xuICAgICAgaW5kaWNlcy5wdXNoKHBhY2tldDIuaWQpO1xuICAgICAgZGVwZW5kZW50c1twYWNrZXQyLmlkXSA9IHsgZGVwczogW10sIGxvY2F0aW9uOiBmcCwgdHlwZTogdmFyaW50X3RvX2kzMihwYWNrZXQyLm1lc3NhZ2VzWzBdLm1ldGFbMV1bMF0uZGF0YSkgfTtcbiAgICB9KTtcbiAgfSk7XG4gIGluZGljZXMuc29ydChmdW5jdGlvbih4MiwgeTIpIHtcbiAgICByZXR1cm4geDIgLSB5MjtcbiAgfSk7XG4gIHZhciBpbmRpY2VzX3ZhcmludCA9IGluZGljZXMuZmlsdGVyKGZ1bmN0aW9uKHgyKSB7XG4gICAgcmV0dXJuIHgyID4gMTtcbiAgfSkubWFwKGZ1bmN0aW9uKHgyKSB7XG4gICAgcmV0dXJuIFt4Miwgd3JpdGVfdmFyaW50NDkoeDIpXTtcbiAgfSk7XG4gIGNmYi5GaWxlSW5kZXgubWFwKGZ1bmN0aW9uKGZpLCBpZHgpIHtcbiAgICByZXR1cm4gW2ZpLCBjZmIuRnVsbFBhdGhzW2lkeF1dO1xuICB9KS5mb3JFYWNoKGZ1bmN0aW9uKHJvdykge1xuICAgIHZhciBmaSA9IHJvd1swXSwgZnAgPSByb3dbMV07XG4gICAgaWYgKCFmaS5uYW1lLm1hdGNoKC9cXC5pd2EvKSlcbiAgICAgIHJldHVybjtcbiAgICB2YXIgeDIgPSBwYXJzZV9pd2FfZmlsZShkZWNvbXByZXNzX2l3YV9maWxlKGZpLmNvbnRlbnQpKTtcbiAgICB4Mi5mb3JFYWNoKGZ1bmN0aW9uKGlhKSB7XG4gICAgICBpYS5tZXNzYWdlcy5mb3JFYWNoKGZ1bmN0aW9uKG0pIHtcbiAgICAgICAgaW5kaWNlc192YXJpbnQuZm9yRWFjaChmdW5jdGlvbihpdmkpIHtcbiAgICAgICAgICBpZiAoaWEubWVzc2FnZXMuc29tZShmdW5jdGlvbihtZXNzKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFyaW50X3RvX2kzMihtZXNzLm1ldGFbMV1bMF0uZGF0YSkgIT0gMTEwMDYgJiYgdThjb250YWlucyhtZXNzLmRhdGEsIGl2aVsxXSk7XG4gICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgIGRlcGVuZGVudHNbaXZpWzBdXS5kZXBzLnB1c2goaWEuaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG4gIGZ1bmN0aW9uIGdldF91bmlxdWVfbXNnaWQoKSB7XG4gICAgZm9yICh2YXIgaSA9IDkyNzI2MjsgaSA8IDJlNjsgKytpKVxuICAgICAgaWYgKCFkZXBlbmRlbnRzW2ldKVxuICAgICAgICByZXR1cm4gaTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJUb28gbWFueSBtZXNzYWdlc1wiKTtcbiAgfVxuICB2YXIgZW50cnkgPSBDRkIuZmluZChjZmIsIGRlcGVuZGVudHNbMV0ubG9jYXRpb24pO1xuICB2YXIgeCA9IHBhcnNlX2l3YV9maWxlKGRlY29tcHJlc3NfaXdhX2ZpbGUoZW50cnkuY29udGVudCkpO1xuICB2YXIgZG9jcm9vdDtcbiAgZm9yICh2YXIgeGkgPSAwOyB4aSA8IHgubGVuZ3RoOyArK3hpKSB7XG4gICAgdmFyIHBhY2tldCA9IHhbeGldO1xuICAgIGlmIChwYWNrZXQuaWQgPT0gMSlcbiAgICAgIGRvY3Jvb3QgPSBwYWNrZXQ7XG4gIH1cbiAgdmFyIHNoZWV0cm9vdHJlZiA9IHBhcnNlX1RTUF9SZWZlcmVuY2UocGFyc2Vfc2hhbGxvdyhkb2Nyb290Lm1lc3NhZ2VzWzBdLmRhdGEpWzFdWzBdLmRhdGEpO1xuICBlbnRyeSA9IENGQi5maW5kKGNmYiwgZGVwZW5kZW50c1tzaGVldHJvb3RyZWZdLmxvY2F0aW9uKTtcbiAgeCA9IHBhcnNlX2l3YV9maWxlKGRlY29tcHJlc3NfaXdhX2ZpbGUoZW50cnkuY29udGVudCkpO1xuICBmb3IgKHhpID0gMDsgeGkgPCB4Lmxlbmd0aDsgKyt4aSkge1xuICAgIHBhY2tldCA9IHhbeGldO1xuICAgIGlmIChwYWNrZXQuaWQgPT0gc2hlZXRyb290cmVmKVxuICAgICAgZG9jcm9vdCA9IHBhY2tldDtcbiAgfVxuICBzaGVldHJvb3RyZWYgPSBwYXJzZV9UU1BfUmVmZXJlbmNlKHBhcnNlX3NoYWxsb3coZG9jcm9vdC5tZXNzYWdlc1swXS5kYXRhKVsyXVswXS5kYXRhKTtcbiAgZW50cnkgPSBDRkIuZmluZChjZmIsIGRlcGVuZGVudHNbc2hlZXRyb290cmVmXS5sb2NhdGlvbik7XG4gIHggPSBwYXJzZV9pd2FfZmlsZShkZWNvbXByZXNzX2l3YV9maWxlKGVudHJ5LmNvbnRlbnQpKTtcbiAgZm9yICh4aSA9IDA7IHhpIDwgeC5sZW5ndGg7ICsreGkpIHtcbiAgICBwYWNrZXQgPSB4W3hpXTtcbiAgICBpZiAocGFja2V0LmlkID09IHNoZWV0cm9vdHJlZilcbiAgICAgIGRvY3Jvb3QgPSBwYWNrZXQ7XG4gIH1cbiAgc2hlZXRyb290cmVmID0gcGFyc2VfVFNQX1JlZmVyZW5jZShwYXJzZV9zaGFsbG93KGRvY3Jvb3QubWVzc2FnZXNbMF0uZGF0YSlbMl1bMF0uZGF0YSk7XG4gIGVudHJ5ID0gQ0ZCLmZpbmQoY2ZiLCBkZXBlbmRlbnRzW3NoZWV0cm9vdHJlZl0ubG9jYXRpb24pO1xuICB4ID0gcGFyc2VfaXdhX2ZpbGUoZGVjb21wcmVzc19pd2FfZmlsZShlbnRyeS5jb250ZW50KSk7XG4gIGZvciAoeGkgPSAwOyB4aSA8IHgubGVuZ3RoOyArK3hpKSB7XG4gICAgcGFja2V0ID0geFt4aV07XG4gICAgaWYgKHBhY2tldC5pZCA9PSBzaGVldHJvb3RyZWYpXG4gICAgICBkb2Nyb290ID0gcGFja2V0O1xuICB9XG4gIHZhciBwYiA9IHBhcnNlX3NoYWxsb3coZG9jcm9vdC5tZXNzYWdlc1swXS5kYXRhKTtcbiAge1xuICAgIHBiWzZdWzBdLmRhdGEgPSB3cml0ZV92YXJpbnQ0OShyYW5nZS5lLnIgKyAxKTtcbiAgICBwYls3XVswXS5kYXRhID0gd3JpdGVfdmFyaW50NDkocmFuZ2UuZS5jICsgMSk7XG4gICAgdmFyIGNydWlkc3JlZiA9IHBhcnNlX1RTUF9SZWZlcmVuY2UocGJbNDZdWzBdLmRhdGEpO1xuICAgIHZhciBvbGRidWNrZXQgPSBDRkIuZmluZChjZmIsIGRlcGVuZGVudHNbY3J1aWRzcmVmXS5sb2NhdGlvbik7XG4gICAgdmFyIF94ID0gcGFyc2VfaXdhX2ZpbGUoZGVjb21wcmVzc19pd2FfZmlsZShvbGRidWNrZXQuY29udGVudCkpO1xuICAgIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgX3gubGVuZ3RoOyArK2opIHtcbiAgICAgICAgaWYgKF94W2pdLmlkID09IGNydWlkc3JlZilcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChfeFtqXS5pZCAhPSBjcnVpZHNyZWYpXG4gICAgICAgIHRocm93IFwiQmFkIENvbHVtblJvd1VJRE1hcEFyY2hpdmVcIjtcbiAgICAgIHZhciBjcnVpZHMgPSBwYXJzZV9zaGFsbG93KF94W2pdLm1lc3NhZ2VzWzBdLmRhdGEpO1xuICAgICAgY3J1aWRzWzFdID0gW107XG4gICAgICBjcnVpZHNbMl0gPSBbXSwgY3J1aWRzWzNdID0gW107XG4gICAgICBmb3IgKHZhciBDID0gMDsgQyA8PSByYW5nZS5lLmM7ICsrQykge1xuICAgICAgICB2YXIgdXVpZCA9IFtdO1xuICAgICAgICB1dWlkWzFdID0gdXVpZFsyXSA9IFt7IHR5cGU6IDAsIGRhdGE6IHdyaXRlX3ZhcmludDQ5KEMgKyA0MjA2OTApIH1dO1xuICAgICAgICBjcnVpZHNbMV0ucHVzaCh7IHR5cGU6IDIsIGRhdGE6IHdyaXRlX3NoYWxsb3codXVpZCkgfSk7XG4gICAgICAgIGNydWlkc1syXS5wdXNoKHsgdHlwZTogMCwgZGF0YTogd3JpdGVfdmFyaW50NDkoQykgfSk7XG4gICAgICAgIGNydWlkc1szXS5wdXNoKHsgdHlwZTogMCwgZGF0YTogd3JpdGVfdmFyaW50NDkoQykgfSk7XG4gICAgICB9XG4gICAgICBjcnVpZHNbNF0gPSBbXTtcbiAgICAgIGNydWlkc1s1XSA9IFtdLCBjcnVpZHNbNl0gPSBbXTtcbiAgICAgIGZvciAodmFyIFIgPSAwOyBSIDw9IHJhbmdlLmUucjsgKytSKSB7XG4gICAgICAgIHV1aWQgPSBbXTtcbiAgICAgICAgdXVpZFsxXSA9IHV1aWRbMl0gPSBbeyB0eXBlOiAwLCBkYXRhOiB3cml0ZV92YXJpbnQ0OShSICsgNzI2MjcwKSB9XTtcbiAgICAgICAgY3J1aWRzWzRdLnB1c2goeyB0eXBlOiAyLCBkYXRhOiB3cml0ZV9zaGFsbG93KHV1aWQpIH0pO1xuICAgICAgICBjcnVpZHNbNV0ucHVzaCh7IHR5cGU6IDAsIGRhdGE6IHdyaXRlX3ZhcmludDQ5KFIpIH0pO1xuICAgICAgICBjcnVpZHNbNl0ucHVzaCh7IHR5cGU6IDAsIGRhdGE6IHdyaXRlX3ZhcmludDQ5KFIpIH0pO1xuICAgICAgfVxuICAgICAgX3hbal0ubWVzc2FnZXNbMF0uZGF0YSA9IHdyaXRlX3NoYWxsb3coY3J1aWRzKTtcbiAgICB9XG4gICAgb2xkYnVja2V0LmNvbnRlbnQgPSBjb21wcmVzc19pd2FfZmlsZSh3cml0ZV9pd2FfZmlsZShfeCkpO1xuICAgIG9sZGJ1Y2tldC5zaXplID0gb2xkYnVja2V0LmNvbnRlbnQubGVuZ3RoO1xuICAgIGRlbGV0ZSBwYls0Nl07XG4gICAgdmFyIHN0b3JlID0gcGFyc2Vfc2hhbGxvdyhwYls0XVswXS5kYXRhKTtcbiAgICB7XG4gICAgICBzdG9yZVs3XVswXS5kYXRhID0gd3JpdGVfdmFyaW50NDkocmFuZ2UuZS5yICsgMSk7XG4gICAgICB2YXIgcm93X2hlYWRlcnMgPSBwYXJzZV9zaGFsbG93KHN0b3JlWzFdWzBdLmRhdGEpO1xuICAgICAgdmFyIHJvd19oZWFkZXJfcmVmID0gcGFyc2VfVFNQX1JlZmVyZW5jZShyb3dfaGVhZGVyc1syXVswXS5kYXRhKTtcbiAgICAgIG9sZGJ1Y2tldCA9IENGQi5maW5kKGNmYiwgZGVwZW5kZW50c1tyb3dfaGVhZGVyX3JlZl0ubG9jYXRpb24pO1xuICAgICAgX3ggPSBwYXJzZV9pd2FfZmlsZShkZWNvbXByZXNzX2l3YV9maWxlKG9sZGJ1Y2tldC5jb250ZW50KSk7XG4gICAgICB7XG4gICAgICAgIGlmIChfeFswXS5pZCAhPSByb3dfaGVhZGVyX3JlZilcbiAgICAgICAgICB0aHJvdyBcIkJhZCBIZWFkZXJTdG9yYWdlQnVja2V0XCI7XG4gICAgICAgIHZhciBiYXNlX2J1Y2tldCA9IHBhcnNlX3NoYWxsb3coX3hbMF0ubWVzc2FnZXNbMF0uZGF0YSk7XG4gICAgICAgIGZvciAoUiA9IDA7IFIgPCBkYXRhLmxlbmd0aDsgKytSKSB7XG4gICAgICAgICAgdmFyIF9idWNrZXQgPSBwYXJzZV9zaGFsbG93KGJhc2VfYnVja2V0WzJdWzBdLmRhdGEpO1xuICAgICAgICAgIF9idWNrZXRbMV1bMF0uZGF0YSA9IHdyaXRlX3ZhcmludDQ5KFIpO1xuICAgICAgICAgIF9idWNrZXRbNF1bMF0uZGF0YSA9IHdyaXRlX3ZhcmludDQ5KGRhdGFbUl0ubGVuZ3RoKTtcbiAgICAgICAgICBiYXNlX2J1Y2tldFsyXVtSXSA9IHsgdHlwZTogYmFzZV9idWNrZXRbMl1bMF0udHlwZSwgZGF0YTogd3JpdGVfc2hhbGxvdyhfYnVja2V0KSB9O1xuICAgICAgICB9XG4gICAgICAgIF94WzBdLm1lc3NhZ2VzWzBdLmRhdGEgPSB3cml0ZV9zaGFsbG93KGJhc2VfYnVja2V0KTtcbiAgICAgIH1cbiAgICAgIG9sZGJ1Y2tldC5jb250ZW50ID0gY29tcHJlc3NfaXdhX2ZpbGUod3JpdGVfaXdhX2ZpbGUoX3gpKTtcbiAgICAgIG9sZGJ1Y2tldC5zaXplID0gb2xkYnVja2V0LmNvbnRlbnQubGVuZ3RoO1xuICAgICAgdmFyIGNvbF9oZWFkZXJfcmVmID0gcGFyc2VfVFNQX1JlZmVyZW5jZShzdG9yZVsyXVswXS5kYXRhKTtcbiAgICAgIG9sZGJ1Y2tldCA9IENGQi5maW5kKGNmYiwgZGVwZW5kZW50c1tjb2xfaGVhZGVyX3JlZl0ubG9jYXRpb24pO1xuICAgICAgX3ggPSBwYXJzZV9pd2FfZmlsZShkZWNvbXByZXNzX2l3YV9maWxlKG9sZGJ1Y2tldC5jb250ZW50KSk7XG4gICAgICB7XG4gICAgICAgIGlmIChfeFswXS5pZCAhPSBjb2xfaGVhZGVyX3JlZilcbiAgICAgICAgICB0aHJvdyBcIkJhZCBIZWFkZXJTdG9yYWdlQnVja2V0XCI7XG4gICAgICAgIGJhc2VfYnVja2V0ID0gcGFyc2Vfc2hhbGxvdyhfeFswXS5tZXNzYWdlc1swXS5kYXRhKTtcbiAgICAgICAgZm9yIChDID0gMDsgQyA8PSByYW5nZS5lLmM7ICsrQykge1xuICAgICAgICAgIF9idWNrZXQgPSBwYXJzZV9zaGFsbG93KGJhc2VfYnVja2V0WzJdWzBdLmRhdGEpO1xuICAgICAgICAgIF9idWNrZXRbMV1bMF0uZGF0YSA9IHdyaXRlX3ZhcmludDQ5KEMpO1xuICAgICAgICAgIF9idWNrZXRbNF1bMF0uZGF0YSA9IHdyaXRlX3ZhcmludDQ5KHJhbmdlLmUuciArIDEpO1xuICAgICAgICAgIGJhc2VfYnVja2V0WzJdW0NdID0geyB0eXBlOiBiYXNlX2J1Y2tldFsyXVswXS50eXBlLCBkYXRhOiB3cml0ZV9zaGFsbG93KF9idWNrZXQpIH07XG4gICAgICAgIH1cbiAgICAgICAgX3hbMF0ubWVzc2FnZXNbMF0uZGF0YSA9IHdyaXRlX3NoYWxsb3coYmFzZV9idWNrZXQpO1xuICAgICAgfVxuICAgICAgb2xkYnVja2V0LmNvbnRlbnQgPSBjb21wcmVzc19pd2FfZmlsZSh3cml0ZV9pd2FfZmlsZShfeCkpO1xuICAgICAgb2xkYnVja2V0LnNpemUgPSBvbGRidWNrZXQuY29udGVudC5sZW5ndGg7XG4gICAgICB2YXIgc3N0cmVmID0gcGFyc2VfVFNQX1JlZmVyZW5jZShzdG9yZVs0XVswXS5kYXRhKTtcbiAgICAgIChmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHNlbnRyeSA9IENGQi5maW5kKGNmYiwgZGVwZW5kZW50c1tzc3RyZWZdLmxvY2F0aW9uKTtcbiAgICAgICAgdmFyIHN4ID0gcGFyc2VfaXdhX2ZpbGUoZGVjb21wcmVzc19pd2FfZmlsZShzZW50cnkuY29udGVudCkpO1xuICAgICAgICB2YXIgc3N0cm9vdDtcbiAgICAgICAgZm9yICh2YXIgc3hpID0gMDsgc3hpIDwgc3gubGVuZ3RoOyArK3N4aSkge1xuICAgICAgICAgIHZhciBwYWNrZXQyID0gc3hbc3hpXTtcbiAgICAgICAgICBpZiAocGFja2V0Mi5pZCA9PSBzc3RyZWYpXG4gICAgICAgICAgICBzc3Ryb290ID0gcGFja2V0MjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3N0ZGF0YSA9IHBhcnNlX3NoYWxsb3coc3N0cm9vdC5tZXNzYWdlc1swXS5kYXRhKTtcbiAgICAgICAge1xuICAgICAgICAgIHNzdGRhdGFbM10gPSBbXTtcbiAgICAgICAgICB2YXIgbmV3c3N0ID0gW107XG4gICAgICAgICAgU1NULmZvckVhY2goZnVuY3Rpb24oc3RyLCBpKSB7XG4gICAgICAgICAgICBuZXdzc3RbMV0gPSBbeyB0eXBlOiAwLCBkYXRhOiB3cml0ZV92YXJpbnQ0OShpKSB9XTtcbiAgICAgICAgICAgIG5ld3NzdFsyXSA9IFt7IHR5cGU6IDAsIGRhdGE6IHdyaXRlX3ZhcmludDQ5KDEpIH1dO1xuICAgICAgICAgICAgbmV3c3N0WzNdID0gW3sgdHlwZTogMiwgZGF0YTogc3RydTgoc3RyKSB9XTtcbiAgICAgICAgICAgIHNzdGRhdGFbM10ucHVzaCh7IHR5cGU6IDIsIGRhdGE6IHdyaXRlX3NoYWxsb3cobmV3c3N0KSB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBzc3Ryb290Lm1lc3NhZ2VzWzBdLmRhdGEgPSB3cml0ZV9zaGFsbG93KHNzdGRhdGEpO1xuICAgICAgICB2YXIgc3kgPSB3cml0ZV9pd2FfZmlsZShzeCk7XG4gICAgICAgIHZhciByYXczMiA9IGNvbXByZXNzX2l3YV9maWxlKHN5KTtcbiAgICAgICAgc2VudHJ5LmNvbnRlbnQgPSByYXczMjtcbiAgICAgICAgc2VudHJ5LnNpemUgPSBzZW50cnkuY29udGVudC5sZW5ndGg7XG4gICAgICB9KSgpO1xuICAgICAgdmFyIHRpbGUgPSBwYXJzZV9zaGFsbG93KHN0b3JlWzNdWzBdLmRhdGEpO1xuICAgICAge1xuICAgICAgICB2YXIgdCA9IHRpbGVbMV1bMF07XG4gICAgICAgIGRlbGV0ZSB0aWxlWzJdO1xuICAgICAgICB2YXIgdGwgPSBwYXJzZV9zaGFsbG93KHQuZGF0YSk7XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgdGlsZXJlZiA9IHBhcnNlX1RTUF9SZWZlcmVuY2UodGxbMl1bMF0uZGF0YSk7XG4gICAgICAgICAgKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRlbnRyeSA9IENGQi5maW5kKGNmYiwgZGVwZW5kZW50c1t0aWxlcmVmXS5sb2NhdGlvbik7XG4gICAgICAgICAgICB2YXIgdHggPSBwYXJzZV9pd2FfZmlsZShkZWNvbXByZXNzX2l3YV9maWxlKHRlbnRyeS5jb250ZW50KSk7XG4gICAgICAgICAgICB2YXIgdGlsZXJvb3Q7XG4gICAgICAgICAgICBmb3IgKHZhciBzeGkgPSAwOyBzeGkgPCB0eC5sZW5ndGg7ICsrc3hpKSB7XG4gICAgICAgICAgICAgIHZhciBwYWNrZXQyID0gdHhbc3hpXTtcbiAgICAgICAgICAgICAgaWYgKHBhY2tldDIuaWQgPT0gdGlsZXJlZilcbiAgICAgICAgICAgICAgICB0aWxlcm9vdCA9IHBhY2tldDI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgdGlsZWRhdGEgPSBwYXJzZV9zaGFsbG93KHRpbGVyb290Lm1lc3NhZ2VzWzBdLmRhdGEpO1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkZWxldGUgdGlsZWRhdGFbNl07XG4gICAgICAgICAgICAgIGRlbGV0ZSB0aWxlWzddO1xuICAgICAgICAgICAgICB2YXIgcm93bG9hZCA9IG5ldyBVaW50OEFycmF5KHRpbGVkYXRhWzVdWzBdLmRhdGEpO1xuICAgICAgICAgICAgICB0aWxlZGF0YVs1XSA9IFtdO1xuICAgICAgICAgICAgICB2YXIgY250ID0gMDtcbiAgICAgICAgICAgICAgZm9yICh2YXIgUjIgPSAwOyBSMiA8PSByYW5nZS5lLnI7ICsrUjIpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGlsZXJvdyA9IHBhcnNlX3NoYWxsb3cocm93bG9hZCk7XG4gICAgICAgICAgICAgICAgY250ICs9IHdyaXRlX3RpbGVfcm93KHRpbGVyb3csIGRhdGFbUjJdLCBTU1QpO1xuICAgICAgICAgICAgICAgIHRpbGVyb3dbMV1bMF0uZGF0YSA9IHdyaXRlX3ZhcmludDQ5KFIyKTtcbiAgICAgICAgICAgICAgICB0aWxlZGF0YVs1XS5wdXNoKHsgZGF0YTogd3JpdGVfc2hhbGxvdyh0aWxlcm93KSwgdHlwZTogMiB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aWxlZGF0YVsxXSA9IFt7IHR5cGU6IDAsIGRhdGE6IHdyaXRlX3ZhcmludDQ5KHJhbmdlLmUuYyArIDEpIH1dO1xuICAgICAgICAgICAgICB0aWxlZGF0YVsyXSA9IFt7IHR5cGU6IDAsIGRhdGE6IHdyaXRlX3ZhcmludDQ5KHJhbmdlLmUuciArIDEpIH1dO1xuICAgICAgICAgICAgICB0aWxlZGF0YVszXSA9IFt7IHR5cGU6IDAsIGRhdGE6IHdyaXRlX3ZhcmludDQ5KGNudCkgfV07XG4gICAgICAgICAgICAgIHRpbGVkYXRhWzRdID0gW3sgdHlwZTogMCwgZGF0YTogd3JpdGVfdmFyaW50NDkocmFuZ2UuZS5yICsgMSkgfV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aWxlcm9vdC5tZXNzYWdlc1swXS5kYXRhID0gd3JpdGVfc2hhbGxvdyh0aWxlZGF0YSk7XG4gICAgICAgICAgICB2YXIgdHkgPSB3cml0ZV9pd2FfZmlsZSh0eCk7XG4gICAgICAgICAgICB2YXIgcmF3MzIgPSBjb21wcmVzc19pd2FfZmlsZSh0eSk7XG4gICAgICAgICAgICB0ZW50cnkuY29udGVudCA9IHJhdzMyO1xuICAgICAgICAgICAgdGVudHJ5LnNpemUgPSB0ZW50cnkuY29udGVudC5sZW5ndGg7XG4gICAgICAgICAgfSkoKTtcbiAgICAgICAgfVxuICAgICAgICB0LmRhdGEgPSB3cml0ZV9zaGFsbG93KHRsKTtcbiAgICAgIH1cbiAgICAgIHN0b3JlWzNdWzBdLmRhdGEgPSB3cml0ZV9zaGFsbG93KHRpbGUpO1xuICAgIH1cbiAgICBwYls0XVswXS5kYXRhID0gd3JpdGVfc2hhbGxvdyhzdG9yZSk7XG4gIH1cbiAgZG9jcm9vdC5tZXNzYWdlc1swXS5kYXRhID0gd3JpdGVfc2hhbGxvdyhwYik7XG4gIHZhciB5ID0gd3JpdGVfaXdhX2ZpbGUoeCk7XG4gIHZhciByYXczID0gY29tcHJlc3NfaXdhX2ZpbGUoeSk7XG4gIGVudHJ5LmNvbnRlbnQgPSByYXczO1xuICBlbnRyeS5zaXplID0gZW50cnkuY29udGVudC5sZW5ndGg7XG4gIHJldHVybiBjZmI7XG59XG5mdW5jdGlvbiBmaXhfb3B0c19mdW5jKGRlZmF1bHRzLyo6QXJyYXk8QXJyYXk8YW55PiA+Ki8pLyo6eyhvOmFueSk6dm9pZH0qLyB7XG5cdHJldHVybiBmdW5jdGlvbiBmaXhfb3B0cyhvcHRzKSB7XG5cdFx0Zm9yKHZhciBpID0gMDsgaSAhPSBkZWZhdWx0cy5sZW5ndGg7ICsraSkge1xuXHRcdFx0dmFyIGQgPSBkZWZhdWx0c1tpXTtcblx0XHRcdGlmKG9wdHNbZFswXV0gPT09IHVuZGVmaW5lZCkgb3B0c1tkWzBdXSA9IGRbMV07XG5cdFx0XHRpZihkWzJdID09PSAnbicpIG9wdHNbZFswXV0gPSBOdW1iZXIob3B0c1tkWzBdXSk7XG5cdFx0fVxuXHR9O1xufVxuXG5mdW5jdGlvbiBmaXhfcmVhZF9vcHRzKG9wdHMpIHtcbmZpeF9vcHRzX2Z1bmMoW1xuXHRbJ2NlbGxORicsIGZhbHNlXSwgLyogZW1pdCBjZWxsIG51bWJlciBmb3JtYXQgc3RyaW5nIGFzIC56ICovXG5cdFsnY2VsbEhUTUwnLCB0cnVlXSwgLyogZW1pdCBodG1sIHN0cmluZyBhcyAuaCAqL1xuXHRbJ2NlbGxGb3JtdWxhJywgdHJ1ZV0sIC8qIGVtaXQgZm9ybXVsYWUgYXMgLmYgKi9cblx0WydjZWxsU3R5bGVzJywgZmFsc2VdLCAvKiBlbWl0cyBzdHlsZS90aGVtZSBhcyAucyAqL1xuXHRbJ2NlbGxUZXh0JywgdHJ1ZV0sIC8qIGVtaXQgZm9ybWF0dGVkIHRleHQgYXMgLncgKi9cblx0WydjZWxsRGF0ZXMnLCBmYWxzZV0sIC8qIGVtaXQgZGF0ZSBjZWxscyB3aXRoIHR5cGUgYGRgICovXG5cblx0WydzaGVldFN0dWJzJywgZmFsc2VdLCAvKiBlbWl0IGVtcHR5IGNlbGxzICovXG5cdFsnc2hlZXRSb3dzJywgMCwgJ24nXSwgLyogcmVhZCBuIHJvd3MgKDAgPSByZWFkIGFsbCByb3dzKSAqL1xuXG5cdFsnYm9va0RlcHMnLCBmYWxzZV0sIC8qIHBhcnNlIGNhbGN1bGF0aW9uIGNoYWlucyAqL1xuXHRbJ2Jvb2tTaGVldHMnLCBmYWxzZV0sIC8qIG9ubHkgdHJ5IHRvIGdldCBzaGVldCBuYW1lcyAobm8gU2hlZXRzKSAqL1xuXHRbJ2Jvb2tQcm9wcycsIGZhbHNlXSwgLyogb25seSB0cnkgdG8gZ2V0IHByb3BlcnRpZXMgKG5vIFNoZWV0cykgKi9cblx0Wydib29rRmlsZXMnLCBmYWxzZV0sIC8qIGluY2x1ZGUgcmF3IGZpbGUgc3RydWN0dXJlIChrZXlzLCBmaWxlcywgY2ZiKSAqL1xuXHRbJ2Jvb2tWQkEnLCBmYWxzZV0sIC8qIGluY2x1ZGUgdmJhIHJhdyBkYXRhICh2YmFyYXcpICovXG5cblx0WydwYXNzd29yZCcsJyddLCAvKiBwYXNzd29yZCAqL1xuXHRbJ1dURicsIGZhbHNlXSAvKiBXVEYgbW9kZSAodGhyb3dzIGVycm9ycykgKi9cbl0pKG9wdHMpO1xufVxuXG5mdW5jdGlvbiBmaXhfd3JpdGVfb3B0cyhvcHRzKSB7XG5maXhfb3B0c19mdW5jKFtcblx0WydjZWxsRGF0ZXMnLCBmYWxzZV0sIC8qIHdyaXRlIGRhdGUgY2VsbHMgd2l0aCB0eXBlIGBkYCAqL1xuXG5cdFsnYm9va1NTVCcsIGZhbHNlXSwgLyogR2VuZXJhdGUgU2hhcmVkIFN0cmluZyBUYWJsZSAqL1xuXG5cdFsnYm9va1R5cGUnLCAneGxzeCddLCAvKiBUeXBlIG9mIHdvcmtib29rICh4bHN4L20vYikgKi9cblxuXHRbJ2NvbXByZXNzaW9uJywgZmFsc2VdLCAvKiBVc2UgZmlsZSBjb21wcmVzc2lvbiAqL1xuXG5cdFsnV1RGJywgZmFsc2VdIC8qIFdURiBtb2RlICh0aHJvd3MgZXJyb3JzKSAqL1xuXSkob3B0cyk7XG59XG5mdW5jdGlvbiBnZXRfc2hlZXRfdHlwZShuLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHRpZihSRUxTLldTLmluZGV4T2YobikgPiAtMSkgcmV0dXJuIFwic2hlZXRcIjtcblx0aWYoUkVMUy5DUyAmJiBuID09IFJFTFMuQ1MpIHJldHVybiBcImNoYXJ0XCI7XG5cdGlmKFJFTFMuRFMgJiYgbiA9PSBSRUxTLkRTKSByZXR1cm4gXCJkaWFsb2dcIjtcblx0aWYoUkVMUy5NUyAmJiBuID09IFJFTFMuTVMpIHJldHVybiBcIm1hY3JvXCI7XG5cdHJldHVybiAobiAmJiBuLmxlbmd0aCkgPyBuIDogXCJzaGVldFwiO1xufVxuZnVuY3Rpb24gc2FmZV9wYXJzZV93YnJlbHMod2JyZWxzLCBzaGVldHMpIHtcblx0aWYoIXdicmVscykgcmV0dXJuIDA7XG5cdHRyeSB7XG5cdFx0d2JyZWxzID0gc2hlZXRzLm1hcChmdW5jdGlvbiBwd2JyKHcpIHsgaWYoIXcuaWQpIHcuaWQgPSB3LnN0clJlbElEOyByZXR1cm4gW3cubmFtZSwgd2JyZWxzWychaWQnXVt3LmlkXS5UYXJnZXQsIGdldF9zaGVldF90eXBlKHdicmVsc1snIWlkJ11bdy5pZF0uVHlwZSldOyB9KTtcblx0fSBjYXRjaChlKSB7IHJldHVybiBudWxsOyB9XG5cdHJldHVybiAhd2JyZWxzIHx8IHdicmVscy5sZW5ndGggPT09IDAgPyBudWxsIDogd2JyZWxzO1xufVxuXG5mdW5jdGlvbiBzYWZlX3BhcnNlX3NoZWV0KHppcCwgcGF0aC8qOnN0cmluZyovLCByZWxzUGF0aC8qOnN0cmluZyovLCBzaGVldCwgaWR4Lyo6bnVtYmVyKi8sIHNoZWV0UmVscywgc2hlZXRzLCBzdHlwZS8qOnN0cmluZyovLCBvcHRzLCB3YiwgdGhlbWVzLCBzdHlsZXMpIHtcblx0dHJ5IHtcblx0XHRzaGVldFJlbHNbc2hlZXRdPXBhcnNlX3JlbHMoZ2V0emlwc3RyKHppcCwgcmVsc1BhdGgsIHRydWUpLCBwYXRoKTtcblx0XHR2YXIgZGF0YSA9IGdldHppcGRhdGEoemlwLCBwYXRoKTtcblx0XHR2YXIgX3dzO1xuXHRcdHN3aXRjaChzdHlwZSkge1xuXHRcdFx0Y2FzZSAnc2hlZXQnOiAgX3dzID0gcGFyc2Vfd3MoZGF0YSwgcGF0aCwgaWR4LCBvcHRzLCBzaGVldFJlbHNbc2hlZXRdLCB3YiwgdGhlbWVzLCBzdHlsZXMpOyBicmVhaztcblx0XHRcdGNhc2UgJ2NoYXJ0JzogIF93cyA9IHBhcnNlX2NzKGRhdGEsIHBhdGgsIGlkeCwgb3B0cywgc2hlZXRSZWxzW3NoZWV0XSwgd2IsIHRoZW1lcywgc3R5bGVzKTtcblx0XHRcdFx0aWYoIV93cyB8fCAhX3dzWychZHJhd2VsJ10pIGJyZWFrO1xuXHRcdFx0XHR2YXIgZGZpbGUgPSByZXNvbHZlX3BhdGgoX3dzWychZHJhd2VsJ10uVGFyZ2V0LCBwYXRoKTtcblx0XHRcdFx0dmFyIGRyZWxzcCA9IGdldF9yZWxzX3BhdGgoZGZpbGUpO1xuXHRcdFx0XHR2YXIgZHJhdyA9IHBhcnNlX2RyYXdpbmcoZ2V0emlwc3RyKHppcCwgZGZpbGUsIHRydWUpLCBwYXJzZV9yZWxzKGdldHppcHN0cih6aXAsIGRyZWxzcCwgdHJ1ZSksIGRmaWxlKSk7XG5cdFx0XHRcdHZhciBjaGFydHAgPSByZXNvbHZlX3BhdGgoZHJhdywgZGZpbGUpO1xuXHRcdFx0XHR2YXIgY3JlbHNwID0gZ2V0X3JlbHNfcGF0aChjaGFydHApO1xuXHRcdFx0XHRfd3MgPSBwYXJzZV9jaGFydChnZXR6aXBzdHIoemlwLCBjaGFydHAsIHRydWUpLCBjaGFydHAsIG9wdHMsIHBhcnNlX3JlbHMoZ2V0emlwc3RyKHppcCwgY3JlbHNwLCB0cnVlKSwgY2hhcnRwKSwgd2IsIF93cyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnbWFjcm8nOiAgX3dzID0gcGFyc2VfbXMoZGF0YSwgcGF0aCwgaWR4LCBvcHRzLCBzaGVldFJlbHNbc2hlZXRdLCB3YiwgdGhlbWVzLCBzdHlsZXMpOyBicmVhaztcblx0XHRcdGNhc2UgJ2RpYWxvZyc6IF93cyA9IHBhcnNlX2RzKGRhdGEsIHBhdGgsIGlkeCwgb3B0cywgc2hlZXRSZWxzW3NoZWV0XSwgd2IsIHRoZW1lcywgc3R5bGVzKTsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgc2hlZXQgdHlwZSBcIiArIHN0eXBlKTtcblx0XHR9XG5cdFx0c2hlZXRzW3NoZWV0XSA9IF93cztcblxuXHRcdC8qIHNjYW4gcmVscyBmb3IgY29tbWVudHMgYW5kIHRocmVhZGVkIGNvbW1lbnRzICovXG5cdFx0dmFyIHRjb21tZW50cyA9IFtdO1xuXHRcdGlmKHNoZWV0UmVscyAmJiBzaGVldFJlbHNbc2hlZXRdKSBrZXlzKHNoZWV0UmVsc1tzaGVldF0pLmZvckVhY2goZnVuY3Rpb24obikge1xuXHRcdFx0dmFyIGRmaWxlID0gXCJcIjtcblx0XHRcdGlmKHNoZWV0UmVsc1tzaGVldF1bbl0uVHlwZSA9PSBSRUxTLkNNTlQpIHtcblx0XHRcdFx0ZGZpbGUgPSByZXNvbHZlX3BhdGgoc2hlZXRSZWxzW3NoZWV0XVtuXS5UYXJnZXQsIHBhdGgpO1xuXHRcdFx0XHR2YXIgY29tbWVudHMgPSBwYXJzZV9jbW50KGdldHppcGRhdGEoemlwLCBkZmlsZSwgdHJ1ZSksIGRmaWxlLCBvcHRzKTtcblx0XHRcdFx0aWYoIWNvbW1lbnRzIHx8ICFjb21tZW50cy5sZW5ndGgpIHJldHVybjtcblx0XHRcdFx0c2hlZXRfaW5zZXJ0X2NvbW1lbnRzKF93cywgY29tbWVudHMsIGZhbHNlKTtcblx0XHRcdH1cblx0XHRcdGlmKHNoZWV0UmVsc1tzaGVldF1bbl0uVHlwZSA9PSBSRUxTLlRDTU5UKSB7XG5cdFx0XHRcdGRmaWxlID0gcmVzb2x2ZV9wYXRoKHNoZWV0UmVsc1tzaGVldF1bbl0uVGFyZ2V0LCBwYXRoKTtcblx0XHRcdFx0dGNvbW1lbnRzID0gdGNvbW1lbnRzLmNvbmNhdChwYXJzZV90Y21udF94bWwoZ2V0emlwZGF0YSh6aXAsIGRmaWxlLCB0cnVlKSwgb3B0cykpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdGlmKHRjb21tZW50cyAmJiB0Y29tbWVudHMubGVuZ3RoKSBzaGVldF9pbnNlcnRfY29tbWVudHMoX3dzLCB0Y29tbWVudHMsIHRydWUsIG9wdHMucGVvcGxlIHx8IFtdKTtcblx0fSBjYXRjaChlKSB7IGlmKG9wdHMuV1RGKSB0aHJvdyBlOyB9XG59XG5cbmZ1bmN0aW9uIHN0cmlwX2Zyb250X3NsYXNoKHgvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7IHJldHVybiB4LmNoYXJBdCgwKSA9PSAnLycgPyB4LnNsaWNlKDEpIDogeDsgfVxuXG5mdW5jdGlvbiBwYXJzZV96aXAoemlwLyo6WklQKi8sIG9wdHMvKjo/UGFyc2VPcHRzKi8pLyo6V29ya2Jvb2sqLyB7XG5cdG1ha2Vfc3NmKCk7XG5cdG9wdHMgPSBvcHRzIHx8IHt9O1xuXHRmaXhfcmVhZF9vcHRzKG9wdHMpO1xuXG5cdC8qIE9wZW5Eb2N1bWVudCBQYXJ0IDMgU2VjdGlvbiAyLjIuMSBPcGVuRG9jdW1lbnQgUGFja2FnZSAqL1xuXHRpZihzYWZlZ2V0emlwZmlsZSh6aXAsICdNRVRBLUlORi9tYW5pZmVzdC54bWwnKSkgcmV0dXJuIHBhcnNlX29kcyh6aXAsIG9wdHMpO1xuXHQvKiBVT0MgKi9cblx0aWYoc2FmZWdldHppcGZpbGUoemlwLCAnb2JqZWN0ZGF0YS54bWwnKSkgcmV0dXJuIHBhcnNlX29kcyh6aXAsIG9wdHMpO1xuXHQvKiBOdW1iZXJzICovXG5cdGlmKHNhZmVnZXR6aXBmaWxlKHppcCwgJ0luZGV4L0RvY3VtZW50Lml3YScpKSB7XG5cdFx0aWYodHlwZW9mIFVpbnQ4QXJyYXkgPT0gXCJ1bmRlZmluZWRcIikgdGhyb3cgbmV3IEVycm9yKCdOVU1CRVJTIGZpbGUgcGFyc2luZyByZXF1aXJlcyBVaW50OEFycmF5IHN1cHBvcnQnKTtcblx0XHRpZih0eXBlb2YgcGFyc2VfbnVtYmVyc19pd2EgIT0gXCJ1bmRlZmluZWRcIikge1xuXHRcdFx0aWYoemlwLkZpbGVJbmRleCkgcmV0dXJuIHBhcnNlX251bWJlcnNfaXdhKHppcCk7XG5cdFx0XHR2YXIgX3ppcCA9IENGQi51dGlscy5jZmJfbmV3KCk7XG5cdFx0XHR6aXBlbnRyaWVzKHppcCkuZm9yRWFjaChmdW5jdGlvbihlKSB7IHppcF9hZGRfZmlsZShfemlwLCBlLCBnZXR6aXBiaW4oemlwLCBlKSk7IH0pO1xuXHRcdFx0cmV0dXJuIHBhcnNlX251bWJlcnNfaXdhKF96aXApO1xuXHRcdH1cblx0XHR0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIE5VTUJFUlMgZmlsZScpO1xuXHR9XG5cdGlmKCFzYWZlZ2V0emlwZmlsZSh6aXAsICdbQ29udGVudF9UeXBlc10ueG1sJykpIHtcblx0XHRpZihzYWZlZ2V0emlwZmlsZSh6aXAsICdpbmRleC54bWwuZ3onKSkgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBOVU1CRVJTIDA4IGZpbGUnKTtcblx0XHRpZihzYWZlZ2V0emlwZmlsZSh6aXAsICdpbmRleC54bWwnKSkgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBOVU1CRVJTIDA5IGZpbGUnKTtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIFpJUCBmaWxlJyk7XG5cdH1cblxuXHR2YXIgZW50cmllcyA9IHppcGVudHJpZXMoemlwKTtcblx0dmFyIGRpciA9IHBhcnNlX2N0KChnZXR6aXBzdHIoemlwLCAnW0NvbnRlbnRfVHlwZXNdLnhtbCcpLyo6P2FueSovKSk7XG5cdHZhciB4bHNiID0gZmFsc2U7XG5cdHZhciBzaGVldHMsIGJpbm5hbWU7XG5cdGlmKGRpci53b3JrYm9va3MubGVuZ3RoID09PSAwKSB7XG5cdFx0YmlubmFtZSA9IFwieGwvd29ya2Jvb2sueG1sXCI7XG5cdFx0aWYoZ2V0emlwZGF0YSh6aXAsYmlubmFtZSwgdHJ1ZSkpIGRpci53b3JrYm9va3MucHVzaChiaW5uYW1lKTtcblx0fVxuXHRpZihkaXIud29ya2Jvb2tzLmxlbmd0aCA9PT0gMCkge1xuXHRcdGJpbm5hbWUgPSBcInhsL3dvcmtib29rLmJpblwiO1xuXHRcdGlmKCFnZXR6aXBkYXRhKHppcCxiaW5uYW1lLHRydWUpKSB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZmluZCB3b3JrYm9va1wiKTtcblx0XHRkaXIud29ya2Jvb2tzLnB1c2goYmlubmFtZSk7XG5cdFx0eGxzYiA9IHRydWU7XG5cdH1cblx0aWYoZGlyLndvcmtib29rc1swXS5zbGljZSgtMykgPT0gXCJiaW5cIikgeGxzYiA9IHRydWU7XG5cblx0dmFyIHRoZW1lcyA9ICh7fS8qOmFueSovKTtcblx0dmFyIHN0eWxlcyA9ICh7fS8qOmFueSovKTtcblx0aWYoIW9wdHMuYm9va1NoZWV0cyAmJiAhb3B0cy5ib29rUHJvcHMpIHtcblx0XHRzdHJzID0gW107XG5cdFx0aWYoZGlyLnNzdCkgdHJ5IHsgc3Rycz1wYXJzZV9zc3QoZ2V0emlwZGF0YSh6aXAsIHN0cmlwX2Zyb250X3NsYXNoKGRpci5zc3QpKSwgZGlyLnNzdCwgb3B0cyk7IH0gY2F0Y2goZSkgeyBpZihvcHRzLldURikgdGhyb3cgZTsgfVxuXG5cdFx0aWYob3B0cy5jZWxsU3R5bGVzICYmIGRpci50aGVtZXMubGVuZ3RoKSB0aGVtZXMgPSBwYXJzZV90aGVtZShnZXR6aXBzdHIoemlwLCBkaXIudGhlbWVzWzBdLnJlcGxhY2UoL15cXC8vLCcnKSwgdHJ1ZSl8fFwiXCIsZGlyLnRoZW1lc1swXSwgb3B0cyk7XG5cblx0XHRpZihkaXIuc3R5bGUpIHN0eWxlcyA9IHBhcnNlX3N0eShnZXR6aXBkYXRhKHppcCwgc3RyaXBfZnJvbnRfc2xhc2goZGlyLnN0eWxlKSksIGRpci5zdHlsZSwgdGhlbWVzLCBvcHRzKTtcblx0fVxuXG5cdC8qdmFyIGV4dGVybmJvb2tzID0gKi9kaXIubGlua3MubWFwKGZ1bmN0aW9uKGxpbmspIHtcblx0XHR0cnkge1xuXHRcdFx0dmFyIHJlbHMgPSBwYXJzZV9yZWxzKGdldHppcHN0cih6aXAsIGdldF9yZWxzX3BhdGgoc3RyaXBfZnJvbnRfc2xhc2gobGluaykpKSwgbGluayk7XG5cdFx0XHRyZXR1cm4gcGFyc2VfeGxpbmsoZ2V0emlwZGF0YSh6aXAsIHN0cmlwX2Zyb250X3NsYXNoKGxpbmspKSwgcmVscywgbGluaywgb3B0cyk7XG5cdFx0fSBjYXRjaChlKSB7fVxuXHR9KTtcblxuXHR2YXIgd2IgPSBwYXJzZV93YihnZXR6aXBkYXRhKHppcCwgc3RyaXBfZnJvbnRfc2xhc2goZGlyLndvcmtib29rc1swXSkpLCBkaXIud29ya2Jvb2tzWzBdLCBvcHRzKTtcblxuXHR2YXIgcHJvcHMgPSB7fSwgcHJvcGRhdGEgPSBcIlwiO1xuXG5cdGlmKGRpci5jb3JlcHJvcHMubGVuZ3RoKSB7XG5cdFx0cHJvcGRhdGEgPSBnZXR6aXBkYXRhKHppcCwgc3RyaXBfZnJvbnRfc2xhc2goZGlyLmNvcmVwcm9wc1swXSksIHRydWUpO1xuXHRcdGlmKHByb3BkYXRhKSBwcm9wcyA9IHBhcnNlX2NvcmVfcHJvcHMocHJvcGRhdGEpO1xuXHRcdGlmKGRpci5leHRwcm9wcy5sZW5ndGggIT09IDApIHtcblx0XHRcdHByb3BkYXRhID0gZ2V0emlwZGF0YSh6aXAsIHN0cmlwX2Zyb250X3NsYXNoKGRpci5leHRwcm9wc1swXSksIHRydWUpO1xuXHRcdFx0aWYocHJvcGRhdGEpIHBhcnNlX2V4dF9wcm9wcyhwcm9wZGF0YSwgcHJvcHMsIG9wdHMpO1xuXHRcdH1cblx0fVxuXG5cdHZhciBjdXN0cHJvcHMgPSB7fTtcblx0aWYoIW9wdHMuYm9va1NoZWV0cyB8fCBvcHRzLmJvb2tQcm9wcykge1xuXHRcdGlmIChkaXIuY3VzdHByb3BzLmxlbmd0aCAhPT0gMCkge1xuXHRcdFx0cHJvcGRhdGEgPSBnZXR6aXBzdHIoemlwLCBzdHJpcF9mcm9udF9zbGFzaChkaXIuY3VzdHByb3BzWzBdKSwgdHJ1ZSk7XG5cdFx0XHRpZihwcm9wZGF0YSkgY3VzdHByb3BzID0gcGFyc2VfY3VzdF9wcm9wcyhwcm9wZGF0YSwgb3B0cyk7XG5cdFx0fVxuXHR9XG5cblx0dmFyIG91dCA9ICh7fS8qOmFueSovKTtcblx0aWYob3B0cy5ib29rU2hlZXRzIHx8IG9wdHMuYm9va1Byb3BzKSB7XG5cdFx0aWYod2IuU2hlZXRzKSBzaGVldHMgPSB3Yi5TaGVldHMubWFwKGZ1bmN0aW9uIHBsdWNrKHgpeyByZXR1cm4geC5uYW1lOyB9KTtcblx0XHRlbHNlIGlmKHByb3BzLldvcmtzaGVldHMgJiYgcHJvcHMuU2hlZXROYW1lcy5sZW5ndGggPiAwKSBzaGVldHM9cHJvcHMuU2hlZXROYW1lcztcblx0XHRpZihvcHRzLmJvb2tQcm9wcykgeyBvdXQuUHJvcHMgPSBwcm9wczsgb3V0LkN1c3Rwcm9wcyA9IGN1c3Rwcm9wczsgfVxuXHRcdGlmKG9wdHMuYm9va1NoZWV0cyAmJiB0eXBlb2Ygc2hlZXRzICE9PSAndW5kZWZpbmVkJykgb3V0LlNoZWV0TmFtZXMgPSBzaGVldHM7XG5cdFx0aWYob3B0cy5ib29rU2hlZXRzID8gb3V0LlNoZWV0TmFtZXMgOiBvcHRzLmJvb2tQcm9wcykgcmV0dXJuIG91dDtcblx0fVxuXHRzaGVldHMgPSB7fTtcblxuXHR2YXIgZGVwcyA9IHt9O1xuXHRpZihvcHRzLmJvb2tEZXBzICYmIGRpci5jYWxjY2hhaW4pIGRlcHM9cGFyc2VfY2MoZ2V0emlwZGF0YSh6aXAsIHN0cmlwX2Zyb250X3NsYXNoKGRpci5jYWxjY2hhaW4pKSxkaXIuY2FsY2NoYWluLG9wdHMpO1xuXG5cdHZhciBpPTA7XG5cdHZhciBzaGVldFJlbHMgPSAoe30vKjphbnkqLyk7XG5cdHZhciBwYXRoLCByZWxzUGF0aDtcblxuXHR7XG5cdFx0dmFyIHdic2hlZXRzID0gd2IuU2hlZXRzO1xuXHRcdHByb3BzLldvcmtzaGVldHMgPSB3YnNoZWV0cy5sZW5ndGg7XG5cdFx0cHJvcHMuU2hlZXROYW1lcyA9IFtdO1xuXHRcdGZvcih2YXIgaiA9IDA7IGogIT0gd2JzaGVldHMubGVuZ3RoOyArK2opIHtcblx0XHRcdHByb3BzLlNoZWV0TmFtZXNbal0gPSB3YnNoZWV0c1tqXS5uYW1lO1xuXHRcdH1cblx0fVxuXG5cdHZhciB3YmV4dCA9IHhsc2IgPyBcImJpblwiIDogXCJ4bWxcIjtcblx0dmFyIHdicmVsc2kgPSBkaXIud29ya2Jvb2tzWzBdLmxhc3RJbmRleE9mKFwiL1wiKTtcblx0dmFyIHdicmVsc2ZpbGUgPSAoZGlyLndvcmtib29rc1swXS5zbGljZSgwLCB3YnJlbHNpKzEpICsgXCJfcmVscy9cIiArIGRpci53b3JrYm9va3NbMF0uc2xpY2Uod2JyZWxzaSsxKSArIFwiLnJlbHNcIikucmVwbGFjZSgvXlxcLy8sXCJcIik7XG5cdGlmKCFzYWZlZ2V0emlwZmlsZSh6aXAsIHdicmVsc2ZpbGUpKSB3YnJlbHNmaWxlID0gJ3hsL19yZWxzL3dvcmtib29rLicgKyB3YmV4dCArICcucmVscyc7XG5cdHZhciB3YnJlbHMgPSBwYXJzZV9yZWxzKGdldHppcHN0cih6aXAsIHdicmVsc2ZpbGUsIHRydWUpLCB3YnJlbHNmaWxlLnJlcGxhY2UoL19yZWxzLiovLCBcInM1c1wiKSk7XG5cblx0aWYoKGRpci5tZXRhZGF0YSB8fCBbXSkubGVuZ3RoID49IDEpIHtcblx0XHQvKiBUT0RPOiBNRFggYW5kIG90aGVyIHR5cGVzIG9mIG1ldGFkYXRhICovXG5cdFx0b3B0cy54bG1ldGEgPSBwYXJzZV94bG1ldGEoZ2V0emlwZGF0YSh6aXAsIHN0cmlwX2Zyb250X3NsYXNoKGRpci5tZXRhZGF0YVswXSkpLGRpci5tZXRhZGF0YVswXSxvcHRzKTtcblx0fVxuXG5cdGlmKChkaXIucGVvcGxlIHx8IFtdKS5sZW5ndGggPj0gMSkge1xuXHRcdG9wdHMucGVvcGxlID0gcGFyc2VfcGVvcGxlX3htbChnZXR6aXBkYXRhKHppcCwgc3RyaXBfZnJvbnRfc2xhc2goZGlyLnBlb3BsZVswXSkpLG9wdHMpO1xuXHR9XG5cblx0aWYod2JyZWxzKSB3YnJlbHMgPSBzYWZlX3BhcnNlX3dicmVscyh3YnJlbHMsIHdiLlNoZWV0cyk7XG5cblx0LyogTnVtYmVycyBpT1MgaGFjayAqL1xuXHR2YXIgbm1vZGUgPSAoZ2V0emlwZGF0YSh6aXAsXCJ4bC93b3Jrc2hlZXRzL3NoZWV0LnhtbFwiLHRydWUpKT8xOjA7XG5cdHdzbG9vcDogZm9yKGkgPSAwOyBpICE9IHByb3BzLldvcmtzaGVldHM7ICsraSkge1xuXHRcdHZhciBzdHlwZSA9IFwic2hlZXRcIjtcblx0XHRpZih3YnJlbHMgJiYgd2JyZWxzW2ldKSB7XG5cdFx0XHRwYXRoID0gJ3hsLycgKyAod2JyZWxzW2ldWzFdKS5yZXBsYWNlKC9bXFwvXT94bFxcLy8sIFwiXCIpO1xuXHRcdFx0aWYoIXNhZmVnZXR6aXBmaWxlKHppcCwgcGF0aCkpIHBhdGggPSB3YnJlbHNbaV1bMV07XG5cdFx0XHRpZighc2FmZWdldHppcGZpbGUoemlwLCBwYXRoKSkgcGF0aCA9IHdicmVsc2ZpbGUucmVwbGFjZSgvX3JlbHNcXC8uKiQvLFwiXCIpICsgd2JyZWxzW2ldWzFdO1xuXHRcdFx0c3R5cGUgPSB3YnJlbHNbaV1bMl07XG5cdFx0fSBlbHNlIHtcblx0XHRcdHBhdGggPSAneGwvd29ya3NoZWV0cy9zaGVldCcrKGkrMS1ubW9kZSkrXCIuXCIgKyB3YmV4dDtcblx0XHRcdHBhdGggPSBwYXRoLnJlcGxhY2UoL3NoZWV0MFxcLi8sXCJzaGVldC5cIik7XG5cdFx0fVxuXHRcdHJlbHNQYXRoID0gcGF0aC5yZXBsYWNlKC9eKC4qKShcXC8pKFteXFwvXSopJC8sIFwiJDEvX3JlbHMvJDMucmVsc1wiKTtcblx0XHRpZihvcHRzICYmIG9wdHMuc2hlZXRzICE9IG51bGwpIHN3aXRjaCh0eXBlb2Ygb3B0cy5zaGVldHMpIHtcblx0XHRcdGNhc2UgXCJudW1iZXJcIjogaWYoaSAhPSBvcHRzLnNoZWV0cykgY29udGludWUgd3Nsb29wOyBicmVhaztcblx0XHRcdGNhc2UgXCJzdHJpbmdcIjogaWYocHJvcHMuU2hlZXROYW1lc1tpXS50b0xvd2VyQ2FzZSgpICE9IG9wdHMuc2hlZXRzLnRvTG93ZXJDYXNlKCkpIGNvbnRpbnVlIHdzbG9vcDsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiBpZihBcnJheS5pc0FycmF5ICYmIEFycmF5LmlzQXJyYXkob3B0cy5zaGVldHMpKSB7XG5cdFx0XHRcdHZhciBzbmpzZWVuID0gZmFsc2U7XG5cdFx0XHRcdGZvcih2YXIgc25qID0gMDsgc25qICE9IG9wdHMuc2hlZXRzLmxlbmd0aDsgKytzbmopIHtcblx0XHRcdFx0XHRpZih0eXBlb2Ygb3B0cy5zaGVldHNbc25qXSA9PSBcIm51bWJlclwiICYmIG9wdHMuc2hlZXRzW3Nual0gPT0gaSkgc25qc2Vlbj0xO1xuXHRcdFx0XHRcdGlmKHR5cGVvZiBvcHRzLnNoZWV0c1tzbmpdID09IFwic3RyaW5nXCIgJiYgb3B0cy5zaGVldHNbc25qXS50b0xvd2VyQ2FzZSgpID09IHByb3BzLlNoZWV0TmFtZXNbaV0udG9Mb3dlckNhc2UoKSkgc25qc2VlbiA9IDE7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYoIXNuanNlZW4pIGNvbnRpbnVlIHdzbG9vcDtcblx0XHRcdH1cblx0XHR9XG5cdFx0c2FmZV9wYXJzZV9zaGVldCh6aXAsIHBhdGgsIHJlbHNQYXRoLCBwcm9wcy5TaGVldE5hbWVzW2ldLCBpLCBzaGVldFJlbHMsIHNoZWV0cywgc3R5cGUsIG9wdHMsIHdiLCB0aGVtZXMsIHN0eWxlcyk7XG5cdH1cblxuXHRvdXQgPSAoe1xuXHRcdERpcmVjdG9yeTogZGlyLFxuXHRcdFdvcmtib29rOiB3Yixcblx0XHRQcm9wczogcHJvcHMsXG5cdFx0Q3VzdHByb3BzOiBjdXN0cHJvcHMsXG5cdFx0RGVwczogZGVwcyxcblx0XHRTaGVldHM6IHNoZWV0cyxcblx0XHRTaGVldE5hbWVzOiBwcm9wcy5TaGVldE5hbWVzLFxuXHRcdFN0cmluZ3M6IHN0cnMsXG5cdFx0U3R5bGVzOiBzdHlsZXMsXG5cdFx0VGhlbWVzOiB0aGVtZXMsXG5cdFx0U1NGOiBkdXAodGFibGVfZm10KVxuXHR9Lyo6YW55Ki8pO1xuXHRpZihvcHRzICYmIG9wdHMuYm9va0ZpbGVzKSB7XG5cdFx0aWYoemlwLmZpbGVzKSB7XG5cdFx0XHRvdXQua2V5cyA9IGVudHJpZXM7XG5cdFx0XHRvdXQuZmlsZXMgPSB6aXAuZmlsZXM7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG91dC5rZXlzID0gW107XG5cdFx0XHRvdXQuZmlsZXMgPSB7fTtcblx0XHRcdHppcC5GdWxsUGF0aHMuZm9yRWFjaChmdW5jdGlvbihwLCBpZHgpIHtcblx0XHRcdFx0cCA9IHAucmVwbGFjZSgvXlJvb3QgRW50cnlbXFwvXS8sIFwiXCIpO1xuXHRcdFx0XHRvdXQua2V5cy5wdXNoKHApO1xuXHRcdFx0XHRvdXQuZmlsZXNbcF0gPSB6aXAuRmlsZUluZGV4W2lkeF07XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblx0aWYob3B0cyAmJiBvcHRzLmJvb2tWQkEpIHtcblx0XHRpZihkaXIudmJhLmxlbmd0aCA+IDApIG91dC52YmFyYXcgPSBnZXR6aXBkYXRhKHppcCxzdHJpcF9mcm9udF9zbGFzaChkaXIudmJhWzBdKSx0cnVlKTtcblx0XHRlbHNlIGlmKGRpci5kZWZhdWx0cyAmJiBkaXIuZGVmYXVsdHMuYmluID09PSBDVF9WQkEpIG91dC52YmFyYXcgPSBnZXR6aXBkYXRhKHppcCwgJ3hsL3ZiYVByb2plY3QuYmluJyx0cnVlKTtcblx0fVxuXHRyZXR1cm4gb3V0O1xufVxuXG4vKiBbTVMtT0ZGQ1JZUFRPXSAyLjEuMSAqL1xuZnVuY3Rpb24gcGFyc2VfeGxzeGNmYihjZmIsIF9vcHRzLyo6P1BhcnNlT3B0cyovKS8qOldvcmtib29rKi8ge1xuXHR2YXIgb3B0cyA9IF9vcHRzIHx8IHt9O1xuXHR2YXIgZiA9ICdXb3JrYm9vaycsIGRhdGEgPSBDRkIuZmluZChjZmIsIGYpO1xuXHR0cnkge1xuXHRmID0gJy8hRGF0YVNwYWNlcy9WZXJzaW9uJztcblx0ZGF0YSA9IENGQi5maW5kKGNmYiwgZik7IGlmKCFkYXRhIHx8ICFkYXRhLmNvbnRlbnQpIHRocm93IG5ldyBFcnJvcihcIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1pc3NpbmcgXCIgKyBmKTtcblx0Lyp2YXIgdmVyc2lvbiA9ICovcGFyc2VfRGF0YVNwYWNlVmVyc2lvbkluZm8oZGF0YS5jb250ZW50KTtcblxuXHQvKiAyLjMuNC4xICovXG5cdGYgPSAnLyFEYXRhU3BhY2VzL0RhdGFTcGFjZU1hcCc7XG5cdGRhdGEgPSBDRkIuZmluZChjZmIsIGYpOyBpZighZGF0YSB8fCAhZGF0YS5jb250ZW50KSB0aHJvdyBuZXcgRXJyb3IoXCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBtaXNzaW5nIFwiICsgZik7XG5cdHZhciBkc20gPSBwYXJzZV9EYXRhU3BhY2VNYXAoZGF0YS5jb250ZW50KTtcblx0aWYoZHNtLmxlbmd0aCAhPT0gMSB8fCBkc21bMF0uY29tcHMubGVuZ3RoICE9PSAxIHx8IGRzbVswXS5jb21wc1swXS50ICE9PSAwIHx8IGRzbVswXS5uYW1lICE9PSBcIlN0cm9uZ0VuY3J5cHRpb25EYXRhU3BhY2VcIiB8fCBkc21bMF0uY29tcHNbMF0udiAhPT0gXCJFbmNyeXB0ZWRQYWNrYWdlXCIpXG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgYmFkIFwiICsgZik7XG5cblx0LyogMi4zLjQuMiAqL1xuXHRmID0gJy8hRGF0YVNwYWNlcy9EYXRhU3BhY2VJbmZvL1N0cm9uZ0VuY3J5cHRpb25EYXRhU3BhY2UnO1xuXHRkYXRhID0gQ0ZCLmZpbmQoY2ZiLCBmKTsgaWYoIWRhdGEgfHwgIWRhdGEuY29udGVudCkgdGhyb3cgbmV3IEVycm9yKFwiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgbWlzc2luZyBcIiArIGYpO1xuXHR2YXIgc2VkcyA9IHBhcnNlX0RhdGFTcGFjZURlZmluaXRpb24oZGF0YS5jb250ZW50KTtcblx0aWYoc2Vkcy5sZW5ndGggIT0gMSB8fCBzZWRzWzBdICE9IFwiU3Ryb25nRW5jcnlwdGlvblRyYW5zZm9ybVwiKVxuXHRcdHRocm93IG5ldyBFcnJvcihcIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIGJhZCBcIiArIGYpO1xuXG5cdC8qIDIuMy40LjMgKi9cblx0ZiA9ICcvIURhdGFTcGFjZXMvVHJhbnNmb3JtSW5mby9TdHJvbmdFbmNyeXB0aW9uVHJhbnNmb3JtLyFQcmltYXJ5Jztcblx0ZGF0YSA9IENGQi5maW5kKGNmYiwgZik7IGlmKCFkYXRhIHx8ICFkYXRhLmNvbnRlbnQpIHRocm93IG5ldyBFcnJvcihcIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1pc3NpbmcgXCIgKyBmKTtcblx0Lyp2YXIgaGRyID0gKi9wYXJzZV9QcmltYXJ5KGRhdGEuY29udGVudCk7XG5cdH0gY2F0Y2goZSkge31cblxuXHRmID0gJy9FbmNyeXB0aW9uSW5mbyc7XG5cdGRhdGEgPSBDRkIuZmluZChjZmIsIGYpOyBpZighZGF0YSB8fCAhZGF0YS5jb250ZW50KSB0aHJvdyBuZXcgRXJyb3IoXCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBtaXNzaW5nIFwiICsgZik7XG5cdHZhciBlaW5mbyA9IHBhcnNlX0VuY3J5cHRpb25JbmZvKGRhdGEuY29udGVudCk7XG5cblx0LyogMi4zLjQuNCAqL1xuXHRmID0gJy9FbmNyeXB0ZWRQYWNrYWdlJztcblx0ZGF0YSA9IENGQi5maW5kKGNmYiwgZik7IGlmKCFkYXRhIHx8ICFkYXRhLmNvbnRlbnQpIHRocm93IG5ldyBFcnJvcihcIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1pc3NpbmcgXCIgKyBmKTtcblxuLypnbG9iYWwgZGVjcnlwdF9hZ2lsZSAqL1xuLyo6OiBkZWNsYXJlIHZhciBkZWNyeXB0X2FnaWxlOmFueTsgKi9cblx0aWYoZWluZm9bMF0gPT0gMHgwNCAmJiB0eXBlb2YgZGVjcnlwdF9hZ2lsZSAhPT0gJ3VuZGVmaW5lZCcpIHJldHVybiBkZWNyeXB0X2FnaWxlKGVpbmZvWzFdLCBkYXRhLmNvbnRlbnQsIG9wdHMucGFzc3dvcmQgfHwgXCJcIiwgb3B0cyk7XG4vKmdsb2JhbCBkZWNyeXB0X3N0ZDc2ICovXG4vKjo6IGRlY2xhcmUgdmFyIGRlY3J5cHRfc3RkNzY6YW55OyAqL1xuXHRpZihlaW5mb1swXSA9PSAweDAyICYmIHR5cGVvZiBkZWNyeXB0X3N0ZDc2ICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIGRlY3J5cHRfc3RkNzYoZWluZm9bMV0sIGRhdGEuY29udGVudCwgb3B0cy5wYXNzd29yZCB8fCBcIlwiLCBvcHRzKTtcblx0dGhyb3cgbmV3IEVycm9yKFwiRmlsZSBpcyBwYXNzd29yZC1wcm90ZWN0ZWRcIik7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3ppcCh3Yi8qOldvcmtib29rKi8sIG9wdHMvKjpXcml0ZU9wdHMqLykvKjpaSVAqLyB7XG5cdGlmKG9wdHMuYm9va1R5cGUgPT0gXCJvZHNcIikgcmV0dXJuIHdyaXRlX29kcyh3Yiwgb3B0cyk7XG5cdGlmKG9wdHMuYm9va1R5cGUgPT0gXCJudW1iZXJzXCIpIHJldHVybiB3cml0ZV9udW1iZXJzX2l3YSh3Yiwgb3B0cyk7XG5cdGlmKG9wdHMuYm9va1R5cGUgPT0gXCJ4bHNiXCIpIHJldHVybiB3cml0ZV96aXBfeGxzeGIod2IsIG9wdHMpO1xuXHRyZXR1cm4gd3JpdGVfemlwX3hsc3god2IsIG9wdHMpO1xufVxuXG4vKiBYTFNYIGFuZCBYTFNCIHdyaXRpbmcgYXJlIHZlcnkgc2ltaWxhci4gIE9yaWdpbmFsbHkgdGhleSB3ZXJlIHVuaWZpZWQgaW4gb25lXG4gICBleHBvcnQgZnVuY3Rpb24uICBUaGlzIGlzIGhvcnJpYmxlIGZvciB0cmVlIHNoYWtpbmcgaW4gdGhlIGNvbW1vbiBjYXNlIChtb3N0XG4gICBhcHBsaWNhdGlvbnMgbmVlZCB0byBleHBvcnQgZmlsZXMgaW4gb25lIGZvcm1hdCkgc28gdGhpcyBmdW5jdGlvbiBzdXBwb3J0c1xuICAgYm90aCBmb3JtYXRzIHdoaWxlIHdyaXRlX3ppcF94bHN4IG9ubHkgaGFuZGxlcyBYTFNYICovXG5mdW5jdGlvbiB3cml0ZV96aXBfeGxzeGIod2IvKjpXb3JrYm9vayovLCBvcHRzLyo6V3JpdGVPcHRzKi8pLyo6WklQKi8ge1xuXHRfc2hhcGVpZCA9IDEwMjQ7XG5cdGlmKHdiICYmICF3Yi5TU0YpIHtcblx0XHR3Yi5TU0YgPSBkdXAodGFibGVfZm10KTtcblx0fVxuXHRpZih3YiAmJiB3Yi5TU0YpIHtcblx0XHRtYWtlX3NzZigpOyBTU0ZfbG9hZF90YWJsZSh3Yi5TU0YpO1xuXHRcdC8vICRGbG93SWdub3JlXG5cdFx0b3B0cy5yZXZzc2YgPSBldmVydF9udW0od2IuU1NGKTsgb3B0cy5yZXZzc2Zbd2IuU1NGWzY1NTM1XV0gPSAwO1xuXHRcdG9wdHMuc3NmID0gd2IuU1NGO1xuXHR9XG5cdG9wdHMucmVscyA9IHt9OyBvcHRzLndicmVscyA9IHt9O1xuXHRvcHRzLlN0cmluZ3MgPSAvKjo6KCgqL1tdLyo6OiA6YW55KTpTU1QpKi87IG9wdHMuU3RyaW5ncy5Db3VudCA9IDA7IG9wdHMuU3RyaW5ncy5VbmlxdWUgPSAwO1xuXHRpZihicm93c2VyX2hhc19NYXApIG9wdHMucmV2U3RyaW5ncyA9IG5ldyBNYXAoKTtcblx0ZWxzZSB7IG9wdHMucmV2U3RyaW5ncyA9IHt9OyBvcHRzLnJldlN0cmluZ3MuZm9vID0gW107IGRlbGV0ZSBvcHRzLnJldlN0cmluZ3MuZm9vOyB9XG5cdHZhciB3YmV4dCA9IG9wdHMuYm9va1R5cGUgPT0gXCJ4bHNiXCIgPyBcImJpblwiIDogXCJ4bWxcIjtcblx0dmFyIHZiYWZtdCA9IFZCQUZNVFMuaW5kZXhPZihvcHRzLmJvb2tUeXBlKSA+IC0xO1xuXHR2YXIgY3QgPSBuZXdfY3QoKTtcblx0Zml4X3dyaXRlX29wdHMob3B0cyA9IG9wdHMgfHwge30pO1xuXHR2YXIgemlwID0gemlwX25ldygpO1xuXHR2YXIgZiA9IFwiXCIsIHJJZCA9IDA7XG5cblx0b3B0cy5jZWxsWGZzID0gW107XG5cdGdldF9jZWxsX3N0eWxlKG9wdHMuY2VsbFhmcywge30sIHtyZXZzc2Y6e1wiR2VuZXJhbFwiOjB9fSk7XG5cblx0aWYoIXdiLlByb3BzKSB3Yi5Qcm9wcyA9IHt9O1xuXG5cdGYgPSBcImRvY1Byb3BzL2NvcmUueG1sXCI7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX2NvcmVfcHJvcHMod2IuUHJvcHMsIG9wdHMpKTtcblx0Y3QuY29yZXByb3BzLnB1c2goZik7XG5cdGFkZF9yZWxzKG9wdHMucmVscywgMiwgZiwgUkVMUy5DT1JFX1BST1BTKTtcblxuXHQvKjo6aWYoIXdiLlByb3BzKSB0aHJvdyBcInVucmVhY2hhYmxlXCI7ICovXG5cdGYgPSBcImRvY1Byb3BzL2FwcC54bWxcIjtcblx0aWYod2IuUHJvcHMgJiYgd2IuUHJvcHMuU2hlZXROYW1lcyl7LyogZW1wdHkgKi99XG5cdGVsc2UgaWYoIXdiLldvcmtib29rIHx8ICF3Yi5Xb3JrYm9vay5TaGVldHMpIHdiLlByb3BzLlNoZWV0TmFtZXMgPSB3Yi5TaGVldE5hbWVzO1xuXHRlbHNlIHtcblx0XHR2YXIgX3NuID0gW107XG5cdFx0Zm9yKHZhciBfaSA9IDA7IF9pIDwgd2IuU2hlZXROYW1lcy5sZW5ndGg7ICsrX2kpXG5cdFx0XHRpZigod2IuV29ya2Jvb2suU2hlZXRzW19pXXx8e30pLkhpZGRlbiAhPSAyKSBfc24ucHVzaCh3Yi5TaGVldE5hbWVzW19pXSk7XG5cdFx0d2IuUHJvcHMuU2hlZXROYW1lcyA9IF9zbjtcblx0fVxuXHR3Yi5Qcm9wcy5Xb3Jrc2hlZXRzID0gd2IuUHJvcHMuU2hlZXROYW1lcy5sZW5ndGg7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX2V4dF9wcm9wcyh3Yi5Qcm9wcywgb3B0cykpO1xuXHRjdC5leHRwcm9wcy5wdXNoKGYpO1xuXHRhZGRfcmVscyhvcHRzLnJlbHMsIDMsIGYsIFJFTFMuRVhUX1BST1BTKTtcblxuXHRpZih3Yi5DdXN0cHJvcHMgIT09IHdiLlByb3BzICYmIGtleXMod2IuQ3VzdHByb3BzfHx7fSkubGVuZ3RoID4gMCkge1xuXHRcdGYgPSBcImRvY1Byb3BzL2N1c3RvbS54bWxcIjtcblx0XHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV9jdXN0X3Byb3BzKHdiLkN1c3Rwcm9wcywgb3B0cykpO1xuXHRcdGN0LmN1c3Rwcm9wcy5wdXNoKGYpO1xuXHRcdGFkZF9yZWxzKG9wdHMucmVscywgNCwgZiwgUkVMUy5DVVNUX1BST1BTKTtcblx0fVxuXG5cdGZvcihySWQ9MTtySWQgPD0gd2IuU2hlZXROYW1lcy5sZW5ndGg7ICsrcklkKSB7XG5cdFx0dmFyIHdzcmVscyA9IHsnIWlkJzp7fX07XG5cdFx0dmFyIHdzID0gd2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbcklkLTFdXTtcblx0XHR2YXIgX3R5cGUgPSAod3MgfHwge30pW1wiIXR5cGVcIl0gfHwgXCJzaGVldFwiO1xuXHRcdHN3aXRjaChfdHlwZSkge1xuXHRcdGNhc2UgXCJjaGFydFwiOlxuXHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRmID0gXCJ4bC93b3Jrc2hlZXRzL3NoZWV0XCIgKyBySWQgKyBcIi5cIiArIHdiZXh0O1xuXHRcdFx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfd3MocklkLTEsIGYsIG9wdHMsIHdiLCB3c3JlbHMpKTtcblx0XHRcdGN0LnNoZWV0cy5wdXNoKGYpO1xuXHRcdFx0YWRkX3JlbHMob3B0cy53YnJlbHMsIC0xLCBcIndvcmtzaGVldHMvc2hlZXRcIiArIHJJZCArIFwiLlwiICsgd2JleHQsIFJFTFMuV1NbMF0pO1xuXHRcdH1cblxuXHRcdGlmKHdzKSB7XG5cdFx0XHR2YXIgY29tbWVudHMgPSB3c1snIWNvbW1lbnRzJ107XG5cdFx0XHR2YXIgbmVlZF92bWwgPSBmYWxzZTtcblx0XHRcdHZhciBjZiA9IFwiXCI7XG5cdFx0XHRpZihjb21tZW50cyAmJiBjb21tZW50cy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGNmID0gXCJ4bC9jb21tZW50c1wiICsgcklkICsgXCIuXCIgKyB3YmV4dDtcblx0XHRcdFx0emlwX2FkZF9maWxlKHppcCwgY2YsIHdyaXRlX2NtbnQoY29tbWVudHMsIGNmLCBvcHRzKSk7XG5cdFx0XHRcdGN0LmNvbW1lbnRzLnB1c2goY2YpO1xuXHRcdFx0XHRhZGRfcmVscyh3c3JlbHMsIC0xLCBcIi4uL2NvbW1lbnRzXCIgKyBySWQgKyBcIi5cIiArIHdiZXh0LCBSRUxTLkNNTlQpO1xuXHRcdFx0XHRuZWVkX3ZtbCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRpZih3c1snIWxlZ2FjeSddKSB7XG5cdFx0XHRcdGlmKG5lZWRfdm1sKSB6aXBfYWRkX2ZpbGUoemlwLCBcInhsL2RyYXdpbmdzL3ZtbERyYXdpbmdcIiArIChySWQpICsgXCIudm1sXCIsIHdyaXRlX2NvbW1lbnRzX3ZtbChySWQsIHdzWychY29tbWVudHMnXSkpO1xuXHRcdFx0fVxuXHRcdFx0ZGVsZXRlIHdzWychY29tbWVudHMnXTtcblx0XHRcdGRlbGV0ZSB3c1snIWxlZ2FjeSddO1xuXHRcdH1cblxuXHRcdGlmKHdzcmVsc1snIWlkJ10ucklkMSkgemlwX2FkZF9maWxlKHppcCwgZ2V0X3JlbHNfcGF0aChmKSwgd3JpdGVfcmVscyh3c3JlbHMpKTtcblx0fVxuXG5cdGlmKG9wdHMuU3RyaW5ncyAhPSBudWxsICYmIG9wdHMuU3RyaW5ncy5sZW5ndGggPiAwKSB7XG5cdFx0ZiA9IFwieGwvc2hhcmVkU3RyaW5ncy5cIiArIHdiZXh0O1xuXHRcdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX3NzdChvcHRzLlN0cmluZ3MsIGYsIG9wdHMpKTtcblx0XHRjdC5zdHJzLnB1c2goZik7XG5cdFx0YWRkX3JlbHMob3B0cy53YnJlbHMsIC0xLCBcInNoYXJlZFN0cmluZ3MuXCIgKyB3YmV4dCwgUkVMUy5TU1QpO1xuXHR9XG5cblx0ZiA9IFwieGwvd29ya2Jvb2suXCIgKyB3YmV4dDtcblx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfd2Iod2IsIGYsIG9wdHMpKTtcblx0Y3Qud29ya2Jvb2tzLnB1c2goZik7XG5cdGFkZF9yZWxzKG9wdHMucmVscywgMSwgZiwgUkVMUy5XQik7XG5cblx0LyogVE9ETzogc29tZXRoaW5nIG1vcmUgaW50ZWxsaWdlbnQgd2l0aCB0aGVtZXMgKi9cblxuXHRmID0gXCJ4bC90aGVtZS90aGVtZTEueG1sXCI7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX3RoZW1lKHdiLlRoZW1lcywgb3B0cykpO1xuXHRjdC50aGVtZXMucHVzaChmKTtcblx0YWRkX3JlbHMob3B0cy53YnJlbHMsIC0xLCBcInRoZW1lL3RoZW1lMS54bWxcIiwgUkVMUy5USEVNRSk7XG5cblx0LyogVE9ETzogc29tZXRoaW5nIG1vcmUgaW50ZWxsaWdlbnQgd2l0aCBzdHlsZXMgKi9cblxuXHRmID0gXCJ4bC9zdHlsZXMuXCIgKyB3YmV4dDtcblx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfc3R5KHdiLCBmLCBvcHRzKSk7XG5cdGN0LnN0eWxlcy5wdXNoKGYpO1xuXHRhZGRfcmVscyhvcHRzLndicmVscywgLTEsIFwic3R5bGVzLlwiICsgd2JleHQsIFJFTFMuU1RZKTtcblxuXHRpZih3Yi52YmFyYXcgJiYgdmJhZm10KSB7XG5cdFx0ZiA9IFwieGwvdmJhUHJvamVjdC5iaW5cIjtcblx0XHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3Yi52YmFyYXcpO1xuXHRcdGN0LnZiYS5wdXNoKGYpO1xuXHRcdGFkZF9yZWxzKG9wdHMud2JyZWxzLCAtMSwgXCJ2YmFQcm9qZWN0LmJpblwiLCBSRUxTLlZCQSk7XG5cdH1cblxuXHRmID0gXCJ4bC9tZXRhZGF0YS5cIiArIHdiZXh0O1xuXHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV94bG1ldGEoZikpO1xuXHRjdC5tZXRhZGF0YS5wdXNoKGYpO1xuXHRhZGRfcmVscyhvcHRzLndicmVscywgLTEsIFwibWV0YWRhdGEuXCIgKyB3YmV4dCwgUkVMUy5YTE1FVEEpO1xuXG5cdHppcF9hZGRfZmlsZSh6aXAsIFwiW0NvbnRlbnRfVHlwZXNdLnhtbFwiLCB3cml0ZV9jdChjdCwgb3B0cykpO1xuXHR6aXBfYWRkX2ZpbGUoemlwLCAnX3JlbHMvLnJlbHMnLCB3cml0ZV9yZWxzKG9wdHMucmVscykpO1xuXHR6aXBfYWRkX2ZpbGUoemlwLCAneGwvX3JlbHMvd29ya2Jvb2suJyArIHdiZXh0ICsgJy5yZWxzJywgd3JpdGVfcmVscyhvcHRzLndicmVscykpO1xuXG5cdGRlbGV0ZSBvcHRzLnJldnNzZjsgZGVsZXRlIG9wdHMuc3NmO1xuXHRyZXR1cm4gemlwO1xufVxuXG5mdW5jdGlvbiB3cml0ZV96aXBfeGxzeCh3Yi8qOldvcmtib29rKi8sIG9wdHMvKjpXcml0ZU9wdHMqLykvKjpaSVAqLyB7XG5cdF9zaGFwZWlkID0gMTAyNDtcblx0aWYod2IgJiYgIXdiLlNTRikge1xuXHRcdHdiLlNTRiA9IGR1cCh0YWJsZV9mbXQpO1xuXHR9XG5cdGlmKHdiICYmIHdiLlNTRikge1xuXHRcdG1ha2Vfc3NmKCk7IFNTRl9sb2FkX3RhYmxlKHdiLlNTRik7XG5cdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRvcHRzLnJldnNzZiA9IGV2ZXJ0X251bSh3Yi5TU0YpOyBvcHRzLnJldnNzZlt3Yi5TU0ZbNjU1MzVdXSA9IDA7XG5cdFx0b3B0cy5zc2YgPSB3Yi5TU0Y7XG5cdH1cblx0b3B0cy5yZWxzID0ge307IG9wdHMud2JyZWxzID0ge307XG5cdG9wdHMuU3RyaW5ncyA9IC8qOjooKCovW10vKjo6IDphbnkpOlNTVCkqLzsgb3B0cy5TdHJpbmdzLkNvdW50ID0gMDsgb3B0cy5TdHJpbmdzLlVuaXF1ZSA9IDA7XG5cdGlmKGJyb3dzZXJfaGFzX01hcCkgb3B0cy5yZXZTdHJpbmdzID0gbmV3IE1hcCgpO1xuXHRlbHNlIHsgb3B0cy5yZXZTdHJpbmdzID0ge307IG9wdHMucmV2U3RyaW5ncy5mb28gPSBbXTsgZGVsZXRlIG9wdHMucmV2U3RyaW5ncy5mb287IH1cblx0dmFyIHdiZXh0ID0gXCJ4bWxcIjtcblx0dmFyIHZiYWZtdCA9IFZCQUZNVFMuaW5kZXhPZihvcHRzLmJvb2tUeXBlKSA+IC0xO1xuXHR2YXIgY3QgPSBuZXdfY3QoKTtcblx0Zml4X3dyaXRlX29wdHMob3B0cyA9IG9wdHMgfHwge30pO1xuXHR2YXIgemlwID0gemlwX25ldygpO1xuXHR2YXIgZiA9IFwiXCIsIHJJZCA9IDA7XG5cblx0b3B0cy5jZWxsWGZzID0gW107XG5cdGdldF9jZWxsX3N0eWxlKG9wdHMuY2VsbFhmcywge30sIHtyZXZzc2Y6e1wiR2VuZXJhbFwiOjB9fSk7XG5cblx0aWYoIXdiLlByb3BzKSB3Yi5Qcm9wcyA9IHt9O1xuXG5cdGYgPSBcImRvY1Byb3BzL2NvcmUueG1sXCI7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX2NvcmVfcHJvcHMod2IuUHJvcHMsIG9wdHMpKTtcblx0Y3QuY29yZXByb3BzLnB1c2goZik7XG5cdGFkZF9yZWxzKG9wdHMucmVscywgMiwgZiwgUkVMUy5DT1JFX1BST1BTKTtcblxuXHQvKjo6aWYoIXdiLlByb3BzKSB0aHJvdyBcInVucmVhY2hhYmxlXCI7ICovXG5cdGYgPSBcImRvY1Byb3BzL2FwcC54bWxcIjtcblx0aWYod2IuUHJvcHMgJiYgd2IuUHJvcHMuU2hlZXROYW1lcyl7LyogZW1wdHkgKi99XG5cdGVsc2UgaWYoIXdiLldvcmtib29rIHx8ICF3Yi5Xb3JrYm9vay5TaGVldHMpIHdiLlByb3BzLlNoZWV0TmFtZXMgPSB3Yi5TaGVldE5hbWVzO1xuXHRlbHNlIHtcblx0XHR2YXIgX3NuID0gW107XG5cdFx0Zm9yKHZhciBfaSA9IDA7IF9pIDwgd2IuU2hlZXROYW1lcy5sZW5ndGg7ICsrX2kpXG5cdFx0XHRpZigod2IuV29ya2Jvb2suU2hlZXRzW19pXXx8e30pLkhpZGRlbiAhPSAyKSBfc24ucHVzaCh3Yi5TaGVldE5hbWVzW19pXSk7XG5cdFx0d2IuUHJvcHMuU2hlZXROYW1lcyA9IF9zbjtcblx0fVxuXHR3Yi5Qcm9wcy5Xb3Jrc2hlZXRzID0gd2IuUHJvcHMuU2hlZXROYW1lcy5sZW5ndGg7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX2V4dF9wcm9wcyh3Yi5Qcm9wcywgb3B0cykpO1xuXHRjdC5leHRwcm9wcy5wdXNoKGYpO1xuXHRhZGRfcmVscyhvcHRzLnJlbHMsIDMsIGYsIFJFTFMuRVhUX1BST1BTKTtcblxuXHRpZih3Yi5DdXN0cHJvcHMgIT09IHdiLlByb3BzICYmIGtleXMod2IuQ3VzdHByb3BzfHx7fSkubGVuZ3RoID4gMCkge1xuXHRcdGYgPSBcImRvY1Byb3BzL2N1c3RvbS54bWxcIjtcblx0XHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV9jdXN0X3Byb3BzKHdiLkN1c3Rwcm9wcywgb3B0cykpO1xuXHRcdGN0LmN1c3Rwcm9wcy5wdXNoKGYpO1xuXHRcdGFkZF9yZWxzKG9wdHMucmVscywgNCwgZiwgUkVMUy5DVVNUX1BST1BTKTtcblx0fVxuXG5cdHZhciBwZW9wbGUgPSBbXCJTaGVldEo1XCJdO1xuXHRvcHRzLnRjaWQgPSAwO1xuXG5cdGZvcihySWQ9MTtySWQgPD0gd2IuU2hlZXROYW1lcy5sZW5ndGg7ICsrcklkKSB7XG5cdFx0dmFyIHdzcmVscyA9IHsnIWlkJzp7fX07XG5cdFx0dmFyIHdzID0gd2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbcklkLTFdXTtcblx0XHR2YXIgX3R5cGUgPSAod3MgfHwge30pW1wiIXR5cGVcIl0gfHwgXCJzaGVldFwiO1xuXHRcdHN3aXRjaChfdHlwZSkge1xuXHRcdGNhc2UgXCJjaGFydFwiOlxuXHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRmID0gXCJ4bC93b3Jrc2hlZXRzL3NoZWV0XCIgKyBySWQgKyBcIi5cIiArIHdiZXh0O1xuXHRcdFx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfd3NfeG1sKHJJZC0xLCBvcHRzLCB3Yiwgd3NyZWxzKSk7XG5cdFx0XHRjdC5zaGVldHMucHVzaChmKTtcblx0XHRcdGFkZF9yZWxzKG9wdHMud2JyZWxzLCAtMSwgXCJ3b3Jrc2hlZXRzL3NoZWV0XCIgKyBySWQgKyBcIi5cIiArIHdiZXh0LCBSRUxTLldTWzBdKTtcblx0XHR9XG5cblx0XHRpZih3cykge1xuXHRcdFx0dmFyIGNvbW1lbnRzID0gd3NbJyFjb21tZW50cyddO1xuXHRcdFx0dmFyIG5lZWRfdm1sID0gZmFsc2U7XG5cdFx0XHR2YXIgY2YgPSBcIlwiO1xuXHRcdFx0aWYoY29tbWVudHMgJiYgY29tbWVudHMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHR2YXIgbmVlZHRjID0gZmFsc2U7XG5cdFx0XHRcdGNvbW1lbnRzLmZvckVhY2goZnVuY3Rpb24oY2Fycikge1xuXHRcdFx0XHRcdGNhcnJbMV0uZm9yRWFjaChmdW5jdGlvbihjKSB7IGlmKGMuVCA9PSB0cnVlKSBuZWVkdGMgPSB0cnVlOyB9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGlmKG5lZWR0Yykge1xuXHRcdFx0XHRcdGNmID0gXCJ4bC90aHJlYWRlZENvbW1lbnRzL3RocmVhZGVkQ29tbWVudFwiICsgcklkICsgXCIuXCIgKyB3YmV4dDtcblx0XHRcdFx0XHR6aXBfYWRkX2ZpbGUoemlwLCBjZiwgd3JpdGVfdGNtbnRfeG1sKGNvbW1lbnRzLCBwZW9wbGUsIG9wdHMpKTtcblx0XHRcdFx0XHRjdC50aHJlYWRlZGNvbW1lbnRzLnB1c2goY2YpO1xuXHRcdFx0XHRcdGFkZF9yZWxzKHdzcmVscywgLTEsIFwiLi4vdGhyZWFkZWRDb21tZW50cy90aHJlYWRlZENvbW1lbnRcIiArIHJJZCArIFwiLlwiICsgd2JleHQsIFJFTFMuVENNTlQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y2YgPSBcInhsL2NvbW1lbnRzXCIgKyBySWQgKyBcIi5cIiArIHdiZXh0O1xuXHRcdFx0XHR6aXBfYWRkX2ZpbGUoemlwLCBjZiwgd3JpdGVfY29tbWVudHNfeG1sKGNvbW1lbnRzLCBvcHRzKSk7XG5cdFx0XHRcdGN0LmNvbW1lbnRzLnB1c2goY2YpO1xuXHRcdFx0XHRhZGRfcmVscyh3c3JlbHMsIC0xLCBcIi4uL2NvbW1lbnRzXCIgKyBySWQgKyBcIi5cIiArIHdiZXh0LCBSRUxTLkNNTlQpO1xuXHRcdFx0XHRuZWVkX3ZtbCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRpZih3c1snIWxlZ2FjeSddKSB7XG5cdFx0XHRcdGlmKG5lZWRfdm1sKSB6aXBfYWRkX2ZpbGUoemlwLCBcInhsL2RyYXdpbmdzL3ZtbERyYXdpbmdcIiArIChySWQpICsgXCIudm1sXCIsIHdyaXRlX2NvbW1lbnRzX3ZtbChySWQsIHdzWychY29tbWVudHMnXSkpO1xuXHRcdFx0fVxuXHRcdFx0ZGVsZXRlIHdzWychY29tbWVudHMnXTtcblx0XHRcdGRlbGV0ZSB3c1snIWxlZ2FjeSddO1xuXHRcdH1cblxuXHRcdGlmKHdzcmVsc1snIWlkJ10ucklkMSkgemlwX2FkZF9maWxlKHppcCwgZ2V0X3JlbHNfcGF0aChmKSwgd3JpdGVfcmVscyh3c3JlbHMpKTtcblx0fVxuXG5cdGlmKG9wdHMuU3RyaW5ncyAhPSBudWxsICYmIG9wdHMuU3RyaW5ncy5sZW5ndGggPiAwKSB7XG5cdFx0ZiA9IFwieGwvc2hhcmVkU3RyaW5ncy5cIiArIHdiZXh0O1xuXHRcdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX3NzdF94bWwob3B0cy5TdHJpbmdzLCBvcHRzKSk7XG5cdFx0Y3Quc3Rycy5wdXNoKGYpO1xuXHRcdGFkZF9yZWxzKG9wdHMud2JyZWxzLCAtMSwgXCJzaGFyZWRTdHJpbmdzLlwiICsgd2JleHQsIFJFTFMuU1NUKTtcblx0fVxuXG5cdGYgPSBcInhsL3dvcmtib29rLlwiICsgd2JleHQ7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX3diX3htbCh3Yiwgb3B0cykpO1xuXHRjdC53b3JrYm9va3MucHVzaChmKTtcblx0YWRkX3JlbHMob3B0cy5yZWxzLCAxLCBmLCBSRUxTLldCKTtcblxuXHQvKiBUT0RPOiBzb21ldGhpbmcgbW9yZSBpbnRlbGxpZ2VudCB3aXRoIHRoZW1lcyAqL1xuXG5cdGYgPSBcInhsL3RoZW1lL3RoZW1lMS54bWxcIjtcblx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfdGhlbWUod2IuVGhlbWVzLCBvcHRzKSk7XG5cdGN0LnRoZW1lcy5wdXNoKGYpO1xuXHRhZGRfcmVscyhvcHRzLndicmVscywgLTEsIFwidGhlbWUvdGhlbWUxLnhtbFwiLCBSRUxTLlRIRU1FKTtcblxuXHQvKiBUT0RPOiBzb21ldGhpbmcgbW9yZSBpbnRlbGxpZ2VudCB3aXRoIHN0eWxlcyAqL1xuXG5cdGYgPSBcInhsL3N0eWxlcy5cIiArIHdiZXh0O1xuXHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV9zdHlfeG1sKHdiLCBvcHRzKSk7XG5cdGN0LnN0eWxlcy5wdXNoKGYpO1xuXHRhZGRfcmVscyhvcHRzLndicmVscywgLTEsIFwic3R5bGVzLlwiICsgd2JleHQsIFJFTFMuU1RZKTtcblxuXHRpZih3Yi52YmFyYXcgJiYgdmJhZm10KSB7XG5cdFx0ZiA9IFwieGwvdmJhUHJvamVjdC5iaW5cIjtcblx0XHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3Yi52YmFyYXcpO1xuXHRcdGN0LnZiYS5wdXNoKGYpO1xuXHRcdGFkZF9yZWxzKG9wdHMud2JyZWxzLCAtMSwgXCJ2YmFQcm9qZWN0LmJpblwiLCBSRUxTLlZCQSk7XG5cdH1cblxuXHRmID0gXCJ4bC9tZXRhZGF0YS5cIiArIHdiZXh0O1xuXHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV94bG1ldGFfeG1sKCkpO1xuXHRjdC5tZXRhZGF0YS5wdXNoKGYpO1xuXHRhZGRfcmVscyhvcHRzLndicmVscywgLTEsIFwibWV0YWRhdGEuXCIgKyB3YmV4dCwgUkVMUy5YTE1FVEEpO1xuXG5cdGlmKHBlb3BsZS5sZW5ndGggPiAxKSB7XG5cdFx0ZiA9IFwieGwvcGVyc29ucy9wZXJzb24ueG1sXCI7XG5cdFx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfcGVvcGxlX3htbChwZW9wbGUsIG9wdHMpKTtcblx0XHRjdC5wZW9wbGUucHVzaChmKTtcblx0XHRhZGRfcmVscyhvcHRzLndicmVscywgLTEsIFwicGVyc29ucy9wZXJzb24ueG1sXCIsIFJFTFMuUEVPUExFKTtcblx0fVxuXG5cdHppcF9hZGRfZmlsZSh6aXAsIFwiW0NvbnRlbnRfVHlwZXNdLnhtbFwiLCB3cml0ZV9jdChjdCwgb3B0cykpO1xuXHR6aXBfYWRkX2ZpbGUoemlwLCAnX3JlbHMvLnJlbHMnLCB3cml0ZV9yZWxzKG9wdHMucmVscykpO1xuXHR6aXBfYWRkX2ZpbGUoemlwLCAneGwvX3JlbHMvd29ya2Jvb2suJyArIHdiZXh0ICsgJy5yZWxzJywgd3JpdGVfcmVscyhvcHRzLndicmVscykpO1xuXG5cdGRlbGV0ZSBvcHRzLnJldnNzZjsgZGVsZXRlIG9wdHMuc3NmO1xuXHRyZXR1cm4gemlwO1xufVxuXG5mdW5jdGlvbiBmaXJzdGJ5dGUoZi8qOlJhd0RhdGEqLyxvLyo6P1R5cGVPcHRzKi8pLyo6QXJyYXk8bnVtYmVyPiovIHtcblx0dmFyIHggPSBcIlwiO1xuXHRzd2l0Y2goKG98fHt9KS50eXBlIHx8IFwiYmFzZTY0XCIpIHtcblx0XHRjYXNlICdidWZmZXInOiByZXR1cm4gW2ZbMF0sIGZbMV0sIGZbMl0sIGZbM10sIGZbNF0sIGZbNV0sIGZbNl0sIGZbN11dO1xuXHRcdGNhc2UgJ2Jhc2U2NCc6IHggPSBCYXNlNjRfZGVjb2RlKGYuc2xpY2UoMCwxMikpOyBicmVhaztcblx0XHRjYXNlICdiaW5hcnknOiB4ID0gZjsgYnJlYWs7XG5cdFx0Y2FzZSAnYXJyYXknOiAgcmV0dXJuIFtmWzBdLCBmWzFdLCBmWzJdLCBmWzNdLCBmWzRdLCBmWzVdLCBmWzZdLCBmWzddXTtcblx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgdHlwZSBcIiArIChvICYmIG8udHlwZSB8fCBcInVuZGVmaW5lZFwiKSk7XG5cdH1cblx0cmV0dXJuIFt4LmNoYXJDb2RlQXQoMCksIHguY2hhckNvZGVBdCgxKSwgeC5jaGFyQ29kZUF0KDIpLCB4LmNoYXJDb2RlQXQoMyksIHguY2hhckNvZGVBdCg0KSwgeC5jaGFyQ29kZUF0KDUpLCB4LmNoYXJDb2RlQXQoNiksIHguY2hhckNvZGVBdCg3KV07XG59XG5cbmZ1bmN0aW9uIHJlYWRfY2ZiKGNmYi8qOkNGQkNvbnRhaW5lciovLCBvcHRzLyo6P1BhcnNlT3B0cyovKS8qOldvcmtib29rKi8ge1xuXHRpZihDRkIuZmluZChjZmIsIFwiRW5jcnlwdGVkUGFja2FnZVwiKSkgcmV0dXJuIHBhcnNlX3hsc3hjZmIoY2ZiLCBvcHRzKTtcblx0cmV0dXJuIHBhcnNlX3hsc2NmYihjZmIsIG9wdHMpO1xufVxuXG5mdW5jdGlvbiByZWFkX3ppcChkYXRhLyo6UmF3RGF0YSovLCBvcHRzLyo6P1BhcnNlT3B0cyovKS8qOldvcmtib29rKi8ge1xuXHR2YXIgemlwLCBkID0gZGF0YTtcblx0dmFyIG8gPSBvcHRzfHx7fTtcblx0aWYoIW8udHlwZSkgby50eXBlID0gKGhhc19idWYgJiYgQnVmZmVyLmlzQnVmZmVyKGRhdGEpKSA/IFwiYnVmZmVyXCIgOiBcImJhc2U2NFwiO1xuXHR6aXAgPSB6aXBfcmVhZChkLCBvKTtcblx0cmV0dXJuIHBhcnNlX3ppcCh6aXAsIG8pO1xufVxuXG5mdW5jdGlvbiByZWFkX3BsYWludGV4dChkYXRhLyo6c3RyaW5nKi8sIG8vKjpQYXJzZU9wdHMqLykvKjpXb3JrYm9vayovIHtcblx0dmFyIGkgPSAwO1xuXHRtYWluOiB3aGlsZShpIDwgZGF0YS5sZW5ndGgpIHN3aXRjaChkYXRhLmNoYXJDb2RlQXQoaSkpIHtcblx0XHRjYXNlIDB4MEE6IGNhc2UgMHgwRDogY2FzZSAweDIwOiArK2k7IGJyZWFrO1xuXHRcdGNhc2UgMHgzQzogcmV0dXJuIHBhcnNlX3hsbWwoZGF0YS5zbGljZShpKSxvKTtcblx0XHRkZWZhdWx0OiBicmVhayBtYWluO1xuXHR9XG5cdHJldHVybiBQUk4udG9fd29ya2Jvb2soZGF0YSwgbyk7XG59XG5cbmZ1bmN0aW9uIHJlYWRfcGxhaW50ZXh0X3JhdyhkYXRhLyo6UmF3RGF0YSovLCBvLyo6UGFyc2VPcHRzKi8pLyo6V29ya2Jvb2sqLyB7XG5cdHZhciBzdHIgPSBcIlwiLCBieXRlcyA9IGZpcnN0Ynl0ZShkYXRhLCBvKTtcblx0c3dpdGNoKG8udHlwZSkge1xuXHRcdGNhc2UgJ2Jhc2U2NCc6IHN0ciA9IEJhc2U2NF9kZWNvZGUoZGF0YSk7IGJyZWFrO1xuXHRcdGNhc2UgJ2JpbmFyeSc6IHN0ciA9IGRhdGE7IGJyZWFrO1xuXHRcdGNhc2UgJ2J1ZmZlcic6IHN0ciA9IGRhdGEudG9TdHJpbmcoJ2JpbmFyeScpOyBicmVhaztcblx0XHRjYXNlICdhcnJheSc6IHN0ciA9IGNjMnN0cihkYXRhKTsgYnJlYWs7XG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIHR5cGUgXCIgKyBvLnR5cGUpO1xuXHR9XG5cdGlmKGJ5dGVzWzBdID09IDB4RUYgJiYgYnl0ZXNbMV0gPT0gMHhCQiAmJiBieXRlc1syXSA9PSAweEJGKSBzdHIgPSB1dGY4cmVhZChzdHIpO1xuXHRvLnR5cGUgPSBcImJpbmFyeVwiO1xuXHRyZXR1cm4gcmVhZF9wbGFpbnRleHQoc3RyLCBvKTtcbn1cblxuZnVuY3Rpb24gcmVhZF91dGYxNihkYXRhLyo6UmF3RGF0YSovLCBvLyo6UGFyc2VPcHRzKi8pLyo6V29ya2Jvb2sqLyB7XG5cdHZhciBkID0gZGF0YTtcblx0aWYoby50eXBlID09ICdiYXNlNjQnKSBkID0gQmFzZTY0X2RlY29kZShkKTtcblx0ZCA9ICRjcHRhYmxlLnV0aWxzLmRlY29kZSgxMjAwLCBkLnNsaWNlKDIpLCAnc3RyJyk7XG5cdG8udHlwZSA9IFwiYmluYXJ5XCI7XG5cdHJldHVybiByZWFkX3BsYWludGV4dChkLCBvKTtcbn1cblxuZnVuY3Rpb24gYnN0cmlmeShkYXRhLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHRyZXR1cm4gIWRhdGEubWF0Y2goL1teXFx4MDAtXFx4N0ZdLykgPyBkYXRhIDogdXRmOHdyaXRlKGRhdGEpO1xufVxuXG5mdW5jdGlvbiByZWFkX3BybihkYXRhLCBkLCBvLCBzdHIpIHtcblx0aWYoc3RyKSB7IG8udHlwZSA9IFwic3RyaW5nXCI7IHJldHVybiBQUk4udG9fd29ya2Jvb2soZGF0YSwgbyk7IH1cblx0cmV0dXJuIFBSTi50b193b3JrYm9vayhkLCBvKTtcbn1cblxuZnVuY3Rpb24gcmVhZFN5bmMoZGF0YS8qOlJhd0RhdGEqLywgb3B0cy8qOj9QYXJzZU9wdHMqLykvKjpXb3JrYm9vayovIHtcblx0cmVzZXRfY3AoKTtcblx0dmFyIG8gPSBvcHRzfHx7fTtcblx0aWYodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJiBkYXRhIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHJldHVybiByZWFkU3luYyhuZXcgVWludDhBcnJheShkYXRhKSwgKG8gPSBkdXAobyksIG8udHlwZSA9IFwiYXJyYXlcIiwgbykpO1xuXHRpZih0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgJiYgZGF0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkgJiYgIW8udHlwZSkgby50eXBlID0gdHlwZW9mIERlbm8gIT09IFwidW5kZWZpbmVkXCIgPyBcImJ1ZmZlclwiIDogXCJhcnJheVwiO1xuXHR2YXIgZCA9IGRhdGEsIG4gPSBbMCwwLDAsMF0sIHN0ciA9IGZhbHNlO1xuXHRpZihvLmNlbGxTdHlsZXMpIHsgby5jZWxsTkYgPSB0cnVlOyBvLnNoZWV0U3R1YnMgPSB0cnVlOyB9XG5cdF9zc2ZvcHRzID0ge307XG5cdGlmKG8uZGF0ZU5GKSBfc3Nmb3B0cy5kYXRlTkYgPSBvLmRhdGVORjtcblx0aWYoIW8udHlwZSkgby50eXBlID0gKGhhc19idWYgJiYgQnVmZmVyLmlzQnVmZmVyKGRhdGEpKSA/IFwiYnVmZmVyXCIgOiBcImJhc2U2NFwiO1xuXHRpZihvLnR5cGUgPT0gXCJmaWxlXCIpIHsgby50eXBlID0gaGFzX2J1ZiA/IFwiYnVmZmVyXCIgOiBcImJpbmFyeVwiOyBkID0gcmVhZF9iaW5hcnkoZGF0YSk7IGlmKHR5cGVvZiBVaW50OEFycmF5ICE9PSAndW5kZWZpbmVkJyAmJiAhaGFzX2J1Zikgby50eXBlID0gXCJhcnJheVwiOyB9XG5cdGlmKG8udHlwZSA9PSBcInN0cmluZ1wiKSB7IHN0ciA9IHRydWU7IG8udHlwZSA9IFwiYmluYXJ5XCI7IG8uY29kZXBhZ2UgPSA2NTAwMTsgZCA9IGJzdHJpZnkoZGF0YSk7IH1cblx0aWYoby50eXBlID09ICdhcnJheScgJiYgdHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnICYmIGRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5ICYmIHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdHZhciBhYj1uZXcgQXJyYXlCdWZmZXIoMyksIHZ1PW5ldyBVaW50OEFycmF5KGFiKTsgdnUuZm9vPVwiYmFyXCI7XG5cdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRpZighdnUuZm9vKSB7bz1kdXAobyk7IG8udHlwZT0nYXJyYXknOyByZXR1cm4gcmVhZFN5bmMoYWIyYShkKSwgbyk7fVxuXHR9XG5cdHN3aXRjaCgobiA9IGZpcnN0Ynl0ZShkLCBvKSlbMF0pIHtcblx0XHRjYXNlIDB4RDA6IGlmKG5bMV0gPT09IDB4Q0YgJiYgblsyXSA9PT0gMHgxMSAmJiBuWzNdID09PSAweEUwICYmIG5bNF0gPT09IDB4QTEgJiYgbls1XSA9PT0gMHhCMSAmJiBuWzZdID09PSAweDFBICYmIG5bN10gPT09IDB4RTEpIHJldHVybiByZWFkX2NmYihDRkIucmVhZChkLCBvKSwgbyk7IGJyZWFrO1xuXHRcdGNhc2UgMHgwOTogaWYoblsxXSA8PSAweDA4KSByZXR1cm4gcGFyc2VfeGxzY2ZiKGQsIG8pOyBicmVhaztcblx0XHRjYXNlIDB4M0M6IHJldHVybiBwYXJzZV94bG1sKGQsIG8pO1xuXHRcdGNhc2UgMHg0OTpcblx0XHRcdGlmKG5bMV0gPT09IDB4NDkgJiYgblsyXSA9PT0gMHgyYSAmJiBuWzNdID09PSAweDAwKSB0aHJvdyBuZXcgRXJyb3IoXCJUSUZGIEltYWdlIEZpbGUgaXMgbm90IGEgc3ByZWFkc2hlZXRcIik7XG5cdFx0XHRpZihuWzFdID09PSAweDQ0KSByZXR1cm4gcmVhZF93Yl9JRChkLCBvKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgMHg1NDogaWYoblsxXSA9PT0gMHg0MSAmJiBuWzJdID09PSAweDQyICYmIG5bM10gPT09IDB4NEMpIHJldHVybiBESUYudG9fd29ya2Jvb2soZCwgbyk7IGJyZWFrO1xuXHRcdGNhc2UgMHg1MDogcmV0dXJuIChuWzFdID09PSAweDRCICYmIG5bMl0gPCAweDA5ICYmIG5bM10gPCAweDA5KSA/IHJlYWRfemlwKGQsIG8pIDogcmVhZF9wcm4oZGF0YSwgZCwgbywgc3RyKTtcblx0XHRjYXNlIDB4RUY6IHJldHVybiBuWzNdID09PSAweDNDID8gcGFyc2VfeGxtbChkLCBvKSA6IHJlYWRfcHJuKGRhdGEsIGQsIG8sIHN0cik7XG5cdFx0Y2FzZSAweEZGOlxuXHRcdFx0aWYoblsxXSA9PT0gMHhGRSkgeyByZXR1cm4gcmVhZF91dGYxNihkLCBvKTsgfVxuXHRcdFx0ZWxzZSBpZihuWzFdID09PSAweDAwICYmIG5bMl0gPT09IDB4MDIgJiYgblszXSA9PT0gMHgwMCkgcmV0dXJuIFdLXy50b193b3JrYm9vayhkLCBvKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgMHgwMDpcblx0XHRcdGlmKG5bMV0gPT09IDB4MDApIHtcblx0XHRcdFx0aWYoblsyXSA+PSAweDAyICYmIG5bM10gPT09IDB4MDApIHJldHVybiBXS18udG9fd29ya2Jvb2soZCwgbyk7XG5cdFx0XHRcdGlmKG5bMl0gPT09IDB4MDAgJiYgKG5bM10gPT09IDB4MDggfHwgblszXSA9PT0gMHgwOSkpIHJldHVybiBXS18udG9fd29ya2Jvb2soZCwgbyk7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIDB4MDM6IGNhc2UgMHg4MzogY2FzZSAweDhCOiBjYXNlIDB4OEM6IHJldHVybiBEQkYudG9fd29ya2Jvb2soZCwgbyk7XG5cdFx0Y2FzZSAweDdCOiBpZihuWzFdID09PSAweDVDICYmIG5bMl0gPT09IDB4NzIgJiYgblszXSA9PT0gMHg3NCkgcmV0dXJuIFJURi50b193b3JrYm9vayhkLCBvKTsgYnJlYWs7XG5cdFx0Y2FzZSAweDBBOiBjYXNlIDB4MEQ6IGNhc2UgMHgyMDogcmV0dXJuIHJlYWRfcGxhaW50ZXh0X3JhdyhkLCBvKTtcblx0XHRjYXNlIDB4ODk6IGlmKG5bMV0gPT09IDB4NTAgJiYgblsyXSA9PT0gMHg0RSAmJiBuWzNdID09PSAweDQ3KSB0aHJvdyBuZXcgRXJyb3IoXCJQTkcgSW1hZ2UgRmlsZSBpcyBub3QgYSBzcHJlYWRzaGVldFwiKTsgYnJlYWs7XG5cdH1cblx0aWYoREJGX1NVUFBPUlRFRF9WRVJTSU9OUy5pbmRleE9mKG5bMF0pID4gLTEgJiYgblsyXSA8PSAxMiAmJiBuWzNdIDw9IDMxKSByZXR1cm4gREJGLnRvX3dvcmtib29rKGQsIG8pO1xuXHRyZXR1cm4gcmVhZF9wcm4oZGF0YSwgZCwgbywgc3RyKTtcbn1cblxuZnVuY3Rpb24gcmVhZEZpbGVTeW5jKGZpbGVuYW1lLyo6c3RyaW5nKi8sIG9wdHMvKjo/UGFyc2VPcHRzKi8pLyo6V29ya2Jvb2sqLyB7XG5cdHZhciBvID0gb3B0c3x8e307IG8udHlwZSA9ICdmaWxlJztcblx0cmV0dXJuIHJlYWRTeW5jKGZpbGVuYW1lLCBvKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX2NmYl9jdHIoY2ZiLyo6Q0ZCQ29udGFpbmVyKi8sIG8vKjpXcml0ZU9wdHMqLykvKjphbnkqLyB7XG5cdHN3aXRjaChvLnR5cGUpIHtcblx0XHRjYXNlIFwiYmFzZTY0XCI6IGNhc2UgXCJiaW5hcnlcIjogYnJlYWs7XG5cdFx0Y2FzZSBcImJ1ZmZlclwiOiBjYXNlIFwiYXJyYXlcIjogby50eXBlID0gXCJcIjsgYnJlYWs7XG5cdFx0Y2FzZSBcImZpbGVcIjogcmV0dXJuIHdyaXRlX2RsKG8uZmlsZSwgQ0ZCLndyaXRlKGNmYiwge3R5cGU6aGFzX2J1ZiA/ICdidWZmZXInIDogXCJcIn0pKTtcblx0XHRjYXNlIFwic3RyaW5nXCI6IHRocm93IG5ldyBFcnJvcihcIidzdHJpbmcnIG91dHB1dCB0eXBlIGludmFsaWQgZm9yICdcIiArIG8uYm9va1R5cGUgKyBcIicgZmlsZXNcIik7XG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIHR5cGUgXCIgKyBvLnR5cGUpO1xuXHR9XG5cdHJldHVybiBDRkIud3JpdGUoY2ZiLCBvKTtcbn1cblxuLyo6OiBkZWNsYXJlIHZhciBlbmNyeXB0X2FnaWxlOmFueTsgKi9cbmZ1bmN0aW9uIHdyaXRlX3ppcF90eXBlKHdiLyo6V29ya2Jvb2sqLywgb3B0cy8qOj9Xcml0ZU9wdHMqLykvKjphbnkqLyB7XG5cdHZhciBvID0gZHVwKG9wdHN8fHt9KTtcblx0dmFyIHogPSB3cml0ZV96aXAod2IsIG8pO1xuXHRyZXR1cm4gd3JpdGVfemlwX2Rlbm91ZW1lbnQoeiwgbyk7XG59XG5mdW5jdGlvbiB3cml0ZV96aXBfdHlwZVhMU1god2IvKjpXb3JrYm9vayovLCBvcHRzLyo6P1dyaXRlT3B0cyovKS8qOmFueSovIHtcblx0dmFyIG8gPSBkdXAob3B0c3x8e30pO1xuXHR2YXIgeiA9IHdyaXRlX3ppcF94bHN4KHdiLCBvKTtcblx0cmV0dXJuIHdyaXRlX3ppcF9kZW5vdWVtZW50KHosIG8pO1xufVxuZnVuY3Rpb24gd3JpdGVfemlwX2Rlbm91ZW1lbnQoei8qOmFueSovLCBvLyo6P1dyaXRlT3B0cyovKS8qOmFueSovIHtcblx0dmFyIG9vcHRzID0ge307XG5cdHZhciBmdHlwZSA9IGhhc19idWYgPyBcIm5vZGVidWZmZXJcIiA6ICh0eXBlb2YgVWludDhBcnJheSAhPT0gXCJ1bmRlZmluZWRcIiA/IFwiYXJyYXlcIiA6IFwic3RyaW5nXCIpO1xuXHRpZihvLmNvbXByZXNzaW9uKSBvb3B0cy5jb21wcmVzc2lvbiA9ICdERUZMQVRFJztcblx0aWYoby5wYXNzd29yZCkgb29wdHMudHlwZSA9IGZ0eXBlO1xuXHRlbHNlIHN3aXRjaChvLnR5cGUpIHtcblx0XHRjYXNlIFwiYmFzZTY0XCI6IG9vcHRzLnR5cGUgPSBcImJhc2U2NFwiOyBicmVhaztcblx0XHRjYXNlIFwiYmluYXJ5XCI6IG9vcHRzLnR5cGUgPSBcInN0cmluZ1wiOyBicmVhaztcblx0XHRjYXNlIFwic3RyaW5nXCI6IHRocm93IG5ldyBFcnJvcihcIidzdHJpbmcnIG91dHB1dCB0eXBlIGludmFsaWQgZm9yICdcIiArIG8uYm9va1R5cGUgKyBcIicgZmlsZXNcIik7XG5cdFx0Y2FzZSBcImJ1ZmZlclwiOlxuXHRcdGNhc2UgXCJmaWxlXCI6IG9vcHRzLnR5cGUgPSBmdHlwZTsgYnJlYWs7XG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIHR5cGUgXCIgKyBvLnR5cGUpO1xuXHR9XG5cdHZhciBvdXQgPSB6LkZ1bGxQYXRocyA/IENGQi53cml0ZSh6LCB7ZmlsZVR5cGU6XCJ6aXBcIiwgdHlwZTogLyo6OigqL3tcIm5vZGVidWZmZXJcIjogXCJidWZmZXJcIiwgXCJzdHJpbmdcIjogXCJiaW5hcnlcIn0vKjo6IDphbnkpKi9bb29wdHMudHlwZV0gfHwgb29wdHMudHlwZSwgY29tcHJlc3Npb246ICEhby5jb21wcmVzc2lvbn0pIDogei5nZW5lcmF0ZShvb3B0cyk7XG5cdGlmKHR5cGVvZiBEZW5vICE9PSBcInVuZGVmaW5lZFwiKSB7XG5cdFx0aWYodHlwZW9mIG91dCA9PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRpZihvLnR5cGUgPT0gXCJiaW5hcnlcIiB8fCBvLnR5cGUgPT0gXCJiYXNlNjRcIikgcmV0dXJuIG91dDtcblx0XHRcdG91dCA9IG5ldyBVaW50OEFycmF5KHMyYWIob3V0KSk7XG5cdFx0fVxuXHR9XG4vKmpzaGludCAtVzA4MyAqL1xuXHRpZihvLnBhc3N3b3JkICYmIHR5cGVvZiBlbmNyeXB0X2FnaWxlICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIHdyaXRlX2NmYl9jdHIoZW5jcnlwdF9hZ2lsZShvdXQsIG8ucGFzc3dvcmQpLCBvKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuLypqc2hpbnQgK1cwODMgKi9cblx0aWYoby50eXBlID09PSBcImZpbGVcIikgcmV0dXJuIHdyaXRlX2RsKG8uZmlsZSwgb3V0KTtcblx0cmV0dXJuIG8udHlwZSA9PSBcInN0cmluZ1wiID8gdXRmOHJlYWQoLyo6OigqL291dC8qOjogOmFueSkqLykgOiBvdXQ7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX2NmYl90eXBlKHdiLyo6V29ya2Jvb2sqLywgb3B0cy8qOj9Xcml0ZU9wdHMqLykvKjphbnkqLyB7XG5cdHZhciBvID0gb3B0c3x8e307XG5cdHZhciBjZmIvKjpDRkJDb250YWluZXIqLyA9IHdyaXRlX3hsc2NmYih3Yiwgbyk7XG5cdHJldHVybiB3cml0ZV9jZmJfY3RyKGNmYiwgbyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3N0cmluZ190eXBlKG91dC8qOnN0cmluZyovLCBvcHRzLyo6V3JpdGVPcHRzKi8sIGJvbS8qOj9zdHJpbmcqLykvKjphbnkqLyB7XG5cdGlmKCFib20pIGJvbSA9IFwiXCI7XG5cdHZhciBvID0gYm9tICsgb3V0O1xuXHRzd2l0Y2gob3B0cy50eXBlKSB7XG5cdFx0Y2FzZSBcImJhc2U2NFwiOiByZXR1cm4gQmFzZTY0X2VuY29kZSh1dGY4d3JpdGUobykpO1xuXHRcdGNhc2UgXCJiaW5hcnlcIjogcmV0dXJuIHV0Zjh3cml0ZShvKTtcblx0XHRjYXNlIFwic3RyaW5nXCI6IHJldHVybiBvdXQ7XG5cdFx0Y2FzZSBcImZpbGVcIjogcmV0dXJuIHdyaXRlX2RsKG9wdHMuZmlsZSwgbywgJ3V0ZjgnKTtcblx0XHRjYXNlIFwiYnVmZmVyXCI6IHtcblx0XHRcdGlmKGhhc19idWYpIHJldHVybiBCdWZmZXJfZnJvbShvLCAndXRmOCcpO1xuXHRcdFx0ZWxzZSBpZih0eXBlb2YgVGV4dEVuY29kZXIgIT09IFwidW5kZWZpbmVkXCIpIHJldHVybiBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUobyk7XG5cdFx0XHRlbHNlIHJldHVybiB3cml0ZV9zdHJpbmdfdHlwZShvLCB7dHlwZTonYmluYXJ5J30pLnNwbGl0KFwiXCIpLm1hcChmdW5jdGlvbihjKSB7IHJldHVybiBjLmNoYXJDb2RlQXQoMCk7IH0pO1xuXHRcdH1cblx0fVxuXHR0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgdHlwZSBcIiArIG9wdHMudHlwZSk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3N0eHRfdHlwZShvdXQvKjpzdHJpbmcqLywgb3B0cy8qOldyaXRlT3B0cyovKS8qOmFueSovIHtcblx0c3dpdGNoKG9wdHMudHlwZSkge1xuXHRcdGNhc2UgXCJiYXNlNjRcIjogcmV0dXJuIEJhc2U2NF9lbmNvZGUob3V0KTtcblx0XHRjYXNlIFwiYmluYXJ5XCI6IHJldHVybiBvdXQ7XG5cdFx0Y2FzZSBcInN0cmluZ1wiOiByZXR1cm4gb3V0OyAvKiBvdmVycmlkZSBpbiBzaGVldF90b190eHQgKi9cblx0XHRjYXNlIFwiZmlsZVwiOiByZXR1cm4gd3JpdGVfZGwob3B0cy5maWxlLCBvdXQsICdiaW5hcnknKTtcblx0XHRjYXNlIFwiYnVmZmVyXCI6IHtcblx0XHRcdGlmKGhhc19idWYpIHJldHVybiBCdWZmZXJfZnJvbShvdXQsICdiaW5hcnknKTtcblx0XHRcdGVsc2UgcmV0dXJuIG91dC5zcGxpdChcIlwiKS5tYXAoZnVuY3Rpb24oYykgeyByZXR1cm4gYy5jaGFyQ29kZUF0KDApOyB9KTtcblx0XHR9XG5cdH1cblx0dGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIHR5cGUgXCIgKyBvcHRzLnR5cGUpO1xufVxuXG4vKiBUT0RPOiB0ZXN0IGNvbnNpc3RlbmN5ICovXG5mdW5jdGlvbiB3cml0ZV9iaW5hcnlfdHlwZShvdXQsIG9wdHMvKjpXcml0ZU9wdHMqLykvKjphbnkqLyB7XG5cdHN3aXRjaChvcHRzLnR5cGUpIHtcblx0XHRjYXNlIFwic3RyaW5nXCI6XG5cdFx0Y2FzZSBcImJhc2U2NFwiOlxuXHRcdGNhc2UgXCJiaW5hcnlcIjpcblx0XHRcdHZhciBic3RyID0gXCJcIjtcblx0XHRcdC8vICRGbG93SWdub3JlXG5cdFx0XHRmb3IodmFyIGkgPSAwOyBpIDwgb3V0Lmxlbmd0aDsgKytpKSBic3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUob3V0W2ldKTtcblx0XHRcdHJldHVybiBvcHRzLnR5cGUgPT0gJ2Jhc2U2NCcgPyBCYXNlNjRfZW5jb2RlKGJzdHIpIDogb3B0cy50eXBlID09ICdzdHJpbmcnID8gdXRmOHJlYWQoYnN0cikgOiBic3RyO1xuXHRcdGNhc2UgXCJmaWxlXCI6IHJldHVybiB3cml0ZV9kbChvcHRzLmZpbGUsIG91dCk7XG5cdFx0Y2FzZSBcImJ1ZmZlclwiOiByZXR1cm4gb3V0O1xuXHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIlVucmVjb2duaXplZCB0eXBlIFwiICsgb3B0cy50eXBlKTtcblx0fVxufVxuXG5mdW5jdGlvbiB3cml0ZVN5bmNYTFNYKHdiLyo6V29ya2Jvb2sqLywgb3B0cy8qOj9Xcml0ZU9wdHMqLykge1xuXHRyZXNldF9jcCgpO1xuXHRjaGVja193Yih3Yik7XG5cdHZhciBvID0gZHVwKG9wdHN8fHt9KTtcblx0aWYoby5jZWxsU3R5bGVzKSB7IG8uY2VsbE5GID0gdHJ1ZTsgby5zaGVldFN0dWJzID0gdHJ1ZTsgfVxuXHRpZihvLnR5cGUgPT0gXCJhcnJheVwiKSB7IG8udHlwZSA9IFwiYmluYXJ5XCI7IHZhciBvdXQvKjpzdHJpbmcqLyA9ICh3cml0ZVN5bmNYTFNYKHdiLCBvKS8qOmFueSovKTsgby50eXBlID0gXCJhcnJheVwiOyByZXR1cm4gczJhYihvdXQpOyB9XG5cdHJldHVybiB3cml0ZV96aXBfdHlwZVhMU1god2IsIG8pO1xufVxuXG5mdW5jdGlvbiB3cml0ZVN5bmMod2IvKjpXb3JrYm9vayovLCBvcHRzLyo6P1dyaXRlT3B0cyovKSB7XG5cdHJlc2V0X2NwKCk7XG5cdGNoZWNrX3diKHdiKTtcblx0dmFyIG8gPSBkdXAob3B0c3x8e30pO1xuXHRpZihvLmNlbGxTdHlsZXMpIHsgby5jZWxsTkYgPSB0cnVlOyBvLnNoZWV0U3R1YnMgPSB0cnVlOyB9XG5cdGlmKG8udHlwZSA9PSBcImFycmF5XCIpIHsgby50eXBlID0gXCJiaW5hcnlcIjsgdmFyIG91dC8qOnN0cmluZyovID0gKHdyaXRlU3luYyh3YiwgbykvKjphbnkqLyk7IG8udHlwZSA9IFwiYXJyYXlcIjsgcmV0dXJuIHMyYWIob3V0KTsgfVxuXHR2YXIgaWR4ID0gMDtcblx0aWYoby5zaGVldCkge1xuXHRcdGlmKHR5cGVvZiBvLnNoZWV0ID09IFwibnVtYmVyXCIpIGlkeCA9IG8uc2hlZXQ7XG5cdFx0ZWxzZSBpZHggPSB3Yi5TaGVldE5hbWVzLmluZGV4T2Yoby5zaGVldCk7XG5cdFx0aWYoIXdiLlNoZWV0TmFtZXNbaWR4XSkgdGhyb3cgbmV3IEVycm9yKFwiU2hlZXQgbm90IGZvdW5kOiBcIiArIG8uc2hlZXQgKyBcIiA6IFwiICsgKHR5cGVvZiBvLnNoZWV0KSk7XG5cdH1cblx0c3dpdGNoKG8uYm9va1R5cGUgfHwgJ3hsc2InKSB7XG5cdFx0Y2FzZSAneG1sJzpcblx0XHRjYXNlICd4bG1sJzogcmV0dXJuIHdyaXRlX3N0cmluZ190eXBlKHdyaXRlX3hsbWwod2IsIG8pLCBvKTtcblx0XHRjYXNlICdzbGsnOlxuXHRcdGNhc2UgJ3N5bGsnOiByZXR1cm4gd3JpdGVfc3RyaW5nX3R5cGUoU1lMSy5mcm9tX3NoZWV0KHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW2lkeF1dLCBvKSwgbyk7XG5cdFx0Y2FzZSAnaHRtJzpcblx0XHRjYXNlICdodG1sJzogcmV0dXJuIHdyaXRlX3N0cmluZ190eXBlKHNoZWV0X3RvX2h0bWwod2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbaWR4XV0sIG8pLCBvKTtcblx0XHRjYXNlICd0eHQnOiByZXR1cm4gd3JpdGVfc3R4dF90eXBlKHNoZWV0X3RvX3R4dCh3Yi5TaGVldHNbd2IuU2hlZXROYW1lc1tpZHhdXSwgbyksIG8pO1xuXHRcdGNhc2UgJ2Nzdic6IHJldHVybiB3cml0ZV9zdHJpbmdfdHlwZShzaGVldF90b19jc3Yod2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbaWR4XV0sIG8pLCBvLCBcIlxcdWZlZmZcIik7XG5cdFx0Y2FzZSAnZGlmJzogcmV0dXJuIHdyaXRlX3N0cmluZ190eXBlKERJRi5mcm9tX3NoZWV0KHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW2lkeF1dLCBvKSwgbyk7XG5cdFx0Y2FzZSAnZGJmJzogcmV0dXJuIHdyaXRlX2JpbmFyeV90eXBlKERCRi5mcm9tX3NoZWV0KHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW2lkeF1dLCBvKSwgbyk7XG5cdFx0Y2FzZSAncHJuJzogcmV0dXJuIHdyaXRlX3N0cmluZ190eXBlKFBSTi5mcm9tX3NoZWV0KHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW2lkeF1dLCBvKSwgbyk7XG5cdFx0Y2FzZSAncnRmJzogcmV0dXJuIHdyaXRlX3N0cmluZ190eXBlKFJURi5mcm9tX3NoZWV0KHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW2lkeF1dLCBvKSwgbyk7XG5cdFx0Y2FzZSAnZXRoJzogcmV0dXJuIHdyaXRlX3N0cmluZ190eXBlKEVUSC5mcm9tX3NoZWV0KHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW2lkeF1dLCBvKSwgbyk7XG5cdFx0Y2FzZSAnZm9kcyc6IHJldHVybiB3cml0ZV9zdHJpbmdfdHlwZSh3cml0ZV9vZHMod2IsIG8pLCBvKTtcblx0XHRjYXNlICd3azEnOiByZXR1cm4gd3JpdGVfYmluYXJ5X3R5cGUoV0tfLnNoZWV0X3RvX3drMSh3Yi5TaGVldHNbd2IuU2hlZXROYW1lc1tpZHhdXSwgbyksIG8pO1xuXHRcdGNhc2UgJ3drMyc6IHJldHVybiB3cml0ZV9iaW5hcnlfdHlwZShXS18uYm9va190b193azMod2IsIG8pLCBvKTtcblx0XHRjYXNlICdiaWZmMic6IGlmKCFvLmJpZmYpIG8uYmlmZiA9IDI7IC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRjYXNlICdiaWZmMyc6IGlmKCFvLmJpZmYpIG8uYmlmZiA9IDM7IC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRjYXNlICdiaWZmNCc6IGlmKCFvLmJpZmYpIG8uYmlmZiA9IDQ7IHJldHVybiB3cml0ZV9iaW5hcnlfdHlwZSh3cml0ZV9iaWZmX2J1Zih3YiwgbyksIG8pO1xuXHRcdGNhc2UgJ2JpZmY1JzogaWYoIW8uYmlmZikgby5iaWZmID0gNTsgLyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdGNhc2UgJ2JpZmY4Jzpcblx0XHRjYXNlICd4bGEnOlxuXHRcdGNhc2UgJ3hscyc6IGlmKCFvLmJpZmYpIG8uYmlmZiA9IDg7IHJldHVybiB3cml0ZV9jZmJfdHlwZSh3Yiwgbyk7XG5cdFx0Y2FzZSAneGxzeCc6XG5cdFx0Y2FzZSAneGxzbSc6XG5cdFx0Y2FzZSAneGxhbSc6XG5cdFx0Y2FzZSAneGxzYic6XG5cdFx0Y2FzZSAnbnVtYmVycyc6XG5cdFx0Y2FzZSAnb2RzJzogcmV0dXJuIHdyaXRlX3ppcF90eXBlKHdiLCBvKTtcblx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IgKFwiVW5yZWNvZ25pemVkIGJvb2tUeXBlIHxcIiArIG8uYm9va1R5cGUgKyBcInxcIik7XG5cdH1cbn1cblxuZnVuY3Rpb24gcmVzb2x2ZV9ib29rX3R5cGUoby8qOldyaXRlRmlsZU9wdHMqLykge1xuXHRpZihvLmJvb2tUeXBlKSByZXR1cm47XG5cdHZhciBfQlQgPSB7XG5cdFx0XCJ4bHNcIjogXCJiaWZmOFwiLFxuXHRcdFwiaHRtXCI6IFwiaHRtbFwiLFxuXHRcdFwic2xrXCI6IFwic3lsa1wiLFxuXHRcdFwic29jaWFsY2FsY1wiOiBcImV0aFwiLFxuXHRcdFwiU2gzM3RKU1wiOiBcIldURlwiXG5cdH07XG5cdHZhciBleHQgPSBvLmZpbGUuc2xpY2Uoby5maWxlLmxhc3RJbmRleE9mKFwiLlwiKSkudG9Mb3dlckNhc2UoKTtcblx0aWYoZXh0Lm1hdGNoKC9eXFwuW2Etel0rJC8pKSBvLmJvb2tUeXBlID0gZXh0LnNsaWNlKDEpO1xuXHRvLmJvb2tUeXBlID0gX0JUW28uYm9va1R5cGVdIHx8IG8uYm9va1R5cGU7XG59XG5cbmZ1bmN0aW9uIHdyaXRlRmlsZVN5bmMod2IvKjpXb3JrYm9vayovLCBmaWxlbmFtZS8qOnN0cmluZyovLCBvcHRzLyo6P1dyaXRlRmlsZU9wdHMqLykge1xuXHR2YXIgbyA9IG9wdHN8fHt9OyBvLnR5cGUgPSAnZmlsZSc7XG5cdG8uZmlsZSA9IGZpbGVuYW1lO1xuXHRyZXNvbHZlX2Jvb2tfdHlwZShvKTtcblx0cmV0dXJuIHdyaXRlU3luYyh3Yiwgbyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlRmlsZVN5bmNYTFNYKHdiLyo6V29ya2Jvb2sqLywgZmlsZW5hbWUvKjpzdHJpbmcqLywgb3B0cy8qOj9Xcml0ZUZpbGVPcHRzKi8pIHtcblx0dmFyIG8gPSBvcHRzfHx7fTsgby50eXBlID0gJ2ZpbGUnO1xuXHRvLmZpbGUgPSBmaWxlbmFtZTtcblx0cmVzb2x2ZV9ib29rX3R5cGUobyk7XG5cdHJldHVybiB3cml0ZVN5bmNYTFNYKHdiLCBvKTtcbn1cblxuXG5mdW5jdGlvbiB3cml0ZUZpbGVBc3luYyhmaWxlbmFtZS8qOnN0cmluZyovLCB3Yi8qOldvcmtib29rKi8sIG9wdHMvKjo/V3JpdGVGaWxlT3B0cyovLCBjYi8qOj8oZT86RXJybm9FcnJvcik9PnZvaWQqLykge1xuXHR2YXIgbyA9IG9wdHN8fHt9OyBvLnR5cGUgPSAnZmlsZSc7XG5cdG8uZmlsZSA9IGZpbGVuYW1lO1xuXHRyZXNvbHZlX2Jvb2tfdHlwZShvKTtcblx0by50eXBlID0gJ2J1ZmZlcic7XG5cdHZhciBfY2IgPSBjYjsgaWYoIShfY2IgaW5zdGFuY2VvZiBGdW5jdGlvbikpIF9jYiA9IChvcHRzLyo6YW55Ki8pO1xuXHRyZXR1cm4gX2ZzLndyaXRlRmlsZShmaWxlbmFtZSwgd3JpdGVTeW5jKHdiLCBvKSwgX2NiKTtcbn1cbi8qOjpcbnR5cGUgTUpST2JqZWN0ID0ge1xuXHRyb3c6IGFueTtcblx0aXNlbXB0eTogYm9vbGVhbjtcbn07XG4qL1xuZnVuY3Rpb24gbWFrZV9qc29uX3JvdyhzaGVldC8qOldvcmtzaGVldCovLCByLyo6UmFuZ2UqLywgUi8qOm51bWJlciovLCBjb2xzLyo6QXJyYXk8c3RyaW5nPiovLCBoZWFkZXIvKjpudW1iZXIqLywgaGRyLyo6QXJyYXk8YW55PiovLCBkZW5zZS8qOmJvb2xlYW4qLywgby8qOlNoZWV0MkpTT05PcHRzKi8pLyo6TUpST2JqZWN0Ki8ge1xuXHR2YXIgcnIgPSBlbmNvZGVfcm93KFIpO1xuXHR2YXIgZGVmdmFsID0gby5kZWZ2YWwsIHJhdyA9IG8ucmF3IHx8ICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgXCJyYXdcIik7XG5cdHZhciBpc2VtcHR5ID0gdHJ1ZTtcblx0dmFyIHJvdy8qOmFueSovID0gKGhlYWRlciA9PT0gMSkgPyBbXSA6IHt9O1xuXHRpZihoZWFkZXIgIT09IDEpIHtcblx0XHRpZihPYmplY3QuZGVmaW5lUHJvcGVydHkpIHRyeSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyb3csICdfX3Jvd051bV9fJywge3ZhbHVlOlIsIGVudW1lcmFibGU6ZmFsc2V9KTsgfSBjYXRjaChlKSB7IHJvdy5fX3Jvd051bV9fID0gUjsgfVxuXHRcdGVsc2Ugcm93Ll9fcm93TnVtX18gPSBSO1xuXHR9XG5cdGlmKCFkZW5zZSB8fCBzaGVldFtSXSkgZm9yICh2YXIgQyA9IHIucy5jOyBDIDw9IHIuZS5jOyArK0MpIHtcblx0XHR2YXIgdmFsID0gZGVuc2UgPyBzaGVldFtSXVtDXSA6IHNoZWV0W2NvbHNbQ10gKyBycl07XG5cdFx0aWYodmFsID09PSB1bmRlZmluZWQgfHwgdmFsLnQgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0aWYoZGVmdmFsID09PSB1bmRlZmluZWQpIGNvbnRpbnVlO1xuXHRcdFx0aWYoaGRyW0NdICE9IG51bGwpIHsgcm93W2hkcltDXV0gPSBkZWZ2YWw7IH1cblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblx0XHR2YXIgdiA9IHZhbC52O1xuXHRcdHN3aXRjaCh2YWwudCl7XG5cdFx0XHRjYXNlICd6JzogaWYodiA9PSBudWxsKSBicmVhazsgY29udGludWU7XG5cdFx0XHRjYXNlICdlJzogdiA9ICh2ID09IDAgPyBudWxsIDogdm9pZCAwKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdzJzogY2FzZSAnZCc6IGNhc2UgJ2InOiBjYXNlICduJzogYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ3VucmVjb2duaXplZCB0eXBlICcgKyB2YWwudCk7XG5cdFx0fVxuXHRcdGlmKGhkcltDXSAhPSBudWxsKSB7XG5cdFx0XHRpZih2ID09IG51bGwpIHtcblx0XHRcdFx0aWYodmFsLnQgPT0gXCJlXCIgJiYgdiA9PT0gbnVsbCkgcm93W2hkcltDXV0gPSBudWxsO1xuXHRcdFx0XHRlbHNlIGlmKGRlZnZhbCAhPT0gdW5kZWZpbmVkKSByb3dbaGRyW0NdXSA9IGRlZnZhbDtcblx0XHRcdFx0ZWxzZSBpZihyYXcgJiYgdiA9PT0gbnVsbCkgcm93W2hkcltDXV0gPSBudWxsO1xuXHRcdFx0XHRlbHNlIGNvbnRpbnVlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cm93W2hkcltDXV0gPSByYXcgJiYgKHZhbC50ICE9PSBcIm5cIiB8fCAodmFsLnQgPT09IFwiblwiICYmIG8ucmF3TnVtYmVycyAhPT0gZmFsc2UpKSA/IHYgOiBmb3JtYXRfY2VsbCh2YWwsdixvKTtcblx0XHRcdH1cblx0XHRcdGlmKHYgIT0gbnVsbCkgaXNlbXB0eSA9IGZhbHNlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4geyByb3c6IHJvdywgaXNlbXB0eTogaXNlbXB0eSB9O1xufVxuXG5cbmZ1bmN0aW9uIHNoZWV0X3RvX2pzb24oc2hlZXQvKjpXb3Jrc2hlZXQqLywgb3B0cy8qOj9TaGVldDJKU09OT3B0cyovKSB7XG5cdGlmKHNoZWV0ID09IG51bGwgfHwgc2hlZXRbXCIhcmVmXCJdID09IG51bGwpIHJldHVybiBbXTtcblx0dmFyIHZhbCA9IHt0OiduJyx2OjB9LCBoZWFkZXIgPSAwLCBvZmZzZXQgPSAxLCBoZHIvKjpBcnJheTxhbnk+Ki8gPSBbXSwgdj0wLCB2dj1cIlwiO1xuXHR2YXIgciA9IHtzOntyOjAsYzowfSxlOntyOjAsYzowfX07XG5cdHZhciBvID0gb3B0cyB8fCB7fTtcblx0dmFyIHJhbmdlID0gby5yYW5nZSAhPSBudWxsID8gby5yYW5nZSA6IHNoZWV0W1wiIXJlZlwiXTtcblx0aWYoby5oZWFkZXIgPT09IDEpIGhlYWRlciA9IDE7XG5cdGVsc2UgaWYoby5oZWFkZXIgPT09IFwiQVwiKSBoZWFkZXIgPSAyO1xuXHRlbHNlIGlmKEFycmF5LmlzQXJyYXkoby5oZWFkZXIpKSBoZWFkZXIgPSAzO1xuXHRlbHNlIGlmKG8uaGVhZGVyID09IG51bGwpIGhlYWRlciA9IDA7XG5cdHN3aXRjaCh0eXBlb2YgcmFuZ2UpIHtcblx0XHRjYXNlICdzdHJpbmcnOiByID0gc2FmZV9kZWNvZGVfcmFuZ2UocmFuZ2UpOyBicmVhaztcblx0XHRjYXNlICdudW1iZXInOiByID0gc2FmZV9kZWNvZGVfcmFuZ2Uoc2hlZXRbXCIhcmVmXCJdKTsgci5zLnIgPSByYW5nZTsgYnJlYWs7XG5cdFx0ZGVmYXVsdDogciA9IHJhbmdlO1xuXHR9XG5cdGlmKGhlYWRlciA+IDApIG9mZnNldCA9IDA7XG5cdHZhciByciA9IGVuY29kZV9yb3coci5zLnIpO1xuXHR2YXIgY29scy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgb3V0Lyo6QXJyYXk8YW55PiovID0gW107XG5cdHZhciBvdXRpID0gMCwgY291bnRlciA9IDA7XG5cdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkoc2hlZXQpO1xuXHR2YXIgUiA9IHIucy5yLCBDID0gMDtcblx0dmFyIGhlYWRlcl9jbnQgPSB7fTtcblx0aWYoZGVuc2UgJiYgIXNoZWV0W1JdKSBzaGVldFtSXSA9IFtdO1xuXHR2YXIgY29saW5mby8qOkFycmF5PENvbEluZm8+Ki8gPSBvLnNraXBIaWRkZW4gJiYgc2hlZXRbXCIhY29sc1wiXSB8fCBbXTtcblx0dmFyIHJvd2luZm8vKjpBcnJheTxDb2xJbmZvPiovID0gby5za2lwSGlkZGVuICYmIHNoZWV0W1wiIXJvd3NcIl0gfHwgW107XG5cdGZvcihDID0gci5zLmM7IEMgPD0gci5lLmM7ICsrQykge1xuXHRcdGlmKCgoY29saW5mb1tDXXx8e30pLmhpZGRlbikpIGNvbnRpbnVlO1xuXHRcdGNvbHNbQ10gPSBlbmNvZGVfY29sKEMpO1xuXHRcdHZhbCA9IGRlbnNlID8gc2hlZXRbUl1bQ10gOiBzaGVldFtjb2xzW0NdICsgcnJdO1xuXHRcdHN3aXRjaChoZWFkZXIpIHtcblx0XHRcdGNhc2UgMTogaGRyW0NdID0gQyAtIHIucy5jOyBicmVhaztcblx0XHRcdGNhc2UgMjogaGRyW0NdID0gY29sc1tDXTsgYnJlYWs7XG5cdFx0XHRjYXNlIDM6IGhkcltDXSA9IG8uaGVhZGVyW0MgLSByLnMuY107IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0aWYodmFsID09IG51bGwpIHZhbCA9IHt3OiBcIl9fRU1QVFlcIiwgdDogXCJzXCJ9O1xuXHRcdFx0XHR2diA9IHYgPSBmb3JtYXRfY2VsbCh2YWwsIG51bGwsIG8pO1xuXHRcdFx0XHRjb3VudGVyID0gaGVhZGVyX2NudFt2XSB8fCAwO1xuXHRcdFx0XHRpZighY291bnRlcikgaGVhZGVyX2NudFt2XSA9IDE7XG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdGRvIHsgdnYgPSB2ICsgXCJfXCIgKyAoY291bnRlcisrKTsgfSB3aGlsZShoZWFkZXJfY250W3Z2XSk7IGhlYWRlcl9jbnRbdl0gPSBjb3VudGVyO1xuXHRcdFx0XHRcdGhlYWRlcl9jbnRbdnZdID0gMTtcblx0XHRcdFx0fVxuXHRcdFx0XHRoZHJbQ10gPSB2djtcblx0XHR9XG5cdH1cblx0Zm9yIChSID0gci5zLnIgKyBvZmZzZXQ7IFIgPD0gci5lLnI7ICsrUikge1xuXHRcdGlmICgocm93aW5mb1tSXXx8e30pLmhpZGRlbikgY29udGludWU7XG5cdFx0dmFyIHJvdyA9IG1ha2VfanNvbl9yb3coc2hlZXQsIHIsIFIsIGNvbHMsIGhlYWRlciwgaGRyLCBkZW5zZSwgbyk7XG5cdFx0aWYoKHJvdy5pc2VtcHR5ID09PSBmYWxzZSkgfHwgKGhlYWRlciA9PT0gMSA/IG8uYmxhbmtyb3dzICE9PSBmYWxzZSA6ICEhby5ibGFua3Jvd3MpKSBvdXRbb3V0aSsrXSA9IHJvdy5yb3c7XG5cdH1cblx0b3V0Lmxlbmd0aCA9IG91dGk7XG5cdHJldHVybiBvdXQ7XG59XG5cbnZhciBxcmVnID0gL1wiL2c7XG5mdW5jdGlvbiBtYWtlX2Nzdl9yb3coc2hlZXQvKjpXb3Jrc2hlZXQqLywgci8qOlJhbmdlKi8sIFIvKjpudW1iZXIqLywgY29scy8qOkFycmF5PHN0cmluZz4qLywgZnMvKjpudW1iZXIqLywgcnMvKjpudW1iZXIqLywgRlMvKjpzdHJpbmcqLywgby8qOlNoZWV0MkNTVk9wdHMqLykvKjo/c3RyaW5nKi8ge1xuXHR2YXIgaXNlbXB0eSA9IHRydWU7XG5cdHZhciByb3cvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXSwgdHh0ID0gXCJcIiwgcnIgPSBlbmNvZGVfcm93KFIpO1xuXHRmb3IodmFyIEMgPSByLnMuYzsgQyA8PSByLmUuYzsgKytDKSB7XG5cdFx0aWYgKCFjb2xzW0NdKSBjb250aW51ZTtcblx0XHR2YXIgdmFsID0gby5kZW5zZSA/IChzaGVldFtSXXx8W10pW0NdOiBzaGVldFtjb2xzW0NdICsgcnJdO1xuXHRcdGlmKHZhbCA9PSBudWxsKSB0eHQgPSBcIlwiO1xuXHRcdGVsc2UgaWYodmFsLnYgIT0gbnVsbCkge1xuXHRcdFx0aXNlbXB0eSA9IGZhbHNlO1xuXHRcdFx0dHh0ID0gJycrKG8ucmF3TnVtYmVycyAmJiB2YWwudCA9PSBcIm5cIiA/IHZhbC52IDogZm9ybWF0X2NlbGwodmFsLCBudWxsLCBvKSk7XG5cdFx0XHRmb3IodmFyIGkgPSAwLCBjYyA9IDA7IGkgIT09IHR4dC5sZW5ndGg7ICsraSkgaWYoKGNjID0gdHh0LmNoYXJDb2RlQXQoaSkpID09PSBmcyB8fCBjYyA9PT0gcnMgfHwgY2MgPT09IDM0IHx8IG8uZm9yY2VRdW90ZXMpIHt0eHQgPSBcIlxcXCJcIiArIHR4dC5yZXBsYWNlKHFyZWcsICdcIlwiJykgKyBcIlxcXCJcIjsgYnJlYWs7IH1cblx0XHRcdGlmKHR4dCA9PSBcIklEXCIpIHR4dCA9ICdcIklEXCInO1xuXHRcdH0gZWxzZSBpZih2YWwuZiAhPSBudWxsICYmICF2YWwuRikge1xuXHRcdFx0aXNlbXB0eSA9IGZhbHNlO1xuXHRcdFx0dHh0ID0gJz0nICsgdmFsLmY7IGlmKHR4dC5pbmRleE9mKFwiLFwiKSA+PSAwKSB0eHQgPSAnXCInICsgdHh0LnJlcGxhY2UocXJlZywgJ1wiXCInKSArICdcIic7XG5cdFx0fSBlbHNlIHR4dCA9IFwiXCI7XG5cdFx0LyogTk9URTogRXhjZWwgQ1NWIGRvZXMgbm90IHN1cHBvcnQgYXJyYXkgZm9ybXVsYWUgKi9cblx0XHRyb3cucHVzaCh0eHQpO1xuXHR9XG5cdGlmKG8uYmxhbmtyb3dzID09PSBmYWxzZSAmJiBpc2VtcHR5KSByZXR1cm4gbnVsbDtcblx0cmV0dXJuIHJvdy5qb2luKEZTKTtcbn1cblxuZnVuY3Rpb24gc2hlZXRfdG9fY3N2KHNoZWV0Lyo6V29ya3NoZWV0Ki8sIG9wdHMvKjo/U2hlZXQyQ1NWT3B0cyovKS8qOnN0cmluZyovIHtcblx0dmFyIG91dC8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgbyA9IG9wdHMgPT0gbnVsbCA/IHt9IDogb3B0cztcblx0aWYoc2hlZXQgPT0gbnVsbCB8fCBzaGVldFtcIiFyZWZcIl0gPT0gbnVsbCkgcmV0dXJuIFwiXCI7XG5cdHZhciByID0gc2FmZV9kZWNvZGVfcmFuZ2Uoc2hlZXRbXCIhcmVmXCJdKTtcblx0dmFyIEZTID0gby5GUyAhPT0gdW5kZWZpbmVkID8gby5GUyA6IFwiLFwiLCBmcyA9IEZTLmNoYXJDb2RlQXQoMCk7XG5cdHZhciBSUyA9IG8uUlMgIT09IHVuZGVmaW5lZCA/IG8uUlMgOiBcIlxcblwiLCBycyA9IFJTLmNoYXJDb2RlQXQoMCk7XG5cdHZhciBlbmRyZWdleCA9IG5ldyBSZWdFeHAoKEZTPT1cInxcIiA/IFwiXFxcXHxcIiA6IEZTKStcIiskXCIpO1xuXHR2YXIgcm93ID0gXCJcIiwgY29scy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRvLmRlbnNlID0gQXJyYXkuaXNBcnJheShzaGVldCk7XG5cdHZhciBjb2xpbmZvLyo6QXJyYXk8Q29sSW5mbz4qLyA9IG8uc2tpcEhpZGRlbiAmJiBzaGVldFtcIiFjb2xzXCJdIHx8IFtdO1xuXHR2YXIgcm93aW5mby8qOkFycmF5PENvbEluZm8+Ki8gPSBvLnNraXBIaWRkZW4gJiYgc2hlZXRbXCIhcm93c1wiXSB8fCBbXTtcblx0Zm9yKHZhciBDID0gci5zLmM7IEMgPD0gci5lLmM7ICsrQykgaWYgKCEoKGNvbGluZm9bQ118fHt9KS5oaWRkZW4pKSBjb2xzW0NdID0gZW5jb2RlX2NvbChDKTtcblx0dmFyIHcgPSAwO1xuXHRmb3IodmFyIFIgPSByLnMucjsgUiA8PSByLmUucjsgKytSKSB7XG5cdFx0aWYgKChyb3dpbmZvW1JdfHx7fSkuaGlkZGVuKSBjb250aW51ZTtcblx0XHRyb3cgPSBtYWtlX2Nzdl9yb3coc2hlZXQsIHIsIFIsIGNvbHMsIGZzLCBycywgRlMsIG8pO1xuXHRcdGlmKHJvdyA9PSBudWxsKSB7IGNvbnRpbnVlOyB9XG5cdFx0aWYoby5zdHJpcCkgcm93ID0gcm93LnJlcGxhY2UoZW5kcmVnZXgsXCJcIik7XG5cdFx0aWYocm93IHx8IChvLmJsYW5rcm93cyAhPT0gZmFsc2UpKSBvdXQucHVzaCgodysrID8gUlMgOiBcIlwiKSArIHJvdyk7XG5cdH1cblx0ZGVsZXRlIG8uZGVuc2U7XG5cdHJldHVybiBvdXQuam9pbihcIlwiKTtcbn1cblxuZnVuY3Rpb24gc2hlZXRfdG9fdHh0KHNoZWV0Lyo6V29ya3NoZWV0Ki8sIG9wdHMvKjo/U2hlZXQyQ1NWT3B0cyovKSB7XG5cdGlmKCFvcHRzKSBvcHRzID0ge307IG9wdHMuRlMgPSBcIlxcdFwiOyBvcHRzLlJTID0gXCJcXG5cIjtcblx0dmFyIHMgPSBzaGVldF90b19jc3Yoc2hlZXQsIG9wdHMpO1xuXHRpZih0eXBlb2YgJGNwdGFibGUgPT0gJ3VuZGVmaW5lZCcgfHwgb3B0cy50eXBlID09ICdzdHJpbmcnKSByZXR1cm4gcztcblx0dmFyIG8gPSAkY3B0YWJsZS51dGlscy5lbmNvZGUoMTIwMCwgcywgJ3N0cicpO1xuXHRyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSgyNTUpICsgU3RyaW5nLmZyb21DaGFyQ29kZSgyNTQpICsgbztcbn1cblxuZnVuY3Rpb24gc2hlZXRfdG9fZm9ybXVsYWUoc2hlZXQvKjpXb3Jrc2hlZXQqLykvKjpBcnJheTxzdHJpbmc+Ki8ge1xuXHR2YXIgeSA9IFwiXCIsIHgsIHZhbD1cIlwiO1xuXHRpZihzaGVldCA9PSBudWxsIHx8IHNoZWV0W1wiIXJlZlwiXSA9PSBudWxsKSByZXR1cm4gW107XG5cdHZhciByID0gc2FmZV9kZWNvZGVfcmFuZ2Uoc2hlZXRbJyFyZWYnXSksIHJyID0gXCJcIiwgY29scy8qOkFycmF5PHN0cmluZz4qLyA9IFtdLCBDO1xuXHR2YXIgY21kcy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgZGVuc2UgPSBBcnJheS5pc0FycmF5KHNoZWV0KTtcblx0Zm9yKEMgPSByLnMuYzsgQyA8PSByLmUuYzsgKytDKSBjb2xzW0NdID0gZW5jb2RlX2NvbChDKTtcblx0Zm9yKHZhciBSID0gci5zLnI7IFIgPD0gci5lLnI7ICsrUikge1xuXHRcdHJyID0gZW5jb2RlX3JvdyhSKTtcblx0XHRmb3IoQyA9IHIucy5jOyBDIDw9IHIuZS5jOyArK0MpIHtcblx0XHRcdHkgPSBjb2xzW0NdICsgcnI7XG5cdFx0XHR4ID0gZGVuc2UgPyAoc2hlZXRbUl18fFtdKVtDXSA6IHNoZWV0W3ldO1xuXHRcdFx0dmFsID0gXCJcIjtcblx0XHRcdGlmKHggPT09IHVuZGVmaW5lZCkgY29udGludWU7XG5cdFx0XHRlbHNlIGlmKHguRiAhPSBudWxsKSB7XG5cdFx0XHRcdHkgPSB4LkY7XG5cdFx0XHRcdGlmKCF4LmYpIGNvbnRpbnVlO1xuXHRcdFx0XHR2YWwgPSB4LmY7XG5cdFx0XHRcdGlmKHkuaW5kZXhPZihcIjpcIikgPT0gLTEpIHkgPSB5ICsgXCI6XCIgKyB5O1xuXHRcdFx0fVxuXHRcdFx0aWYoeC5mICE9IG51bGwpIHZhbCA9IHguZjtcblx0XHRcdGVsc2UgaWYoeC50ID09ICd6JykgY29udGludWU7XG5cdFx0XHRlbHNlIGlmKHgudCA9PSAnbicgJiYgeC52ICE9IG51bGwpIHZhbCA9IFwiXCIgKyB4LnY7XG5cdFx0XHRlbHNlIGlmKHgudCA9PSAnYicpIHZhbCA9IHgudiA/IFwiVFJVRVwiIDogXCJGQUxTRVwiO1xuXHRcdFx0ZWxzZSBpZih4LncgIT09IHVuZGVmaW5lZCkgdmFsID0gXCInXCIgKyB4Lnc7XG5cdFx0XHRlbHNlIGlmKHgudiA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcblx0XHRcdGVsc2UgaWYoeC50ID09ICdzJykgdmFsID0gXCInXCIgKyB4LnY7XG5cdFx0XHRlbHNlIHZhbCA9IFwiXCIreC52O1xuXHRcdFx0Y21kc1tjbWRzLmxlbmd0aF0gPSB5ICsgXCI9XCIgKyB2YWw7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBjbWRzO1xufVxuXG5mdW5jdGlvbiBzaGVldF9hZGRfanNvbihfd3MvKjo/V29ya3NoZWV0Ki8sIGpzLyo6QXJyYXk8YW55PiovLCBvcHRzKS8qOldvcmtzaGVldCovIHtcblx0dmFyIG8gPSBvcHRzIHx8IHt9O1xuXHR2YXIgb2Zmc2V0ID0gKyFvLnNraXBIZWFkZXI7XG5cdHZhciB3cy8qOldvcmtzaGVldCovID0gX3dzIHx8ICh7fS8qOmFueSovKTtcblx0dmFyIF9SID0gMCwgX0MgPSAwO1xuXHRpZih3cyAmJiBvLm9yaWdpbiAhPSBudWxsKSB7XG5cdFx0aWYodHlwZW9mIG8ub3JpZ2luID09ICdudW1iZXInKSBfUiA9IG8ub3JpZ2luO1xuXHRcdGVsc2Uge1xuXHRcdFx0dmFyIF9vcmlnaW4vKjpDZWxsQWRkcmVzcyovID0gdHlwZW9mIG8ub3JpZ2luID09IFwic3RyaW5nXCIgPyBkZWNvZGVfY2VsbChvLm9yaWdpbikgOiBvLm9yaWdpbjtcblx0XHRcdF9SID0gX29yaWdpbi5yOyBfQyA9IF9vcmlnaW4uYztcblx0XHR9XG5cdH1cblx0dmFyIGNlbGwvKjpDZWxsKi87XG5cdHZhciByYW5nZS8qOlJhbmdlKi8gPSAoe3M6IHtjOjAsIHI6MH0sIGU6IHtjOl9DLCByOl9SICsganMubGVuZ3RoIC0gMSArIG9mZnNldH19Lyo6YW55Ki8pO1xuXHRpZih3c1snIXJlZiddKSB7XG5cdFx0dmFyIF9yYW5nZSA9IHNhZmVfZGVjb2RlX3JhbmdlKHdzWychcmVmJ10pO1xuXHRcdHJhbmdlLmUuYyA9IE1hdGgubWF4KHJhbmdlLmUuYywgX3JhbmdlLmUuYyk7XG5cdFx0cmFuZ2UuZS5yID0gTWF0aC5tYXgocmFuZ2UuZS5yLCBfcmFuZ2UuZS5yKTtcblx0XHRpZihfUiA9PSAtMSkgeyBfUiA9IF9yYW5nZS5lLnIgKyAxOyByYW5nZS5lLnIgPSBfUiArIGpzLmxlbmd0aCAtIDEgKyBvZmZzZXQ7IH1cblx0fSBlbHNlIHtcblx0XHRpZihfUiA9PSAtMSkgeyBfUiA9IDA7IHJhbmdlLmUuciA9IGpzLmxlbmd0aCAtIDEgKyBvZmZzZXQ7IH1cblx0fVxuXHR2YXIgaGRyLyo6QXJyYXk8c3RyaW5nPiovID0gby5oZWFkZXIgfHwgW10sIEMgPSAwO1xuXG5cdGpzLmZvckVhY2goZnVuY3Rpb24gKEpTLCBSLyo6bnVtYmVyKi8pIHtcblx0XHRrZXlzKEpTKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHtcblx0XHRcdGlmKChDPWhkci5pbmRleE9mKGspKSA9PSAtMSkgaGRyW0M9aGRyLmxlbmd0aF0gPSBrO1xuXHRcdFx0dmFyIHYgPSBKU1trXTtcblx0XHRcdHZhciB0ID0gJ3onO1xuXHRcdFx0dmFyIHogPSBcIlwiO1xuXHRcdFx0dmFyIHJlZiA9IGVuY29kZV9jZWxsKHtjOl9DICsgQyxyOl9SICsgUiArIG9mZnNldH0pO1xuXHRcdFx0Y2VsbCA9IHdzX2dldF9jZWxsX3N0dWIod3MsIHJlZik7XG5cdFx0XHRpZih2ICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiAhKHYgaW5zdGFuY2VvZiBEYXRlKSl7XG5cdFx0XHRcdHdzW3JlZl0gPSB2O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYodHlwZW9mIHYgPT0gJ251bWJlcicpIHQgPSAnbic7XG5cdFx0XHRcdGVsc2UgaWYodHlwZW9mIHYgPT0gJ2Jvb2xlYW4nKSB0ID0gJ2InO1xuXHRcdFx0XHRlbHNlIGlmKHR5cGVvZiB2ID09ICdzdHJpbmcnKSB0ID0gJ3MnO1xuXHRcdFx0XHRlbHNlIGlmKHYgaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0XHRcdFx0dCA9ICdkJztcblx0XHRcdFx0XHRpZighby5jZWxsRGF0ZXMpIHsgdCA9ICduJzsgdiA9IGRhdGVudW0odik7IH1cblx0XHRcdFx0XHR6ID0gKG8uZGF0ZU5GIHx8IHRhYmxlX2ZtdFsxNF0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgaWYodiA9PT0gbnVsbCAmJiBvLm51bGxFcnJvcikgeyB0ID0gJ2UnOyB2ID0gMDsgfVxuXHRcdFx0XHRpZighY2VsbCkgd3NbcmVmXSA9IGNlbGwgPSAoe3Q6dCwgdjp2fS8qOmFueSovKTtcblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0Y2VsbC50ID0gdDsgY2VsbC52ID0gdjtcblx0XHRcdFx0XHRkZWxldGUgY2VsbC53OyBkZWxldGUgY2VsbC5SO1xuXHRcdFx0XHRcdGlmKHopIGNlbGwueiA9IHo7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYoeikgY2VsbC56ID0gejtcblx0XHRcdH1cblx0XHR9KTtcblx0fSk7XG5cdHJhbmdlLmUuYyA9IE1hdGgubWF4KHJhbmdlLmUuYywgX0MgKyBoZHIubGVuZ3RoIC0gMSk7XG5cdHZhciBfX1IgPSBlbmNvZGVfcm93KF9SKTtcblx0aWYob2Zmc2V0KSBmb3IoQyA9IDA7IEMgPCBoZHIubGVuZ3RoOyArK0MpIHdzW2VuY29kZV9jb2woQyArIF9DKSArIF9fUl0gPSB7dDoncycsIHY6aGRyW0NdfTtcblx0d3NbJyFyZWYnXSA9IGVuY29kZV9yYW5nZShyYW5nZSk7XG5cdHJldHVybiB3cztcbn1cbmZ1bmN0aW9uIGpzb25fdG9fc2hlZXQoanMvKjpBcnJheTxhbnk+Ki8sIG9wdHMpLyo6V29ya3NoZWV0Ki8geyByZXR1cm4gc2hlZXRfYWRkX2pzb24obnVsbCwganMsIG9wdHMpOyB9XG5cbi8qIGdldCBjZWxsLCBjcmVhdGluZyBhIHN0dWIgaWYgbmVjZXNzYXJ5ICovXG5mdW5jdGlvbiB3c19nZXRfY2VsbF9zdHViKHdzLyo6V29ya3NoZWV0Ki8sIFIsIEMvKjo/bnVtYmVyKi8pLyo6Q2VsbCovIHtcblx0LyogQTEgY2VsbCBhZGRyZXNzICovXG5cdGlmKHR5cGVvZiBSID09IFwic3RyaW5nXCIpIHtcblx0XHQvKiBkZW5zZSAqL1xuXHRcdGlmKEFycmF5LmlzQXJyYXkod3MpKSB7XG5cdFx0XHR2YXIgUkMgPSBkZWNvZGVfY2VsbChSKTtcblx0XHRcdGlmKCF3c1tSQy5yXSkgd3NbUkMucl0gPSBbXTtcblx0XHRcdHJldHVybiB3c1tSQy5yXVtSQy5jXSB8fCAod3NbUkMucl1bUkMuY10gPSB7dDoneid9KTtcblx0XHR9XG5cdFx0cmV0dXJuIHdzW1JdIHx8ICh3c1tSXSA9IHt0Oid6J30pO1xuXHR9XG5cdC8qIGNlbGwgYWRkcmVzcyBvYmplY3QgKi9cblx0aWYodHlwZW9mIFIgIT0gXCJudW1iZXJcIikgcmV0dXJuIHdzX2dldF9jZWxsX3N0dWIod3MsIGVuY29kZV9jZWxsKFIpKTtcblx0LyogUiBhbmQgQyBhcmUgMC1iYXNlZCBpbmRpY2VzICovXG5cdHJldHVybiB3c19nZXRfY2VsbF9zdHViKHdzLCBlbmNvZGVfY2VsbCh7cjpSLGM6Q3x8MH0pKTtcbn1cblxuLyogZmluZCBzaGVldCBpbmRleCBmb3IgZ2l2ZW4gbmFtZSAvIHZhbGlkYXRlIGluZGV4ICovXG5mdW5jdGlvbiB3Yl9zaGVldF9pZHgod2IvKjpXb3JrYm9vayovLCBzaC8qOm51bWJlcnxzdHJpbmcqLykge1xuXHRpZih0eXBlb2Ygc2ggPT0gXCJudW1iZXJcIikge1xuXHRcdGlmKHNoID49IDAgJiYgd2IuU2hlZXROYW1lcy5sZW5ndGggPiBzaCkgcmV0dXJuIHNoO1xuXHRcdHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIHNoZWV0ICMgXCIgKyBzaCk7XG5cdH0gZWxzZSBpZih0eXBlb2Ygc2ggPT0gXCJzdHJpbmdcIikge1xuXHRcdHZhciBpZHggPSB3Yi5TaGVldE5hbWVzLmluZGV4T2Yoc2gpO1xuXHRcdGlmKGlkeCA+IC0xKSByZXR1cm4gaWR4O1xuXHRcdHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIHNoZWV0IG5hbWUgfFwiICsgc2ggKyBcInxcIik7XG5cdH0gZWxzZSB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBzaGVldCB8XCIgKyBzaCArIFwifFwiKTtcbn1cblxuLyogc2ltcGxlIGJsYW5rIHdvcmtib29rIG9iamVjdCAqL1xuZnVuY3Rpb24gYm9va19uZXcoKS8qOldvcmtib29rKi8ge1xuXHRyZXR1cm4geyBTaGVldE5hbWVzOiBbXSwgU2hlZXRzOiB7fSB9O1xufVxuXG4vKiBhZGQgYSB3b3Jrc2hlZXQgdG8gdGhlIGVuZCBvZiBhIGdpdmVuIHdvcmtib29rICovXG5mdW5jdGlvbiBib29rX2FwcGVuZF9zaGVldCh3Yi8qOldvcmtib29rKi8sIHdzLyo6V29ya3NoZWV0Ki8sIG5hbWUvKjo/c3RyaW5nKi8sIHJvbGwvKjo/Ym9vbGVhbiovKS8qOnN0cmluZyovIHtcblx0dmFyIGkgPSAxO1xuXHRpZighbmFtZSkgZm9yKDsgaSA8PSAweEZGRkY7ICsraSwgbmFtZSA9IHVuZGVmaW5lZCkgaWYod2IuU2hlZXROYW1lcy5pbmRleE9mKG5hbWUgPSBcIlNoZWV0XCIgKyBpKSA9PSAtMSkgYnJlYWs7XG5cdGlmKCFuYW1lIHx8IHdiLlNoZWV0TmFtZXMubGVuZ3RoID49IDB4RkZGRikgdGhyb3cgbmV3IEVycm9yKFwiVG9vIG1hbnkgd29ya3NoZWV0c1wiKTtcblx0aWYocm9sbCAmJiB3Yi5TaGVldE5hbWVzLmluZGV4T2YobmFtZSkgPj0gMCkge1xuXHRcdHZhciBtID0gbmFtZS5tYXRjaCgvKF4uKj8pKFxcZCspJC8pO1xuXHRcdGkgPSBtICYmICttWzJdIHx8IDA7XG5cdFx0dmFyIHJvb3QgPSBtICYmIG1bMV0gfHwgbmFtZTtcblx0XHRmb3IoKytpOyBpIDw9IDB4RkZGRjsgKytpKSBpZih3Yi5TaGVldE5hbWVzLmluZGV4T2YobmFtZSA9IHJvb3QgKyBpKSA9PSAtMSkgYnJlYWs7XG5cdH1cblx0Y2hlY2tfd3NfbmFtZShuYW1lKTtcblx0aWYod2IuU2hlZXROYW1lcy5pbmRleE9mKG5hbWUpID49IDApIHRocm93IG5ldyBFcnJvcihcIldvcmtzaGVldCB3aXRoIG5hbWUgfFwiICsgbmFtZSArIFwifCBhbHJlYWR5IGV4aXN0cyFcIik7XG5cblx0d2IuU2hlZXROYW1lcy5wdXNoKG5hbWUpO1xuXHR3Yi5TaGVldHNbbmFtZV0gPSB3cztcblx0cmV0dXJuIG5hbWU7XG59XG5cbi8qIHNldCBzaGVldCB2aXNpYmlsaXR5ICh2aXNpYmxlL2hpZGRlbi92ZXJ5IGhpZGRlbikgKi9cbmZ1bmN0aW9uIGJvb2tfc2V0X3NoZWV0X3Zpc2liaWxpdHkod2IvKjpXb3JrYm9vayovLCBzaC8qOm51bWJlcnxzdHJpbmcqLywgdmlzLyo6bnVtYmVyKi8pIHtcblx0aWYoIXdiLldvcmtib29rKSB3Yi5Xb3JrYm9vayA9IHt9O1xuXHRpZighd2IuV29ya2Jvb2suU2hlZXRzKSB3Yi5Xb3JrYm9vay5TaGVldHMgPSBbXTtcblxuXHR2YXIgaWR4ID0gd2Jfc2hlZXRfaWR4KHdiLCBzaCk7XG5cdC8vICRGbG93SWdub3JlXG5cdGlmKCF3Yi5Xb3JrYm9vay5TaGVldHNbaWR4XSkgd2IuV29ya2Jvb2suU2hlZXRzW2lkeF0gPSB7fTtcblxuXHRzd2l0Y2godmlzKSB7XG5cdFx0Y2FzZSAwOiBjYXNlIDE6IGNhc2UgMjogYnJlYWs7XG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiQmFkIHNoZWV0IHZpc2liaWxpdHkgc2V0dGluZyBcIiArIHZpcyk7XG5cdH1cblx0Ly8gJEZsb3dJZ25vcmVcblx0d2IuV29ya2Jvb2suU2hlZXRzW2lkeF0uSGlkZGVuID0gdmlzO1xufVxuXG4vKiBzZXQgbnVtYmVyIGZvcm1hdCAqL1xuZnVuY3Rpb24gY2VsbF9zZXRfbnVtYmVyX2Zvcm1hdChjZWxsLyo6Q2VsbCovLCBmbXQvKjpzdHJpbmd8bnVtYmVyKi8pIHtcblx0Y2VsbC56ID0gZm10O1xuXHRyZXR1cm4gY2VsbDtcbn1cblxuLyogc2V0IGNlbGwgaHlwZXJsaW5rICovXG5mdW5jdGlvbiBjZWxsX3NldF9oeXBlcmxpbmsoY2VsbC8qOkNlbGwqLywgdGFyZ2V0Lyo6c3RyaW5nKi8sIHRvb2x0aXAvKjo/c3RyaW5nKi8pIHtcblx0aWYoIXRhcmdldCkge1xuXHRcdGRlbGV0ZSBjZWxsLmw7XG5cdH0gZWxzZSB7XG5cdFx0Y2VsbC5sID0gKHsgVGFyZ2V0OiB0YXJnZXQgfS8qOkh5cGVybGluayovKTtcblx0XHRpZih0b29sdGlwKSBjZWxsLmwuVG9vbHRpcCA9IHRvb2x0aXA7XG5cdH1cblx0cmV0dXJuIGNlbGw7XG59XG5mdW5jdGlvbiBjZWxsX3NldF9pbnRlcm5hbF9saW5rKGNlbGwvKjpDZWxsKi8sIHJhbmdlLyo6c3RyaW5nKi8sIHRvb2x0aXAvKjo/c3RyaW5nKi8pIHsgcmV0dXJuIGNlbGxfc2V0X2h5cGVybGluayhjZWxsLCBcIiNcIiArIHJhbmdlLCB0b29sdGlwKTsgfVxuXG4vKiBhZGQgdG8gY2VsbCBjb21tZW50cyAqL1xuZnVuY3Rpb24gY2VsbF9hZGRfY29tbWVudChjZWxsLyo6Q2VsbCovLCB0ZXh0Lyo6c3RyaW5nKi8sIGF1dGhvci8qOj9zdHJpbmcqLykge1xuXHRpZighY2VsbC5jKSBjZWxsLmMgPSBbXTtcblx0Y2VsbC5jLnB1c2goe3Q6dGV4dCwgYTphdXRob3J8fFwiU2hlZXRKU1wifSk7XG59XG5cbi8qIHNldCBhcnJheSBmb3JtdWxhIGFuZCBmbHVzaCByZWxhdGVkIGNlbGxzICovXG5mdW5jdGlvbiBzaGVldF9zZXRfYXJyYXlfZm9ybXVsYSh3cy8qOldvcmtzaGVldCovLCByYW5nZSwgZm9ybXVsYS8qOnN0cmluZyovLCBkeW5hbWljLyo6Ym9vbGVhbiovKSB7XG5cdHZhciBybmcgPSB0eXBlb2YgcmFuZ2UgIT0gXCJzdHJpbmdcIiA/IHJhbmdlIDogc2FmZV9kZWNvZGVfcmFuZ2UocmFuZ2UpO1xuXHR2YXIgcm5nc3RyID0gdHlwZW9mIHJhbmdlID09IFwic3RyaW5nXCIgPyByYW5nZSA6IGVuY29kZV9yYW5nZShyYW5nZSk7XG5cdGZvcih2YXIgUiA9IHJuZy5zLnI7IFIgPD0gcm5nLmUucjsgKytSKSBmb3IodmFyIEMgPSBybmcucy5jOyBDIDw9IHJuZy5lLmM7ICsrQykge1xuXHRcdHZhciBjZWxsID0gd3NfZ2V0X2NlbGxfc3R1Yih3cywgUiwgQyk7XG5cdFx0Y2VsbC50ID0gJ24nO1xuXHRcdGNlbGwuRiA9IHJuZ3N0cjtcblx0XHRkZWxldGUgY2VsbC52O1xuXHRcdGlmKFIgPT0gcm5nLnMuciAmJiBDID09IHJuZy5zLmMpIHtcblx0XHRcdGNlbGwuZiA9IGZvcm11bGE7XG5cdFx0XHRpZihkeW5hbWljKSBjZWxsLkQgPSB0cnVlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gd3M7XG59XG5cbnZhciB1dGlscy8qOmFueSovID0ge1xuXHRlbmNvZGVfY29sOiBlbmNvZGVfY29sLFxuXHRlbmNvZGVfcm93OiBlbmNvZGVfcm93LFxuXHRlbmNvZGVfY2VsbDogZW5jb2RlX2NlbGwsXG5cdGVuY29kZV9yYW5nZTogZW5jb2RlX3JhbmdlLFxuXHRkZWNvZGVfY29sOiBkZWNvZGVfY29sLFxuXHRkZWNvZGVfcm93OiBkZWNvZGVfcm93LFxuXHRzcGxpdF9jZWxsOiBzcGxpdF9jZWxsLFxuXHRkZWNvZGVfY2VsbDogZGVjb2RlX2NlbGwsXG5cdGRlY29kZV9yYW5nZTogZGVjb2RlX3JhbmdlLFxuXHRmb3JtYXRfY2VsbDogZm9ybWF0X2NlbGwsXG5cdHNoZWV0X2FkZF9hb2E6IHNoZWV0X2FkZF9hb2EsXG5cdHNoZWV0X2FkZF9qc29uOiBzaGVldF9hZGRfanNvbixcblx0c2hlZXRfYWRkX2RvbTogc2hlZXRfYWRkX2RvbSxcblx0YW9hX3RvX3NoZWV0OiBhb2FfdG9fc2hlZXQsXG5cdGpzb25fdG9fc2hlZXQ6IGpzb25fdG9fc2hlZXQsXG5cdHRhYmxlX3RvX3NoZWV0OiBwYXJzZV9kb21fdGFibGUsXG5cdHRhYmxlX3RvX2Jvb2s6IHRhYmxlX3RvX2Jvb2ssXG5cdHNoZWV0X3RvX2Nzdjogc2hlZXRfdG9fY3N2LFxuXHRzaGVldF90b190eHQ6IHNoZWV0X3RvX3R4dCxcblx0c2hlZXRfdG9fanNvbjogc2hlZXRfdG9fanNvbixcblx0c2hlZXRfdG9faHRtbDogc2hlZXRfdG9faHRtbCxcblx0c2hlZXRfdG9fZm9ybXVsYWU6IHNoZWV0X3RvX2Zvcm11bGFlLFxuXHRzaGVldF90b19yb3dfb2JqZWN0X2FycmF5OiBzaGVldF90b19qc29uLFxuXHRzaGVldF9nZXRfY2VsbDogd3NfZ2V0X2NlbGxfc3R1Yixcblx0Ym9va19uZXc6IGJvb2tfbmV3LFxuXHRib29rX2FwcGVuZF9zaGVldDogYm9va19hcHBlbmRfc2hlZXQsXG5cdGJvb2tfc2V0X3NoZWV0X3Zpc2liaWxpdHk6IGJvb2tfc2V0X3NoZWV0X3Zpc2liaWxpdHksXG5cdGNlbGxfc2V0X251bWJlcl9mb3JtYXQ6IGNlbGxfc2V0X251bWJlcl9mb3JtYXQsXG5cdGNlbGxfc2V0X2h5cGVybGluazogY2VsbF9zZXRfaHlwZXJsaW5rLFxuXHRjZWxsX3NldF9pbnRlcm5hbF9saW5rOiBjZWxsX3NldF9pbnRlcm5hbF9saW5rLFxuXHRjZWxsX2FkZF9jb21tZW50OiBjZWxsX2FkZF9jb21tZW50LFxuXHRzaGVldF9zZXRfYXJyYXlfZm9ybXVsYTogc2hlZXRfc2V0X2FycmF5X2Zvcm11bGEsXG5cdGNvbnN0czoge1xuXHRcdFNIRUVUX1ZJU0lCTEU6IDAsXG5cdFx0U0hFRVRfSElEREVOOiAxLFxuXHRcdFNIRUVUX1ZFUllfSElEREVOOiAyXG5cdH1cbn07XG5cbnZhciBfUmVhZGFibGU7XG5mdW5jdGlvbiBzZXRfcmVhZGFibGUoUikgeyBfUmVhZGFibGUgPSBSOyB9XG5cbmZ1bmN0aW9uIHdyaXRlX2Nzdl9zdHJlYW0oc2hlZXQvKjpXb3Jrc2hlZXQqLywgb3B0cy8qOj9TaGVldDJDU1ZPcHRzKi8pIHtcblx0dmFyIHN0cmVhbSA9IF9SZWFkYWJsZSgpO1xuXHR2YXIgbyA9IG9wdHMgPT0gbnVsbCA/IHt9IDogb3B0cztcblx0aWYoc2hlZXQgPT0gbnVsbCB8fCBzaGVldFtcIiFyZWZcIl0gPT0gbnVsbCkgeyBzdHJlYW0ucHVzaChudWxsKTsgcmV0dXJuIHN0cmVhbTsgfVxuXHR2YXIgciA9IHNhZmVfZGVjb2RlX3JhbmdlKHNoZWV0W1wiIXJlZlwiXSk7XG5cdHZhciBGUyA9IG8uRlMgIT09IHVuZGVmaW5lZCA/IG8uRlMgOiBcIixcIiwgZnMgPSBGUy5jaGFyQ29kZUF0KDApO1xuXHR2YXIgUlMgPSBvLlJTICE9PSB1bmRlZmluZWQgPyBvLlJTIDogXCJcXG5cIiwgcnMgPSBSUy5jaGFyQ29kZUF0KDApO1xuXHR2YXIgZW5kcmVnZXggPSBuZXcgUmVnRXhwKChGUz09XCJ8XCIgPyBcIlxcXFx8XCIgOiBGUykrXCIrJFwiKTtcblx0dmFyIHJvdy8qOj9zdHJpbmcqLyA9IFwiXCIsIGNvbHMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0by5kZW5zZSA9IEFycmF5LmlzQXJyYXkoc2hlZXQpO1xuXHR2YXIgY29saW5mby8qOkFycmF5PENvbEluZm8+Ki8gPSBvLnNraXBIaWRkZW4gJiYgc2hlZXRbXCIhY29sc1wiXSB8fCBbXTtcblx0dmFyIHJvd2luZm8vKjpBcnJheTxSb3dJbmZvPiovID0gby5za2lwSGlkZGVuICYmIHNoZWV0W1wiIXJvd3NcIl0gfHwgW107XG5cdGZvcih2YXIgQyA9IHIucy5jOyBDIDw9IHIuZS5jOyArK0MpIGlmICghKChjb2xpbmZvW0NdfHx7fSkuaGlkZGVuKSkgY29sc1tDXSA9IGVuY29kZV9jb2woQyk7XG5cdHZhciBSID0gci5zLnI7XG5cdHZhciBCT00gPSBmYWxzZSwgdyA9IDA7XG5cdHN0cmVhbS5fcmVhZCA9IGZ1bmN0aW9uKCkge1xuXHRcdGlmKCFCT00pIHsgQk9NID0gdHJ1ZTsgcmV0dXJuIHN0cmVhbS5wdXNoKFwiXFx1RkVGRlwiKTsgfVxuXHRcdHdoaWxlKFIgPD0gci5lLnIpIHtcblx0XHRcdCsrUjtcblx0XHRcdGlmICgocm93aW5mb1tSLTFdfHx7fSkuaGlkZGVuKSBjb250aW51ZTtcblx0XHRcdHJvdyA9IG1ha2VfY3N2X3JvdyhzaGVldCwgciwgUi0xLCBjb2xzLCBmcywgcnMsIEZTLCBvKTtcblx0XHRcdGlmKHJvdyAhPSBudWxsKSB7XG5cdFx0XHRcdGlmKG8uc3RyaXApIHJvdyA9IHJvdy5yZXBsYWNlKGVuZHJlZ2V4LFwiXCIpO1xuXHRcdFx0XHRpZihyb3cgfHwgKG8uYmxhbmtyb3dzICE9PSBmYWxzZSkpIHJldHVybiBzdHJlYW0ucHVzaCgodysrID8gUlMgOiBcIlwiKSArIHJvdyk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBzdHJlYW0ucHVzaChudWxsKTtcblx0fTtcblx0cmV0dXJuIHN0cmVhbTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfaHRtbF9zdHJlYW0od3MvKjpXb3Jrc2hlZXQqLywgb3B0cy8qOj9TaGVldDJIVE1MT3B0cyovKSB7XG5cdHZhciBzdHJlYW0gPSBfUmVhZGFibGUoKTtcblxuXHR2YXIgbyA9IG9wdHMgfHwge307XG5cdHZhciBoZWFkZXIgPSBvLmhlYWRlciAhPSBudWxsID8gby5oZWFkZXIgOiBIVE1MX0JFR0lOO1xuXHR2YXIgZm9vdGVyID0gby5mb290ZXIgIT0gbnVsbCA/IG8uZm9vdGVyIDogSFRNTF9FTkQ7XG5cdHN0cmVhbS5wdXNoKGhlYWRlcik7XG5cdHZhciByID0gZGVjb2RlX3JhbmdlKHdzWychcmVmJ10pO1xuXHRvLmRlbnNlID0gQXJyYXkuaXNBcnJheSh3cyk7XG5cdHN0cmVhbS5wdXNoKG1ha2VfaHRtbF9wcmVhbWJsZSh3cywgciwgbykpO1xuXHR2YXIgUiA9IHIucy5yO1xuXHR2YXIgZW5kID0gZmFsc2U7XG5cdHN0cmVhbS5fcmVhZCA9IGZ1bmN0aW9uKCkge1xuXHRcdGlmKFIgPiByLmUucikge1xuXHRcdFx0aWYoIWVuZCkgeyBlbmQgPSB0cnVlOyBzdHJlYW0ucHVzaChcIjwvdGFibGU+XCIgKyBmb290ZXIpOyB9XG5cdFx0XHRyZXR1cm4gc3RyZWFtLnB1c2gobnVsbCk7XG5cdFx0fVxuXHRcdHdoaWxlKFIgPD0gci5lLnIpIHtcblx0XHRcdHN0cmVhbS5wdXNoKG1ha2VfaHRtbF9yb3cod3MsIHIsIFIsIG8pKTtcblx0XHRcdCsrUjtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fTtcblx0cmV0dXJuIHN0cmVhbTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfanNvbl9zdHJlYW0oc2hlZXQvKjpXb3Jrc2hlZXQqLywgb3B0cy8qOj9TaGVldDJDU1ZPcHRzKi8pIHtcblx0dmFyIHN0cmVhbSA9IF9SZWFkYWJsZSh7b2JqZWN0TW9kZTp0cnVlfSk7XG5cblx0aWYoc2hlZXQgPT0gbnVsbCB8fCBzaGVldFtcIiFyZWZcIl0gPT0gbnVsbCkgeyBzdHJlYW0ucHVzaChudWxsKTsgcmV0dXJuIHN0cmVhbTsgfVxuXHR2YXIgdmFsID0ge3Q6J24nLHY6MH0sIGhlYWRlciA9IDAsIG9mZnNldCA9IDEsIGhkci8qOkFycmF5PGFueT4qLyA9IFtdLCB2PTAsIHZ2PVwiXCI7XG5cdHZhciByID0ge3M6e3I6MCxjOjB9LGU6e3I6MCxjOjB9fTtcblx0dmFyIG8gPSBvcHRzIHx8IHt9O1xuXHR2YXIgcmFuZ2UgPSBvLnJhbmdlICE9IG51bGwgPyBvLnJhbmdlIDogc2hlZXRbXCIhcmVmXCJdO1xuXHRpZihvLmhlYWRlciA9PT0gMSkgaGVhZGVyID0gMTtcblx0ZWxzZSBpZihvLmhlYWRlciA9PT0gXCJBXCIpIGhlYWRlciA9IDI7XG5cdGVsc2UgaWYoQXJyYXkuaXNBcnJheShvLmhlYWRlcikpIGhlYWRlciA9IDM7XG5cdHN3aXRjaCh0eXBlb2YgcmFuZ2UpIHtcblx0XHRjYXNlICdzdHJpbmcnOiByID0gc2FmZV9kZWNvZGVfcmFuZ2UocmFuZ2UpOyBicmVhaztcblx0XHRjYXNlICdudW1iZXInOiByID0gc2FmZV9kZWNvZGVfcmFuZ2Uoc2hlZXRbXCIhcmVmXCJdKTsgci5zLnIgPSByYW5nZTsgYnJlYWs7XG5cdFx0ZGVmYXVsdDogciA9IHJhbmdlO1xuXHR9XG5cdGlmKGhlYWRlciA+IDApIG9mZnNldCA9IDA7XG5cdHZhciByciA9IGVuY29kZV9yb3coci5zLnIpO1xuXHR2YXIgY29scy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgY291bnRlciA9IDA7XG5cdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkoc2hlZXQpO1xuXHR2YXIgUiA9IHIucy5yLCBDID0gMDtcblx0dmFyIGhlYWRlcl9jbnQgPSB7fTtcblx0aWYoZGVuc2UgJiYgIXNoZWV0W1JdKSBzaGVldFtSXSA9IFtdO1xuXHR2YXIgY29saW5mby8qOkFycmF5PENvbEluZm8+Ki8gPSBvLnNraXBIaWRkZW4gJiYgc2hlZXRbXCIhY29sc1wiXSB8fCBbXTtcblx0dmFyIHJvd2luZm8vKjpBcnJheTxSb3dJbmZvPiovID0gby5za2lwSGlkZGVuICYmIHNoZWV0W1wiIXJvd3NcIl0gfHwgW107XG5cdGZvcihDID0gci5zLmM7IEMgPD0gci5lLmM7ICsrQykge1xuXHRcdGlmKCgoY29saW5mb1tDXXx8e30pLmhpZGRlbikpIGNvbnRpbnVlO1xuXHRcdGNvbHNbQ10gPSBlbmNvZGVfY29sKEMpO1xuXHRcdHZhbCA9IGRlbnNlID8gc2hlZXRbUl1bQ10gOiBzaGVldFtjb2xzW0NdICsgcnJdO1xuXHRcdHN3aXRjaChoZWFkZXIpIHtcblx0XHRcdGNhc2UgMTogaGRyW0NdID0gQyAtIHIucy5jOyBicmVhaztcblx0XHRcdGNhc2UgMjogaGRyW0NdID0gY29sc1tDXTsgYnJlYWs7XG5cdFx0XHRjYXNlIDM6IGhkcltDXSA9IG8uaGVhZGVyW0MgLSByLnMuY107IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0aWYodmFsID09IG51bGwpIHZhbCA9IHt3OiBcIl9fRU1QVFlcIiwgdDogXCJzXCJ9O1xuXHRcdFx0XHR2diA9IHYgPSBmb3JtYXRfY2VsbCh2YWwsIG51bGwsIG8pO1xuXHRcdFx0XHRjb3VudGVyID0gaGVhZGVyX2NudFt2XSB8fCAwO1xuXHRcdFx0XHRpZighY291bnRlcikgaGVhZGVyX2NudFt2XSA9IDE7XG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdGRvIHsgdnYgPSB2ICsgXCJfXCIgKyAoY291bnRlcisrKTsgfSB3aGlsZShoZWFkZXJfY250W3Z2XSk7IGhlYWRlcl9jbnRbdl0gPSBjb3VudGVyO1xuXHRcdFx0XHRcdGhlYWRlcl9jbnRbdnZdID0gMTtcblx0XHRcdFx0fVxuXHRcdFx0XHRoZHJbQ10gPSB2djtcblx0XHR9XG5cdH1cblx0UiA9IHIucy5yICsgb2Zmc2V0O1xuXHRzdHJlYW0uX3JlYWQgPSBmdW5jdGlvbigpIHtcblx0XHR3aGlsZShSIDw9IHIuZS5yKSB7XG5cdFx0XHRpZiAoKHJvd2luZm9bUi0xXXx8e30pLmhpZGRlbikgY29udGludWU7XG5cdFx0XHR2YXIgcm93ID0gbWFrZV9qc29uX3JvdyhzaGVldCwgciwgUiwgY29scywgaGVhZGVyLCBoZHIsIGRlbnNlLCBvKTtcblx0XHRcdCsrUjtcblx0XHRcdGlmKChyb3cuaXNlbXB0eSA9PT0gZmFsc2UpIHx8IChoZWFkZXIgPT09IDEgPyBvLmJsYW5rcm93cyAhPT0gZmFsc2UgOiAhIW8uYmxhbmtyb3dzKSkge1xuXHRcdFx0XHRzdHJlYW0ucHVzaChyb3cucm93KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc3RyZWFtLnB1c2gobnVsbCk7XG5cdH07XG5cdHJldHVybiBzdHJlYW07XG59XG5cbnZhciBfX3N0cmVhbSA9IHtcblx0dG9fanNvbjogd3JpdGVfanNvbl9zdHJlYW0sXG5cdHRvX2h0bWw6IHdyaXRlX2h0bWxfc3RyZWFtLFxuXHR0b19jc3Y6IHdyaXRlX2Nzdl9zdHJlYW0sXG4gIHNldF9yZWFkYWJsZTogc2V0X3JlYWRhYmxlXG59O1xuZXhwb3J0IGNvbnN0IHZlcnNpb24gPSBYTFNYLnZlcnNpb247XG5leHBvcnQge1xuXHRwYXJzZV94bHNjZmIsXG5cdHBhcnNlX3ppcCxcblx0cmVhZFN5bmMgYXMgcmVhZCxcblx0cmVhZEZpbGVTeW5jIGFzIHJlYWRGaWxlLFxuXHRyZWFkRmlsZVN5bmMsXG5cdHdyaXRlU3luYyBhcyB3cml0ZSxcblx0d3JpdGVGaWxlU3luYyBhcyB3cml0ZUZpbGUsXG5cdHdyaXRlRmlsZVN5bmMsXG5cdHdyaXRlRmlsZUFzeW5jLFxuXHR3cml0ZVN5bmNYTFNYIGFzIHdyaXRlWExTWCxcblx0d3JpdGVGaWxlU3luY1hMU1ggYXMgd3JpdGVGaWxlWExTWCxcblx0dXRpbHMsXG5cdF9fc3RyZWFtIGFzIHN0cmVhbSxcblx0U1NGLFxuXHRDRkJcbn07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuXG4vLyDmnaXmupDkuo7nvZHnu5wg5pyJ57uG5b6u5pS55YqoXG5cbmltcG9ydCAnLi9fYmxvYidcbmltcG9ydCBGaWxlU2F2ZXIgZnJvbSAnZmlsZS1zYXZlcidcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeCdcblxuZnVuY3Rpb24gZ2VuZXJhdGVBcnJheSh0YWJsZSkge1xuICAgIHZhciBvdXQgPSBbXTtcbiAgICB2YXIgcm93cyA9IHRhYmxlLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJyk7XG4gICAgdmFyIHJhbmdlcyA9IFtdO1xuICAgIGZvciAodmFyIFIgPSAwOyBSIDwgcm93cy5sZW5ndGg7ICsrUikge1xuICAgICAgICB2YXIgb3V0Um93ID0gW107XG4gICAgICAgIHZhciByb3cgPSByb3dzW1JdO1xuICAgICAgICB2YXIgY29sdW1ucyA9IHJvdy5xdWVyeVNlbGVjdG9yQWxsKCd0ZCcpO1xuICAgICAgICBmb3IgKHZhciBDID0gMDsgQyA8IGNvbHVtbnMubGVuZ3RoOyArK0MpIHtcbiAgICAgICAgICAgIHZhciBjZWxsID0gY29sdW1uc1tDXTtcbiAgICAgICAgICAgIHZhciBjb2xzcGFuID0gY2VsbC5nZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nKTtcbiAgICAgICAgICAgIHZhciByb3dzcGFuID0gY2VsbC5nZXRBdHRyaWJ1dGUoJ3Jvd3NwYW4nKTtcbiAgICAgICAgICAgIHZhciBjZWxsVmFsdWUgPSBjZWxsLmlubmVyVGV4dDtcbiAgICAgICAgICAgIGlmIChjZWxsVmFsdWUgIT09IFwiXCIgJiYgY2VsbFZhbHVlID09ICtjZWxsVmFsdWUpIGNlbGxWYWx1ZSA9ICtjZWxsVmFsdWU7XG5cbiAgICAgICAgICAgIC8vU2tpcCByYW5nZXNcbiAgICAgICAgICAgIHJhbmdlcy5mb3JFYWNoKGZ1bmN0aW9uIChyYW5nZSkge1xuICAgICAgICAgICAgICAgIGlmIChSID49IHJhbmdlLnMuciAmJiBSIDw9IHJhbmdlLmUuciAmJiBvdXRSb3cubGVuZ3RoID49IHJhbmdlLnMuYyAmJiBvdXRSb3cubGVuZ3RoIDw9IHJhbmdlLmUuYykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8PSByYW5nZS5lLmMgLSByYW5nZS5zLmM7ICsraSkgb3V0Um93LnB1c2gobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vSGFuZGxlIFJvdyBTcGFuXG4gICAgICAgICAgICBpZiAocm93c3BhbiB8fCBjb2xzcGFuKSB7XG4gICAgICAgICAgICAgICAgcm93c3BhbiA9IHJvd3NwYW4gfHwgMTtcbiAgICAgICAgICAgICAgICBjb2xzcGFuID0gY29sc3BhbiB8fCAxO1xuICAgICAgICAgICAgICAgIHJhbmdlcy5wdXNoKHtzOiB7cjogUiwgYzogb3V0Um93Lmxlbmd0aH0sIGU6IHtyOiBSICsgcm93c3BhbiAtIDEsIGM6IG91dFJvdy5sZW5ndGggKyBjb2xzcGFuIC0gMX19KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDtcblxuICAgICAgICAgICAgLy9IYW5kbGUgVmFsdWVcbiAgICAgICAgICAgIG91dFJvdy5wdXNoKGNlbGxWYWx1ZSAhPT0gXCJcIiA/IGNlbGxWYWx1ZSA6IG51bGwpO1xuXG4gICAgICAgICAgICAvL0hhbmRsZSBDb2xzcGFuXG4gICAgICAgICAgICBpZiAoY29sc3BhbikgZm9yICh2YXIgayA9IDA7IGsgPCBjb2xzcGFuIC0gMTsgKytrKSBvdXRSb3cucHVzaChudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBvdXQucHVzaChvdXRSb3cpO1xuICAgIH1cbiAgICByZXR1cm4gW291dCwgcmFuZ2VzXTtcbn07XG5cbmZ1bmN0aW9uIGRhdGVudW0odiwgZGF0ZTE5MDQpIHtcbiAgICBpZiAoZGF0ZTE5MDQpIHYgKz0gMTQ2MjtcbiAgICB2YXIgZXBvY2ggPSBEYXRlLnBhcnNlKHYpO1xuICAgIHJldHVybiAoZXBvY2ggLSBuZXcgRGF0ZShEYXRlLlVUQygxODk5LCAxMSwgMzApKSkgLyAoMjQgKiA2MCAqIDYwICogMTAwMCk7XG59XG5cbmZ1bmN0aW9uIHNoZWV0X2Zyb21fYXJyYXlfb2ZfYXJyYXlzKGRhdGEsIG9wdHM9e30pIHtcbiAgICB2YXIgd3MgPSB7fTtcbiAgICB2YXIgcmFuZ2UgPSB7czoge2M6IDEwMDAwMDAwLCByOiAxMDAwMDAwMH0sIGU6IHtjOiAwLCByOiAwfX07XG4gICAgZm9yICh2YXIgUiA9IDA7IFIgIT0gZGF0YS5sZW5ndGg7ICsrUikge1xuICAgICAgICBmb3IgKHZhciBDID0gMDsgQyAhPSBkYXRhW1JdLmxlbmd0aDsgKytDKSB7XG4gICAgICAgICAgICBpZiAocmFuZ2Uucy5yID4gUikgcmFuZ2Uucy5yID0gUjtcbiAgICAgICAgICAgIGlmIChyYW5nZS5zLmMgPiBDKSByYW5nZS5zLmMgPSBDO1xuICAgICAgICAgICAgaWYgKHJhbmdlLmUuciA8IFIpIHJhbmdlLmUuciA9IFI7XG4gICAgICAgICAgICBpZiAocmFuZ2UuZS5jIDwgQykgcmFuZ2UuZS5jID0gQztcbiAgICAgICAgICAgIHZhciBjZWxsID0ge3Y6IGRhdGFbUl1bQ119O1xuICAgICAgICAgICAgaWYgKGNlbGwudiA9PSBudWxsKSBjb250aW51ZTtcbiAgICAgICAgICAgIHZhciBjZWxsX3JlZiA9IFhMU1gudXRpbHMuZW5jb2RlX2NlbGwoe2M6IEMsIHI6IFJ9KTtcblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjZWxsLnYgPT09ICdudW1iZXInKSBjZWxsLnQgPSAnbic7XG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgY2VsbC52ID09PSAnYm9vbGVhbicpIGNlbGwudCA9ICdiJztcbiAgICAgICAgICAgIGVsc2UgaWYgKGNlbGwudiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgICAgICBjZWxsLnQgPSAnbic7XG4gICAgICAgICAgICAgICAgY2VsbC56ID0gWExTWC5TU0YuX3RhYmxlWzE0XTtcbiAgICAgICAgICAgICAgICBjZWxsLnYgPSBkYXRlbnVtKGNlbGwudik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGNlbGwudCA9ICdzJztcbiAgICAgICAgICAgIHdzW2NlbGxfcmVmXSA9IGNlbGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJhbmdlLnMuYyA8IDEwMDAwMDAwKSB3c1snIXJlZiddID0gWExTWC51dGlscy5lbmNvZGVfcmFuZ2UocmFuZ2UpO1xuICAgIHJldHVybiB3cztcbn1cblxuZnVuY3Rpb24gV29ya2Jvb2soKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFdvcmtib29rKSkgcmV0dXJuIG5ldyBXb3JrYm9vaygpO1xuICAgIHRoaXMuU2hlZXROYW1lcyA9IFtdO1xuICAgIHRoaXMuU2hlZXRzID0ge307XG59XG5cbmZ1bmN0aW9uIHMyYWIocykge1xuICAgIHZhciBidWYgPSBuZXcgQXJyYXlCdWZmZXIocy5sZW5ndGgpO1xuICAgIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSAhPSBzLmxlbmd0aDsgKytpKSB2aWV3W2ldID0gcy5jaGFyQ29kZUF0KGkpICYgMHhGRjtcbiAgICByZXR1cm4gYnVmO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0X3RhYmxlX3RvX2V4Y2VsKGlkKSB7XG4gICAgdmFyIHRoZVRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICAgIHZhciBvbyA9IGdlbmVyYXRlQXJyYXkodGhlVGFibGUpO1xuICAgIHZhciByYW5nZXMgPSBvb1sxXTtcblxuICAgIC8qIG9yaWdpbmFsIGRhdGEgKi9cbiAgICB2YXIgZGF0YSA9IG9vWzBdO1xuICAgIHZhciB3c19uYW1lID0gXCJTaGVldEpTXCI7XG5cbiAgICB2YXIgd2IgPSBuZXcgV29ya2Jvb2soKSwgd3MgPSBzaGVldF9mcm9tX2FycmF5X29mX2FycmF5cyhkYXRhKTtcblxuICAgIC8qIGFkZCByYW5nZXMgdG8gd29ya3NoZWV0ICovXG4gICAgLy8gd3NbJyFjb2xzJ10gPSBbJ2FwcGxlJywgJ2JhbmFuJ107XG4gICAgd3NbJyFtZXJnZXMnXSA9IHJhbmdlcztcblxuICAgIC8qIGFkZCB3b3Jrc2hlZXQgdG8gd29ya2Jvb2sgKi9cbiAgICB3Yi5TaGVldE5hbWVzLnB1c2god3NfbmFtZSk7XG4gICAgd2IuU2hlZXRzW3dzX25hbWVdID0gd3M7XG5cbiAgICB2YXIgd2JvdXQgPSBYTFNYLndyaXRlKHdiLCB7Ym9va1R5cGU6ICd4bHN4JywgYm9va1NTVDogZmFsc2UsIHR5cGU6ICdiaW5hcnknfSk7XG5cbiAgICBGaWxlU2F2ZXIuc2F2ZUFzKG5ldyBCbG9iKFtzMmFiKHdib3V0KV0sIHt0eXBlOiBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwifSksIFwidGVzdC54bHN4XCIpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBvcnRfanNvbl90b19leGNlbCh0aCwganNvbkRhdGEsIGRlZmF1bHRUaXRsZSwgb3B0aW9ucyA9IHsgbWVyZ2VzOiBbXSwgaGVhZGVyOiBudWxsLGNvbHM6bnVsbCB9KSB7XG5cbiAgICAvKiBvcmlnaW5hbCBkYXRhICovXG5cbiAgICB2YXIgZGF0YSA9IGpzb25EYXRhO1xuICAgIGRhdGEudW5zaGlmdCh0aCk7XG4gICAgaWYgKG9wdGlvbnMuaGVhZGVyKSBkYXRhLnVuc2hpZnQoW29wdGlvbnMuaGVhZGVyXSk7XG4gICAgdmFyIHdzX25hbWUgPSBcIlNoZWV0SlNcIjtcblxuICAgIGNvbnN0IG9wdHMgPSB7XG4gICAgfVxuICAgIHZhciB3YiA9IG5ldyBXb3JrYm9vaygpLCB3cyA9IHNoZWV0X2Zyb21fYXJyYXlfb2ZfYXJyYXlzKGRhdGEsb3B0cyk7XG5cbiAgICAvKiBhZGQgbWVyZ2VzIGFyZWEgdG8gd29ya3NoZWV0ICovXG4gICAgbGV0IHsgbWVyZ2VzIH0gPSBvcHRpb25zO1xuICAgIGlmICh0eXBlb2YgbWVyZ2VzWzBdID09ICdzdHJpbmcnICYmIG1lcmdlcy5sZW5ndGggPT0gMikgbWVyZ2VzID0gW21lcmdlc10gLy8ganVzdCBvbmUgIyBbJ0ExJywgJ0MxJ10gPSA+IFtbJ0ExJywgJ0MxJ11dXG4gICAgbWVyZ2VzID0gbWVyZ2VzLm1hcChpID0+IGkgaW5zdGFuY2VvZiBBcnJheSA/IHsgczogaVswXSwgZTogaVsxXSB9IDogaSk7IC8vIGJlIHNvcnQgOikgIyBbJ0ExJywgJ0MxJ10gPT4geyBzOiAnQTEnLCBlOiAnQzMnIH1cbiAgICB3c1snIW1lcmdlcyddID0gbWVyZ2VzO1xuXG4gICAgaWYob3B0aW9ucy5jb2xzKXtcbiAgICAgIHdzW1wiIWNvbHNcIl0gPSBvcHRpb25zLmNvbHM7XG4gICAgfVxuXG4gICAgLyogYWRkIHdvcmtzaGVldCB0byB3b3JrYm9vayAqL1xuICAgIHdiLlNoZWV0TmFtZXMucHVzaCh3c19uYW1lKTtcbiAgICB3Yi5TaGVldHNbd3NfbmFtZV0gPSB3cztcblxuICAgIHZhciB3Ym91dCA9IFhMU1gud3JpdGUod2IsIHtib29rVHlwZTogJ3hsc3gnLCBib29rU1NUOiBmYWxzZSwgdHlwZTogJ2JpbmFyeSd9KTtcbiAgICB2YXIgdGl0bGUgPSBkZWZhdWx0VGl0bGUgfHwgJ+WIl+ihqCdcbiAgICBGaWxlU2F2ZXIuc2F2ZUFzKG5ldyBCbG9iKFtzMmFiKHdib3V0KV0sIHt0eXBlOiBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwifSksIHRpdGxlICsgXCIueGxzeFwiKVxufVxuIixudWxsLG51bGxdLCJuYW1lcyI6WyJoYXMiLCJicm93c2VyIiwidWEiLCJjc3YiLCJpZXYiLCJpZW9sZCIsInRyaWRlbnQiLCJydiIsInRleHQiLCJCT00iLCJjc3ZEYXRhIiwiZmlsZW5hbWUiLCJvV2luIiwibGluayIsIm5ld0xpbmUiLCJhcHBlbmRMaW5lIiwiY29udGVudCIsInJvdyIsInNlcGFyYXRvciIsInF1b3RlZCIsImxpbmUiLCJkYXRhIiwiZGVmYXVsdHMiLCJjb2x1bW5zIiwiZGF0YXMiLCJvcHRpb25zIiwibm9IZWFkZXIiLCJjb2x1bW5PcmRlciIsImNvbHVtbiIsInYiLCJ2YWx1ZSIsImluZGV4Iiwic2VsZiIsImsiLCJ2aWV3IiwiQmxvYkJ1aWxkZXIiLCJnZXRfY2xhc3MiLCJvYmplY3QiLCJGYWtlQmxvYkJ1aWxkZXIiLCJGYWtlQmxvYiIsInR5cGUiLCJlbmNvZGluZyIsIkZCQl9wcm90byIsIkZCX3Byb3RvIiwiRmlsZVJlYWRlclN5bmMiLCJGaWxlRXhjZXB0aW9uIiwiZmlsZV9leF9jb2RlcyIsImZpbGVfZXhfY29kZSIsInJlYWxfVVJMIiwicmVhbF9jcmVhdGVfb2JqZWN0X1VSTCIsInJlYWxfcmV2b2tlX29iamVjdF9VUkwiLCJVUkwiLCJidG9hIiwiYXRvYiIsIkFycmF5QnVmZmVyIiwiVWludDhBcnJheSIsImJsb2IiLCJkYXRhX1VSSV9oZWFkZXIiLCJvYmplY3RfVVJMIiwiYmIiLCJzdHIiLCJidWYiLCJpIiwiYnVmX2xlbiIsImZyIiwic3RhcnQiLCJlbmQiLCJhcmdzIiwiYmxvYlBhcnRzIiwiYnVpbGRlciIsImxlbiIsInRoaXMiLCJhIiwiYiIsImMiLCJkIiwiZyIsImUiLCJmIiwiZ2xvYmFsIiwiaCIsImoiLCJsIiwibSIsIm1vZHVsZSIsIlhMU1giLCJjdXJyZW50X2Fuc2kiLCJWQUxJRF9BTlNJIiwiQ1MyQ1AiLCJzZXRfYW5zaSIsImNwIiwicmVzZXRfYW5zaSIsInNldF9jcCIsInJlc2V0X2NwIiwiY2hhcl9jb2RlcyIsIm8iLCJ1dGYxNmxlcmVhZCIsInV0ZjE2YmVyZWFkIiwiZGVib20iLCJjMSIsImMyIiwiX2dldGNoYXIiLCJ4IiwiX2dldGFuc2kiLCIkY3B0YWJsZSIsIkJhc2U2NF9tYXAiLCJCYXNlNjRfZW5jb2RlIiwiaW5wdXQiLCJjMyIsImUxIiwiZTIiLCJlMyIsImU0IiwiQmFzZTY0X2RlY29kZSIsImhhc19idWYiLCJCdWZmZXJfZnJvbSIsIm5iZnMiLCJlbmMiLCJuZXdfcmF3X2J1ZiIsIm5ld191bnNhZmVfYnVmIiwiczJhIiwicyIsInMyYWIiLCJhMnMiLCJhMnUiLCJhYjJhIiwiYmNvbmNhdCIsImJ1ZnMiLCJtYXhsZW4iLCJ1dGY4ZGVjb2RlIiwib3V0Iiwid2lkeCIsIkwiLCJyaWR4IiwiY2hyMCIsImNocjEiLCJfc3RycmV2IiwicGFkMCIsInQiLCJmaWxsIiwicGFkXyIsInJwYWRfIiwicGFkMHIxIiwicGFkMHIyIiwicDJfMzIiLCJwYWQwciIsIlNTRl9pc2dlbmVyYWwiLCJkYXlzIiwibW9udGhzIiwiU1NGX2luaXRfdGFibGUiLCJ0YWJsZV9mbXQiLCJTU0ZfZGVmYXVsdF9tYXAiLCJTU0ZfZGVmYXVsdF9zdHIiLCJTU0ZfZnJhYyIsIkQiLCJtaXhlZCIsInNnbiIsIkIiLCJQXzIiLCJQXzEiLCJQIiwiUV8yIiwiUV8xIiwiUSIsIkEiLCJxIiwiU1NGX3BhcnNlX2RhdGVfY29kZSIsIm9wdHMiLCJiMiIsImRhdGUiLCJ0aW1lIiwiZG93IiwiZG91dCIsIlNTRl9maXhfaGlqcmkiLCJTU0ZiYXNlZGF0ZSIsIlNTRmRudGhyZXNoIiwiU1NGYmFzZTE5MDQiLCJkYXRlbnVtX2xvY2FsIiwiZGF0ZTE5MDQiLCJlcG9jaCIsIlNTRl9zdHJpcF9kZWNpbWFsIiwiU1NGX25vcm1hbGl6ZV9leHAiLCJTU0Zfc21hbGxfZXhwIiwidyIsIlNTRl9sYXJnZV9leHAiLCJTU0ZfZ2VuZXJhbF9udW0iLCJWIiwiU1NGX2dlbmVyYWwiLCJTU0ZfZm9ybWF0IiwiU1NGX3dyaXRlX2RhdGUiLCJmbXQiLCJ2YWwiLCJzczAiLCJzcyIsInR0IiwieSIsIm91dGwiLCJvdXRzdHIiLCJjb21tYWlmeSIsInBjdDEiLCJ3cml0ZV9udW1fcGN0Iiwic2ZtdCIsIm11bCIsIndyaXRlX251bSIsIndyaXRlX251bV9jbSIsImlkeCIsIndyaXRlX251bV9leHAiLCJwZXJpb2QiLCJlZSIsImZha2VlIiwiJCQiLCIkMSIsIiQyIiwiJDMiLCJmcmFjMSIsIndyaXRlX251bV9mMSIsInIiLCJhdmFsIiwic2lnbiIsImRlbiIsInJyIiwiYmFzZSIsIm15biIsIm15ZCIsIndyaXRlX251bV9mMiIsImRlYzEiLCJjbG9zZXBhcmVuIiwicGhvbmUiLCJoYXNocSIsImNjIiwicm5kIiwiZGQiLCJkZWMiLCJfZnJhYyIsImNhcnJ5IiwiZmxyIiwid3JpdGVfbnVtX2ZsdCIsImZmbXQiLCJyaSIsImZmIiwib2EiLCJscmVzIiwicnJlcyIsIndyaXRlX251bV9jbTIiLCJ3cml0ZV9udW1fcGN0MiIsIndyaXRlX251bV9leHAyIiwid3JpdGVfbnVtX2ludCIsIlNTRl9zcGxpdF9mbXQiLCJpbl9zdHIiLCJTU0ZfYWJzdGltZSIsImZtdF9pc19kYXRlIiwiZXZhbF9mbXQiLCJmbGVuIiwibHN0IiwiZHQiLCJociIsImJ0Iiwic3NtIiwibnN0ciIsImpqIiwidnYiLCJteXYiLCJvc3RyIiwiZGVjcHQiLCJsYXN0aSIsInJldHZhbCIsImNmcmVnZXgyIiwiY2hrY29uZCIsInRocmVzaCIsImNob29zZV9mbXQiLCJsYXQiLCJtMSIsIm0yIiwiU1NGX2xvYWQiLCJTU0ZfbG9hZF90YWJsZSIsInRibCIsIm1ha2Vfc3NmIiwiU1NGIiwiU1NGSW1wbGljaXQiLCJkYXRlTkZyZWdleCIsImRhdGVORl9yZWdleCIsImRhdGVORiIsImRhdGVORl9maXgiLCJtYXRjaCIsIlkiLCJIIiwiTSIsIlMiLCJuIiwiZGF0ZXN0ciIsInRpbWVzdHIiLCJDUkMzMiIsInNpZ25lZF9jcmNfdGFibGUiLCJ0YWJsZSIsIlQwIiwic2xpY2VfYnlfMTZfdGFibGVzIiwiVCIsIlRUIiwiVDEiLCJUMiIsIlQzIiwiVDQiLCJUNSIsIlQ2IiwiVDciLCJUOCIsIlQ5IiwiVGEiLCJUYiIsIlRjIiwiVGQiLCJUZSIsIlRmIiwiY3JjMzJfYnN0ciIsImJzdHIiLCJzZWVkIiwiQyIsImNyYzMyX2J1ZiIsImNyYzMyX3N0ciIsIkNGQiIsImV4cG9ydHMiLCJuYW1lY21wIiwiUiIsIloiLCJkaXJuYW1lIiwicCIsIndyaXRlX2Rvc19kYXRlIiwiaG1zIiwieW1kIiwicGFyc2VfZG9zX2RhdGUiLCJwYXJzZV9leHRyYV9maWVsZCIsInByZXBfYmxvYiIsImZsYWdzIiwic3oiLCJ0Z3QiLCJmcyIsImdldF9mcyIsInBhcnNlIiwiZmlsZSIsInBhcnNlX3ppcCIsInBhcnNlX21hZCIsIm12ZXIiLCJzc3oiLCJubWZzIiwiZGlmYXRfc2VjX2NudCIsImRpcl9zdGFydCIsIm1pbmlmYXRfc3RhcnQiLCJkaWZhdF9zdGFydCIsImZhdF9hZGRycyIsIm12IiwiY2hlY2tfZ2V0X212ZXIiLCJoZWFkZXIiLCJjaGVja19zaGlmdHMiLCJkaXJfY250Iiwic2VjdG9ycyIsInNlY3RvcmlmeSIsInNsZXV0aF9mYXQiLCJzZWN0b3JfbGlzdCIsIm1ha2Vfc2VjdG9yX2xpc3QiLCJFTkRPRkNIQUlOIiwiZmlsZXMiLCJQYXRocyIsIkZpbGVJbmRleCIsIkZ1bGxQYXRocyIsInJlYWRfZGlyZWN0b3J5IiwiYnVpbGRfZnVsbF9wYXRocyIsIkhFQURFUl9TSUdOQVRVUkUiLCJzaGlmdCIsIm5zZWN0b3JzIiwiRkkiLCJGUCIsInBsIiwiZGFkIiwiZ2V0X21mYXRfZW50cnkiLCJlbnRyeSIsInBheWxvYWQiLCJtaW5pIiwic2l6ZSIsIk1TU1oiLCJfX3JlYWRJbnQzMkxFIiwibmV3X2J1ZiIsImNudCIsInNlY3RvciIsImdldF9zZWN0b3JfbGlzdCIsImNoa2QiLCJidWZfY2hhaW4iLCJtb2R1bHVzIiwiYWRkciIsIl9fdG9CdWZmZXIiLCJzbCIsInNlZW4iLCJtaW5pZmF0X3N0b3JlIiwibmFtZWxlbiIsIm5hbWUiLCJfX3V0ZjE2bGUiLCJjdGltZSIsInJlYWRfZGF0ZSIsIm10aW1lIiwib2Zmc2V0IiwiX19yZWFkVUludDMyTEUiLCJyZWFkX2ZpbGUiLCJyZWFkIiwiaW5pdF9jZmIiLCJjZmIiLCJyb290Iiwic2VlZF9jZmIiLCJubSIsInJlYnVpbGRfY2ZiIiwiZ2MiLCJfZmlsZSIsIm5vdyIsImZ1bGxQYXRocyIsIkhFQURFUl9DTFNJRCIsImVsdCIsIl93cml0ZSIsIl9vcHRzIiwid3JpdGVfbWFkIiwid3JpdGVfemlwIiwibWluaV9zaXplIiwiZmF0X3NpemUiLCJtaW5pX2NudCIsIm1mYXRfY250IiwiZmF0X2Jhc2UiLCJmYXRfY250IiwiZGlmYXRfY250IiwiSEVBREVSX1NJRyIsImNoYWluaXQiLCJjb25zdHMiLCJfbm0iLCJmaW5kIiwicGF0aCIsIlVDRnVsbFBhdGhzIiwiVUNQYXRocyIsIlVDUGF0aCIsIndyaXRlX2ZpbGUiLCJ3cml0ZSIsIl96bGliIiwidXNlX3psaWIiLCJ6bGliIiwiSW5mbGF0ZVJhdyIsIkluZmxSYXciLCJfaW5mbGF0ZVJhd1N5bmMiLCJ1c3oiLCJfaW5mbGF0ZSIsIl9kZWZsYXRlUmF3U3luYyIsIl9kZWZsYXRlIiwiQ0xFTl9PUkRFUiIsIkxFTl9MTiIsIkRTVF9MTiIsImJpdF9zd2FwXzgiLCJ1c2VfdHlwZWRfYXJyYXlzIiwiYml0c3dhcDgiLCJiaXRfc3dhcF9uIiwicmV2IiwicmVhZF9iaXRzXzIiLCJibCIsInJlYWRfYml0c18zIiwicmVhZF9iaXRzXzQiLCJyZWFkX2JpdHNfNSIsInJlYWRfYml0c183IiwicmVhZF9iaXRzX24iLCJ3cml0ZV9iaXRzXzMiLCJ3cml0ZV9iaXRzXzEiLCJ3cml0ZV9iaXRzXzgiLCJ3cml0ZV9iaXRzXzE2IiwicmVhbGxvYyIsInplcm9fZmlsbF9hcnJheSIsImJ1aWxkX3RyZWUiLCJjbGVucyIsImNtYXAiLCJNQVgiLCJjY29kZSIsImJsX2NvdW50IiwiY3RyZWUiLCJjbGVuaSIsImZpeF9sbWFwIiwiZml4X2RtYXAiLCJkbGVucyIsIl9kZWZsYXRlUmF3IiwiRFNUX0xOX1JFIiwiTEVOX0xOX1JFIiwid3JpdGVfc3RvcmVkIiwiYm9mZiIsIndyaXRlX2h1ZmZfZml4ZWQiLCJhZGRycyIsImhhc2giLCJtbGVuIiwibGVuX2ViIiwiZHN0X2ViIiwib2ZmIiwiZHluX2xtYXAiLCJkeW5fZG1hcCIsImR5bl9jbWFwIiwiZHluX2xlbl8xIiwiZHluX2xlbl8yIiwiZHluIiwiX0hMSVQiLCJfSERJU1QiLCJfSENMRU4iLCJuZXh0X2NvZGUiLCJoY29kZXMiLCJoMSIsImgyIiwiaW5mbGF0ZSIsIm91dGJ1ZiIsIndvZmYiLCJPTCIsIm1heF9sZW5fMSIsIm1heF9sZW5fMiIsImJpdHMiLCJjb2RlIiwiZHN0Iiwid2Fybl9vcl90aHJvdyIsIndybiIsIm1zZyIsImZjbnQiLCJzdGFydF9jZCIsImNzeiIsImVmc3oiLCJmY3N6IiwiRUYiLCJwYXJzZV9sb2NhbF9maWxlIiwibWV0aCIsImNyYzMyIiwiX2NzeiIsIl91c3oiLCJlZiIsImNmYl9hZGQiLCJjZGlycyIsIm1ldGhvZCIsImZwIiwiZmkiLCJjcmNzIiwic3pfY2QiLCJuYW1lYnVmIiwiQ29udGVudFR5cGVNYXAiLCJnZXRfY29udGVudF90eXBlIiwiZXh0Iiwid3JpdGVfYmFzZTY0Xzc2Iiwid3JpdGVfcXVvdGVkX3ByaW50YWJsZSIsImVuY29kZWQiLCJzcGxpdCIsInNpIiwidG1wIiwicGFyc2VfcXVvdGVkX3ByaW50YWJsZSIsImRpIiwib2kiLCJwYXJzZV9taW1lIiwiZm5hbWUiLCJjdGUiLCJjdHlwZSIsImZkYXRhIiwibWJvdW5kYXJ5IiwiYm91bmRhcnkiLCJzdGFydF9kaSIsInUiLCJjYSIsImNzdHIiLCJkaXNwY250IiwiY3NsIiwicXAiLCJjZmJfbmV3IiwidW5zYWZlIiwiZnBhdGgiLCJjZmJfZGVsIiwiY2ZiX21vdiIsIm9sZF9uYW1lIiwibmV3X25hbWUiLCJjZmJfZ2MiLCJSZWFkU2hpZnQiLCJDaGVja0ZpZWxkIiwiYmxvYmlmeSIsIndyaXRlX2RsIiwidXRmOHdyaXRlIiwidXJsIiwicmVhZF9iaW5hcnkiLCJpbmZpbGUiLCJrZXlzIiwia3MiLCJvMiIsImV2ZXJ0X2tleSIsIm9iaiIsImtleSIsIksiLCJldmVydCIsImV2ZXJ0X251bSIsImV2ZXJ0X2FyciIsImJhc2VkYXRlIiwiZGF0ZW51bSIsImRudGhyZXNoIiwicmVmZGF0ZSIsInJlZm9mZnNldCIsIm51bWRhdGUiLCJwYXJzZV9pc29kdXIiLCJzZWMiLCJtdCIsImdvb2RfcGRfZGF0ZV8xIiwiZ29vZF9wZF9kYXRlIiwiZ29vZF9wZCIsInBhcnNlRGF0ZSIsImZpeGRhdGUiLCJjYzJzdHIiLCJhcnIiLCJkZWJvbWl0IiwiZHVwIiwiZnV6enludW0iLCJ3dCIsImxvd2VyX21vbnRocyIsImZ1enp5ZGF0ZSIsImxvd2VyIiwic3BsaXRfcmVnZXgiLCJzYWZlX3NwbGl0X3JlZ2V4IiwicmUiLCJkZWYiLCJnZXRkYXRhc3RyIiwiZ2V0ZGF0YWJpbiIsImdldGRhdGEiLCJzYWZlZ2V0emlwZmlsZSIsInppcCIsImdldHppcGZpbGUiLCJnZXR6aXBkYXRhIiwic2FmZSIsImdldHppcHN0ciIsImdldHppcGJpbiIsInppcGVudHJpZXMiLCJ6aXBfYWRkX2ZpbGUiLCJyZXMiLCJ6aXBfbmV3IiwiemlwX3JlYWQiLCJyZXNvbHZlX3BhdGgiLCJyZXN1bHQiLCJ0YXJnZXQiLCJzdGVwIiwiWE1MX0hFQURFUiIsImF0dHJlZ2V4ZyIsInRhZ3JlZ2V4MSIsInRhZ3JlZ2V4MiIsInRhZ3JlZ2V4IiwibnNyZWdleCIsIm5zcmVnZXgyIiwicGFyc2V4bWx0YWciLCJ0YWciLCJza2lwX3Jvb3QiLCJza2lwX0xDIiwieiIsImVxIiwicXVvdCIsInN0cmlwX25zIiwiZW5jb2RpbmdzIiwicmVuY29kaW5nIiwidW5lc2NhcGV4bWwiLCJlbmNyZWdleCIsImNvZGVyZWdleCIsImRlY3JlZ2V4IiwiY2hhcmVnZXgiLCJlc2NhcGV4bWwiLCJlc2NhcGV4bWx0YWciLCJodG1sY2hhcmVnZXgiLCJlc2NhcGVodG1sIiwiZXNjYXBleGxtbCIsInhsbWxfZml4c3RyIiwiZW50cmVnZXgiLCJlbnRyZXBsIiwieGxtbF91bmZpeHN0ciIsInBhcnNleG1sYm9vbCIsInV0ZjhyZWFkYSIsIm9yaWciLCJ1dGY4cmVhZGIiLCJ3dyIsInV0ZjhyZWFkYyIsInV0Zjhjb3JwdXMiLCJ1dGY4cmVhZCIsIm1hdGNodGFnIiwibXRjYWNoZSIsImh0bWxkZWNvZGUiLCJlbnRpdGllcyIsInZ0cmVnZXgiLCJ2dF9jYWNoZSIsInZ0dnJlZ2V4IiwidnRtcmVnZXgiLCJwYXJzZVZlY3RvciIsIm1hdGNoZXMiLCJ3dHJlZ2V4Iiwid3JpdGV0YWciLCJ3eHRfaGVscGVyIiwid3JpdGV4dGFnIiwid3JpdGVfdzNjZHRmIiwid3JpdGVfdnQiLCJ4bHN4IiwieGxtbF9ub3JtYWxpemUiLCJ4bG1scmVnZXgiLCJYTUxOUyIsIlhNTE5TX21haW4iLCJYTE1MTlMiLCJyZWFkX2RvdWJsZV9sZSIsIndyaXRlX2RvdWJsZV9sZSIsImJzIiwiYXYiLCJfX190b0J1ZmZlciIsIl9fX3V0ZjE2bGUiLCJfX3JlYWRVSW50MTZMRSIsIl9fX2hleGxpZnkiLCJfX2hleGxpZnkiLCJfX191dGY4IiwiX19yZWFkVUludDgiLCJfX3V0ZjgiLCJfX19scHN0ciIsIl9fbHBzdHIiLCJfX19jcHN0ciIsIl9fY3BzdHIiLCJfX19scHdzdHIiLCJfX2xwd3N0ciIsIl9fX2xwcDQiLCJfX2xwcDQiLCJfX184bHBwNCIsIl9fOGxwcDQiLCJfX19kb3VibGUiLCJfX2RvdWJsZSIsImlzX2J1ZiIsIl9fcmVhZEludDE2TEUiLCJfX3JlYWRJbnQzMkJFIiwib0kiLCJvUiIsIm9vIiwibG9jIiwiX193cml0ZVVJbnQzMkxFIiwiX193cml0ZUludDMyTEUiLCJfX3dyaXRlVUludDE2TEUiLCJXcml0ZVNoaWZ0IiwiaGV4c3RyIiwiZmxkIiwicG9zIiwicGFyc2Vub29wIiwibGVuZ3RoIiwicmVjb3JkaG9wcGVyIiwiY2IiLCJ0bXBieXRlIiwiY250Ynl0ZSIsIlJUIiwiWExTQlJlY29yZEVudW0iLCJidWZfYXJyYXkiLCJibGtzeiIsIm5ld2JsayIsImN1cmJ1ZiIsImVuZGJ1ZiIsIm5leHQiLCJwdXNoIiwid3JpdGVfcmVjb3JkIiwiYmEiLCJzaGlmdF9jZWxsX3hscyIsImNlbGwiLCJzaGlmdF9yYW5nZV94bHMiLCJyYW5nZSIsImVuY29kZV9jZWxsX3hscyIsImJpZmYiLCJlbmNvZGVfY2VsbCIsImZpeF9jb2wiLCJmaXhfcm93IiwiZW5jb2RlX3JhbmdlX3hscyIsImVuY29kZV9jb2wiLCJlbmNvZGVfcm93IiwiZGVjb2RlX3JvdyIsInJvd3N0ciIsInVuZml4X3JvdyIsImRlY29kZV9jb2wiLCJjb2xzdHIiLCJ1bmZpeF9jb2wiLCJjb2wiLCJzcGxpdF9jZWxsIiwiZGVjb2RlX2NlbGwiLCJkZWNvZGVfcmFuZ2UiLCJlbmNvZGVfcmFuZ2UiLCJjcyIsImNlIiwic2FmZV9kZWNvZGVfcmFuZ2UiLCJzYWZlX2Zvcm1hdF9jZWxsIiwiZm9ybWF0X2NlbGwiLCJCRXJyIiwic2hlZXRfdG9fd29ya2Jvb2siLCJzaGVldCIsInNoZWV0cyIsInNoZWV0X2FkZF9hb2EiLCJfd3MiLCJkZW5zZSIsIndzIiwiX1IiLCJfQyIsIl9vcmlnaW4iLCJfcmFuZ2UiLCJfX1IiLCJfX0MiLCJjZWxsX3JlZiIsImFvYV90b19zaGVldCIsInBhcnNlX0ludDMyTEUiLCJ3cml0ZV9VSW50MzJMRSIsInBhcnNlX1hMV2lkZVN0cmluZyIsImNjaENoYXJhY3RlcnMiLCJ3cml0ZV9YTFdpZGVTdHJpbmciLCJfbnVsbCIsInBhcnNlX1N0clJ1biIsIndyaXRlX1N0clJ1biIsInJ1biIsInBhcnNlX1JpY2hTdHIiLCJyZ3NTdHJSdW4iLCJkd1NpemVTdHJSdW4iLCJ3cml0ZV9SaWNoU3RyIiwicGFyc2VfQnJ0Q29tbWVudFRleHQiLCJ3cml0ZV9CcnRDb21tZW50VGV4dCIsInBhcnNlX1hMU0JDZWxsIiwiaVN0eWxlUmVmIiwid3JpdGVfWExTQkNlbGwiLCJwYXJzZV9YTFNCU2hvcnRDZWxsIiwid3JpdGVfWExTQlNob3J0Q2VsbCIsInBhcnNlX1hMU0JDb2RlTmFtZSIsIndyaXRlX1hMU0JDb2RlTmFtZSIsInBhcnNlX1hMTnVsbGFibGVXaWRlU3RyaW5nIiwid3JpdGVfWExOdWxsYWJsZVdpZGVTdHJpbmciLCJwYXJzZV9YTE5hbWVXaWRlU3RyaW5nIiwicGFyc2VfUmVsSUQiLCJ3cml0ZV9SZWxJRCIsInBhcnNlX1JrTnVtYmVyIiwiZlgxMDAiLCJmSW50IiwiUksiLCJ3cml0ZV9Sa051bWJlciIsImQxMDAiLCJwYXJzZV9SZlgiLCJ3cml0ZV9SZlgiLCJwYXJzZV9VbmNoZWNrZWRSZlgiLCJ3cml0ZV9VbmNoZWNrZWRSZlgiLCJwYXJzZV9YbnVtIiwid3JpdGVfWG51bSIsInBhcnNlX0JydENvbG9yIiwieENvbG9yVHlwZSIsIm5UUyIsImJSIiwiYkciLCJiQiIsImljdiIsIlhMU0ljdiIsInJnYjJIZXgiLCJ3cml0ZV9CcnRDb2xvciIsImNvbG9yIiwicmdiIiwicGFyc2VfRm9udEZsYWdzIiwid3JpdGVfRm9udEZsYWdzIiwiZm9udCIsImdyYml0IiwicGFyc2VfQ2xpcGJvYXJkRm9ybWF0T3JTdHJpbmciLCJDbGlwRm10IiwicGFyc2VfQ2xpcGJvYXJkRm9ybWF0T3JBbnNpU3RyaW5nIiwicGFyc2VfQ2xpcGJvYXJkRm9ybWF0T3JVbmljb2RlU3RyaW5nIiwiVlRfSTIiLCJWVF9JNCIsIlZUX0JPT0wiLCJWVF9WQVJJQU5UIiwiVlRfVUk0IiwiVlRfRklMRVRJTUUiLCJWVF9CTE9CIiwiVlRfQ0YiLCJWVF9WRUNUT1JfVkFSSUFOVCIsIlZUX1ZFQ1RPUl9MUFNUUiIsIlZUX1NUUklORyIsIlZUX1VTVFIiLCJWVF9DVVNUT00iLCJEb2NTdW1tYXJ5UElERFNJIiwiU3VtbWFyeVBJRFNJIiwiQ291bnRyeUVudW0iLCJYTFNGaWxsUGF0dGVybiIsInJnYmlmeSIsIl9YTFNJY3YiLCJSQkVyciIsImN0MnR5cGUiLCJDVF9MSVNUIiwibmV3X2N0IiwicGFyc2VfY3QiLCJjdCIsImN0ZXh0Iiwid3JpdGVfY3QiLCJ0eXBlMmN0IiwiZjEiLCJmMiIsImYzIiwiUkVMUyIsImdldF9yZWxzX3BhdGgiLCJwYXJzZV9yZWxzIiwiY3VycmVudEZpbGVQYXRoIiwicmVscyIsInJlbCIsImNhbm9uaWN0YXJnZXQiLCJ3cml0ZV9yZWxzIiwicmlkIiwiYWRkX3JlbHMiLCJySWQiLCJyZWxvYmoiLCJ0YXJnZXRtb2RlIiwiQ1RfT0RTIiwicGFyc2VfbWFuaWZlc3QiLCJSbiIsIkZFdGFnIiwid3JpdGVfbWFuaWZlc3QiLCJtYW5pZmVzdCIsIndyaXRlX3JkZl90eXBlIiwid3JpdGVfcmRmX2hhcyIsIndyaXRlX3JkZiIsInJkZiIsIndyaXRlX21ldGFfb2RzIiwiQ09SRV9QUk9QUyIsIkNPUkVfUFJPUFNfUkVHRVgiLCJwYXJzZV9jb3JlX3Byb3BzIiwiY3VyIiwiY3BfZG9pdCIsIndyaXRlX2NvcmVfcHJvcHMiLCJFWFRfUFJPUFMiLCJQc2V1ZG9Qcm9wc1BhaXJzIiwibG9hZF9wcm9wc19wYWlycyIsIkhQIiwiVE9QIiwicHJvcHMiLCJocCIsInBhcnRzIiwicGFyc2VfZXh0X3Byb3BzIiwieG1sIiwid3JpdGVfZXh0X3Byb3BzIiwiVyIsImN1c3RyZWdleCIsInBhcnNlX2N1c3RfcHJvcHMiLCJ0b2tzIiwid3JpdGVfY3VzdF9wcm9wcyIsInBpZCIsIlhMTUxEb2NQcm9wc01hcCIsImV2ZXJ0X1hMTUxEUE0iLCJ4bG1sX3NldF9wcm9wIiwiUHJvcHMiLCJ4bG1sX3dyaXRlX2RvY3Byb3BzIiwieGxtbF93cml0ZV9jdXN0cHJvcHMiLCJDdXN0cHJvcHMiLCJCTEFDS0xJU1QiLCJwYXJzZV9GSUxFVElNRSIsImR3TG93RGF0ZVRpbWUiLCJkd0hpZ2hEYXRlVGltZSIsIndyaXRlX0ZJTEVUSU1FIiwicGFyc2VfbHBzdHIiLCJwYWQiLCJwYXJzZV9scHdzdHIiLCJwYXJzZV9WdFN0cmluZ0Jhc2UiLCJzdHJpbmdUeXBlIiwicGFyc2VfVnRTdHJpbmciLCJwYXJzZV9WdFVuYWxpZ25lZFN0cmluZyIsInBhcnNlX1Z0VmVjTHB3c3RyVmFsdWUiLCJyZXQiLCJwYXJzZV9WdFZlY1VuYWxpZ25lZExwc3RyVmFsdWUiLCJwYXJzZV9WdEhlYWRpbmdQYWlyIiwiaGVhZGluZ1N0cmluZyIsInBhcnNlX1R5cGVkUHJvcGVydHlWYWx1ZSIsImhlYWRlclBhcnRzIiwicGFyc2VfVnRWZWNIZWFkaW5nUGFpclZhbHVlIiwiY0VsZW1lbnRzIiwicGFyc2VfZGljdGlvbmFyeSIsIkNvZGVQYWdlIiwiZGljdCIsInBhcnNlX0JMT0IiLCJieXRlcyIsInBhcnNlX0NsaXBib2FyZERhdGEiLCJ3cml0ZV9UeXBlZFByb3BlcnR5VmFsdWUiLCJwYXJzZV9Qcm9wZXJ0eVNldCIsIlBJRFNJIiwic3RhcnRfYWRkciIsIk51bVByb3BzIiwiRGljdGlvbmFyeSIsIkRpY3RPYmoiLCJQcm9wSUQiLCJPZmZzZXQiLCJQcm9wSCIsImZhaWwiLCJwaWRkc2kiLCJvbGRwb3MiLCJwYXJzZWJvb2wiLCJYTFNQU1NraXAiLCJndWVzc19wcm9wZXJ0eV90eXBlIiwid3JpdGVfUHJvcGVydHlTZXQiLCJlbnRyaWVzIiwiUkUiLCJoZHIiLCJwaWFvIiwicHJvcCIsInByIiwicGlvIiwicGluZm8iLCJwYXJzZV9Qcm9wZXJ0eVNldFN0cmVhbSIsImNsc2lkIiwiTnVtU2V0cyIsIkZNVElEMCIsIkZNVElEMSIsIk9mZnNldDAiLCJPZmZzZXQxIiwiU3lzdGVtSWRlbnRpZmllciIsIkNMU0lEIiwiUFNldDAiLCJydmFsIiwiUFNldDEiLCJ3cml0ZV9Qcm9wZXJ0eVNldFN0cmVhbSIsImVudHJpZXMyIiwiY2xzaWQyIiwicHMwIiwicHMxIiwicGFyc2Vub29wMiIsIndyaXRlemVyb2VzIiwicGFyc2x1cnAiLCJ3cml0ZWJvb2wiLCJwYXJzZXVpbnQxNiIsIndyaXRldWludDE2IiwicGFyc2V1aW50MTZhIiwicGFyc2VfQmVzIiwid3JpdGVfQmVzIiwicGFyc2VfU2hvcnRYTFVuaWNvZGVTdHJpbmciLCJjY2giLCJmSGlnaEJ5dGUiLCJwYXJzZV9YTFVuaWNvZGVSaWNoRXh0ZW5kZWRTdHJpbmciLCJmRXh0U3QiLCJmUmljaFN0Iiwid2lkdGgiLCJjUnVuIiwiY2JFeHRSc3QiLCJ3cml0ZV9YTFVuaWNvZGVSaWNoRXh0ZW5kZWRTdHJpbmciLCJ4bHN0ciIsIm90ZXh0IiwicGFyc2VfWExVbmljb2RlU3RyaW5nTm9DY2giLCJwYXJzZV9YTFVuaWNvZGVTdHJpbmciLCJwYXJzZV9YTFVuaWNvZGVTdHJpbmcyIiwid3JpdGVfWExVbmljb2RlU3RyaW5nIiwicGFyc2VfQ29udHJvbEluZm8iLCJhY2NlbCIsInBhcnNlX1VSTE1vbmlrZXIiLCJleHRyYSIsInBhcnNlX0ZpbGVNb25pa2VyIiwiY0FudGkiLCJwcmVhbWJsZSIsImFuc2lQYXRoIiwidW5pY29kZVBhdGgiLCJwYXJzZV9IeXBlcmxpbmtNb25pa2VyIiwicGFyc2VfSHlwZXJsaW5rU3RyaW5nIiwid3JpdGVfSHlwZXJsaW5rU3RyaW5nIiwicGFyc2VfSHlwZXJsaW5rIiwic1ZlciIsImRpc3BsYXlOYW1lIiwidGFyZ2V0RnJhbWVOYW1lIiwibW9uaWtlciIsIm9sZU1vbmlrZXIiLCJMb2MiLCJndWlkIiwiZmlsZVRpbWUiLCJ3cml0ZV9IeXBlcmxpbmsiLCJobCIsIlRhcmdldCIsImhhc2hpZHgiLCJGIiwiUHJldGFyZ2V0IiwicGFyc2VfTG9uZ1JHQkEiLCJwYXJzZV9Mb25nUkdCIiwicGFyc2VfWExTQ2VsbCIsInJ3IiwiaXhmZSIsIndyaXRlX1hMU0NlbGwiLCJwYXJzZV9mcnRIZWFkZXIiLCJydCIsInBhcnNlX09wdFhMVW5pY29kZVN0cmluZyIsInBhcnNlX1hUSSIsImlTdXBCb29rIiwiaXRhYkZpcnN0IiwiaXRhYkxhc3QiLCJwYXJzZV9Sa1JlYyIsInBhcnNlX0FkZGluVWRmIiwidWRmTmFtZSIsInBhcnNlX1JlZjhVIiwicndGaXJzdCIsInJ3TGFzdCIsImNvbEZpcnN0IiwiY29sTGFzdCIsIndyaXRlX1JlZjhVIiwicGFyc2VfUmVmVSIsInBhcnNlX1JlZiIsInBhcnNlX0Z0Q21vIiwib3QiLCJpZCIsInBhcnNlX0Z0TnRzIiwicGFyc2VfRnRDZiIsInBhcnNlX0Z0U2tpcCIsIkZ0VGFiIiwicGFyc2VfRnRBcnJheSIsImZ0cyIsImZ0IiwicGFyc2VfQk9GIiwid3JpdGVfQk9GIiwid2IiLCJwYXJzZV9JbnRlcmZhY2VIZHIiLCJwYXJzZV9Xcml0ZUFjY2VzcyIsIlVzZXJOYW1lIiwid3JpdGVfV3JpdGVBY2Nlc3MiLCJiOCIsInBhcnNlX1dzQm9vbCIsInBhcnNlX0JvdW5kU2hlZXQ4IiwiaGlkZGVuIiwid3JpdGVfQm91bmRTaGVldDgiLCJwYXJzZV9TU1QiLCJ1Y250Iiwic3RycyIsIndyaXRlX1NTVCIsInNzdCIsInBhcnNlX0V4dFNTVCIsImV4dHNzdCIsInBhcnNlX1JvdyIsIm1peVJ3IiwicGFyc2VfRm9yY2VGdWxsQ2FsY3VsYXRpb24iLCJmdWxsY2FsYyIsInBhcnNlX1JlY2FsY0lkIiwicGFyc2VfRGVmYXVsdFJvd0hlaWdodCIsImZsIiwicGFyc2VfV2luZG93MSIsInhXbiIsInlXbiIsImR4V24iLCJkeVduIiwiaVRhYkN1ciIsImlUYWJGaXJzdCIsImN0YWJTZWwiLCJ3VGFiUmF0aW8iLCJ3cml0ZV9XaW5kb3cxIiwicGFyc2VfV2luZG93MiIsIndyaXRlX1dpbmRvdzIiLCJwYXJzZV9QYW5lIiwicGFyc2VfRm9udCIsIndyaXRlX0ZvbnQiLCJiNSIsInBhcnNlX0xhYmVsU3N0Iiwid3JpdGVfTGFiZWxTc3QiLCJvcyIsInBhcnNlX0xhYmVsIiwid3JpdGVfTGFiZWwiLCJwYXJzZV9Gb3JtYXQiLCJudW1GbXRJZCIsImZtdHN0ciIsIndyaXRlX0Zvcm1hdCIsInBhcnNlX0JJRkYyRm9ybWF0IiwicGFyc2VfRGltZW5zaW9ucyIsIndyaXRlX0RpbWVuc2lvbnMiLCJwYXJzZV9SSyIsInJrcmVjIiwicGFyc2VfTXVsUmsiLCJya3JlY3MiLCJsYXN0Y29sIiwicGFyc2VfTXVsQmxhbmsiLCJpeGZlcyIsInBhcnNlX0NlbGxTdHlsZVhGIiwic3R5bGUiLCJwYXJzZV9YRiIsIndyaXRlX1hGIiwiaXhmZVAiLCJwYXJzZV9HdXRzIiwid3JpdGVfR3V0cyIsImd1dHMiLCJwYXJzZV9Cb29sRXJyIiwid3JpdGVfQm9vbEVyciIsInBhcnNlX051bWJlciIsInhudW0iLCJ3cml0ZV9OdW1iZXIiLCJwYXJzZV9YTEhlYWRlckZvb3RlciIsInBhcnNlX1N1cEJvb2siLCJjdGFiIiwidmlydFBhdGgiLCJyZ3N0IiwicGFyc2VfRXh0ZXJuTmFtZSIsImJvZHkiLCJYTFNMYmxCdWlsdEluIiwicGFyc2VfTGJsIiwiY2hLZXkiLCJjY2UiLCJpdGFiIiwibnBmbGVuIiwicmdjZSIsInBhcnNlX05hbWVQYXJzZWRGb3JtdWxhIiwicGFyc2VfRXh0ZXJuU2hlZXQiLCJwYXJzZV9CSUZGNUV4dGVyblNoZWV0IiwicGFyc2VfTmFtZUNtdCIsImNjaE5hbWUiLCJjY2hDb21tZW50IiwiY29tbWVudCIsInBhcnNlX1NockZtbGEiLCJyZWYiLCJjVXNlIiwicGFyc2VfU2hhcmVkUGFyc2VkRm9ybXVsYSIsInBhcnNlX0FycmF5IiwicGFyc2VfQXJyYXlQYXJzZWRGb3JtdWxhIiwicGFyc2VfTVRSU2V0dGluZ3MiLCJmTVRSRW5hYmxlZCIsImZVc2VyU2V0VGhyZWFkQ291bnQiLCJjVXNlclRocmVhZENvdW50IiwicGFyc2VfTm90ZVNoIiwiaWRPYmoiLCJzdEF1dGhvciIsInBhcnNlX05vdGUiLCJwYXJzZV9NZXJnZUNlbGxzIiwibWVyZ2VzIiwiY21jcyIsIndyaXRlX01lcmdlQ2VsbHMiLCJwYXJzZV9PYmoiLCJwYXJzZV9CSUZGNU9iaiIsImNtbyIsInBhcnNlX0JJRkY1T1QiLCJjZiIsInBhcnNlX1R4TyIsInRleHRzIiwiY29udHJvbEluZm8iLCJjY2hUZXh0IiwicGFyc2VfSExpbmsiLCJobGluayIsIndyaXRlX0hMaW5rIiwiTyIsInBhcnNlX0hMaW5rVG9vbHRpcCIsInd6VG9vbHRpcCIsIndyaXRlX0hMaW5rVG9vbHRpcCIsInBhcnNlX0NvdW50cnkiLCJ3cml0ZV9Db3VudHJ5IiwicGFyc2VfQ2xydENsaWVudCIsImNjdiIsInBhcnNlX1BhbGV0dGUiLCJwYXJzZV9YRkNSQyIsInBhcnNlX0NvbEluZm8iLCJjb2xkeCIsIndyaXRlX0NvbEluZm8iLCJwYXJzZV9TZXR1cCIsInBhcnNlX1NodFByb3BzIiwid3JpdGVfUlJUYWJJZCIsInBhcnNlX0JsYW5rIiwicGFyc2VfU2NsIiwicGFyc2VfU3RyaW5nIiwicGFyc2VfSW1EYXRhIiwiZW52IiwibGNiIiwicGFyc2VfQklGRjJTVFIiLCJwYXJzZV9CSUZGMk5VTSIsIm51bSIsIndyaXRlX0JJRkYyTlVNIiwid3JpdGVfQklGRjJDZWxsIiwicGFyc2VfQklGRjJJTlQiLCJ3cml0ZV9CSUZGMklOVCIsInBhcnNlX0JJRkYyU1RSSU5HIiwicGFyc2VfQklGRjJGT05UWFRSQSIsInBhcnNlX1JTdHJpbmciLCJEQkZfU1VQUE9SVEVEX1ZFUlNJT05TIiwiREJGIiwiZGJmX2NvZGVwYWdlX21hcCIsImRiZl9yZXZlcnNlX21hcCIsImRiZl90b19hb2EiLCJtZW1vIiwidmZwIiwibDciLCJucm93IiwiZnBvcyIsInJsZW4iLCJjdXJyZW50X2NwIiwiZmllbGRzIiwiZmllbGQiLCJoZW5kIiwiZGJmX3RvX3NoZWV0IiwiZGJmX3RvX3dvcmtib29rIiwiX1JMRU4iLCJzaGVldF90b19kYmYiLCJhb2EiLCJzaGVldF90b19qc29uIiwiaGVhZGVycyIsImNvbHMiLCJoY250IiwiY29sdHlwZXMiLCJjb2x3aWR0aHMiLCJjb2xkZWNpbWFscyIsImd1ZXNzIiwiX2d1ZXNzIiwiaGYiLCJfZiIsImhiIiwicm91dCIsIl9uIiwiX3MiLCJTWUxLIiwic3lsa19lc2NhcGVzIiwic3lsa19jaGFyX3JlZ2V4Iiwic3lsa19jaGFyX2ZuIiwiXyIsImRlY29kZV9zeWxrX2NoYXIiLCJuZXdjYyIsInN5bGtfdG9fYW9hIiwic3lsa190b19hb2Ffc3RyIiwicmVjb3JkcyIsInJqIiwiZm9ybWF0cyIsIm5leHRfY2VsbF9mb3JtYXQiLCJzaHQiLCJyb3dpbmZvIiwiY29saW5mbyIsImN3IiwiTXZhbCIsInJzdHIiLCJyZWNvcmQiLCJDX3NlZW5fSyIsIkNfc2Vlbl9YIiwiQ19zZWVuX1MiLCJDX3NlZW5fRSIsImZvcm11bGEiLCJyY190b19hMSIsInNocmJhc2UiLCJzaGlmdF9mb3JtdWxhX3N0ciIsIkZfc2VlbiIsInByb2Nlc3NfY29sIiwicHQycHgiLCJzeWxrX3RvX3NoZWV0IiwiYW9hc2h0Iiwic3lsa190b193b3JrYm9vayIsIndyaXRlX3dzX2NlbGxfc3lsayIsImExX3RvX3JjIiwid3JpdGVfd3NfY29sc19zeWxrIiwicmVjIiwid2lkdGgycHgiLCJweDJjaGFyIiwid3JpdGVfd3Nfcm93c19zeWxrIiwicm93cyIsInB4MnB0Iiwic2hlZXRfdG9fc3lsayIsIlJTIiwiY29vcmQiLCJESUYiLCJkaWZfdG9fYW9hIiwiZGlmX3RvX2FvYV9zdHIiLCJtZXRhZGF0YSIsImRpZl90b19zaGVldCIsImRpZl90b193b3JrYm9vayIsInNoZWV0X3RvX2RpZiIsInB1c2hfZmllbGQiLCJ0b3BpYyIsInB1c2hfdmFsdWUiLCJFVEgiLCJkZWNvZGUiLCJlbmNvZGUiLCJldGhfdG9fYW9hIiwiZXRoX3RvX3NoZWV0IiwiZXRoX3RvX3dvcmtib29rIiwic2VwIiwibWV0YSIsInNoZWV0X3RvX2V0aF9kYXRhIiwic2hlZXRfdG9fZXRoIiwiUFJOIiwic2V0X3RleHRfYXJyIiwicHJuX3RvX2FvYV9zdHIiLCJsaW5lcyIsImd1ZXNzX3NlcHMiLCJndWVzc19zZXBfd2VpZ2h0cyIsImd1ZXNzX3NlcCIsImluc3RyIiwiZHN2X3RvX3NoZWV0X3N0ciIsInNlcGNjIiwic3RhcnRjYyIsIl9yZSIsImZpbmlzaF9jZWxsIiwiZnV6enlmbWxhIiwib3V0ZXIiLCJwcm5fdG9fc2hlZXRfc3RyIiwicHJuX3RvX3NoZWV0IiwiZmlyc3RieXRlIiwicHJuX3RvX3dvcmtib29rIiwic2hlZXRfdG9fcHJuIiwicmVhZF93Yl9JRCIsIk9MRF9XVEYiLCJXS18iLCJsb3R1c2hvcHBlciIsIkVudW0iLCJXSzFFbnVtIiwibG90dXNfdG9fd29ya2Jvb2siLCJsb3R1c190b193b3JrYm9va19idWYiLCJuZXh0X24iLCJzaWR4Iiwic25hbWVzIiwicmVhbG5hbWVzIiwicmVmZ3Vlc3MiLCJzaGVldFJvd3MiLCJ0bXBjZWxsIiwiV0szRW51bSIsIm9zaGVldHMiLCJybmFtZXMiLCJzaGVldF90b193azEiLCJ3cml0ZV9iaWZmX3JlYyIsIndyaXRlX0JPRl9XSzEiLCJ3cml0ZV9SQU5HRSIsIm1heF9SIiwid3JpdGVfSU5URUdFUiIsIndyaXRlX05VTUJFUiIsIndyaXRlX0xBQkVMIiwiYm9va190b193azMiLCJ3cml0ZV9CT0ZfV0szIiwid3JpdGVfWEZPUk1BVF9TSEVFVE5BTUUiLCJ3c2lkeCIsIndyaXRlX05VTUJFUl8xNyIsIndyaXRlX0xBQkVMXzE2Iiwid3NjbnQiLCJwYXJzZV9SQU5HRSIsInBhcnNlX2NlbGwiLCJwYXJzZV9MQUJFTCIsInBhcnNlX0lOVEVHRVIiLCJwYXJzZV9OVU1CRVIiLCJwYXJzZV9GT1JNVUxBIiwid2sxX2ZtbGFfdG9fY3NmIiwid2sxX3BhcnNlX3JjIiwiRnVuY1RhYiIsIkJpbk9wVGFiIiwiYXJnYyIsImFyZ0wiLCJhcmdSIiwicGFyc2VfY2VsbF8zIiwicGFyc2VfTEFCRUxfMTYiLCJwYXJzZV9OVU1CRVJfMTgiLCJwYXJzZV9OVU1CRVJfMTciLCJ2MSIsInYyIiwicGFyc2VfRk9STVVMQV8xOSIsInBhcnNlX05VTUJFUl8yNSIsInBhcnNlX05VTUJFUl8yNyIsInBhcnNlX0ZPUk1VTEFfMjgiLCJwYXJzZV9TSEVFVE5BTUVDUyIsInBhcnNlX1NIRUVUTkFNRUxQIiwicGFyc2VfU0hFRVRJTkZPUVAiLCJwYXJzZV9YRk9STUFUIiwicGFyc2VfcnByIiwicnByIiwicGFzcyIsInBhcnNlX3JzIiwidHJlZ2V4IiwicnByZWdleCIsInBhcnNlX3IiLCJycmVnZXgiLCJyZW5kIiwicnMiLCJyc190b19odG1sIiwibmxyZWdleCIsInBhcnNlX3JwcjIiLCJpbnRybyIsIm91dHJvIiwiYWxpZ24iLCJyX3RvX2h0bWwiLCJ0ZXJtcyIsInNpdHJlZ2V4Iiwic2lycmVnZXgiLCJzaXJwaHJlZ2V4IiwicGFyc2Vfc2kiLCJodG1sIiwic3N0cjAiLCJzc3RyMSIsInNzdHIyIiwicGFyc2Vfc3N0X3htbCIsInN0cmF5d3NyZWdleCIsIndyaXRlX3NzdF94bWwiLCJzaXRhZyIsInBhcnNlX0JydEJlZ2luU3N0IiwicGFyc2Vfc3N0X2JpbiIsIndyaXRlX0JydEJlZ2luU3N0Iiwid3JpdGVfQnJ0U1NUSXRlbSIsIndyaXRlX3NzdF9iaW4iLCJfSlMyQU5TSSIsInBhcnNlX0NSWVBUT1ZlcnNpb24iLCJwYXJzZV9EYXRhU3BhY2VWZXJzaW9uSW5mbyIsInBhcnNlX0RhdGFTcGFjZU1hcEVudHJ5IiwiY29tcHMiLCJwYXJzZV9EYXRhU3BhY2VNYXAiLCJwYXJzZV9EYXRhU3BhY2VEZWZpbml0aW9uIiwicGFyc2VfVHJhbnNmb3JtSW5mb0hlYWRlciIsInBhcnNlX1ByaW1hcnkiLCJwYXJzZV9FbmNyeXB0aW9uSGVhZGVyIiwidmFsaWQiLCJwYXJzZV9FbmNyeXB0aW9uVmVyaWZpZXIiLCJwYXJzZV9FbmNyeXB0aW9uSW5mbyIsInZlcnMiLCJwYXJzZV9FbmNJbmZvU3RkIiwicGFyc2VfRW5jSW5mb0V4dCIsInBhcnNlX0VuY0luZm9BZ2wiLCJ2ZXJpZmllciIsIktleURhdGEiLCJwYXJzZV9SQzRDcnlwdG9IZWFkZXIiLCJwYXJzZV9SQzRIZWFkZXIiLCJjcnlwdG9fQ3JlYXRlUGFzc3dvcmRWZXJpZmllcl9NZXRob2QxIiwiUGFzc3dvcmQiLCJWZXJpZmllciIsIlBhc3N3b3JkQXJyYXkiLCJQYXNzd29yZERlY29kZWQiLCJQYXNzd29yZEJ5dGUiLCJJbnRlcm1lZGlhdGUxIiwiSW50ZXJtZWRpYXRlMiIsIkludGVybWVkaWF0ZTMiLCJjcnlwdG9fQ3JlYXRlWG9yQXJyYXlfTWV0aG9kMSIsIlBhZEFycmF5IiwiSW5pdGlhbENvZGUiLCJYb3JNYXRyaXgiLCJSb3IiLCJCeXRlIiwiWG9yUm9yIiwiYnl0ZTEiLCJieXRlMiIsIkNyZWF0ZVhvcktleV9NZXRob2QxIiwiWG9yS2V5IiwiQ3VycmVudEVsZW1lbnQiLCJDaGFyIiwicGFzc3dvcmQiLCJJbmRleCIsIk9iZnVzY2F0aW9uQXJyYXkiLCJUZW1wIiwiUGFzc3dvcmRMYXN0Q2hhciIsIlBhZEluZGV4IiwiY3J5cHRvX0RlY3J5cHREYXRhX01ldGhvZDEiLCJEYXRhIiwiWG9yQXJyYXlJbmRleCIsIlhvckFycmF5IiwiVmFsdWUiLCJjcnlwdG9fTWFrZVhvckRlY3J5cHRvciIsInBhcnNlX1hPUk9iZnVzY2F0aW9uIiwicGFyc2VfRmlsZVBhc3NIZWFkZXIiLCJwYXJzZV9GaWxlUGFzcyIsIlJURiIsInJ0Zl90b19zaGVldCIsInJ0Zl90b19zaGVldF9zdHIiLCJyb3d0ZiIsInJ0ZnJlIiwibGFzdF9pbmRleCIsInJ0Zl90b193b3JrYm9vayIsInNoZWV0X3RvX3J0ZiIsImhleDJSR0IiLCJyZ2IySFNMIiwiRyIsIkg2IiwiTDIiLCJoc2wyUkdCIiwiaHNsIiwiaDYiLCJYIiwicmdiX3RpbnQiLCJoZXgiLCJ0aW50IiwiREVGX01EVyIsIk1BWF9NRFciLCJNSU5fTURXIiwiTURXIiwicHgiLCJjaGFyMndpZHRoIiwiY2hyIiwiY3ljbGVfd2lkdGgiLCJjb2xsdyIsImZpbmRfbWR3X2NvbHciLCJkZWx0YSIsIl9NRFciLCJjb2xsIiwiREVGX1BQSSIsIlBQSSIsInB0IiwiWExNTFBhdHRlcm5UeXBlTWFwIiwicGFyc2VfYm9yZGVycyIsInN0eWxlcyIsInRoZW1lcyIsImJvcmRlciIsInBhcnNlX2ZpbGxzIiwicGFyc2VfZm9udHMiLCJwYXJzZV9udW1GbXRzIiwid3JpdGVfbnVtRm10cyIsIk5GIiwiY2VsbFhGX3VpbnQiLCJjZWxsWEZfYm9vbCIsInBhcnNlX2NlbGxYZnMiLCJ4ZiIsImFsaWdubWVudCIsIndyaXRlX2NlbGxYZnMiLCJjZWxsWGZzIiwicGFyc2Vfc3R5X3htbCIsIm51bUZtdFJlZ2V4IiwiY2VsbFhmUmVnZXgiLCJmaWxsc1JlZ2V4IiwiZm9udHNSZWdleCIsImJvcmRlcnNSZWdleCIsIndyaXRlX3N0eV94bWwiLCJwYXJzZV9CcnRGbXQiLCJzdEZtdENvZGUiLCJ3cml0ZV9CcnRGbXQiLCJwYXJzZV9CcnRGb250IiwiYmxzIiwidW5kZXJsaW5lIiwiZmFtaWx5IiwiYkNoYXJTZXQiLCJ3cml0ZV9CcnRGb250Iiwic3NzIiwic2NoZW1lIiwiWExTQkZpbGxQVE5hbWVzIiwicmV2X1hMU0JGaWxsUFROYW1lcyIsInBhcnNlX0JydEZpbGwiLCJ3cml0ZV9CcnRGaWxsIiwiZmxzIiwicGFyc2VfQnJ0WEYiLCJpeGZlUGFyZW50IiwiaWZtdCIsIndyaXRlX0JydFhGIiwiZmxvdyIsIndyaXRlX0JseGYiLCJwYXJzZV9CcnRCb3JkZXIiLCJ3cml0ZV9CcnRCb3JkZXIiLCJ3cml0ZV9CcnRTdHlsZSIsIndyaXRlX0JydEJlZ2luVGFibGVTdHlsZXMiLCJkZWZUYWJsZVN0eWxlIiwiZGVmUGl2b3RTdHlsZSIsInBhcnNlX3N0eV9iaW4iLCJzdGF0ZSIsIndyaXRlX0ZNVFNfYmluIiwid3JpdGVfRk9OVFNfYmluIiwid3JpdGVfRklMTFNfYmluIiwid3JpdGVfQk9SREVSU19iaW4iLCJ3cml0ZV9DRUxMU1RZTEVYRlNfYmluIiwid3JpdGVfQ0VMTFhGU19iaW4iLCJ3cml0ZV9TVFlMRVNfYmluIiwid3JpdGVfRFhGU19iaW4iLCJ3cml0ZV9UQUJMRVNUWUxFU19iaW4iLCJ3cml0ZV9zdHlfYmluIiwiWExTWFRoZW1lQ2xyU2NoZW1lIiwicGFyc2VfY2xyU2NoZW1lIiwicGFyc2VfZm9udFNjaGVtZSIsInBhcnNlX2ZtdFNjaGVtZSIsImNscnNyZWdleCIsImZudHNyZWdleCIsImZtdHNyZWdleCIsInBhcnNlX3RoZW1lRWxlbWVudHMiLCJ0aGVtZWx0cmVnZXgiLCJwYXJzZV90aGVtZV94bWwiLCJ3cml0ZV90aGVtZSIsIlRoZW1lcyIsInBhcnNlX1RoZW1lIiwiZHdUaGVtZVZlcnNpb24iLCJ0aGVtZVhNTCIsInBhcnNlX0NvbG9yVGhlbWUiLCJwYXJzZV9GdWxsQ29sb3JFeHQiLCJwYXJzZV9JY3ZYRiIsInBhcnNlX1hGRXh0R3JhZGllbnQiLCJwYXJzZV9FeHRQcm9wIiwiZXh0VHlwZSIsInBhcnNlX1hGRXh0IiwiY2V4dHMiLCJ1cGRhdGVfeGZleHQiLCJ4ZmV4dCIsInhmZSIsInBhcnNlX0JydE1kdGluZm8iLCJ3cml0ZV9CcnRNZHRpbmZvIiwicGFyc2VfQnJ0TWRiIiwid3JpdGVfQnJ0TWRiIiwibWRiIiwid3JpdGVfQnJ0QmVnaW5Fc2ZtZCIsInBhcnNlX0JydEJlZ2luRXNtZGIiLCJ3cml0ZV9CcnRCZWdpbkVzbWRiIiwiY20iLCJwYXJzZV94bG1ldGFfYmluIiwibWV0YXR5cGUiLCJ3cml0ZV94bG1ldGFfYmluIiwicGFyc2VfeGxtZXRhX3htbCIsImxhc3RtZXRhIiwid3JpdGVfeGxtZXRhX3htbCIsInBhcnNlX2NjX3htbCIsInBhcnNlX0JydENhbGNDaGFpbkl0ZW0kIiwicGFyc2VfY2NfYmluIiwicGFyc2VfeGxpbmtfYmluIiwicGFyc2VfZHJhd2luZyIsIl9zaGFwZWlkIiwid3JpdGVfY29tbWVudHNfdm1sIiwiY29tbWVudHMiLCJjc2l6ZSIsImJib3giLCJmaWxsb3B0cyIsImZpbGxwYXJtIiwiZmlsbHhtbCIsInNoYWRhdGEiLCJzaGVldF9pbnNlcnRfY29tbWVudHMiLCJ0aHJlYWRlZCIsInBlb3BsZSIsInBhcnNlX2NvbW1lbnRzX3htbCIsImF1dGhvcnMiLCJjb21tZW50TGlzdCIsImF1dGh0YWciLCJjbW50dGFnIiwidGV4dE1hdGNoIiwid3JpdGVfY29tbWVudHNfeG1sIiwiaWF1dGhvciIsImxhc3RhdXRob3IiLCJ0cyIsInBhcnNlX3RjbW50X3htbCIsInRpZHgiLCJ3cml0ZV90Y21udF94bWwiLCJjYXJyIiwicm9vdGlkIiwidGNvcHRzIiwicGFyc2VfcGVvcGxlX3htbCIsIndyaXRlX3Blb3BsZV94bWwiLCJwZXJzb24iLCJwYXJzZV9CcnRCZWdpbkNvbW1lbnQiLCJyZngiLCJ3cml0ZV9CcnRCZWdpbkNvbW1lbnQiLCJwYXJzZV9CcnRDb21tZW50QXV0aG9yIiwid3JpdGVfQnJ0Q29tbWVudEF1dGhvciIsInBhcnNlX2NvbW1lbnRzX2JpbiIsIndyaXRlX2NvbW1lbnRzX2JpbiIsIkNUX1ZCQSIsIm1ha2VfdmJhX3hscyIsIm5ld2NmYiIsIm5ld3BhdGgiLCJmaWxsX3ZiYV94bHMiLCJ2YmEiLCJWQkFGTVRTIiwicGFyc2VfZHNfYmluIiwicGFyc2VfZHNfeG1sIiwicGFyc2VfbXNfYmluIiwicGFyc2VfbXNfeG1sIiwicmNyZWdleCIsInJjYmFzZSIsInJjZnVuYyIsImNSZWwiLCJyUmVsIiwiZnN0ciIsImNyZWZyZWdleCIsIiQwIiwiJDQiLCIkNSIsInNoaWZ0X2Zvcm11bGFfeGxzeCIsIl94bGZuIiwicGFyc2VyZWFkMSIsInBhcnNlX0NvbFJlbFUiLCJwYXJzZV9SZ2NlQXJlYSIsInBhcnNlX1JnY2VBcmVhX0JJRkYyIiwicGFyc2VfUmdjZUFyZWFSZWwiLCJwYXJzZV9SZ2NlTG9jIiwicGFyc2VfUmdjZUxvY19CSUZGMiIsInBhcnNlX1JnY2VFbGZMb2MiLCJwYXJzZV9SZ2NlTG9jUmVsIiwicGFyc2VfUmdjZUxvY1JlbF9CSUZGMiIsImNsIiwicmwiLCJwYXJzZV9QdGdBcmVhIiwiYXJlYSIsInBhcnNlX1B0Z0FyZWEzZCIsIml4dGkiLCJwYXJzZV9QdGdBcmVhRXJyIiwicGFyc2VfUHRnQXJlYUVycjNkIiwicGFyc2VfUHRnQXJlYU4iLCJwYXJzZV9QdGdBcnJheSIsInBhcnNlX1B0Z0F0dHJCYXhjZWwiLCJiaXRTZW1pIiwiYml0QmF4Y2VsIiwicGFyc2VfUHRnQXR0ckNob29zZSIsInBhcnNlX1B0Z0F0dHJHb3RvIiwiYml0R290byIsInBhcnNlX1B0Z0F0dHJJZiIsImJpdElmIiwicGFyc2VfUHRnQXR0cklmRXJyb3IiLCJwYXJzZV9QdGdBdHRyU2VtaSIsInBhcnNlX1B0Z0F0dHJTcGFjZVR5cGUiLCJwYXJzZV9QdGdBdHRyU3BhY2UiLCJwYXJzZV9QdGdBdHRyU3BhY2VTZW1pIiwicGFyc2VfUHRnUmVmIiwicGFyc2VfUHRnUmVmTiIsInBhcnNlX1B0Z1JlZjNkIiwicGFyc2VfUHRnRnVuYyIsImlmdGFiIiwiRnRhYkFyZ2MiLCJGdGFiIiwicGFyc2VfUHRnRnVuY1ZhciIsImNwYXJhbXMiLCJ0YWIiLCJwYXJzZXRhYiIsIkNldGFiIiwicGFyc2VfUHRnQXR0clN1bSIsInBhcnNlX1B0Z0V4cCIsInBhcnNlX1B0Z0VyciIsInBhcnNlX1B0Z0ludCIsInBhcnNlX1B0Z0Jvb2wiLCJwYXJzZV9QdGdOdW0iLCJwYXJzZV9QdGdTdHIiLCJwYXJzZV9TZXJBciIsInBhcnNlX1B0Z0V4dHJhTWVtIiwiY291bnQiLCJwYXJzZV9QdGdFeHRyYUFycmF5IiwicGFyc2VfUHRnTmFtZSIsIm5hbWVpbmRleCIsInBhcnNlX1B0Z05hbWVYIiwicGFyc2VfUHRnTmFtZVhfQklGRjUiLCJwYXJzZV9QdGdNZW1BcmVhIiwicGFyc2VfUHRnTWVtRnVuYyIsInBhcnNlX1B0Z1JlZkVyciIsInBhcnNlX1B0Z1JlZkVycjNkIiwicGFyc2VfUHRnTWVtRXJyIiwicGFyc2VfUHRnTWVtTm9NZW0iLCJwYXJzZV9QdGdUYmwiLCJwYXJzZV9QdGdFbGZMb2MiLCJwYXJzZV9QdGdFbGZOb29wIiwicGFyc2VfUHRnRWxmQ29sIiwicGFyc2VfUHRnRWxmQ29sUyIsInBhcnNlX1B0Z0VsZkNvbFNWIiwicGFyc2VfUHRnRWxmQ29sViIsInBhcnNlX1B0Z0VsZkxlbCIsInBhcnNlX1B0Z0VsZlJhZGljYWwiLCJwYXJzZV9QdGdFbGZSYWRpY2FsTGVsIiwicGFyc2VfUHRnRWxmUmFkaWNhbFMiLCJwYXJzZV9QdGdFbGZSdyIsInBhcnNlX1B0Z0VsZlJ3ViIsIlB0Z0xpc3RSVCIsInBhcnNlX1B0Z0xpc3QiLCJwYXJzZV9QdGdTeE5hbWUiLCJwYXJzZV9QdGdTaGVldCIsInBhcnNlX1B0Z0VuZFNoZWV0IiwicGFyc2VfUHRnTWVtQXJlYU4iLCJwYXJzZV9QdGdNZW1Ob01lbU4iLCJwYXJzZV9QdGdBdHRyTm9vcCIsIlB0Z1R5cGVzIiwiUHRnRHVwZXMiLCJQdGcxOCIsIlB0ZzE5IiwicGFyc2VfUmdiRXh0cmEiLCJwYXJzZV9SZ2NlIiwicHRncyIsInN0cmluZ2lmeV9hcnJheSIsIlB0Z0Jpbk9wIiwiZm9ybXVsYV9xdW90ZV9zaGVldF9uYW1lIiwic25hbWUiLCJnZXRfaXh0aV9yYXciLCJzdXBib29rcyIsIlhUSSIsImdldF9peHRpIiwiaXh0aXJhdyIsInN0cmluZ2lmeV9mb3JtdWxhIiwic3RhY2siLCJuYW1laWR4IiwibGFzdF9zcCIsInNwIiwiZmZsZW4iLCJmdW5jIiwibGJsIiwiYm9va2lkeCIsImV4dGVybmJvb2siLCJpeHRpZGF0YSIsImxwIiwicnAiLCJwYXJzZWRmIiwiZm5kIiwiUHRnTm9uRGlzcCIsIl9sZWZ0IiwicmdjYiIsInBhcnNlX1hMU0NlbGxQYXJzZWRGb3JtdWxhIiwicGFyc2VfRm9ybXVsYVZhbHVlIiwid3JpdGVfRm9ybXVsYVZhbHVlIiwicGFyc2VfRm9ybXVsYSIsImNiZiIsIndyaXRlX0Zvcm11bGEiLCJvMSIsIm8zIiwiYmYiLCJwYXJzZV9YTFNCUGFyc2VkRm9ybXVsYSIsInBhcnNlX1hMU0JBcnJheVBhcnNlZEZvcm11bGEiLCJwYXJzZV9YTFNCQ2VsbFBhcnNlZEZvcm11bGEiLCJwYXJzZV9YTFNCTmFtZVBhcnNlZEZvcm11bGEiLCJwYXJzZV9YTFNCU2hhcmVkUGFyc2VkRm9ybXVsYSIsIm9kc190b19jc2ZfZm9ybXVsYSIsImNzZl90b19vZHNfZm9ybXVsYSIsIm9kc190b19jc2ZfM0QiLCJjc2ZfdG9fb2RzXzNEIiwiX3NzZm9wdHMiLCJicm93c2VyX2hhc19NYXAiLCJnZXRfc3N0X2lkIiwicmV2YXJyIiwiY29sX29ial93Iiwid2NoIiwiZGVmYXVsdF9tYXJnaW5zIiwibWFyZ2lucyIsIm1vZGUiLCJkZWZzIiwiZ2V0X2NlbGxfc3R5bGUiLCJzYWZlX2Zvcm1hdCIsImZtdGlkIiwiZmlsbGlkIiwiY2hlY2tfd3MiLCJwYXJzZV93c194bWxfZGltIiwibWVyZ2VjcmVnZXgiLCJzaGVldGRhdGFyZWdleCIsImhsaW5rcmVnZXgiLCJkaW1yZWdleCIsImNvbHJlZ2V4IiwiYWZyZWdleCIsIm1hcmdpbnJlZ2V4Iiwic2hlZXRwcnJlZ2V4Iiwic2hlZXRwcnJlZ2V4MiIsInN2c3JlZ2V4IiwicGFyc2Vfd3NfeG1sIiwiZGF0YTEiLCJkYXRhMiIsIm10Y2giLCJzaGVldFByIiwicGFyc2Vfd3NfeG1sX3NoZWV0cHIiLCJwYXJzZV93c194bWxfc2hlZXRwcjIiLCJzdnMiLCJwYXJzZV93c194bWxfc2hlZXR2aWV3cyIsInBhcnNlX3dzX3htbF9jb2xzIiwicGFyc2Vfd3NfeG1sX2RhdGEiLCJhZmlsdGVyIiwicGFyc2Vfd3NfeG1sX2F1dG9maWx0ZXIiLCJfbWVyZ2UiLCJwYXJzZV93c194bWxfaGxpbmtzIiwicGFyc2Vfd3NfeG1sX21hcmdpbnMiLCJ0bXByZWYiLCJ3cml0ZV93c194bWxfbWVyZ2VzIiwid3JpdGVfd3NfeG1sX3NoZWV0cHIiLCJuZWVkZWQiLCJjbmFtZSIsIm91dGxpbmVwcm9wcyIsInNoZWV0cHJvdF9kZWZmYWxzZSIsInNoZWV0cHJvdF9kZWZ0cnVlIiwid3JpdGVfd3NfeG1sX3Byb3RlY3Rpb24iLCJybmciLCJtYXJnaW4iLCJ3cml0ZV93c194bWxfbWFyZ2lucyIsInNlZW5jb2wiLCJjb2xpIiwiY29sbSIsImNvbE0iLCJ3cml0ZV93c194bWxfY29scyIsIndyaXRlX3dzX3htbF9hdXRvZmlsdGVyIiwibmFtZXMiLCJzdmlld3JlZ2V4Iiwid3JpdGVfd3NfeG1sX3NoZWV0dmlld3MiLCJzdmlldyIsIndyaXRlX3dzX3htbF9jZWxsIiwib2xkdCIsIm9sZHYiLCJjZWxscmVnZXgiLCJyb3dyZWdleCIsImlzcmVnZXgiLCJyZWZyZWdleCIsIm1hdGNoX3YiLCJtYXRjaF9mIiwic2RhdGEiLCJjZWxscyIsImNyZWYiLCJ0YWdyIiwidGFnYyIsInNzdHIiLCJmdGFnIiwiZG9fZm9ybWF0IiwiYXJyYXlmIiwic2hhcmVkZiIsInJvd29iaiIsInJvd3JpdGUiLCJzaGVldFN0dWJzIiwibWFyciIsIm1hcnJsZW4iLCJ4bGVuIiwicnN0YXJ0aSIsIm91dGEiLCJyc2xpY2UiLCJfX19mIiwiX3RhZyIsIl9yIiwid3JpdGVfd3NfeG1sX2RhdGEiLCJwYXJhbXMiLCJoZWlnaHQiLCJfY2VsbCIsIndyaXRlX3dzX3htbCIsInJkYXRhIiwiX2RyYXdpbmciLCJyZWxjIiwicGFyc2VfQnJ0Um93SGRyIiwid3JpdGVfQnJ0Um93SGRyIiwibmNvbHNwYW4iLCJsY3MiLCJjYWRkciIsImZpcnN0IiwibGFzdCIsIndyaXRlX3Jvd19oZWFkZXIiLCJwYXJzZV9CcnRXc0RpbSIsIndyaXRlX0JydFdzRGltIiwicGFyc2VfQnJ0V3NGbXRJbmZvIiwicGFyc2VfQnJ0V3NQcm9wIiwid3JpdGVfQnJ0V3NQcm9wIiwicGFyc2VfQnJ0Q2VsbEJsYW5rIiwid3JpdGVfQnJ0Q2VsbEJsYW5rIiwibmNlbGwiLCJwYXJzZV9CcnRTaG9ydEJsYW5rIiwid3JpdGVfQnJ0U2hvcnRCbGFuayIsInBhcnNlX0JydENlbGxCb29sIiwiZkJvb2wiLCJ3cml0ZV9CcnRDZWxsQm9vbCIsInBhcnNlX0JydFNob3J0Qm9vbCIsIndyaXRlX0JydFNob3J0Qm9vbCIsInBhcnNlX0JydENlbGxFcnJvciIsImJFcnJvciIsIndyaXRlX0JydENlbGxFcnJvciIsInBhcnNlX0JydFNob3J0RXJyb3IiLCJ3cml0ZV9CcnRTaG9ydEVycm9yIiwicGFyc2VfQnJ0Q2VsbElzc3QiLCJpc3N0Iiwid3JpdGVfQnJ0Q2VsbElzc3QiLCJwYXJzZV9CcnRTaG9ydElzc3QiLCJ3cml0ZV9CcnRTaG9ydElzc3QiLCJwYXJzZV9CcnRDZWxsUmVhbCIsIndyaXRlX0JydENlbGxSZWFsIiwicGFyc2VfQnJ0U2hvcnRSZWFsIiwid3JpdGVfQnJ0U2hvcnRSZWFsIiwicGFyc2VfQnJ0Q2VsbFJrIiwid3JpdGVfQnJ0Q2VsbFJrIiwicGFyc2VfQnJ0U2hvcnRSayIsIndyaXRlX0JydFNob3J0UmsiLCJwYXJzZV9CcnRDZWxsUlN0cmluZyIsInBhcnNlX0JydENlbGxTdCIsIndyaXRlX0JydENlbGxTdCIsInBhcnNlX0JydFNob3J0U3QiLCJ3cml0ZV9CcnRTaG9ydFN0IiwicGFyc2VfQnJ0Rm1sYUJvb2wiLCJwYXJzZV9CcnRGbWxhRXJyb3IiLCJwYXJzZV9CcnRGbWxhTnVtIiwicGFyc2VfQnJ0Rm1sYVN0cmluZyIsInBhcnNlX0JydE1lcmdlQ2VsbCIsIndyaXRlX0JydE1lcmdlQ2VsbCIsIndyaXRlX0JydEJlZ2luTWVyZ2VDZWxscyIsInBhcnNlX0JydEhMaW5rIiwicmVsSWQiLCJ0b29sdGlwIiwiZGlzcGxheSIsIndyaXRlX0JydEhMaW5rIiwibG9jaWR4IiwicGFyc2VfQnJ0UGFuZSIsInBhcnNlX0JydEFyckZtbGEiLCJmQWx3YXlzQ2FsYyIsInBhcnNlX0JydFNockZtbGEiLCJ3cml0ZV9CcnRDb2xJbmZvIiwiQnJ0TWFyZ2luS2V5cyIsInBhcnNlX0JydE1hcmdpbnMiLCJ3cml0ZV9CcnRNYXJnaW5zIiwicGFyc2VfQnJ0QmVnaW5Xc1ZpZXciLCJ3cml0ZV9CcnRCZWdpbldzVmlldyIsIldvcmtib29rIiwid3JpdGVfQnJ0Q2VsbElnbm9yZUVDIiwid3JpdGVfQnJ0U2hlZXRQcm90ZWN0aW9uIiwicGFyc2VfQnJ0RFZhbCIsInBhcnNlX0JydERWYWwxNCIsInBhcnNlX3dzX2JpbiIsImFpIiwiYWYiLCJSUiIsImFpaSIsIl9kIiwid3JpdGVfd3NfYmluX2NlbGwiLCJsYXN0X3NlZW4iLCJ3cml0ZV9DRUxMVEFCTEUiLCJjYXAiLCJ3cml0ZV9NRVJHRUNFTExTIiwid3JpdGVfQ09MSU5GT1MiLCJ3cml0ZV9JR05PUkVFQ1MiLCJ3cml0ZV9ITElOS1MiLCJ3cml0ZV9MRUdBQ1lEUkFXSU5HIiwid3JpdGVfQVVUT0ZJTFRFUiIsIndyaXRlX1dTVklFV1MyIiwid3JpdGVfU0hFRVRQUk9URUNUIiwid3JpdGVfd3NfYmluIiwicGFyc2VfQ2FjaGUiLCJuZiIsInBhcnNlX2NoYXJ0IiwiY3NoZWV0IiwibmMiLCJjYWNoZSIsInBhcnNlX2NzX3htbCIsInBhcnNlX0JydENzUHJvcCIsInBhcnNlX2NzX2JpbiIsIldCUHJvcHNEZWYiLCJXQlZpZXdEZWYiLCJTaGVldERlZiIsIkNhbGNQckRlZiIsInB1c2hfZGVmYXVsdHNfYXJyYXkiLCJwdXNoX2RlZmF1bHRzIiwicGFyc2Vfd2JfZGVmYXVsdHMiLCJzYWZlMTkwNCIsImJhZGNoYXJzIiwiY2hlY2tfd3NfbmFtZSIsIl9nb29kIiwiY2hlY2tfd2JfbmFtZXMiLCJOIiwiY29kZXMiLCJjbiIsImNoZWNrX3diIiwiU2hlZXRzIiwid2Juc3JlZ2V4IiwicGFyc2Vfd2JfeG1sIiwieG1sbnMiLCJkbmFtZSIsImRuc3RhcnQiLCJ3cml0ZV93Yl94bWwiLCJ3cml0ZV9uYW1lcyIsIndvcmtib29rUHIiLCJwYXJzZV9CcnRCdW5kbGVTaCIsIndyaXRlX0JydEJ1bmRsZVNoIiwicGFyc2VfQnJ0V2JQcm9wIiwic3RyTmFtZSIsIndyaXRlX0JydFdiUHJvcCIsInBhcnNlX0JydEZSVEFyY2hJRCQiLCJwYXJzZV9CcnROYW1lIiwicGFyc2Vfd2JfYmluIiwiTmFtZXMiLCJ3cml0ZV9CVU5ETEVTSFMiLCJ2aXoiLCJ3cml0ZV9CcnRGaWxlVmVyc2lvbiIsIndyaXRlX0JydEJvb2tWaWV3Iiwid3JpdGVfQk9PS1ZJRVdTIiwidmlzdGFiIiwid3JpdGVfd2JfYmluIiwicGFyc2Vfd2IiLCJwYXJzZV93cyIsInBhcnNlX2NzIiwicGFyc2VfbXMiLCJwYXJzZV9kcyIsInBhcnNlX3N0eSIsInBhcnNlX3RoZW1lIiwicGFyc2Vfc3N0IiwicGFyc2VfY21udCIsInBhcnNlX2NjIiwicGFyc2VfeGxpbmsiLCJwYXJzZV94bG1ldGEiLCJ3cml0ZV93YiIsIndyaXRlX3dzIiwid3JpdGVfc3R5Iiwid3JpdGVfc3N0Iiwid3JpdGVfY21udCIsIndyaXRlX3hsbWV0YSIsImF0dHJlZ2V4ZzIiLCJhdHRyZWdleDIiLCJ4bG1sX3BhcnNleG1sdGFnIiwid29yZHMiLCJ4bG1sX3BhcnNleG1sdGFnb2JqIiwiWExNTEZvcm1hdE1hcCIsInhsbWxfZm9ybWF0IiwiZm9ybWF0IiwieGxtbF9zZXRfY3VzdHByb3AiLCJvdmFsIiwic2FmZV9mb3JtYXRfeGxtbCIsInByb2Nlc3Nfc3R5bGVfeGxtbCIsInN0YWciLCJJIiwicGFyc2VfeGxtbF9kYXRhIiwiY3N0eSIsInNpZCIsImludGVyaW9ycyIsInhsbWxfY2xlYW5fY29tbWVudCIsInBhcnNlX3hsbWxfeG1sIiwib3BlbmluZyIsImlzaHRtbCIsIl9vIiwiaHRtbF90b193b3JrYm9vayIsInNoZWV0bmFtZXMiLCJjdXJzaGVldCIsInNoZWV0bmFtZSIsImR0YWciLCJkaWR4IiwiZmlkeCIsInBpZHgiLCJjc3R5cyIsIndzcHJvcHMiLCJyYXdfUm4zIiwiY21hIiwiY21kIiwic3NmaWR4IiwiX2NvbCIsIl9OYW1lZFJhbmdlIiwiX0RlZmluZWROYW1lIiwiQXV0b0ZpbHRlciIsInBhcnNlX2ZvZHMiLCJwYWdlbWFyZ2lucyIsInBhcnNlX3hsbWwiLCJmaXhfcmVhZF9vcHRzIiwid3JpdGVfcHJvcHNfeGxtbCIsIndyaXRlX3diX3hsbWwiLCJ3cml0ZV9zdHlfeGxtbCIsIndyaXRlX25hbWVfeGxtbCIsIndyaXRlX25hbWVzX3hsbWwiLCJ3cml0ZV93c194bG1sX25hbWVzIiwid3JpdGVfd3NfeGxtbF93c29wdHMiLCJ3cml0ZV93c194bG1sX2NvbW1lbnQiLCJ3cml0ZV93c194bG1sX2NlbGwiLCJhdHRyIiwibWkiLCJfdiIsIndyaXRlX3dzX3hsbWxfcm93Iiwid3JpdGVfd3NfeGxtbF90YWJsZSIsInNraXAiLCJ3cml0ZV93c194bG1sIiwid3JpdGVfeGxtbCIsInBhcnNlX2NvbXBvYmoiLCJDT05USU5VRV9SVCIsInNsdXJwIiwiUmVjb3JkVHlwZSIsIm5leHRydCIsIlhMU1JlY29yZEVudW0iLCJsbCIsInNhZmVfZm9ybWF0X3hmIiwibWFrZV9jZWxsIiwicGFyc2Vfd29ya2Jvb2siLCJEaXJlY3RvcnkiLCJsYXN0X2Zvcm11bGEiLCJjdXJfc2hlZXQiLCJQcmVhbWJsZSIsImxhc3RjZWxsIiwibGFzdF9jZWxsIiwiY21udCIsInJuZ0MiLCJybmdSIiwidGVtcF92YWwiLCJjb3VudHJ5IiwiWEZzIiwicGFsZXR0ZSIsImdldF9yZ2IiLCJwcm9jZXNzX2NlbGxfc3R5bGUiLCJ4ZmQiLCJhZGRjZWxsIiwiZmlsZV9kZXB0aCIsImFmaSIsIm9iamVjdHMiLCJsYXN0X1JUIiwiQklGRjJGbXQiLCJCSUZGMkZtdFRhYmxlIiwiRmlsdGVyRGF0YWJhc2VzIiwibGFzdF9sYmwiLCJzZWVuX2NvZGVwYWdlIiwiY3B2YWwiLCJ0bXByaSIsImZha2ViczgiLCJfZnIiLCJfZmMiLCJfZmUiLCJfYXJyYXlzdGFydCIsIl9qIiwiX2l4ZmUiLCJiNGlkeCIsImIyaWR4Iiwibm90ZW9iaiIsIlBTQ0xTSUQiLCJwYXJzZV94bHNfcHJvcHMiLCJEU0kiLCJEb2NTdW1tYXJ5IiwiU0kiLCJTdW1tYXJ5Iiwid3JpdGVfeGxzX3Byb3BzIiwiRFNFbnRyaWVzIiwiU0VudHJpZXMiLCJDRW50cmllcyIsIktleXMiLCJEb2NTdW1tYXJ5UkUiLCJTdW1tYXJ5UkUiLCJDRW50cmllczIiLCJwYXJzZV94bHNjZmIiLCJDb21wT2JqIiwiV0IiLCJXb3JrYm9va1AiLCJfZGF0YSIsIndyaXRlX3hsc2NmYiIsIndicGF0aCIsIndyaXRlX2JpZmZfYnVmIiwid3JpdGVfYmlmZl9jb250aW51ZSIsIndyaXRlX0JJRkYyQkVSUiIsIndyaXRlX0JJRkYyTEFCRUwiLCJ3cml0ZV93c19iaWZmMl9jZWxsIiwid3JpdGVfd3NfYmlmZjIiLCJ3cml0ZV9iaWZmMl9idWYiLCJ3cml0ZV9GT05UU19iaWZmOCIsIndyaXRlX0ZNVFNfYmlmZjgiLCJ3cml0ZV9GRUFUIiwid3JpdGVfQ0VMTFhGU19iaWZmOCIsIndyaXRlX3dzX2JpZmY4X2hsaW5rcyIsIkhMIiwid3JpdGVfd3NfY29sc19iaWZmOCIsIndyaXRlX3dzX2JpZmY4X2NlbGwiLCJ3cml0ZV93c19iaWZmOCIsIl9XQiIsIl9zaGVldCIsIk1BWF9ST1dTIiwid3JpdGVfYmlmZjhfZ2xvYmFsIiwiX3NoZWV0cyIsIl93YiIsImJsZW4iLCJ3cml0ZV9iaWZmOF9idWYiLCJmaXhfd3JpdGVfb3B0cyIsImh0bWxfdG9fc2hlZXQiLCJtdGNoMiIsIkNTIiwiaGQiLCJtaWR4IiwiX3QiLCJtYWtlX2h0bWxfcm93IiwiSFRNTF9CRUdJTiIsIkhUTUxfRU5EIiwiYm9va19uZXciLCJib29rX2FwcGVuZF9zaGVldCIsIm1ha2VfaHRtbF9wcmVhbWJsZSIsInNoZWV0X3RvX2h0bWwiLCJmb290ZXIiLCJzaGVldF9hZGRfZG9tIiwib3JfUiIsIm9yX0MiLCJpc19kb21fZWxlbWVudF9oaWRkZW4iLCJlbHRzIiwiQWVsdHMiLCJBZWx0aSIsInBhcnNlX2RvbV90YWJsZSIsInRhYmxlX3RvX2Jvb2siLCJlbGVtZW50IiwiZ2V0X2NvbXB1dGVkX3N0eWxlIiwiZ2V0X2dldF9jb21wdXRlZF9zdHlsZV9mdW5jdGlvbiIsInBhcnNlX3RleHRfcCIsImZpeGVkIiwibnVtYmVyX2Zvcm1hdHNfb2RzIiwicGFyc2VfY29udGVudF94bWwiLCJORnRhZyIsInNoZWV0YWciLCJyb3d0YWciLCJTaGVldE5hbWVzIiwiY3RhZyIsInRleHRwIiwidGV4dHBpZHgiLCJ0ZXh0UiIsInJvd19vbCIsIm51bWJlcl9mb3JtYXRfbWFwIiwibXJhbmdlIiwibVIiLCJtQyIsInJvd3BlYXQiLCJjb2xwZWF0IiwiYXRhZyIsIl9SZWYiLCJjcmVhdG9yIiwiY3JlYXRvcmlkeCIsImlzc3R1YiIsImludGFibGUiLCJycHRSIiwicnB0IiwibnJhbmdlIiwicHRwIiwicGFyc2Vfb2RzIiwid3JpdGVfc3R5bGVzX29kcyIsIm1hc3Rlcl9zdHlsZXMiLCJ3cml0ZV9jb250ZW50X29kcyIsIndyaXRlX3RleHRfcCIsIm51bGxfY2VsbF94bWwiLCJjb3ZlcmVkX2NlbGxfeG1sIiwiUk9XUyIsIl9GcmVmIiwidGV4dF9wIiwiX3RndCIsIndyaXRlX2F1dG9tYXRpY19zdHlsZXNfb2RzIiwiY2lkeCIsImNvbG9iaiIsImZvZHMiLCJ3cml0ZV9vZHMiLCJ1OF90b19kYXRhdmlldyIsImFycmF5IiwidThzdHIiLCJ1OCIsInN0cnU4IiwidThjb250YWlucyIsInNlYXJjaCIsInU4Y29uY2F0IiwidThhIiwiYWNjIiwicG9wY250IiwicmVhZERlY2ltYWwxMjhMRSIsImV4cCIsIm1hbnRpc3NhIiwid3JpdGVEZWNpbWFsMTI4TEUiLCJwYXJzZV92YXJpbnQ0OSIsInB0ciIsInZhcmludCIsIndyaXRlX3ZhcmludDQ5IiwidmFyaW50X3RvX2kzMiIsImkzMiIsInBhcnNlX3NoYWxsb3ciLCJ3cml0ZV9zaGFsbG93IiwicHJvdG8iLCJpdGVtIiwibWFwcGEiLCJwYXJzZV9pd2FfZmlsZSIsIl9hIiwid3JpdGVfaXdhX2ZpbGUiLCJpYXMiLCJpYSIsIm1pZGF0YSIsImFpcGF5bG9hZCIsIm1pZCIsInBhcnNlX3NuYXBweV9jaHVuayIsImNodW5rcyIsImRlY29tcHJlc3NfaXdhX2ZpbGUiLCJjb21wcmVzc19pd2FfZmlsZSIsImZyYW1lIiwicGFyc2Vfb2xkX3N0b3JhZ2UiLCJyc3N0IiwiZHYiLCJkYXRhX29mZnNldCIsImllZWUiLCJwYXJzZV9uZXdfc3RvcmFnZSIsImQxMjgiLCJ3cml0ZV9uZXdfc3RvcmFnZSIsIndyaXRlX29sZF9zdG9yYWdlIiwicGFyc2VfY2VsbF9zdG9yYWdlIiwicGFyc2VfVFNQX1JlZmVyZW5jZSIsInBiIiwicGFyc2VfVFNUX1RhYmxlRGF0YUxpc3QiLCJsZSIsInJ0cCIsInJ0cHJlZiIsIm10eXBlIiwidHN3cHNhIiwicGFyc2VfVFNUX1RpbGVSb3dJbmZvIiwiX2IiLCJfYyIsIl9lIiwiX2ciLCJfaCIsIl9pIiwiX2siLCJfbCIsIl9tIiwid2lkZV9vZmZzZXRzIiwidXNlZF9zdG9yYWdlX3U4IiwidXNlZF9zdG9yYWdlIiwidXNlZF9zdG9yYWdlX29mZnNldHMiLCJvZmZzZXRzIiwicGFyc2VfVFNUX1RpbGUiLCJzdG9yYWdlIiwicGFyc2VfVFNUX1RhYmxlTW9kZWxBcmNoaXZlIiwic3RvcmUiLCJ0aWxlIiwidGwiLCJfdGlsZSIsInBhcnNlX1RTVF9UYWJsZUluZm9BcmNoaXZlIiwidGFibGVyZWYiLCJwYXJzZV9UTl9TaGVldEFyY2hpdmUiLCJzaGFwZW9mZnMiLCJwYXJzZV9UTl9Eb2N1bWVudEFyY2hpdmUiLCJzaGVldG9mZnMiLCJyb290MiIsInBhcnNlX251bWJlcnNfaXdhIiwiaW5kaWNlcyIsInBhY2tldHMiLCJwYWNrZXQiLCJkb2Nyb290IiwiaXdhbSIsIndyaXRlX3RpbGVfcm93IiwidHJpIiwiU1NUIiwibGFzdF9vZmZzZXQiLCJjZWxsX3N0b3JhZ2UiLCJfZHYiLCJfbGFzdF9vZmZzZXQiLCJfY2VsbF9zdG9yYWdlIiwiY2VsbG9hZCIsIl9jZWxsb2FkIiwid3JpdGVfbnVtYmVyc19pd2EiLCJ0cnVuYyIsImRlcGVuZGVudHMiLCJvbGRfY29udGVudCIsInJhdzEiLCJ4MiIsInBhY2tldDIiLCJ5MiIsImluZGljZXNfdmFyaW50IiwiaXZpIiwibWVzcyIsInhpIiwic2hlZXRyb290cmVmIiwiY3J1aWRzcmVmIiwib2xkYnVja2V0IiwiX3giLCJjcnVpZHMiLCJ1dWlkIiwicm93X2hlYWRlcnMiLCJyb3dfaGVhZGVyX3JlZiIsImJhc2VfYnVja2V0IiwiX2J1Y2tldCIsImNvbF9oZWFkZXJfcmVmIiwic3N0cmVmIiwic2VudHJ5Iiwic3giLCJzc3Ryb290Iiwic3hpIiwic3N0ZGF0YSIsIm5ld3NzdCIsInN5IiwicmF3MzIiLCJ0aWxlcmVmIiwidGVudHJ5IiwidHgiLCJ0aWxlcm9vdCIsInRpbGVkYXRhIiwicm93bG9hZCIsIlIyIiwidGlsZXJvdyIsInR5IiwicmF3MyIsImZpeF9vcHRzX2Z1bmMiLCJnZXRfc2hlZXRfdHlwZSIsInNhZmVfcGFyc2Vfd2JyZWxzIiwid2JyZWxzIiwic2FmZV9wYXJzZV9zaGVldCIsInJlbHNQYXRoIiwic2hlZXRSZWxzIiwic3R5cGUiLCJkZmlsZSIsImRyZWxzcCIsImRyYXciLCJjaGFydHAiLCJjcmVsc3AiLCJ0Y29tbWVudHMiLCJzdHJpcF9mcm9udF9zbGFzaCIsIl96aXAiLCJkaXIiLCJ4bHNiIiwiYmlubmFtZSIsInByb3BkYXRhIiwiY3VzdHByb3BzIiwiZGVwcyIsIndic2hlZXRzIiwid2JleHQiLCJ3YnJlbHNpIiwid2JyZWxzZmlsZSIsIm5tb2RlIiwid3Nsb29wIiwic25qc2VlbiIsInNuaiIsInBhcnNlX3hsc3hjZmIiLCJkc20iLCJzZWRzIiwiZWluZm8iLCJ3cml0ZV96aXBfeGxzeGIiLCJ3cml0ZV96aXBfeGxzeCIsInZiYWZtdCIsIl9zbiIsIndzcmVscyIsIl90eXBlIiwibmVlZF92bWwiLCJuZWVkdGMiLCJyZWFkX2NmYiIsInJlYWRfemlwIiwicmVhZF9wbGFpbnRleHQiLCJtYWluIiwicmVhZF9wbGFpbnRleHRfcmF3IiwicmVhZF91dGYxNiIsImJzdHJpZnkiLCJyZWFkX3BybiIsInJlYWRTeW5jIiwiYWIiLCJ2dSIsIndyaXRlX2NmYl9jdHIiLCJ3cml0ZV96aXBfdHlwZSIsIndyaXRlX3ppcF9kZW5vdWVtZW50Iiwib29wdHMiLCJmdHlwZSIsIndyaXRlX2NmYl90eXBlIiwid3JpdGVfc3RyaW5nX3R5cGUiLCJib20iLCJ3cml0ZV9zdHh0X3R5cGUiLCJ3cml0ZV9iaW5hcnlfdHlwZSIsIndyaXRlU3luYyIsInNoZWV0X3RvX3R4dCIsInNoZWV0X3RvX2NzdiIsIm1ha2VfanNvbl9yb3ciLCJkZWZ2YWwiLCJyYXciLCJpc2VtcHR5Iiwib3V0aSIsImNvdW50ZXIiLCJoZWFkZXJfY250IiwicXJlZyIsIm1ha2VfY3N2X3JvdyIsIkZTIiwidHh0IiwiZW5kcmVnZXgiLCJzaGVldF90b19mb3JtdWxhZSIsImNtZHMiLCJzaGVldF9hZGRfanNvbiIsImpzIiwiSlMiLCJ3c19nZXRfY2VsbF9zdHViIiwianNvbl90b19zaGVldCIsIlJDIiwid2Jfc2hlZXRfaWR4Iiwic2giLCJyb2xsIiwiYm9va19zZXRfc2hlZXRfdmlzaWJpbGl0eSIsInZpcyIsImNlbGxfc2V0X251bWJlcl9mb3JtYXQiLCJjZWxsX3NldF9oeXBlcmxpbmsiLCJjZWxsX3NldF9pbnRlcm5hbF9saW5rIiwiY2VsbF9hZGRfY29tbWVudCIsImF1dGhvciIsInNoZWV0X3NldF9hcnJheV9mb3JtdWxhIiwiZHluYW1pYyIsInJuZ3N0ciIsInV0aWxzIiwic2hlZXRfZnJvbV9hcnJheV9vZl9hcnJheXMiLCJYTFNYLnV0aWxzIiwiWExTWC5TU0YiLCJleHBvcnRfanNvbl90b19leGNlbCIsInRoIiwianNvbkRhdGEiLCJkZWZhdWx0VGl0bGUiLCJ3c19uYW1lIiwid2JvdXQiLCJYTFNYLndyaXRlIiwidGl0bGUiLCJGaWxlU2F2ZXIiLCJwcm9jZXNzQ3N2RGF0YSIsImRhdGFTdHJpbmciLCJkYXRhU3RyaW5nTGluZXMiLCJsaXN0IiwiaW1wb3J0Q3N2RnJvbUZpbGUiLCJyZWFkZXIiLCJyZXNvbHZlIiwicmVqZWN0IiwiZXZ0IiwiWExTWC5yZWFkIiwid3NuYW1lIiwiaW1wb3J0ZWQiLCJ0cmFuc2Zvcm1FeHBvcnRDb2x1bW4iLCJleHBvcnRVdGlsIiwiX3BhcmFtcyIsIkNzdiIsIkV4cG9ydENzdiIsIkV4Y2VsLmV4cG9ydF9qc29uX3RvX2V4Y2VsIiwiaW1wb3J0VXRpbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQU9BLFNBQVNBLEdBQUtDLEdBQVM7QUFDbkIsUUFBTUMsSUFBSyxVQUFVO0FBQ3JCLFNBQUlELE1BQVksT0FDQ0MsRUFBRyxRQUFRLFlBQVksSUFBSSxNQUFNQSxFQUFHLFFBQVEsTUFBTSxJQUFJLE1BRWxELElBQUksT0FBTyxxQkFBcUIsRUFDeEMsS0FBS0EsQ0FBRSxHQUNMLFdBQVcsT0FBTyxFQUFLLEtBRXZCLEtBR0pBLEVBQUcsUUFBUUQsQ0FBTyxJQUFJO0FBRXJDO0FBRUEsTUFBTUUsS0FBTTtBQUFBLEVBQ1IsVUFBVztBQUNQLFFBQUlDLElBQU07QUFDVixVQUFNQyxJQUFTLG1CQUFtQixLQUFLLFVBQVUsU0FBUyxHQUNwREMsSUFBVSxDQUFDLENBQUMsVUFBVSxVQUFVLE1BQU0sY0FBYyxHQUNwREMsSUFBSyxVQUFVLFVBQVUsUUFBUSxTQUFTO0FBRWhELFdBQUlGLE1BQ0FELElBQU0sT0FBTyxPQUFPLEVBQUUsSUFFdEIsVUFBVSxXQUFXLFFBQVEsU0FBUyxNQUFNLE9BQzVDQSxJQUFNLEtBRU5FLEtBQVdDLE1BQU8sT0FDbEJILElBQU0sS0FHSEEsTUFBUTtBQUFBLEVBQ2xCO0FBQUEsRUFFRCxVQUFXO0FBQ1AsV0FBTyxPQUFPLEtBQUssVUFBVSxTQUFTO0FBQUEsRUFDekM7QUFBQSxFQUVELGdCQUFpQkksR0FBTTtBQUNuQixVQUFNQyxJQUFNO0FBRVosUUFBSSxPQUFPLFFBQVEsT0FBTyxPQUFPLE9BQU8sSUFBSSxpQkFBaUI7QUFDekQsWUFBTUMsSUFBVSxJQUFJLEtBQUssQ0FBQ0QsSUFBTUQsQ0FBSSxHQUFHLEVBQUUsTUFBTSxXQUFVLENBQUU7QUFDM0QsYUFBTyxJQUFJLGdCQUFnQkUsQ0FBTztBQUFBLElBQzlDO0FBQ1ksYUFBTyx1Q0FBdUNELElBQU0sbUJBQW1CRCxDQUFJO0FBQUEsRUFFbEY7QUFBQSxFQUVELFNBQVVHLEdBQVVILEdBQU07QUFDdEIsUUFBSVIsR0FBSSxJQUFJLEtBQUtBLEdBQUksSUFBSSxJQUFJLElBQUk7QUFFN0IsWUFBTVksSUFBTyxPQUFPLElBQUksS0FBSyxlQUFlLFFBQVE7QUFDcEQsTUFBQUEsRUFBSyxTQUFTLFVBQVUsU0FDeEJBLEVBQUssU0FBUyxNQUFNSixDQUFJLEdBQ3hCSSxFQUFLLFNBQVMsU0FDZEEsRUFBSyxTQUFTLFlBQVksVUFBVUQsSUFBVyxNQUFNLEdBQ3JEQyxFQUFLLE1BQUs7QUFBQSxJQUN0QixXQUFtQlosR0FBSSxJQUFJLE1BQU0sTUFBTSxLQUFLLFFBQVMsS0FBSSxLQUFLLFdBQVc7QUFDN0QsWUFBTVMsSUFBTSxVQUNOQyxJQUFVLElBQUksS0FBSyxDQUFDRCxJQUFNRCxDQUFJLEdBQUcsRUFBRSxNQUFNLFdBQVUsQ0FBRTtBQUMzRCxnQkFBVSxXQUFXRSxHQUFTQyxJQUFXLE1BQU07QUFBQSxJQUMzRCxPQUFlO0FBQ0gsWUFBTUUsSUFBTyxTQUFTLGNBQWMsR0FBRztBQUN2QyxNQUFBQSxFQUFLLFdBQVdGLElBQVcsUUFDM0JFLEVBQUssT0FBTyxLQUFLLGdCQUFnQkwsQ0FBSSxHQUNyQyxTQUFTLEtBQUssWUFBWUssQ0FBSSxHQUM5QkEsRUFBSyxNQUFLLEdBQ1YsU0FBUyxLQUFLLFlBQVlBLENBQUk7QUFBQSxJQUNqQztBQUFBLEVBQ0o7QUFDTCxHQ3hFTUMsS0FBVTtBQUFBLEdBQ1ZDLEtBQWEsQ0FBQ0MsR0FBU0MsR0FBSyxFQUFFLFdBQUFDLEdBQVcsUUFBQUMsRUFBTSxNQUFPO0FBQ3hELFFBQU1DLElBQU9ILEVBQUksSUFBSSxDQUFBSSxNQUNaRixLQUVMRSxJQUFPLE9BQU9BLEtBQVMsV0FBV0EsRUFBSyxRQUFRLE1BQU0sR0FBRyxJQUFJQSxHQUNyRCxJQUFJQSxDQUFJLE9BSEtBLENBSXZCO0FBQ0QsRUFBQUwsRUFBUSxLQUFLSSxFQUFLLEtBQUtGLENBQVMsQ0FBQztBQUNyQyxHQUVNSSxLQUFXO0FBQUEsRUFDYixXQUFXO0FBQUEsRUFDWCxRQUFRO0FBQ1o7QUFFZSxTQUFTbkIsR0FBSW9CLEdBQVNDLEdBQU9DLEdBQVNDLElBQVcsSUFBTztBQUNuRSxFQUFBRCxJQUFVLE9BQU8sT0FBTyxDQUFFLEdBQUVILElBQVVHLENBQU87QUFDN0MsTUFBSUU7QUFDSixRQUFNWCxJQUFVLENBQUEsR0FDVlksSUFBUyxDQUFBO0FBRWYsU0FBSUwsS0FDQUksSUFBY0osRUFBUSxJQUFJLENBQUFNLE1BQ2xCLE9BQU9BLEtBQU0sV0FBaUJBLEtBQzdCSCxLQUNERSxFQUFPLEtBQUssT0FBT0MsRUFBRSxRQUFVLE1BQWNBLEVBQUUsUUFBUUEsRUFBRSxJQUFJLEdBRTFEQSxFQUFFLEtBQ1osR0FDR0QsRUFBTyxTQUFTLEtBQUdiLEdBQVdDLEdBQVNZLEdBQVFILENBQU8sTUFFMURFLElBQWMsQ0FBQSxHQUNkSCxFQUFNLFFBQVEsQ0FBQUssTUFBSztBQUNmLElBQUssTUFBTSxRQUFRQSxDQUFDLE1BQ2hCRixJQUFjQSxFQUFZLE9BQU8sT0FBTyxLQUFLRSxDQUFDLENBQUM7QUFBQSxFQUUvRCxDQUFTLEdBQ0dGLEVBQVksU0FBUyxNQUNyQkEsSUFBY0EsRUFBWSxPQUFPLENBQUNHLEdBQU9DLEdBQU9DLE1BQVNBLEVBQUssUUFBUUYsQ0FBSyxNQUFNQyxDQUFLLEdBQ2pGTCxLQUFVWCxHQUFXQyxHQUFTVyxHQUFhRixDQUFPLEtBSTNELE1BQU0sUUFBUUQsQ0FBSyxLQUNuQkEsRUFBTSxRQUFRLENBQUFQLE1BQU87QUFDakIsSUFBSyxNQUFNLFFBQVFBLENBQUcsTUFDbEJBLElBQU1VLEVBQVksSUFBSSxDQUFBTSxNQUFNLE9BQU9oQixFQUFJZ0IsQ0FBQyxJQUFNLE1BQWNoQixFQUFJZ0IsQ0FBQyxJQUFJLEVBQUcsSUFFNUVsQixHQUFXQyxHQUFTQyxHQUFLUSxDQUFPO0FBQUEsRUFDNUMsQ0FBUyxHQUVFVCxFQUFRLEtBQUtGLEVBQU87QUFDL0I7QUM5Q0E7QUFBQSxDQUVDLFNBQVVvQixHQUFNO0FBS2IsTUFGQUEsRUFBSyxNQUFNQSxFQUFLLE9BQU9BLEVBQUssV0FFeEJBLEVBQUssUUFBUUEsRUFBSztBQUNsQixRQUFJO0FBQ0EsVUFBSTtBQUNKO0FBQUEsSUFDWixRQUFvQjtBQUFBLElBQUU7QUFLbEIsTUFBSUMsSUFBY0QsRUFBSyxlQUFlQSxFQUFLLHFCQUFxQkEsRUFBSyxrQkFBbUIsU0FBU0EsR0FBTTtBQUMvRixRQUNJRSxJQUFZLFNBQVNDLEdBQVE7QUFDekIsYUFBTyxPQUFPLFVBQVUsU0FBUyxLQUFLQSxDQUFNLEVBQUUsTUFBTSxvQkFBb0IsRUFBRSxDQUFDO0FBQUEsSUFDOUUsR0FDQ0MsSUFBa0IsV0FBdUI7QUFDdkMsV0FBSyxPQUFPO0lBQ2YsR0FDQ0MsSUFBVyxTQUFjbEIsR0FBTW1CLEdBQU1DLEdBQVU7QUFDN0MsV0FBSyxPQUFPcEIsR0FDWixLQUFLLE9BQU9BLEVBQUssUUFDakIsS0FBSyxPQUFPbUIsR0FDWixLQUFLLFdBQVdDO0FBQUEsSUFDbkIsR0FDQ0MsSUFBWUosRUFBZ0IsV0FDNUJLLElBQVdKLEVBQVMsV0FDcEJLLElBQWlCVixFQUFLLGdCQUN0QlcsSUFBZ0IsU0FBU0wsR0FBTTtBQUM3QixXQUFLLE9BQU8sS0FBSyxLQUFLLE9BQU9BLENBQUk7QUFBQSxJQUNwQyxHQUNDTSxJQUNFLDhIQUVGLE1BQU0sR0FBRyxHQUNUQyxJQUFlRCxFQUFjLFFBQzdCRSxJQUFXZCxFQUFLLE9BQU9BLEVBQUssYUFBYUEsR0FDekNlLElBQXlCRCxFQUFTLGlCQUNsQ0UsSUFBeUJGLEVBQVMsaUJBQ2xDRyxJQUFNSCxHQUNOSSxJQUFPbEIsRUFBSyxNQUNabUIsSUFBT25CLEVBQUssTUFFWm9CLElBQWNwQixFQUFLLGFBQ25CcUIsSUFBYXJCLEVBQUs7QUFHeEIsU0FEQUssRUFBUyxPQUFPSSxFQUFTLE9BQU8sSUFDekJJO0FBQ0gsTUFBQUYsRUFBYyxVQUFVQyxFQUFjQyxDQUFZLENBQUMsSUFBSUEsSUFBZTtBQUUxRSxXQUFLQyxFQUFTLG9CQUNWRyxJQUFNakIsRUFBSyxNQUFNLEtBRXJCaUIsRUFBSSxrQkFBa0IsU0FBU0ssR0FBTTtBQUNqQyxVQUNJaEIsSUFBT2dCLEVBQUssTUFDVkM7QUFLTixVQUhJakIsTUFBUyxTQUNUQSxJQUFPLDZCQUVQZ0IsYUFBZ0JqQjtBQUVoQixlQURBa0IsSUFBa0IsVUFBVWpCLEdBQ3hCZ0IsRUFBSyxhQUFhLFdBQ1hDLElBQWtCLGFBQWFELEVBQUssT0FDcENBLEVBQUssYUFBYSxRQUNsQkMsSUFBa0IsTUFBTSxtQkFBbUJELEVBQUssSUFBSSxJQUN6REosSUFDS0ssSUFBa0IsYUFBYUwsRUFBS0ksRUFBSyxJQUFJLElBRTdDQyxJQUFrQixNQUFNLG1CQUFtQkQsRUFBSyxJQUFJO0FBRTVELFVBQUlQO0FBQ1AsZUFBT0EsRUFBdUIsS0FBS0QsR0FBVVEsQ0FBSTtBQUFBLElBRXJFLEdBQ1lMLEVBQUksa0JBQWtCLFNBQVNPLEdBQVk7QUFDdkMsTUFBSUEsRUFBVyxVQUFVLEdBQUcsQ0FBQyxNQUFNLFdBQVdSLEtBQzFDQSxFQUF1QixLQUFLRixHQUFVVSxDQUFVO0FBQUEsSUFFcEUsR0FDWWhCLEVBQVUsU0FBUyxTQUFTckIsR0FBbUI7QUFDM0MsVUFBSXNDLElBQUssS0FBSztBQUVkLFVBQUlKLE1BQWVsQyxhQUFnQmlDLEtBQWVqQyxhQUFnQmtDLElBQWE7QUFPM0UsaUJBTElLLElBQU0sSUFDSkMsSUFBTSxJQUFJTixFQUFXbEMsQ0FBSSxHQUN6QnlDLElBQUksR0FDSkMsSUFBVUYsRUFBSSxRQUViQyxJQUFJQyxHQUFTRDtBQUNoQixVQUFBRixLQUFPLE9BQU8sYUFBYUMsRUFBSUMsQ0FBQyxDQUFDO0FBRXJDLFFBQUFILEVBQUcsS0FBS0MsQ0FBRztBQUFBLE1BQy9CLFdBQTJCeEIsRUFBVWYsQ0FBSSxNQUFNLFVBQVVlLEVBQVVmLENBQUksTUFBTTtBQUN6RCxZQUFJdUIsR0FBZ0I7QUFDaEIsY0FBSW9CLElBQUssSUFBSXBCO0FBQ2IsVUFBQWUsRUFBRyxLQUFLSyxFQUFHLG1CQUFtQjNDLENBQUksQ0FBQztBQUFBLFFBQzNEO0FBRXdCLGdCQUFNLElBQUl3QixFQUFjLGtCQUFrQjtBQUFBO0FBRTNDLFFBQUl4QixhQUFnQmtCLElBQ25CbEIsRUFBSyxhQUFhLFlBQVlnQyxJQUM5Qk0sRUFBRyxLQUFLTixFQUFLaEMsRUFBSyxJQUFJLENBQUMsSUFDaEJBLEVBQUssYUFBYSxRQUN6QnNDLEVBQUcsS0FBSyxtQkFBbUJ0QyxFQUFLLElBQUksQ0FBQyxJQUM5QkEsRUFBSyxhQUFhLFNBQ3pCc0MsRUFBRyxLQUFLdEMsRUFBSyxJQUFJLEtBR2pCLE9BQU9BLEtBQVMsYUFDaEJBLEtBQVEsS0FHWnNDLEVBQUcsS0FBSyxTQUFTLG1CQUFtQnRDLENBQUksQ0FBQyxDQUFDO0FBQUEsSUFFOUQsR0FDWXFCLEVBQVUsVUFBVSxTQUFTRixHQUFNO0FBQy9CLGFBQUssVUFBVSxXQUNYQSxJQUFPLE9BRUosSUFBSUQsRUFBUyxLQUFLLEtBQUssS0FBSyxFQUFFLEdBQUdDLEdBQU0sS0FBSztBQUFBLElBQ25FLEdBQ1lFLEVBQVUsV0FBVyxXQUFXO0FBQzVCLGFBQU87QUFBQSxJQUN2QixHQUNZQyxFQUFTLFFBQVEsU0FBU3NCLEdBQU9DLEdBQUsxQixHQUFNO0FBQ3hDLFVBQUkyQixJQUFPLFVBQVU7QUFDckIsYUFBSUEsSUFBTyxNQUNQM0IsSUFBTyxPQUVKLElBQUlEO0FBQUEsUUFDUCxLQUFLLEtBQUssTUFBTTBCLEdBQU9FLElBQU8sSUFBSUQsSUFBTSxLQUFLLEtBQUssTUFBTTtBQUFBLFFBQ3REMUI7QUFBQSxRQUNBLEtBQUs7QUFBQSxNQUMzQjtBQUFBLElBQ0EsR0FDWUcsRUFBUyxXQUFXLFdBQVc7QUFDM0IsYUFBTztBQUFBLElBQ3ZCLEdBQ1lBLEVBQVMsUUFBUSxXQUFXO0FBQ3hCLFdBQUssT0FBTyxLQUFLLEtBQUssU0FBUztBQUFBLElBQy9DLEdBQ21CTDtBQUFBLEVBQ25CLEVBQVVKLENBQUk7QUFFVixFQUFBQSxFQUFLLE9BQU8sU0FBY2tDLEdBQVczQyxHQUFTO0FBQzFDLFFBQUllLElBQU9mLEtBQVdBLEVBQVEsUUFBUSxJQUNsQzRDLElBQVUsSUFBSWxDO0FBQ2xCLFFBQUlpQztBQUNBLGVBQVNOLElBQUksR0FBR1EsSUFBTUYsRUFBVSxRQUFRTixJQUFJUSxHQUFLUjtBQUM3QyxRQUFBTyxFQUFRLE9BQU9ELEVBQVVOLENBQUMsQ0FBQztBQUduQyxXQUFPTyxFQUFRLFFBQVE3QixDQUFJO0FBQUEsRUFDbkM7QUFDQSxHQUFFLE9BQU8sT0FBUyxPQUFlLFFBQVEsT0FBTyxTQUFXLE9BQWUsVUFBVStCLFdBQUssV0FBV0EsVUFBSTs7O0FDbEx4RyxHQUFDLFNBQVNDLEdBQUVDLEdBQUU7QUFBMkYsSUFBQUEsRUFBQztBQUFBLEVBQTZDLEdBQUdGLElBQUssV0FBVTtBQUFjLGFBQVNFLEVBQUVELEdBQUVDLEdBQUU7QUFBQyxhQUFtQixPQUFPQSxJQUFwQixNQUFzQkEsSUFBRSxFQUFDLFNBQVEsR0FBRSxJQUFZLE9BQU9BLEtBQWpCLGFBQXFCLFFBQVEsS0FBSyxvREFBb0QsR0FBRUEsSUFBRSxFQUFDLFNBQVEsQ0FBQ0EsRUFBQyxJQUFHQSxFQUFFLFdBQVMsNkVBQTZFLEtBQUtELEVBQUUsSUFBSSxJQUFFLElBQUksS0FBSyxDQUFDLFVBQVNBLENBQUMsR0FBRSxFQUFDLE1BQUtBLEVBQUUsS0FBSSxDQUFDLElBQUVBO0FBQUEsSUFBQztBQUFDLGFBQVNFLEVBQUVGLEdBQUVDLEdBQUVDLEdBQUU7QUFBQyxVQUFJQyxJQUFFLElBQUk7QUFBZSxNQUFBQSxFQUFFLEtBQUssT0FBTUgsQ0FBQyxHQUFFRyxFQUFFLGVBQWEsUUFBT0EsRUFBRSxTQUFPLFdBQVU7QUFBQyxRQUFBQyxFQUFFRCxFQUFFLFVBQVNGLEdBQUVDLENBQUM7QUFBQSxNQUFDLEdBQUVDLEVBQUUsVUFBUSxXQUFVO0FBQUMsZ0JBQVEsTUFBTSx5QkFBeUI7QUFBQSxNQUFDLEdBQUVBLEVBQUUsS0FBSTtBQUFBLElBQUU7QUFBQyxhQUFTQSxFQUFFSCxHQUFFO0FBQUMsVUFBSUMsSUFBRSxJQUFJO0FBQWUsTUFBQUEsRUFBRSxLQUFLLFFBQU9ELEdBQUUsRUFBRTtBQUFFLFVBQUc7QUFBQyxRQUFBQyxFQUFFO01BQU0sUUFBUztBQUFBLE1BQUU7QUFBQSxhQUFPLE9BQUtBLEVBQUUsVUFBUSxPQUFLQSxFQUFFO0FBQUEsSUFBTTtBQUFDLGFBQVNJLEVBQUVMLEdBQUU7QUFBQyxVQUFHO0FBQUMsUUFBQUEsRUFBRSxjQUFjLElBQUksV0FBVyxPQUFPLENBQUM7QUFBQSxNQUFDLFFBQVM7QUFBQyxZQUFJQyxJQUFFLFNBQVMsWUFBWSxhQUFhO0FBQUUsUUFBQUEsRUFBRSxlQUFlLFNBQVEsSUFBRyxJQUFHLFFBQU8sR0FBRSxHQUFFLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsR0FBRSxJQUFJLEdBQUVELEVBQUUsY0FBY0MsQ0FBQztBQUFBLE1BQUM7QUFBQSxJQUFDO0FBQUMsUUFBSUssSUFBWSxPQUFPLFVBQWpCLFlBQXlCLE9BQU8sV0FBUyxTQUFPLFNBQWlCLE9BQU8sUUFBakIsWUFBdUIsS0FBSyxTQUFPLE9BQUssT0FBZSxPQUFPQyxNQUFqQixZQUF5QkEsR0FBTyxXQUFTQSxLQUFPQSxLQUFPLFFBQU9QLElBQUVNLEVBQUUsYUFBVyxZQUFZLEtBQUssVUFBVSxTQUFTLEtBQUcsY0FBYyxLQUFLLFVBQVUsU0FBUyxLQUFHLENBQUMsU0FBUyxLQUFLLFVBQVUsU0FBUyxHQUFFRixJQUFFRSxFQUFFLFdBQW1CLE9BQU8sVUFBakIsWUFBeUIsV0FBU0EsSUFBRSxXQUFVO0FBQUEsSUFBRSxJQUFDLGNBQWEsa0JBQWtCLGFBQVcsQ0FBQ04sSUFBRSxTQUFTQyxHQUFFRyxHQUFFSSxHQUFFO0FBQUMsVUFBSWxCLElBQUVnQixFQUFFLE9BQUtBLEVBQUUsV0FBVUcsSUFBRSxTQUFTLGNBQWMsR0FBRztBQUFFLE1BQUFMLElBQUVBLEtBQUdILEVBQUUsUUFBTSxZQUFXUSxFQUFFLFdBQVNMLEdBQUVLLEVBQUUsTUFBSSxZQUFxQixPQUFPUixLQUFqQixZQUFvQlEsRUFBRSxPQUFLUixHQUFFUSxFQUFFLFdBQVMsU0FBUyxTQUFPSixFQUFFSSxDQUFDLElBQUVOLEVBQUVNLEVBQUUsSUFBSSxJQUFFUCxFQUFFRCxHQUFFRyxHQUFFSSxDQUFDLElBQUVILEVBQUVJLEdBQUVBLEVBQUUsU0FBTyxRQUFRLE1BQUlBLEVBQUUsT0FBS25CLEVBQUUsZ0JBQWdCVyxDQUFDLEdBQUUsV0FBVyxXQUFVO0FBQUMsUUFBQVgsRUFBRSxnQkFBZ0JtQixFQUFFLElBQUk7QUFBQSxNQUFDLEdBQUUsR0FBRyxHQUFFLFdBQVcsV0FBVTtBQUFDLFFBQUFKLEVBQUVJLENBQUM7QUFBQSxNQUFDLEdBQUUsQ0FBQztBQUFBLElBQUUsSUFBRSxzQkFBcUIsWUFBVSxTQUFTSCxHQUFFRixHQUFFSSxHQUFFO0FBQUMsVUFBR0osSUFBRUEsS0FBR0UsRUFBRSxRQUFNLFlBQXFCLE9BQU9BLEtBQWpCO0FBQW1CLGtCQUFVLGlCQUFpQkwsRUFBRUssR0FBRUUsQ0FBQyxHQUFFSixDQUFDO0FBQUEsZUFBVUQsRUFBRUcsQ0FBQztBQUFFLFFBQUFKLEVBQUVJLEdBQUVGLEdBQUVJLENBQUM7QUFBQSxXQUFNO0FBQUMsWUFBSWxCLElBQUUsU0FBUyxjQUFjLEdBQUc7QUFBRSxRQUFBQSxFQUFFLE9BQUtnQixHQUFFaEIsRUFBRSxTQUFPLFVBQVMsV0FBVyxXQUFVO0FBQUMsVUFBQWUsRUFBRWYsQ0FBQztBQUFBLFFBQUMsQ0FBQztBQUFBLE1BQUM7QUFBQSxJQUFDLElBQUUsU0FBU1csR0FBRUUsR0FBRUUsR0FBRUQsR0FBRTtBQUFDLFVBQUdBLElBQUVBLEtBQUcsS0FBSyxJQUFHLFFBQVEsR0FBRUEsTUFBSUEsRUFBRSxTQUFTLFFBQU1BLEVBQUUsU0FBUyxLQUFLLFlBQVUsbUJBQTRCLE9BQU9ILEtBQWpCO0FBQW1CLGVBQU9DLEVBQUVELEdBQUVFLEdBQUVFLENBQUM7QUFBRSxVQUFJRyxJQUErQlAsRUFBRSxTQUEvQiw0QkFBb0NYLElBQUUsZUFBZSxLQUFLZ0IsRUFBRSxXQUFXLEtBQUdBLEVBQUUsUUFBT0csSUFBRSxlQUFlLEtBQUssVUFBVSxTQUFTO0FBQUUsV0FBSUEsS0FBR0QsS0FBR2xCLEtBQUdVLE1BQWlCLE9BQU8sYUFBcEIsS0FBK0I7QUFBQyxZQUFJdkMsSUFBRSxJQUFJO0FBQVcsUUFBQUEsRUFBRSxZQUFVLFdBQVU7QUFBQyxjQUFJdUMsSUFBRXZDLEVBQUU7QUFBTyxVQUFBdUMsSUFBRVMsSUFBRVQsSUFBRUEsRUFBRSxRQUFRLGdCQUFlLHVCQUF1QixHQUFFSSxJQUFFQSxFQUFFLFNBQVMsT0FBS0osSUFBRSxXQUFTQSxHQUFFSSxJQUFFO0FBQUEsUUFBSSxHQUFFM0MsRUFBRSxjQUFjd0MsQ0FBQztBQUFBLE1BQUMsT0FBSztBQUFDLFlBQUlTLElBQUVKLEVBQUUsT0FBS0EsRUFBRSxXQUFVSyxJQUFFRCxFQUFFLGdCQUFnQlQsQ0FBQztBQUFFLFFBQUFHLElBQUVBLEVBQUUsV0FBU08sSUFBRSxTQUFTLE9BQUtBLEdBQUVQLElBQUUsTUFBSyxXQUFXLFdBQVU7QUFBQyxVQUFBTSxFQUFFLGdCQUFnQkMsQ0FBQztBQUFBLFFBQUMsR0FBRSxHQUFHO0FBQUEsTUFBQztBQUFBLElBQUM7QUFBRyxJQUFBTCxFQUFFLFNBQU9GLEVBQUUsU0FBT0EsR0FBK0JRLEVBQUEsVUFBZVI7QUFBQSxFQUFFLENBQUM7Ozs7QUNBaHBGO0FBSUEsSUFBSVMsS0FBTyxDQUFBO0FBQ1hBLEdBQUssVUFBVTtBQUNaLElBQTBCQyxLQUFlLE1BRXhDQyxLQUFhLENBQUUsS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BRTlGQyxLQUFTO0FBQUE7QUFBQSxFQUNMLEdBQWE7QUFBQTtBQUFBO0FBQUEsRUFDYixHQUFZO0FBQUE7QUFBQTtBQUFBLEVBQ1osR0FBWTtBQUFBO0FBQUE7QUFBQSxFQUNaLElBQVk7QUFBQTtBQUFBO0FBQUEsRUFDWixLQUFjO0FBQUE7QUFBQTtBQUFBLEVBQ2QsS0FBYztBQUFBO0FBQUE7QUFBQSxFQUNkLEtBQWE7QUFBQTtBQUFBO0FBQUEsRUFDYixLQUFjO0FBQUE7QUFBQTtBQUFBLEVBQ2QsS0FBYztBQUFBO0FBQUE7QUFBQSxFQUNkLEtBQWE7QUFBQTtBQUFBO0FBQUEsRUFDYixLQUFhO0FBQUE7QUFBQTtBQUFBLEVBQ2IsS0FBYTtBQUFBO0FBQUE7QUFBQSxFQUNiLEtBQWE7QUFBQTtBQUFBO0FBQUEsRUFDYixLQUFhO0FBQUE7QUFBQTtBQUFBLEVBQ2IsS0FBYTtBQUFBO0FBQUE7QUFBQSxFQUNiLEtBQWE7QUFBQTtBQUFBO0FBQUEsRUFDYixLQUFjO0FBQUE7QUFBQTtBQUFBLEVBQ2QsS0FBYTtBQUFBO0FBQUE7QUFBQSxFQUNiLEtBQWE7QUFBQTtBQUFBO0FBQUEsRUFDYixJQUFhO0FBQUE7QUFDckIsR0FFSUMsS0FBVyxTQUFTQyxHQUFlO0FBQUUsRUFBR0gsR0FBVyxRQUFRRyxDQUFFLEtBQUssT0FBWUosS0FBZUUsR0FBTSxDQUFDLElBQUlFOztBQUM1RyxTQUFTQyxLQUFhO0FBQUUsRUFBQUYsR0FBUyxJQUFJO0FBQUk7QUFFekMsSUFBSUcsS0FBUyxTQUFTRixHQUFlO0FBQXlCLEVBQUFELEdBQVNDLENBQUU7O0FBQ3pFLFNBQVNHLEtBQVc7QUFBRSxFQUFBRCxHQUFPLElBQUksR0FBR0QsR0FBWTtBQUFHO0FBRW5ELFNBQVNHLEdBQVd6RSxHQUFtQztBQUFnQyxXQUExQjBFLElBQXNCLENBQUUsR0FBVWpDLElBQUksR0FBR1EsSUFBTWpELEVBQUssUUFBUXlDLElBQUlRLEdBQUssRUFBRVI7QUFBRyxJQUFBaUMsRUFBRWpDLENBQUMsSUFBSXpDLEVBQUssV0FBV3lDLENBQUM7QUFBRyxTQUFPaUM7QUFBSTtBQUU3SyxTQUFTQyxHQUFZM0UsR0FBNEI7QUFFaEQsV0FESTBFLElBQXNCLENBQUEsR0FDbEJqQyxJQUFJLEdBQUdBLElBQUt6QyxFQUFLLFVBQVEsR0FBSSxFQUFFeUM7QUFBRyxJQUFBaUMsRUFBRWpDLENBQUMsSUFBSSxPQUFPLGFBQWF6QyxFQUFLLFdBQVcsSUFBRXlDLENBQUMsS0FBS3pDLEVBQUssV0FBVyxJQUFFeUMsSUFBRSxDQUFDLEtBQUcsRUFBRTtBQUN2SCxTQUFPaUMsRUFBRSxLQUFLLEVBQUU7QUFDakI7QUFDQSxTQUFTRSxHQUFZNUUsR0FBNEI7QUFFaEQsV0FESTBFLElBQXNCLENBQUEsR0FDbEJqQyxJQUFJLEdBQUdBLElBQUt6QyxFQUFLLFVBQVEsR0FBSSxFQUFFeUM7QUFBRyxJQUFBaUMsRUFBRWpDLENBQUMsSUFBSSxPQUFPLGFBQWF6QyxFQUFLLFdBQVcsSUFBRXlDLElBQUUsQ0FBQyxLQUFLekMsRUFBSyxXQUFXLElBQUV5QyxDQUFDLEtBQUcsRUFBRTtBQUN2SCxTQUFPaUMsRUFBRSxLQUFLLEVBQUU7QUFDakI7QUFFQSxJQUFJRyxLQUFRLFNBQVM3RSxHQUE0QjtBQUNoRCxNQUFJOEUsSUFBSzlFLEVBQUssV0FBVyxDQUFDLEdBQUcrRSxJQUFLL0UsRUFBSyxXQUFXLENBQUM7QUFDbkQsU0FBRzhFLEtBQU0sT0FBUUMsS0FBTSxNQUFhSixHQUFZM0UsRUFBSyxNQUFNLENBQUMsQ0FBQyxJQUMxRDhFLEtBQU0sT0FBUUMsS0FBTSxNQUFhSCxHQUFZNUUsRUFBSyxNQUFNLENBQUMsQ0FBQyxJQUMxRDhFLEtBQU0sUUFBZTlFLEVBQUssTUFBTSxDQUFDLElBQzdCQTtBQUNSLEdBRUlnRixLQUFXLFNBQWNDLEdBQXlCO0FBQUUsU0FBTyxPQUFPLGFBQWFBLENBQUM7R0FDaEZDLEtBQVcsU0FBY0QsR0FBeUI7QUFBRSxTQUFPLE9BQU8sYUFBYUEsQ0FBQztHQUVoRkUsSUFvQkFDLEtBQWE7QUFDakIsU0FBU0MsR0FBY0MsR0FBTztBQUc1QixXQUZJWixJQUFJLElBQ0pJLElBQUssR0FBR0MsSUFBSyxHQUFHUSxJQUFLLEdBQUdDLElBQUssR0FBR0MsSUFBSyxHQUFHQyxJQUFLLEdBQUdDLElBQUssR0FDaERsRCxJQUFJLEdBQUdBLElBQUk2QyxFQUFNO0FBQ3hCLElBQUFSLElBQUtRLEVBQU0sV0FBVzdDLEdBQUcsR0FDekIrQyxJQUFLVixLQUFNLEdBQ1hDLElBQUtPLEVBQU0sV0FBVzdDLEdBQUcsR0FDekJnRCxLQUFNWCxJQUFLLE1BQU0sSUFBSUMsS0FBTSxHQUMzQlEsSUFBS0QsRUFBTSxXQUFXN0MsR0FBRyxHQUN6QmlELEtBQU1YLElBQUssT0FBTyxJQUFJUSxLQUFNLEdBQzVCSSxJQUFLSixJQUFLLElBQ04sTUFBTVIsQ0FBRSxJQUNWVyxJQUFLQyxJQUFLLEtBQ0QsTUFBTUosQ0FBRSxNQUNqQkksSUFBSyxLQUVQakIsS0FBS1UsR0FBVyxPQUFPSSxDQUFFLElBQUlKLEdBQVcsT0FBT0ssQ0FBRSxJQUFJTCxHQUFXLE9BQU9NLENBQUUsSUFBSU4sR0FBVyxPQUFPTyxDQUFFO0FBRW5HLFNBQU9qQjtBQUNUO0FBQ0EsU0FBU2tCLEdBQWNOLEdBQU87QUFDNUIsTUFBSVosSUFBSSxJQUNKSSxJQUFLLEdBQUdDLElBQUssR0FBR1EsSUFBSyxHQUFHQyxJQUFLLEdBQUdDLElBQUssR0FBR0MsSUFBSyxHQUFHQyxJQUFLO0FBQ3pELEVBQUFMLElBQVFBLEVBQU0sUUFBUSxnQkFBZ0IsRUFBRTtBQUN4QyxXQUFTN0MsSUFBSSxHQUFHQSxJQUFJNkMsRUFBTTtBQUN4QixJQUFBRSxJQUFLSixHQUFXLFFBQVFFLEVBQU0sT0FBTzdDLEdBQUcsQ0FBQyxHQUN6Q2dELElBQUtMLEdBQVcsUUFBUUUsRUFBTSxPQUFPN0MsR0FBRyxDQUFDLEdBQ3pDcUMsSUFBS1UsS0FBTSxJQUFJQyxLQUFNLEdBQ3JCZixLQUFLLE9BQU8sYUFBYUksQ0FBRSxHQUMzQlksSUFBS04sR0FBVyxRQUFRRSxFQUFNLE9BQU83QyxHQUFHLENBQUMsR0FDekNzQyxLQUFNVSxJQUFLLE9BQU8sSUFBSUMsS0FBTSxHQUN4QkEsTUFBTyxPQUNUaEIsS0FBSyxPQUFPLGFBQWFLLENBQUUsSUFFN0JZLElBQUtQLEdBQVcsUUFBUUUsRUFBTSxPQUFPN0MsR0FBRyxDQUFDLEdBQ3pDOEMsS0FBTUcsSUFBSyxNQUFNLElBQUlDLEdBQ2pCQSxNQUFPLE9BQ1RqQixLQUFLLE9BQU8sYUFBYWEsQ0FBRTtBQUcvQixTQUFPYjtBQUNUO0FBQ0EsSUFBSW1CLEtBQXdCLDJCQUFXO0FBQUUsU0FBTyxPQUFPLFNBQVcsT0FBZSxPQUFPLFVBQVksT0FBZSxPQUFPLFFBQVEsV0FBYSxPQUFlLENBQUMsQ0FBQyxRQUFRLFNBQVM7QUFBSyxLQUVsTEMsS0FBNEIsMkJBQVc7QUFDMUMsTUFBRyxPQUFPLFNBQVcsS0FBYTtBQUNqQyxRQUFJQyxJQUFPLENBQUMsT0FBTztBQUNuQixRQUFHLENBQUNBO0FBQU0sVUFBSTtBQUFFLGVBQU8sS0FBSyxPQUFPLE1BQU07QUFBQSxNQUFJLFFBQVU7QUFBRSxRQUFBQSxJQUFPO0FBQUEsTUFBTztBQUN2RSxXQUFPQSxJQUFPLFNBQVN2RCxHQUFLd0QsR0FBSztBQUFFLGFBQVFBLElBQU8sSUFBSSxPQUFPeEQsR0FBS3dELENBQUcsSUFBSSxJQUFJLE9BQU94RCxDQUFHO0FBQUEsSUFBRSxJQUFLLE9BQU8sS0FBSyxLQUFLLE1BQU07QUFBQSxFQUNySDtBQUNELFNBQU8sV0FBVztBQUFBLEVBQUE7QUFDbkI7QUFHQSxTQUFTeUQsR0FBWWhELEdBQWdCO0FBRXBDLFNBQUc0QyxLQUFnQixPQUFPLFFBQVEsT0FBTyxNQUFNNUMsQ0FBRyxJQUFJLElBQUksT0FBT0EsQ0FBRyxJQUM3RCxPQUFPLGFBQWMsTUFBYyxJQUFJLFdBQVdBLENBQUcsSUFBSSxJQUFJLE1BQU1BLENBQUc7QUFFOUU7QUFFQSxTQUFTaUQsR0FBZWpELEdBQWdCO0FBRXZDLFNBQUc0QyxLQUFnQixPQUFPLGNBQWMsT0FBTyxZQUFZNUMsQ0FBRyxJQUFJLElBQUksT0FBT0EsQ0FBRyxJQUN6RSxPQUFPLGFBQWMsTUFBYyxJQUFJLFdBQVdBLENBQUcsSUFBSSxJQUFJLE1BQU1BLENBQUc7QUFFOUU7QUFFQSxJQUFJa0QsS0FBTSxTQUFhQyxHQUFzQjtBQUM1QyxTQUFHUCxLQUFnQkMsR0FBWU0sR0FBRyxRQUFRLElBQ25DQSxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksU0FBU25CLEdBQXdCO0FBQUUsV0FBT0EsRUFBRSxXQUFXLENBQUMsSUFBSTtBQUFBLEVBQU8sQ0FBQTtBQUMzRjtBQUVBLFNBQVNvQixHQUFLRCxHQUFzQjtBQUNuQyxNQUFHLE9BQU8sY0FBZ0I7QUFBYSxXQUFPRCxHQUFJQyxDQUFDO0FBRW5ELFdBREk1RCxJQUFNLElBQUksWUFBWTRELEVBQUUsTUFBTSxHQUFHdkYsSUFBTyxJQUFJLFdBQVcyQixDQUFHLEdBQ3JEQyxJQUFFLEdBQUdBLEtBQUcyRCxFQUFFLFFBQVEsRUFBRTNEO0FBQUcsSUFBQTVCLEVBQUs0QixDQUFDLElBQUkyRCxFQUFFLFdBQVczRCxDQUFDLElBQUk7QUFDNUQsU0FBT0Q7QUFDUjtBQUVBLFNBQVM4RCxHQUFJdEcsR0FBeUI7QUFDckMsTUFBRyxNQUFNLFFBQVFBLENBQUk7QUFBRyxXQUFPQSxFQUFLLElBQUksU0FBU3FELEdBQUc7QUFBRSxhQUFPLE9BQU8sYUFBYUEsQ0FBQztBQUFBLElBQUksQ0FBQSxFQUFFLEtBQUssRUFBRTtBQUNqRSxXQUExQnFCLElBQXNCLENBQUEsR0FBWWpDLElBQUksR0FBR0EsSUFBSXpDLEVBQUssUUFBUSxFQUFFeUM7QUFBRyxJQUFBaUMsRUFBRWpDLENBQUMsSUFBSSxPQUFPLGFBQWF6QyxFQUFLeUMsQ0FBQyxDQUFDO0FBQUcsU0FBT2lDLEVBQUUsS0FBSyxFQUFFO0FBQ3pIO0FBRUEsU0FBUzZCLEdBQUl2RyxHQUF1QztBQUNuRCxNQUFHLE9BQU8sYUFBZTtBQUFhLFVBQU0sSUFBSSxNQUFNLGFBQWE7QUFDbkUsU0FBTyxJQUFJLFdBQVdBLENBQUk7QUFDM0I7QUFFQSxTQUFTd0csR0FBS3hHLEdBQW1EO0FBQ2hFLE1BQUcsT0FBTyxjQUFlO0FBQWEsVUFBTSxJQUFJLE1BQU0sYUFBYTtBQUNuRSxNQUFHQSxhQUFnQjtBQUFhLFdBQU93RyxHQUFLLElBQUksV0FBV3hHLENBQUksQ0FBQztBQUdoRSxXQURJMEUsSUFBSSxJQUFJLE1BQU0xRSxFQUFLLE1BQU0sR0FDckJ5QyxJQUFJLEdBQUdBLElBQUl6QyxFQUFLLFFBQVEsRUFBRXlDO0FBQUcsSUFBQWlDLEVBQUVqQyxDQUFDLElBQUl6QyxFQUFLeUMsQ0FBQztBQUNsRCxTQUFPaUM7QUFDUjtBQUVBLElBQUkrQixLQUFVWixLQUFVLFNBQVNhLEdBQU07QUFBRSxTQUFPLE9BQU8sT0FBT0EsRUFBSyxJQUFJLFNBQVNsRSxHQUFLO0FBQUUsV0FBTyxPQUFPLFNBQVNBLENBQUcsSUFBSUEsSUFBTXNELEdBQVl0RCxDQUFHO0FBQUEsRUFBRSxDQUFFLENBQUM7SUFBTyxTQUFTa0UsR0FBTTtBQUNwSyxNQUFHLE9BQU8sYUFBZSxLQUFhO0FBQ3JDLFFBQUlqRSxJQUFJLEdBQUdrRSxJQUFTO0FBQ3BCLFNBQUlsRSxJQUFJLEdBQUdBLElBQUlpRSxFQUFLLFFBQVEsRUFBRWpFO0FBQUcsTUFBQWtFLEtBQVVELEVBQUtqRSxDQUFDLEVBQUU7QUFDbkQsUUFBSWlDLElBQUksSUFBSSxXQUFXaUMsQ0FBTSxHQUN6QjFELElBQU07QUFDVixTQUFJUixJQUFJLEdBQUdrRSxJQUFTLEdBQUdsRSxJQUFJaUUsRUFBSyxRQUFRQyxLQUFVMUQsR0FBSyxFQUFFUjtBQUV4RCxVQURBUSxJQUFNeUQsRUFBS2pFLENBQUMsRUFBRSxRQUNYaUUsRUFBS2pFLENBQUMsYUFBYTtBQUFZLFFBQUFpQyxFQUFFLElBQUlnQyxFQUFLakUsQ0FBQyxHQUFHa0UsQ0FBTTtBQUFBLFdBQ2xEO0FBQUEsWUFBRyxPQUFPRCxFQUFLakUsQ0FBQyxLQUFLO0FBQVksZ0JBQU07QUFDdkMsUUFBQWlDLEVBQUUsSUFBSSxJQUFJLFdBQVdnQyxFQUFLakUsQ0FBQyxDQUFDLEdBQUdrRSxDQUFNO0FBQUE7QUFFM0MsV0FBT2pDO0FBQUEsRUFDUDtBQUNELFNBQU8sQ0FBRSxFQUFDLE9BQU8sTUFBTSxDQUFBLEdBQUlnQyxFQUFLLElBQUksU0FBU2xFLEdBQUs7QUFBRSxXQUFPLE1BQU0sUUFBUUEsQ0FBRyxJQUFJQSxJQUFNLEdBQUcsTUFBTSxLQUFLQSxDQUFHO0FBQUEsRUFBSSxDQUFBLENBQUM7QUFDN0c7QUFFQSxTQUFTb0UsR0FBV2pILEdBQW9CO0FBR3ZDLFdBRklrSCxJQUFNLENBQUUsR0FBRUMsSUFBTyxHQUFHQyxJQUFJcEgsRUFBUSxTQUFTLEtBQ3pDK0UsSUFBSXVCLEdBQVl0RyxFQUFRLFNBQVMsR0FBRyxHQUNoQ3FILElBQU8sR0FBR0EsSUFBT3JILEVBQVEsUUFBUSxFQUFFcUgsR0FBTTtBQUNoRCxRQUFJM0QsSUFBSTFELEVBQVEsV0FBV3FILENBQUk7QUFDL0IsUUFBRzNELElBQUk7QUFBTSxNQUFBcUIsRUFBRW9DLEdBQU0sSUFBSXpEO0FBQUEsYUFDakJBLElBQUk7QUFDWCxNQUFBcUIsRUFBRW9DLEdBQU0sSUFBSyxNQUFNekQsS0FBRyxJQUFHLElBQ3pCcUIsRUFBRW9DLEdBQU0sSUFBSyxNQUFLekQsSUFBRTtBQUFBLGFBQ1hBLEtBQUssU0FBVUEsSUFBSSxPQUFRO0FBQ3BDLE1BQUFBLEtBQUtBLElBQUUsUUFBTTtBQUNiLFVBQUlDLElBQUkzRCxFQUFRLFdBQVcsRUFBRXFILENBQUksSUFBRTtBQUNuQyxNQUFBdEMsRUFBRW9DLEdBQU0sSUFBSyxNQUFNekQsS0FBRyxJQUFHLEdBQ3pCcUIsRUFBRW9DLEdBQU0sSUFBSyxNQUFNekQsS0FBRyxJQUFHLElBQ3pCcUIsRUFBRW9DLEdBQU0sSUFBSyxNQUFNeEQsS0FBRyxJQUFHLE1BQU1ELElBQUUsTUFBSSxHQUNyQ3FCLEVBQUVvQyxHQUFNLElBQUssTUFBS3hELElBQUU7QUFBQSxJQUN2QjtBQUNHLE1BQUFvQixFQUFFb0MsR0FBTSxJQUFLLE1BQU16RCxLQUFHLEtBQUksSUFDMUJxQixFQUFFb0MsR0FBTSxJQUFLLE1BQU16RCxLQUFHLElBQUcsSUFDekJxQixFQUFFb0MsR0FBTSxJQUFLLE1BQUt6RCxJQUFFO0FBRXJCLElBQUd5RCxJQUFPQyxNQUNURixFQUFJLEtBQUtuQyxFQUFFLE1BQU0sR0FBR29DLENBQUksQ0FBQyxHQUN6QkEsSUFBTyxHQUNQcEMsSUFBSXVCLEdBQVksS0FBSyxHQUNyQmMsSUFBSTtBQUFBLEVBRUw7QUFDRCxTQUFBRixFQUFJLEtBQUtuQyxFQUFFLE1BQU0sR0FBR29DLENBQUksQ0FBQyxHQUNsQkwsR0FBUUksQ0FBRztBQUNuQjtBQUVBLElBQUlJLEtBQU8sV0FBV0MsS0FBTztBQXFCN0IsU0FBU0MsR0FBUWxDLEdBQXlCO0FBQThCLFdBQXhCUCxJQUFJLElBQUlqQyxJQUFJd0MsRUFBRSxTQUFPLEdBQVN4QyxLQUFHO0FBQUcsSUFBQWlDLEtBQUtPLEVBQUUsT0FBT3hDLEdBQUc7QUFBRyxTQUFPaUM7QUFBSTtBQUNuSCxTQUFTMEMsR0FBSzVHLEdBQVU4QyxHQUF3QjtBQUFDLE1BQUkrRCxJQUFFLEtBQUc3RztBQUFHLFNBQU82RyxFQUFFLFVBQVEvRCxJQUFFK0QsSUFBRUMsR0FBSyxLQUFJaEUsSUFBRStELEVBQUUsTUFBTSxJQUFFQTtBQUFFO0FBQ3pHLFNBQVNFLEdBQUsvRyxHQUFVOEMsR0FBd0I7QUFBQyxNQUFJK0QsSUFBRSxLQUFHN0c7QUFBRSxTQUFPNkcsRUFBRSxVQUFRL0QsSUFBRStELElBQUVDLEdBQUssS0FBSWhFLElBQUUrRCxFQUFFLE1BQU0sSUFBRUE7QUFBRTtBQUN4RyxTQUFTRyxHQUFNaEgsR0FBVThDLEdBQXdCO0FBQUMsTUFBSStELElBQUUsS0FBRzdHO0FBQUcsU0FBTzZHLEVBQUUsVUFBUS9ELElBQUUrRCxJQUFFQSxJQUFFQyxHQUFLLEtBQUloRSxJQUFFK0QsRUFBRSxNQUFNO0FBQUU7QUFDMUcsU0FBU0ksR0FBT2pILEdBQVU4QyxHQUF3QjtBQUFDLE1BQUkrRCxJQUFFLEtBQUcsS0FBSyxNQUFNN0csQ0FBQztBQUFHLFNBQU82RyxFQUFFLFVBQVEvRCxJQUFFK0QsSUFBRUMsR0FBSyxLQUFJaEUsSUFBRStELEVBQUUsTUFBTSxJQUFFQTtBQUFFO0FBQ3ZILFNBQVNLLEdBQU9sSCxHQUFVOEMsR0FBd0I7QUFBQyxNQUFJK0QsSUFBRSxLQUFHN0c7QUFBRyxTQUFPNkcsRUFBRSxVQUFRL0QsSUFBRStELElBQUVDLEdBQUssS0FBSWhFLElBQUUrRCxFQUFFLE1BQU0sSUFBRUE7QUFBRTtBQUMzRyxJQUFJTSxLQUFxQixxQkFBSyxJQUFJLEdBQUUsRUFBRTtBQUN0QyxTQUFTQyxHQUFNcEgsR0FBVThDLEdBQXdCO0FBQUMsTUFBRzlDLElBQUVtSCxNQUFPbkgsSUFBRSxDQUFDbUg7QUFBTyxXQUFPRixHQUFPakgsR0FBRThDLENBQUM7QUFBRyxNQUFJYixJQUFJLEtBQUssTUFBTWpDLENBQUM7QUFBRyxTQUFPa0gsR0FBT2pGLEdBQUVhLENBQUM7QUFBSTtBQUV4SSxTQUFTdUUsR0FBY3pCLEdBQWMzRCxHQUEyQjtBQUFFLFNBQUFBLElBQUlBLEtBQUssR0FBVTJELEVBQUUsVUFBVSxJQUFJM0QsTUFBTTJELEVBQUUsV0FBVzNELENBQUMsSUFBRSxRQUFRLFFBQVEyRCxFQUFFLFdBQVczRCxJQUFFLENBQUMsSUFBRSxRQUFRLFFBQVEyRCxFQUFFLFdBQVczRCxJQUFFLENBQUMsSUFBRSxRQUFRLFFBQVEyRCxFQUFFLFdBQVczRCxJQUFFLENBQUMsSUFBRSxRQUFRLFFBQVEyRCxFQUFFLFdBQVczRCxJQUFFLENBQUMsSUFBRSxRQUFRLFFBQVEyRCxFQUFFLFdBQVczRCxJQUFFLENBQUMsSUFBRSxRQUFRLE9BQU8yRCxFQUFFLFdBQVczRCxJQUFFLENBQUMsSUFBRSxRQUFRO0FBQU07QUFDcFYsSUFBSXFGLEtBQWlDO0FBQUEsRUFDcEMsQ0FBQyxPQUFPLFFBQVE7QUFBQSxFQUNoQixDQUFDLE9BQU8sUUFBUTtBQUFBLEVBQ2hCLENBQUMsT0FBTyxTQUFTO0FBQUEsRUFDakIsQ0FBQyxPQUFPLFdBQVc7QUFBQSxFQUNuQixDQUFDLE9BQU8sVUFBVTtBQUFBLEVBQ2xCLENBQUMsT0FBTyxRQUFRO0FBQUEsRUFDaEIsQ0FBQyxPQUFPLFVBQVU7QUFDbkIsR0FDSUMsS0FBbUM7QUFBQSxFQUN0QyxDQUFDLEtBQUssT0FBTyxTQUFTO0FBQUEsRUFDdEIsQ0FBQyxLQUFLLE9BQU8sVUFBVTtBQUFBLEVBQ3ZCLENBQUMsS0FBSyxPQUFPLE9BQU87QUFBQSxFQUNwQixDQUFDLEtBQUssT0FBTyxPQUFPO0FBQUEsRUFDcEIsQ0FBQyxLQUFLLE9BQU8sS0FBSztBQUFBLEVBQ2xCLENBQUMsS0FBSyxPQUFPLE1BQU07QUFBQSxFQUNuQixDQUFDLEtBQUssT0FBTyxNQUFNO0FBQUEsRUFDbkIsQ0FBQyxLQUFLLE9BQU8sUUFBUTtBQUFBLEVBQ3JCLENBQUMsS0FBSyxPQUFPLFdBQVc7QUFBQSxFQUN4QixDQUFDLEtBQUssT0FBTyxTQUFTO0FBQUEsRUFDdEIsQ0FBQyxLQUFLLE9BQU8sVUFBVTtBQUFBLEVBQ3ZCLENBQUMsS0FBSyxPQUFPLFVBQVU7QUFDeEI7QUFDQSxTQUFTQyxHQUFlWCxHQUFXO0FBQ2xDLFNBQUlBLE1BQUdBLElBQUksS0FDWEEsRUFBRSxDQUFDLElBQUksV0FDUEEsRUFBRSxDQUFDLElBQUksS0FDUEEsRUFBRSxDQUFDLElBQUksUUFDUEEsRUFBRSxDQUFDLElBQUksU0FDUEEsRUFBRSxDQUFDLElBQUksWUFDUEEsRUFBRSxDQUFDLElBQUksTUFDUEEsRUFBRSxFQUFFLElBQUcsU0FDUEEsRUFBRSxFQUFFLElBQUcsWUFDUEEsRUFBRSxFQUFFLElBQUcsU0FDUEEsRUFBRSxFQUFFLElBQUcsV0FDUEEsRUFBRSxFQUFFLElBQUcsVUFDUEEsRUFBRSxFQUFFLElBQUcsWUFDUEEsRUFBRSxFQUFFLElBQUcsU0FDUEEsRUFBRSxFQUFFLElBQUcsVUFDUEEsRUFBRSxFQUFFLElBQUcsY0FDUEEsRUFBRSxFQUFFLElBQUcsaUJBQ1BBLEVBQUUsRUFBRSxJQUFHLFFBQ1BBLEVBQUUsRUFBRSxJQUFHLFdBQ1BBLEVBQUUsRUFBRSxJQUFHLGVBQ1BBLEVBQUUsRUFBRSxJQUFHLGtCQUNQQSxFQUFFLEVBQUUsSUFBRyx1QkFDUEEsRUFBRSxFQUFFLElBQUcsdUJBQ1BBLEVBQUUsRUFBRSxJQUFHLDRCQUNQQSxFQUFFLEVBQUUsSUFBRyxTQUNQQSxFQUFFLEVBQUUsSUFBRyxhQUNQQSxFQUFFLEVBQUUsSUFBRyxVQUNQQSxFQUFFLEVBQUUsSUFBRyxZQUNQQSxFQUFFLEVBQUUsSUFBRyxLQUNQQSxFQUFFLEVBQUUsSUFBRyw0QkFDQUE7QUFDUjtBQUVBLElBQUlZLEtBQVk7QUFBQSxFQUNmLEdBQUk7QUFBQSxFQUNKLEdBQUk7QUFBQSxFQUNKLEdBQUk7QUFBQSxFQUNKLEdBQUk7QUFBQSxFQUNKLEdBQUk7QUFBQSxFQUNKLEdBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFDTCxHQUtJQyxLQUFrQjtBQUFBLEVBQ3JCLEdBQUk7QUFBQSxFQUFJLEdBQUk7QUFBQSxFQUFJLEdBQUk7QUFBQSxFQUFJLEdBQUk7QUFBQTtBQUFBLEVBRTVCLElBQUs7QUFBQSxFQUFHLElBQUs7QUFBQSxFQUFHLElBQUs7QUFBQSxFQUFHLElBQUs7QUFBQTtBQUFBLEVBRTdCLElBQUk7QUFBQSxFQUFJLElBQUk7QUFBQSxFQUFJLElBQUk7QUFBQSxFQUFJLElBQUk7QUFBQSxFQUFJLElBQUk7QUFBQTtBQUFBLEVBRXBDLElBQUk7QUFBQSxFQUFJLElBQUk7QUFBQSxFQUFJLElBQUk7QUFBQSxFQUFJLElBQUk7QUFBQSxFQUFJLElBQUk7QUFBQTtBQUFBLEVBQ3BDLElBQUk7QUFBQSxFQUFJLElBQUk7QUFBQSxFQUFJLElBQUk7QUFBQSxFQUFJLElBQUk7QUFBQSxFQUM1QixJQUFLO0FBQUEsRUFBRyxJQUFLO0FBQUEsRUFBRyxJQUFLO0FBQUEsRUFBRyxJQUFLO0FBQUE7QUFBQSxFQUU3QixJQUFLO0FBQUEsRUFBRyxJQUFJO0FBQUE7QUFBQSxFQUNaLElBQUk7QUFBQSxFQUFJLElBQUk7QUFBQSxFQUFJLElBQUk7QUFBQTtBQUFBLEVBQ3BCLElBQUk7QUFBQSxFQUFJLElBQUk7QUFBQSxFQUFJLElBQUk7QUFBQSxFQUFJLElBQUk7QUFBQTtBQUFBLEVBQzVCLElBQUk7QUFBQSxFQUFJLElBQUk7QUFBQSxFQUFJLElBQUk7QUFBQTtBQUFBLEVBQ3BCLElBQUk7QUFBQSxFQUFJLElBQUk7QUFBQSxFQUFJLElBQUk7QUFBQTtBQUFBLEVBQ3BCLElBQUk7QUFBQTtBQUNM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QUFBO0FBQUEsRUFDZixJQUFlO0FBQUE7QUFBQTtBQUFBLEVBQ2YsSUFBZTtBQUFBO0FBQUE7QUFBQSxFQUNmLElBQWU7QUFBQTtBQUFBO0FBQUEsRUFDZixJQUFlO0FBQUE7QUFBQTtBQUFBLEVBQ2YsSUFBZTtBQUFBO0FBQUE7QUFBQSxFQUNmLElBQWU7QUFBQTtBQUFBO0FBQUEsRUFDZixJQUFlO0FBQUE7QUFBQTtBQUFBLEVBQ2YsSUFBZTtBQUFBO0FBQUE7QUFBQSxFQUNmLElBQWU7QUFBQTtBQUFBO0FBQUEsRUFDZixJQUFlO0FBQUE7QUFBQTtBQUFBLEVBQ2YsSUFBZTtBQUFBO0FBQUE7QUFBQSxFQUNmLElBQWU7QUFBQTtBQUFBO0FBQUEsRUFDZixJQUFlO0FBQUE7QUFBQTtBQUFBLEVBQ2YsSUFBZTtBQUFBO0FBQUE7QUFBQSxFQUNmLElBQWU7QUFBQTtBQUFBO0FBQUEsRUFDZixJQUFlO0FBQUE7QUFBQTtBQUFBLEVBQ2YsSUFBZTtBQUFBO0FBQUE7QUFBQSxFQUNmLElBQWU7QUFBQTtBQUFBO0FBQUEsRUFDZixLQUFlO0FBQUE7QUFBQTtBQUFBLEVBQ2YsS0FBZTtBQUFBO0FBQUE7QUFBQSxFQUNmLEtBQWU7QUFBQTtBQUFBO0FBQUEsRUFDZixLQUFlO0FBQUE7QUFBQTtBQUFBLEVBQ2YsS0FBZTtBQUFBO0FBQUE7QUFBQSxFQUNmLEtBQWU7QUFBQTtBQUFBO0FBQUEsRUFDZixLQUFlO0FBQUE7QUFBQTtBQUFBLEVBQ2YsS0FBZTtBQUFBO0FBQUE7QUFBQSxFQUNmLEtBQWU7QUFBQTtBQUFBO0FBQUEsRUFDZixLQUFlO0FBQUE7QUFBQTtBQUFBLEVBQ2YsS0FBZTtBQUFBO0FBQUE7QUFBQSxFQUNmLEtBQWU7QUFBQTtBQUFBO0FBQUEsRUFDZixLQUFlO0FBQUE7QUFBQTtBQUFBLEVBQ2YsS0FBZTtBQUFBO0FBQUE7QUFBQSxFQUNmLEtBQWU7QUFBQTtBQUFBO0FBQUEsRUFDZixLQUFlO0FBQUE7QUFBQTtBQUFBLEVBQ2YsS0FBZTtBQUFBO0FBQUE7QUFBQSxFQUNmLEtBQWU7QUFBQTtBQUFBO0FBQUEsRUFDZixLQUFlO0FBQUE7QUFBQTtBQUFBLEVBQ2YsT0FBZTtBQUFBO0FBQ3ZCLEdBR0lDLEtBQWlCO0FBQUEsRUFDcEI7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFDRDtBQUVBLFNBQVNDLEdBQU8zUSxHQUEyRDtBQUFFLFNBQU9BLEVBQUksSUFBSSxTQUFTcGYsR0FBRztBQUFFLFdBQU8sQ0FBRUEsS0FBRyxLQUFJLEtBQUtBLEtBQUcsSUFBRyxLQUFJQSxJQUFFLEdBQUc7QUFBQSxFQUFJLENBQUE7QUFBSTtBQUl0SixJQUFJZ3dCLEtBQXdCLGdCQUFBRCxHQUFPO0FBQUE7QUFBQSxFQUVsQztBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQTtBQUFBLEVBR0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFFQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBRUE7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNB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O0FBQUEsSUFBc0IsSUFBZTtBQUFBO0FBQUEsSUFDcEQsSUFBZTtBQUFBO0FBQUEsSUFBc0IsSUFBZTtBQUFBO0FBQUEsSUFDcEQsSUFBZTtBQUFBO0FBQUEsSUFBc0IsSUFBZTtBQUFBO0FBQUEsSUFDcEQsSUFBZTtBQUFBO0FBQUEsSUFBc0IsSUFBZTtBQUFBO0FBQUEsSUFDcEQsSUFBZTtBQUFBO0FBQUEsSUFBc0IsSUFBZTtBQUFBO0FBQUEsSUFDcEQsSUFBZTtBQUFBO0FBQUEsSUFBc0IsSUFBZTtBQUFBO0FBQUEsSUFDcEQsSUFBZTtBQUFBO0FBQUEsSUFBc0IsSUFBZTtBQUFBO0FBQUEsSUFDcEQsSUFBZTtBQUFBO0FBQUEsSUFBc0IsSUFBZTtBQUFBO0FBQUEsSUFDcEQsSUFBZTtBQUFBO0FBQUEsSUFBc0IsSUFBZTtBQUFBO0FBQUEsSUFDcEQsSUFBZTtBQUFBO0FBQUEsSUFBc0IsSUFBZTtBQUFBO0FBQUEsSUFDcEQsSUFBZTtBQUFBO0FBQUEsSUFBc0IsSUFBZTtBQUFBO0FBQUEsSUFDcEQsSUFBZTtBQUFBO0FBQUEsSUFBc0IsSUFBZTtBQUFBO0FBQUEsSUFDcEQsSUFBYztBQUFBO0FBQUEsSUFBdUIsSUFBYztBQUFBO0FBQUEsSUFDbkQsSUFBYztBQUFBO0FBQUEsSUFBdUIsS0FBZTtBQUFBO0FBQUEsSUFDcEQsS0FBZTtBQUFBO0FBQUEsSUFBc0IsS0FBZTtBQUFBO0FBQUEsSUFDcEQsS0FBZTtBQUFBO0FBQUEsSUFBc0IsS0FBYztBQUFBO0FBQUEsSUFFbkQsS0FBYTtBQUFBLEVBQ3JCLEdBQ0lDLElBQWtCNXBCLEdBQU07QUFBQTtBQUFBLElBQ3BCLEdBQWU7QUFBQTtBQUFBLElBQXNCLEdBQWU7QUFBQTtBQUFBLElBQ3BELEdBQWM7QUFBQTtBQUFBLElBQXVCLEdBQWE7QUFBQTtBQUFBLElBQ2xELEtBQWU7QUFBQTtBQUFBLElBQXNCLEtBQWU7QUFBQTtBQUFBLElBQ3BELEtBQWU7QUFBQTtBQUFBLElBQXNCLEtBQWU7QUFBQTtBQUFBLElBQ3BELEtBQWU7QUFBQTtBQUFBLElB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QUFHO0FBQUEsSUFDbkMsSUFBRztBQUFBLElBQUssSUFBRztBQUFBLElBQUssSUFBRztBQUFBLElBQWEsSUFBRztBQUFBLElBQ25DLElBQUc7QUFBQSxJQUFLLElBQUc7QUFBQSxJQUFLLElBQUc7QUFBQSxJQUFLLElBQUc7QUFBQSxJQUFLLElBQUc7QUFBQSxJQUNuQyxJQUFHO0FBQUEsSUFBSyxJQUFHO0FBQUEsSUFBSyxJQUFHO0FBQUEsSUFBYSxJQUFHO0FBQUEsSUFDbkMsSUFBRztBQUFBLElBQUssSUFBRztBQUFBLElBQUssSUFBRztBQUFBLElBQUssSUFBRztBQUFBLElBQUssSUFBRztBQUFBLElBQUssSUFBRztBQUFBLElBQzNDLElBQUc7QUFBQSxJQUFLLElBQUc7QUFBQSxJQUFLLElBQUc7QUFBQSxJQUFhLElBQUc7QUFBQSxJQUNuQyxJQUFHO0FBQUEsSUFBSyxJQUFHO0FBQUEsSUFBSyxJQUFHO0FBQUEsSUFBYSxJQUFHO0FBQUEsSUFDbkMsSUFBRztBQUFBLElBQUssSUFBRztBQUFBLElBQUssSUFBRztBQUFBLElBQUssSUFBRztBQUFBLElBQUssSUFBRztBQUFBLElBQ25DLElBQUc7QUFBQSxJQUFLLElBQUc7QUFBQSxJQUFLLElBQUc7QUFBQSxJQUFhLElBQUc7QUFBQSxJQUNuQyxJQUFHO0FBQUEsSUFBSyxJQUFHO0FBQUEsSUFBSyxHQUFFO0FBQUEsSUFBTSxHQUFFO0FBQUEsSUFBTSxHQUFFO0FBQUEsSUFBTSxHQUFFO0FBQUEsSUFDMUMsSUFBRztBQUFBLElBQUssSUFBRztBQUFBLElBQUssSUFBRztBQUFBLElBQ25CLEdBQUU7QUFBQSxJQUFNLEdBQUU7QUFBQSxJQUFNLEdBQUU7QUFBQSxJQUFNLE1BQUs7QUFBQTtBQUFBLElBQ3RCLEdBQVM7QUFBQTtBQUFBLElBQWUsR0FBUztBQUFBO0FBQUEsSUFBYSxHQUFTO0FBQUE7QUFBQSxJQUN2RCxHQUFTO0FBQUE7QUFBQSxJQUFlLEdBQVM7QUFBQTtBQUFBLElBQWEsR0FBUztBQUFBO0FBQUEsSUFDdkQsR0FBUztBQUFBLElB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V0FBWTtBQUFBO0FBQUEsSUFDL0IsR0FBZSxFQUFFLEdBQUUsWUFBYTtBQUFBO0FBQUEsSUFDaEMsR0FBZSxFQUFFLEdBQUUsUUFBUztBQUFBO0FBQUEsSUFDNUIsR0FBZSxFQUFFLEdBQUUsT0FBUTtBQUFBO0FBQUEsSUFDM0IsR0FBZSxFQUFFLEdBQUUsU0FBU3lZLEVBQWU7QUFBQTtBQUFBLElBQzNDLEdBQWUsRUFBRSxHQUFFLFVBQVc7QUFBQTtBQUFBLElBQzlCLEdBQWUsRUFBRSxHQUFFLFFBQVM7QUFBQTtBQUFBLElBQzVCLEdBQWUsRUFBRSxHQUFFLFNBQVU7QUFBQTtBQUFBLElBQzdCLElBQWUsRUFBRSxHQUFFLFFBQVM7QUFBQTtBQUFBLElBQzVCLElBQWUsRUFBRSxHQUFFLE9BQVE7QUFBQTtBQUFBLElBQzNCLElBQWUsRUFBRSxHQUFFLFFBQVM7QUFBQTtBQUFBLElBQzVCLElBQWUsRUFBRSxHQUFFLFdBQVcsR0FBRUcsRUFBZTtBQUFBO0FBQUEsSUFDL0MsSUFBZSxFQUFFLEdBQUUsVUFBVSxHQUFFQyxFQUFjO0FBQUE7QUFBQSxJQUM3QyxJQUFlLEVBQUUsR0FBRSxTQUFTLEdBQUVGLEVBQWE7QUFBQTtBQUFBLElBQzNDLElBQWUsRUFBRSxHQUFFLFdBQVcsR0FBRUcsRUFBZTtBQUFBO0FBQUEsSUFDL0MsSUFBZSxFQUFFLEdBQUUsUUFBUztBQUFBO0FBQUEsSUFDNUIsSUFBZSxFQUFFLEdBQUUsU0FBVTtBQUFBO0FBQUEsSUFDN0IsSUFBZSxFQUFFLEdBQUUsU0FBVTtBQUFBO0FBQUEsSUFDN0IsSUFBZSxFQUFFLEdBQUUsU0FBVTtBQUFBO0FBQUEsSUFDN0IsSUFBZSxFQUFFLEdBQUUsU0FBVTtBQUFBO0FBQUEsSUFDN0IsSUFBZSxFQUFFLEdBQUUsVUFBVztBQUFBO0FBQUEsSUFDOUIsSUFBZSxFQUFFLEdBQUUsU0FBVTtBQUFBO0FBQUEsSUFDN0IsSUFBZSxFQUFFLEdBQUUsVUFBVztBQUFBO0FBQUEsSUFDOUIsSUFBZSxFQUFFLEdBQUUsU0FBVTtBQUFBO0FBQUEsSUFDN0Is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QUUsY0FBZTtBQUFBO0FBQUEsSUFDbEMsSUFBZSxFQUFFLEdBQUUsWUFBYTtBQUFBO0FBQUEsSUFDaEMsSUFBZSxFQUFFLEdBQUUsYUFBYztBQUFBO0FBQUEsSUFDakMsSUFBZSxFQUFFLEdBQUUsV0FBWTtBQUFBO0FBQUEsSUFDL0IsSUFBZSxFQUFFLEdBQUUsZUFBZ0I7QUFBQTtBQUFBLElBQ25DLElBQWUsRUFBRSxHQUFFLFlBQWE7QUFBQTtBQUFBLElBQ2hDLElBQWUsRUFBRSxHQUFFLGNBQWU7QUFBQTtBQUFBLElBQ2xDLElBQWUsRUFBRSxHQUFFLFlBQWE7QUFBQTtBQUFBLElBQ2hDLElBQWUsRUFBRSxHQUFFLGNBQWU7QUFBQTtBQUFBLElBQ2xDLElBQWUsRUFBRSxHQUFFLEtBQU07QUFBQTtBQUFBLElBQ3pCLElBQWUsRUFBRSxHQUFFLFVBQVc7QUFBQTtBQUFBLElBQzlCLElBQWUsRUFBRSxHQUFFLFNBQVU7QUFBQTtBQUFBLElBQzdCLElBQWUsRUFBRSxHQUFFLFdBQVcsR0FBRWdDLEVBQWM7QUFBQTtBQUFBLElBQzlDLElBQWUsRUFBRSxHQUFFLFlBQVksR0FBRUUsRUFBaUI7QUFBQTtBQUFBLElBQ2xELElBQWUsRUFBRSxHQUFFLFlBQVksR0FBRUQsRUFBaUI7QUFBQTtBQUFBLElBQ2xELElBQWUsRUFBRSxHQUFFLGFBQWEsR0FBRUksRUFBZ0I7QUFBQTtBQUFBLElBQ2xELElBQWUsRUFBRSxHQUFFLFlBQWE7QUFBQTtBQUFBLElBQ2hDLElBQWUsRUFBRSxHQUFFLFdBQVcsR0FBRU8sR0FBZTtBQUFBO0FBQUEsSUFDL0MsSUFBZSxFQUFFLEdBQUUsY0FBZTtBQUFBO0FBQUEsSUFDbEMsSUFBZSxFQUFFLEdBQUUsY0FBZTtBQUFBO0FBQUEsSUFDbEMsSUFBZSxFQUFFLEdBQUUsY0FBZTtBQUFBO0FBQUEsSUFDbEMsSUFBZSxFQUFFLEdBQUUsTUFBTztBQUFBO0FBQUEsSUFDMUIsSUFBZSxFQUFFLEdBQUUsVUFBVztBQUFBO0FBQUEsSUFDOUIsSUFBZSxFQUFFLEdBQUUsUUFBUztBQUFBO0FBQUEsSUFDNUIsSUFBZSxFQUFFLEdBQUUsY0FBZTtBQUFBO0FBQUEsSUFDbEMsSUFBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsSUFBZSxFQUFFLEdBQUUsWUFBWSxHQUFFTixFQUFpQjtBQUFBO0FBQUEsSUFDbEQsSUFBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsSUFBZSxFQUFFLEdBQUUsWUFBWSxHQUFFQyxFQUFpQjtBQUFBO0FBQUEsSUFDbEQsSUFBZSxFQUFFLEdBQUUsYUFBYSxHQUFFQyxHQUFrQjtBQUFBO0FBQUEsSUFDcEQsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsZUFBZSxHQUFFQyxHQUFtQjtBQUFBO0FBQUEsSUFDdkQsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsS0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsTUFBZSxFQUFFLEdBQUUsZUFBZSxHQUFFRSxHQUFtQjtBQUFBO0FBQUEsSUFDdkQsTUFBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsTUFBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsTUFBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsTUFBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsTUFBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsTUFBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsTUFBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsTUFBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsTUFBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsTUFBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsTUFBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsT0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsT0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsT0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsT0FBZSxFQUFFLEdBQUUsS0FBTTtBQUFBO0FBQUEsSUFDekIsT0FBZSxFQUFFLEdBQUUsR0FBSTtBQUFBLEVBQ2hDO0FBQ0MsU0FBTztBQUFBLElBQ04sY0FBY3hDO0FBQUEsSUFDZCxhQUFhUTtBQUFBLElBQ2IsYUFBYXBCO0FBQUEsRUFDZjtBQUNBO0FBRUEsU0FBU3NELEdBQVVDLEdBQUs7QUFDdkIsTUFBSXprQixJQUFPLENBQUUsR0FBRTN2QixJQUFJbzBDLEVBQUksTUFBTTF4QixFQUFRLEdBQUcvakIsSUFBSSxHQUN4QzAxQyxJQUFPO0FBQ1gsTUFBR3IwQztBQUFHLFdBQUtyQixLQUFHcUIsRUFBRSxRQUFRLEVBQUVyQixHQUFHO0FBQzVCLFVBQUlxSSxJQUFJNmIsR0FBWTdpQixFQUFFckIsQ0FBQyxDQUFDO0FBQ3hCLGNBQU9xSSxFQUFFLENBQUMsRUFBRSxRQUFRLFNBQVEsRUFBRSxHQUFDO0FBQUEsUUFHOUIsS0FBSztBQUFhO0FBQUEsUUFHbEIsS0FBSztBQUFXO0FBQUEsUUFHaEIsS0FBSztBQUNKLGNBQUcsQ0FBQ0EsRUFBRTtBQUFLO0FBQUEsUUFFWixLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQWEsVUFBQTJvQixFQUFLLFNBQVM7QUFBRztBQUFBLFFBQ25DLEtBQUs7QUFBYTtBQUFBLFFBR2xCLEtBQUs7QUFDSixjQUFHM29CLEVBQUUsT0FBTztBQUFLO0FBQ2pCLFVBQUEyb0IsRUFBSyxLQUFLdHZCLEdBQU0sU0FBUzJHLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDbkM7QUFBQSxRQUdELEtBQUs7QUFDSixjQUFHLENBQUNBLEVBQUU7QUFBSztBQUFBLFFBRVosS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFjLFVBQUEyb0IsRUFBSyxVQUFVO0FBQUc7QUFBQSxRQUNyQyxLQUFLO0FBQWM7QUFBQSxRQUduQixLQUFLO0FBQVUsVUFBQUEsRUFBSyxPQUFPM29CLEVBQUU7QUFBSztBQUFBLFFBR2xDLEtBQUs7QUFBTyxVQUFBMm9CLEVBQUssS0FBSzNvQixFQUFFO0FBQUs7QUFBQSxRQUc3QixLQUFLO0FBQ0osY0FBRyxDQUFDQSxFQUFFO0FBQUs7QUFBQSxRQUVaLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBYSxVQUFBMm9CLEVBQUssU0FBUztBQUFHO0FBQUEsUUFDbkMsS0FBSztBQUFhO0FBQUEsUUFHbEIsS0FBSztBQUNKLGNBQUcsQ0FBQzNvQixFQUFFO0FBQUs7QUFDWCxrQkFBT0EsRUFBRSxLQUFHO0FBQUEsWUFDWCxLQUFLO0FBQVUsY0FBQTJvQixFQUFLLE9BQU87QUFBVTtBQUFBLFlBQ3JDLEtBQUs7QUFBb0IsY0FBQUEsRUFBSyxPQUFPO0FBQXFCO0FBQUEsWUFDMUQsS0FBSztBQUFvQixjQUFBQSxFQUFLLE9BQU87QUFBcUI7QUFBQSxVQUMxRDtBQUFBLFFBRUYsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFRLFVBQUFBLEVBQUssSUFBSTtBQUFHO0FBQUEsUUFDekIsS0FBSztBQUFRO0FBQUEsUUFHYixLQUFLO0FBQ0osY0FBRzNvQixFQUFFLE9BQU87QUFBSztBQUFBLFFBRWxCLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBUSxVQUFBMm9CLEVBQUssSUFBSTtBQUFHO0FBQUEsUUFDekIsS0FBSztBQUFRO0FBQUEsUUFHYixLQUFLO0FBQ0osY0FBRzNvQixFQUFFLE9BQU87QUFBSztBQUFBLFFBRWxCLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBUSxVQUFBMm9CLEVBQUssSUFBSTtBQUFHO0FBQUEsUUFDekIsS0FBSztBQUFRO0FBQUEsUUFHYixLQUFLO0FBQ0osVUFBRzNvQixFQUFFLFFBQUsyb0IsRUFBSyxRQUFRM29CLEVBQUUsSUFBSSxNQUFNLEdBQUUsQ0FBQztBQUN0QztBQUFBLFFBQ0QsS0FBSztBQUFBLFFBQVcsS0FBSztBQUFBLFFBQVksS0FBSztBQUFZO0FBQUEsUUFHbEQsS0FBSztBQUFXLFVBQUEyb0IsRUFBSyxTQUFTM29CLEVBQUU7QUFBSztBQUFBLFFBQ3JDLEtBQUs7QUFBQSxRQUFZLEtBQUs7QUFBQSxRQUFhLEtBQUs7QUFBYTtBQUFBLFFBR3JELEtBQUs7QUFBYyxVQUFBMm9CLEVBQUssU0FBUzNvQixFQUFFO0FBQUs7QUFBQSxRQUN4QyxLQUFLO0FBQUEsUUFBZSxLQUFLO0FBQUEsUUFBZ0IsS0FBSztBQUFnQjtBQUFBLFFBRzlELEtBQUs7QUFBVztBQUFBLFFBQ2hCLEtBQUs7QUFBQSxRQUFZLEtBQUs7QUFBQSxRQUFhLEtBQUs7QUFBYTtBQUFBLFFBR3JELEtBQUs7QUFBQSxRQUFXLEtBQUs7QUFBQSxRQUFZLEtBQUs7QUFBYTtBQUFBLFFBQ25ELEtBQUs7QUFBUSxVQUFBcXRDLElBQU87QUFBTTtBQUFBLFFBQzFCLEtBQUs7QUFBVSxVQUFBQSxJQUFPO0FBQU87QUFBQSxRQUM3QjtBQUNDLGNBQUdydEMsRUFBRSxDQUFDLEVBQUUsV0FBVyxDQUFDLE1BQU0sTUFBTSxDQUFDcXRDO0FBQU0sa0JBQU0sSUFBSSxNQUFNLDhCQUE4QnJ0QyxFQUFFLENBQUMsQ0FBQztBQUFBLE1BQzFGO0FBQUEsSUFDRDtBQUNELFNBQU8yb0I7QUFDUjtBQUVBLElBQUkya0IsS0FBeUIsMkJBQVc7QUFDdkMsTUFBSUMsSUFBUzF2QixHQUFTLEdBQUcsR0FBRzJ2QixJQUFVM3ZCLEdBQVMsS0FBSztBQUVwRCxXQUFTNHZCLEVBQVFwc0MsR0FBRztBQUVuQixRQUFJOUUsSUFBSThFLEVBQUUsTUFBTWtzQyxDQUFNO0FBQ3RCLFFBQUcsQ0FBQ2h4QztBQUFHLGFBQU8sRUFBQyxHQUFFLEtBQUssR0FBRSxHQUFFO0FBRTFCLFFBQUkzQyxJQUFjLEVBQUMsR0FBRSxLQUFLLEdBQUUyaUIsR0FBWWhnQixFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQ3pDNndDLElBQU0vckMsRUFBRSxNQUFNbXNDLENBQU87QUFDekIsV0FBR0osTUFBS3h6QyxFQUFFLElBQUl1ekMsR0FBVUMsRUFBSSxDQUFDLENBQUMsSUFDdkJ4ekM7QUFBQSxFQUNQO0FBQ0QsTUFBSTh6QyxJQUFTLGlCQUFpQkMsSUFBTztBQUNyQyxTQUFPLFNBQWtCQyxHQUFJO0FBQzVCLFdBQU9BLEVBQUcsUUFBUUYsR0FBTyxFQUFFLEVBQUUsTUFBTUMsQ0FBSSxFQUFFLElBQUlGLENBQU8sRUFBRSxPQUFPLFNBQVNwc0MsR0FBRztBQUFFLGFBQU9BLEVBQUU7QUFBQSxJQUFFLENBQUU7QUFBQSxFQUMxRjtBQUNBLEtBSUl3c0MsS0FBMkIsMkJBQTRCO0FBQzFELE1BQUlDLElBQVU7QUFDZCxXQUFTQyxFQUFXcGxCLEdBQU1xbEIsR0FBT0MsR0FBTztBQUN2QyxRQUFJbFMsSUFBMEIsQ0FBQTtBQUU5QixJQUFHcFQsRUFBSyxLQUFHb1QsRUFBTSxLQUFLLDZCQUE2QixHQUNoRHBULEVBQUssUUFBTW9ULEVBQU0sS0FBSywwQkFBMEJwVCxFQUFLLE9BQU8sR0FBRyxHQUMvREEsRUFBSyxNQUFJb1QsRUFBTSxLQUFLLGVBQWVwVCxFQUFLLEtBQUssS0FBSyxHQUNsREEsRUFBSyxXQUFTb1QsRUFBTSxLQUFLLHVCQUF1QixHQUNoRHBULEVBQUssVUFBUW9ULEVBQU0sS0FBSyxvQkFBb0IsR0FDL0NpUyxFQUFNLEtBQUssa0JBQWtCalMsRUFBTSxLQUFLLEVBQUUsSUFBSSxJQUFJLEdBRS9DcFQsRUFBSyxNQUFLcWxCLEVBQU0sS0FBSyxLQUFLLEdBQUdDLEVBQU0sS0FBSyxNQUFNLElBQzlDdGxCLEVBQUssTUFBS3FsQixFQUFNLEtBQUssS0FBSyxHQUFHQyxFQUFNLEtBQUssTUFBTSxJQUM5Q3RsQixFQUFLLFdBQVVxbEIsRUFBTSxLQUFLLEtBQUssR0FBR0MsRUFBTSxLQUFLLE1BQU07QUFFdEQsUUFBSUMsSUFBUXZsQixFQUFLLFVBQVU7QUFDM0IsV0FBR3VsQixLQUFTLGlCQUFpQkEsS0FBUyxVQUFTQSxJQUFRLFFBQy9DQSxLQUFTLGdCQUFhQSxJQUFRLFFBQ25DQSxLQUFTLE9BQU1GLEVBQU0sS0FBSyxNQUFNRSxJQUFRLEdBQUcsR0FBR0QsRUFBTSxLQUFLLE9BQU9DLElBQVEsR0FBRyxJQUU5RUQsRUFBTSxLQUFLLFNBQVMsR0FDYnRsQjtBQUFBLEVBQ1A7QUFHRCxXQUFTd2xCLEVBQVU5c0MsR0FBRztBQUNyQixRQUFJK3NDLElBQW1ELENBQUMsQ0FBRSxHQUFDL3NDLEVBQUUsR0FBRSxDQUFFLENBQUE7QUFDakUsV0FBSUEsRUFBRSxLQUVIQSxFQUFFLEtBQUcwc0MsRUFBVzFzQyxFQUFFLEdBQUcrc0MsRUFBTSxDQUFDLEdBQUdBLEVBQU0sQ0FBQyxDQUFDLEdBRW5DQSxFQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSUEsRUFBTSxDQUFDLEVBQUUsUUFBUU4sR0FBUSxPQUFPLElBQUlNLEVBQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUovRDtBQUFBLEVBS2hCO0FBRUQsU0FBTyxTQUFrQlIsR0FBSTtBQUM1QixXQUFPQSxFQUFHLElBQUlPLENBQVMsRUFBRSxLQUFLLEVBQUU7QUFBQSxFQUNsQztBQUNBLEtBR0lFLEtBQVcsMkNBQTJDQyxLQUFXLGdCQUNqRUMsS0FBYTtBQUNqQixTQUFTQyxHQUFTcjBDLEdBQUdpRSxHQUFNO0FBQzFCLE1BQUlxd0MsSUFBT3J3QyxJQUFPQSxFQUFLLFdBQVcsSUFDOUI2ZCxJQUFJLENBQUE7QUFDUixTQUFJOWhCLEtBSURBLEVBQUUsTUFBTSx1QkFBdUIsS0FDakM4aEIsRUFBRSxJQUFJTSxHQUFZcUIsR0FBU3pqQixFQUFFLE1BQU1BLEVBQUUsUUFBUSxHQUFHLElBQUUsQ0FBQyxFQUFFLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUNwRjhoQixFQUFFLElBQUkyQixHQUFTempCLENBQUMsR0FDYnMwQyxNQUFNeHlCLEVBQUUsSUFBSWMsR0FBV2QsRUFBRSxDQUFDO0FBQUE7QUFBQSxJQUdiOWhCLEVBQUUsTUFBTW0wQyxFQUFRLE1BQ2hDcnlCLEVBQUUsSUFBSTJCLEdBQVN6akIsQ0FBQyxHQUNoQjhoQixFQUFFLElBQUlNLEdBQVlxQixJQUFVempCLEVBQUUsUUFBUW8wQyxJQUFZLEVBQUUsRUFBRSxNQUFNRixFQUFRLEtBQUcsQ0FBQSxHQUFJLEtBQUssRUFBRSxFQUFFLFFBQVEzeUIsSUFBUyxFQUFFLENBQUMsQ0FBQyxHQUN0Ryt5QixNQUFNeHlCLEVBQUUsSUFBSTR4QixHQUFXUCxHQUFTcnhCLEVBQUUsQ0FBQyxDQUFDO0FBQUEsS0FJakNBLEtBakJPLEVBQUUsR0FBRyxHQUFFO0FBa0J0QjtBQUdBLElBQUl5eUIsS0FBUSxrREFDUkMsS0FBUSw4QkFDUkMsS0FBUTtBQUNaLFNBQVNDLEdBQWMzNUMsR0FBaUJrSixHQUFjO0FBQ3JELE1BQUk5QyxJQUFhLENBQUEsR0FBYXdFLElBQUs7QUFDbkMsTUFBRyxDQUFDNUs7QUFBTSxXQUFPb0c7QUFFakIsTUFBSTI5QixJQUFNL2pDLEVBQUssTUFBTXc1QyxFQUFLO0FBQzFCLE1BQUd6VixHQUFLO0FBQ1AsSUFBQW41QixJQUFLbTVCLEVBQUksQ0FBQyxFQUFFLFFBQVEwVixJQUFNLEVBQUUsRUFBRSxNQUFNQyxFQUFLO0FBQ3pDLGFBQVEsSUFBSSxHQUFHLEtBQUs5dUMsRUFBRyxRQUFRLEVBQUUsR0FBRztBQUNuQyxVQUFJbEcsSUFBSTQwQyxHQUFTMXVDLEVBQUcsQ0FBQyxFQUFFLEtBQUksR0FBSTFCLENBQUk7QUFDbkMsTUFBR3hFLEtBQUssU0FBTTBCLEVBQUVBLEVBQUUsTUFBTSxJQUFJMUI7QUFBQSxJQUM1QjtBQUNELElBQUFxL0IsSUFBTXBkLEdBQVlvZCxFQUFJLENBQUMsQ0FBQyxHQUFHMzlCLEVBQUUsUUFBUTI5QixFQUFJLE9BQU8zOUIsRUFBRSxTQUFTMjlCLEVBQUk7QUFBQSxFQUMvRDtBQUNELFNBQU8zOUI7QUFDUjtBQUVBLElBQUl3ekMsS0FBZTtBQUNuQixTQUFTQyxHQUFjOVYsR0FBYTc2QixHQUFpQjtBQUNwRCxNQUFHLENBQUNBLEVBQUs7QUFBUyxXQUFPO0FBQ3pCLE1BQUl4RSxJQUFJLENBQUMwaEIsRUFBVTtBQUNuQixFQUFBMWhCLEVBQUVBLEVBQUUsTUFBTSxJQUFLOGtCLEdBQVUsT0FBTyxNQUFNO0FBQUEsSUFDckMsT0FBT08sR0FBVyxDQUFDO0FBQUEsSUFDbkIsT0FBT2dhLEVBQUk7QUFBQSxJQUNYLGFBQWFBLEVBQUk7QUFBQSxFQUNqQixDQUFBO0FBQ0QsV0FBUXRoQyxJQUFJLEdBQUdBLEtBQUtzaEMsRUFBSSxRQUFRLEVBQUV0aEM7QUFBSyxRQUFHc2hDLEVBQUl0aEMsQ0FBQyxLQUFLLE1BQ25EO0FBQUEsVUFBSTJELElBQWlCMjlCLEVBQUl0aEMsQ0FBQyxHQUN0QnEzQyxJQUFRO0FBQ1osTUFBRzF6QyxFQUFFLElBQUcwekMsS0FBUzF6QyxFQUFFLEtBRWxCMHpDLEtBQVMsTUFDTDF6QyxFQUFFLE1BQUdBLEVBQUUsSUFBSSxLQUNaQSxFQUFFLEVBQUUsTUFBTXd6QyxFQUFZLE1BQUdFLEtBQVMsMEJBQ3JDQSxLQUFTLE1BQU1weUIsR0FBVXRoQixFQUFFLENBQUMsSUFBSSxTQUVqQzB6QyxLQUFTLFNBQ1RwMUMsRUFBRUEsRUFBRSxNQUFNLElBQUtvMUM7QUFBQTtBQUVoQixTQUFHcDFDLEVBQUUsU0FBTyxNQUFJQSxFQUFFQSxFQUFFLE1BQU0sSUFBSyxVQUFXQSxFQUFFLENBQUMsSUFBRUEsRUFBRSxDQUFDLEVBQUUsUUFBUSxNQUFLLEdBQUcsSUFDN0RBLEVBQUUsS0FBSyxFQUFFO0FBQ2pCO0FBRUEsU0FBU3ExQyxHQUFrQi81QyxHQUFNO0FBQ2hDLFNBQU8sQ0FBQ0EsRUFBSyxXQUFXLENBQUMsR0FBR0EsRUFBSyxXQUFXLENBQUMsQ0FBQztBQUMvQztBQUdBLFNBQVNnNkMsR0FBY2g2QyxHQUFNa0osR0FBYztBQUMxQyxNQUFJOUMsSUFBYSxDQUFBLEdBQ2IreEMsSUFBTztBQUNYLFNBQUExckIsR0FBYXpzQixHQUFNLFNBQW9CMEssR0FBS21JLEdBQUdnYSxHQUFJO0FBQ2xELFlBQU9BLEdBQUU7QUFBQSxNQUNSLEtBQUs7QUFDSixRQUFBem1CLEVBQUUsUUFBUXNFLEVBQUksQ0FBQyxHQUFHdEUsRUFBRSxTQUFTc0UsRUFBSSxDQUFDO0FBQUc7QUFBQSxNQUN0QyxLQUFLO0FBQ0osUUFBQXRFLEVBQUUsS0FBS3NFLENBQUc7QUFBRztBQUFBLE1BQ2QsS0FBSztBQUNKLGVBQU87QUFBQSxNQUVSLEtBQUs7QUFDSixRQUFBeXRDLElBQU87QUFBTTtBQUFBLE1BQ2QsS0FBSztBQUNKLFFBQUFBLElBQU87QUFBTztBQUFBLE1BRWY7QUFFQyxZQURHdGxDLEVBQUUsR0FDRixDQUFDc2xDLEtBQVFqdkMsRUFBSztBQUFLLGdCQUFNLElBQUksTUFBTSx5QkFBeUIyakIsRUFBRyxTQUFTLEVBQUUsQ0FBQztBQUFBLElBQy9FO0FBQUEsRUFDSCxDQUFFLEdBQ016bUI7QUFDUjtBQUVBLFNBQVM2ekMsR0FBa0JsVyxHQUFLci9CLEdBQUc7QUFDbEMsU0FBSUEsTUFBR0EsSUFBSTZSLEVBQVEsQ0FBQyxJQUNwQjdSLEVBQUUsWUFBWSxHQUFHcS9CLEVBQUksS0FBSyxHQUMxQnIvQixFQUFFLFlBQVksR0FBR3EvQixFQUFJLE1BQU0sR0FDcEJyL0I7QUFDUjtBQUVBLElBQUl3MUMsS0FBbUJscEI7QUFFdkIsU0FBU21wQixHQUFjcFcsR0FBaUI7QUFDdkMsTUFBSXhXLElBQUtSO0FBQ1QsRUFBQU8sRUFBYUMsR0FBSSxLQUEwQjBzQixHQUFrQmxXLENBQUcsQ0FBQztBQUNqRSxXQUFRdGhDLElBQUksR0FBR0EsSUFBSXNoQyxFQUFJLFFBQVEsRUFBRXRoQztBQUFHLElBQUE2cUIsRUFBYUMsR0FBSSxJQUF5QjJzQixHQUFpQm5XLEVBQUl0aEMsQ0FBQyxDQUFDLENBQUM7QUFFdEcsU0FBQTZxQjtBQUFBLElBQWFDO0FBQUEsSUFBSTtBQUFBO0FBQUEsS0FDVkEsRUFBRztBQUNYO0FBQ0EsU0FBUzZzQixHQUFTNzNDLEdBQWtDO0FBR25ELFdBREltQyxJQUFzQixDQUFBLEdBQUlvbkIsSUFBS3ZwQixFQUFJLE1BQU0sRUFBRSxHQUN2Q0UsSUFBSSxHQUFHQSxJQUFJcXBCLEVBQUcsUUFBUSxFQUFFcnBCO0FBQUcsSUFBQWlDLEVBQUVqQyxDQUFDLElBQUlxcEIsRUFBR3JwQixDQUFDLEVBQUUsV0FBVyxDQUFDO0FBQzVELFNBQU9pQztBQUNSO0FBR0EsU0FBUzIxQyxHQUFvQmw0QyxHQUFNcXFCLEdBQW9CO0FBQ3RELE1BQUk5bkIsSUFBWSxDQUFBO0FBQ2hCLFNBQUFBLEVBQUUsUUFBUXZDLEVBQUssV0FBVyxDQUFDLEdBQzNCdUMsRUFBRSxRQUFRdkMsRUFBSyxXQUFXLENBQUMsR0FFeEJxcUIsS0FBVSxNQUFHcnFCLEVBQUssS0FBS3FxQixJQUFTLElBQzVCOW5CO0FBQ1I7QUFHQSxTQUFTNDFDLEdBQTJCbjRDLEdBQU07QUFDekMsTUFBSXVDLElBQUksQ0FBQTtBQUNSLFNBQUFBLEVBQUUsS0FBS3ZDLEVBQUssV0FBVyxHQUFHLE1BQU0sR0FDaEN1QyxFQUFFLElBQUkyMUMsR0FBb0JsNEMsR0FBTSxDQUFDLEdBQ2pDdUMsRUFBRSxJQUFJMjFDLEdBQW9CbDRDLEdBQU0sQ0FBQyxHQUNqQ3VDLEVBQUUsSUFBSTIxQyxHQUFvQmw0QyxHQUFNLENBQUMsR0FDMUJ1QztBQUNSO0FBR0EsU0FBUzYxQyxHQUF3QnA0QyxHQUFNO0FBT3RDLFdBTkljLElBQU1kLEVBQUssV0FBVyxDQUFDLEdBQ3ZCVSxJQUFNVixFQUFLLElBQUljLElBQU0sR0FDckJ5QixJQUFJLENBQUEsR0FDSjhSLElBQU1yVSxFQUFLLFdBQVcsQ0FBQyxHQUN2QnE0QyxJQUF3QyxDQUFBLEdBRXRDaGtDLE1BQVE7QUFBRyxJQUFBZ2tDLEVBQU0sS0FBSyxFQUFFLEdBQUdyNEMsRUFBSyxXQUFXLENBQUMsR0FBRyxHQUFHQSxFQUFLLFdBQVcsR0FBRyxNQUFNLEVBQUMsQ0FBRTtBQUdwRixNQUZBdUMsRUFBRSxPQUFPdkMsRUFBSyxXQUFXLEdBQUcsTUFBTSxHQUNsQ3VDLEVBQUUsUUFBUTgxQyxHQUNQcjRDLEVBQUssS0FBS1U7QUFBSyxVQUFNLElBQUksTUFBTSw0QkFBNEJWLEVBQUssSUFBSSxTQUFTVSxDQUFHO0FBQ25GLFNBQU82QjtBQUNSO0FBR0EsU0FBUysxQyxHQUFtQnQ0QyxHQUFNO0FBQ2pDLE1BQUl1QyxJQUFJLENBQUE7QUFDUixFQUFBdkMsRUFBSyxLQUFLO0FBRVYsV0FESXFVLElBQU1yVSxFQUFLLFdBQVcsQ0FBQyxHQUNyQnFVLE1BQVE7QUFBRyxJQUFBOVIsRUFBRSxLQUFLNjFDLEdBQXdCcDRDLENBQUksQ0FBQztBQUNyRCxTQUFPdUM7QUFDUjtBQUdBLFNBQVNnMkMsR0FBMEJ2NEMsR0FBd0I7QUFDMUQsTUFBSXVDLElBQXNCLENBQUE7QUFDMUIsRUFBQXZDLEVBQUssS0FBSztBQUVWLFdBRElxVSxJQUFNclUsRUFBSyxXQUFXLENBQUMsR0FDckJxVSxNQUFRO0FBQUcsSUFBQTlSLEVBQUUsS0FBS3ZDLEVBQUssV0FBVyxHQUFHLE1BQU0sQ0FBQztBQUNsRCxTQUFPdUM7QUFDUjtBQUdBLFNBQVNpMkMsR0FBMEJ4NEMsR0FBTTtBQUN4QyxNQUFJdUMsSUFBSSxDQUFBO0FBQ00sU0FBQXZDLEVBQUssV0FBVyxDQUFDLEdBQy9CQSxFQUFLLEtBQUssR0FDVnVDLEVBQUUsS0FBS3ZDLEVBQUssV0FBVyxHQUFHLE1BQU0sR0FDaEN1QyxFQUFFLE9BQU92QyxFQUFLLFdBQVcsR0FBRyxNQUFNLEdBQ2xDdUMsRUFBRSxJQUFJMjFDLEdBQW9CbDRDLEdBQU0sQ0FBQyxHQUNqQ3VDLEVBQUUsSUFBSTIxQyxHQUFvQmw0QyxHQUFNLENBQUMsR0FDakN1QyxFQUFFLElBQUkyMUMsR0FBb0JsNEMsR0FBTSxDQUFDLEdBQzFCdUM7QUFDUjtBQUVBLFNBQVNrMkMsR0FBY3o0QyxHQUFNO0FBRTVCLE1BQUkrNUIsSUFBTXllLEdBQTBCeDRDLENBQUk7QUFLeEMsTUFIQSs1QixFQUFJLFFBQVEvNUIsRUFBSyxXQUFXLEdBQUcsT0FBTyxHQUN0Qys1QixFQUFJLFFBQVEvNUIsRUFBSyxXQUFXLENBQUMsR0FDN0IrNUIsRUFBSSxRQUFRLzVCLEVBQUssV0FBVyxDQUFDLEdBQzFCQSxFQUFLLFdBQVcsQ0FBQyxLQUFLO0FBQU0sVUFBTSxJQUFJLE1BQU0scUJBQXFCO0FBQ3BFLFNBQU8rNUI7QUFDUjtBQUdBLFNBQVMyZSxHQUF1QjE0QyxHQUFNcXFCLEdBQW1CO0FBQ3hELE1BQUkvWSxJQUFNdFIsRUFBSyxJQUFJcXFCLEdBQ2Y5bkIsSUFBSSxDQUFBO0FBQ1IsRUFBQUEsRUFBRSxRQUFTdkMsRUFBSyxXQUFXLENBQUMsSUFBSSxJQUNoQ0EsRUFBSyxLQUFLLEdBQ1Z1QyxFQUFFLFFBQVF2QyxFQUFLLFdBQVcsQ0FBQztBQUMzQixNQUFJMjRDLElBQVE7QUFDWixVQUFPcDJDLEVBQUUsT0FBSztBQUFBLElBQ2IsS0FBSztBQUFBLElBQVEsS0FBSztBQUFBLElBQVEsS0FBSztBQUFRLE1BQUFvMkMsSUFBU3AyQyxFQUFFLFNBQVM7QUFBTztBQUFBLElBQ2xFLEtBQUs7QUFBUSxNQUFBbzJDLElBQVNwMkMsRUFBRSxTQUFTO0FBQU87QUFBQSxJQUN4QyxLQUFLO0FBQUcsTUFBQW8yQyxJQUFTcDJDLEVBQUUsU0FBUyxNQUFRQSxFQUFFLFNBQVMsS0FBUUEsRUFBRSxTQUFTO0FBQU87QUFBQSxJQUN6RTtBQUFTLFlBQU0sd0NBQXdDQSxFQUFFO0FBQUEsRUFDekQ7QUFDRCxNQUFHLENBQUNvMkM7QUFBTyxVQUFNLElBQUksTUFBTSxpQ0FBaUM7QUFDNUQsU0FBQXAyQyxFQUFFLFlBQVl2QyxFQUFLLFdBQVcsQ0FBQyxHQUMvQnVDLEVBQUUsVUFBVXZDLEVBQUssV0FBVyxDQUFDLEdBQzdCdUMsRUFBRSxlQUFldkMsRUFBSyxXQUFXLENBQUMsR0FDbENBLEVBQUssS0FBSyxHQUNWdUMsRUFBRSxVQUFVdkMsRUFBSyxXQUFZc1IsSUFBSXRSLEVBQUssS0FBSSxHQUFHLFNBQVMsR0FDdERBLEVBQUssSUFBSXNSLEdBQ0YvTztBQUNSO0FBR0EsU0FBU3EyQyxHQUF5QjU0QyxHQUFNcXFCLEdBQW1CO0FBQzFELE1BQUk5bkIsSUFBSSxDQUFBLEdBQUkrTyxJQUFNdFIsRUFBSyxJQUFJcXFCO0FBQzNCLFNBQUFycUIsRUFBSyxLQUFLLEdBQ1Z1QyxFQUFFLE9BQU92QyxFQUFLLE1BQU1BLEVBQUssR0FBR0EsRUFBSyxJQUFFLEVBQUUsR0FBR0EsRUFBSyxLQUFLLElBQ2xEdUMsRUFBRSxXQUFXdkMsRUFBSyxNQUFNQSxFQUFLLEdBQUdBLEVBQUssSUFBRSxFQUFFLEdBQUdBLEVBQUssS0FBSyxJQUN6Q0EsRUFBSyxXQUFXLENBQUMsR0FDOUJ1QyxFQUFFLGVBQWV2QyxFQUFLLE1BQU1BLEVBQUssR0FBR3NSLENBQUcsR0FBR3RSLEVBQUssSUFBSXNSLEdBQzVDL087QUFDUjtBQUdBLFNBQVNzMkMsR0FBcUI3NEMsR0FBTTtBQUNuQyxNQUFJODRDLElBQU9aLEdBQW9CbDRDLENBQUk7QUFDbkMsVUFBTzg0QyxFQUFLLE9BQUs7QUFBQSxJQUNoQixLQUFLO0FBQU0sYUFBTyxDQUFDQSxFQUFLLE9BQU9DLEdBQWlCLzRDLENBQVUsQ0FBQztBQUFBLElBQzNELEtBQUs7QUFBTSxhQUFPLENBQUM4NEMsRUFBSyxPQUFPRSxHQUEyQixDQUFDO0FBQUEsSUFDM0QsS0FBSztBQUFNLGFBQU8sQ0FBQ0YsRUFBSyxPQUFPRyxHQUFpQmo1QyxDQUFVLENBQUM7QUFBQSxFQUMzRDtBQUNELFFBQU0sSUFBSSxNQUFNLG1EQUFtRDg0QyxFQUFLLEtBQUs7QUFDOUU7QUFHQSxTQUFTQyxHQUFpQi80QyxHQUFrQjtBQUMzQyxNQUFJb1IsSUFBUXBSLEVBQUssV0FBVyxDQUFDO0FBQzdCLE9BQUlvUixJQUFRLE9BQVM7QUFBTSxVQUFNLElBQUksTUFBTSx5QkFBeUI7QUFDcEUsTUFBSUMsSUFBS3JSLEVBQUssV0FBVyxDQUFDLEdBRXRCKzVCLElBQU0yZSxHQUF1QjE0QyxHQUFNcVIsQ0FBRSxHQUNyQzZuQyxJQUFXTixHQUF5QjU0QyxHQUFNQSxFQUFLLFNBQVNBLEVBQUssQ0FBQztBQUNsRSxTQUFPLEVBQUUsR0FBRSxPQUFPLEdBQUUrNUIsR0FBSyxHQUFFbWY7QUFDNUI7QUFFQSxTQUFTRixLQUFtQztBQUFFLFFBQU0sSUFBSSxNQUFNLGlEQUFpRDtBQUFJO0FBRW5ILFNBQVNDLEdBQWlCajVDLEdBQWtCO0FBQzNDLE1BQUltNUMsSUFBVSxDQUFDLFlBQVcsYUFBWSxXQUFVLFlBQVcsbUJBQWtCLGtCQUFpQixpQkFBZ0IsV0FBVztBQUN6SCxFQUFBbjVDLEVBQUssS0FBRztBQUNSLE1BQUlrMkIsSUFBTWwyQixFQUFLLFdBQVdBLEVBQUssU0FBU0EsRUFBSyxHQUFHLE1BQU0sR0FDbER1QyxJQUFJLENBQUE7QUFDUixTQUFBMnpCLEVBQUksUUFBUTdSLElBQVUsU0FBbUJ2aEIsR0FBRztBQUMzQyxRQUFJNkYsSUFBWTZiLEdBQVkxaEIsQ0FBQztBQUM3QixZQUFPaWlCLEdBQVNwYyxFQUFFLENBQUMsQ0FBQyxHQUFDO0FBQUEsTUFDcEIsS0FBSztBQUFTO0FBQUEsTUFDZCxLQUFLO0FBQUEsTUFBZSxLQUFLO0FBQWlCO0FBQUEsTUFDMUMsS0FBSztBQUFZLFFBQUF3d0MsRUFBUSxRQUFRLFNBQVMxNkMsR0FBRztBQUFFLFVBQUE4RCxFQUFFOUQsQ0FBQyxJQUFJa0ssRUFBRWxLLENBQUM7QUFBQSxRQUFJLENBQUE7QUFBRztBQUFBLE1BQ2hFLEtBQUs7QUFBa0IsUUFBQThELEVBQUUsbUJBQW1Cb0csRUFBRSxrQkFBa0JwRyxFQUFFLHFCQUFxQm9HLEVBQUU7QUFBb0I7QUFBQSxNQUM3RyxLQUFLO0FBQUEsTUFBbUIsS0FBSztBQUFrQixRQUFBcEcsRUFBRSxPQUFPLENBQUU7QUFBRTtBQUFBLE1BQzVELEtBQUs7QUFBb0I7QUFBQSxNQUV6QixLQUFLO0FBQWlCLFFBQUFBLEVBQUUsTUFBTW9HLEVBQUU7QUFBSztBQUFBLE1BQ3JDLEtBQUs7QUFBbUI7QUFBQSxNQUN4QixLQUFLO0FBQWlCLFFBQUFwRyxFQUFFLEtBQUssS0FBS29HLENBQUM7QUFBRztBQUFBLE1BQ3RDO0FBQVMsY0FBTUEsRUFBRSxDQUFDO0FBQUEsSUFDbEI7QUFBQSxFQUNILENBQUUsR0FDTXBHO0FBQ1I7QUFHQSxTQUFTNjJDLEdBQXNCcDVDLEdBQU1xcUIsR0FBbUI7QUFDdkQsTUFBSTluQixJQUFJLENBQUEsR0FDSnUyQyxJQUFPdjJDLEVBQUUsd0JBQXdCMjFDLEdBQW9CbDRDLEdBQU0sQ0FBQztBQUNoRSxNQURtRXFxQixLQUFVLEdBQzFFeXVCLEVBQUssU0FBUztBQUFHLFVBQU0sSUFBSSxNQUFNLHNDQUFzQ0EsRUFBSyxLQUFLO0FBQ3BGLE1BQUdBLEVBQUssUUFBUSxLQUFLQSxFQUFLLFFBQVE7QUFBRyxVQUFNLElBQUksTUFBTSxzQ0FBc0NBLEVBQUssS0FBSztBQUNyRyxFQUFBdjJDLEVBQUUsUUFBUXZDLEVBQUssV0FBVyxDQUFDLEdBQUdxcUIsS0FBVTtBQUN4QyxNQUFJaFosSUFBS3JSLEVBQUssV0FBVyxDQUFDO0FBQUcsU0FBQXFxQixLQUFVLEdBQ3ZDOW5CLEVBQUUsbUJBQW1CbTJDLEdBQXVCMTRDLEdBQU1xUixDQUFFLEdBQUdnWixLQUFVaFosR0FDakU5TyxFQUFFLHFCQUFxQnEyQyxHQUF5QjU0QyxHQUFNcXFCLENBQU0sR0FDckQ5bkI7QUFDUjtBQUVBLFNBQVM4MkMsR0FBZ0JyNUMsR0FBb0I7QUFDNUMsTUFBSXVDLElBQUksQ0FBQSxHQUNKdTJDLElBQU92MkMsRUFBRSx3QkFBd0IyMUMsR0FBb0JsNEMsR0FBTSxDQUFDO0FBQ2hFLE1BQUc4NEMsRUFBSyxTQUFTLEtBQUtBLEVBQUssU0FBUztBQUFHLFVBQU0sK0JBQStCQSxFQUFLLFFBQVEsUUFBUUEsRUFBSztBQUN0RyxTQUFBdjJDLEVBQUUsT0FBT3ZDLEVBQUssV0FBVyxFQUFFLEdBQzNCdUMsRUFBRSxvQkFBb0J2QyxFQUFLLFdBQVcsRUFBRSxHQUN4Q3VDLEVBQUUsd0JBQXdCdkMsRUFBSyxXQUFXLEVBQUUsR0FDckN1QztBQUNSO0FBR0EsU0FBUysyQyxHQUFzQ0MsR0FBcUI7QUFDbkUsTUFBSUMsSUFBVyxHQUFRQyxHQUNuQkMsSUFBa0J6QixHQUFTc0IsQ0FBUSxHQUNuQ3o0QyxJQUFNNDRDLEVBQWdCLFNBQVMsR0FBRyxHQUFHQyxHQUNyQ0MsR0FBZUMsR0FBZUM7QUFHbEMsT0FGQUwsSUFBZ0IzMUMsR0FBWWhELENBQUcsR0FDL0IyNEMsRUFBYyxDQUFDLElBQUlDLEVBQWdCLFFBQy9CLElBQUksR0FBRyxLQUFLNTRDLEdBQUssRUFBRTtBQUFHLElBQUEyNEMsRUFBYyxDQUFDLElBQUlDLEVBQWdCLElBQUUsQ0FBQztBQUNoRSxPQUFJLElBQUk1NEMsSUFBSSxHQUFHLEtBQUssR0FBRyxFQUFFO0FBQ3hCLElBQUE2NEMsSUFBZUYsRUFBYyxDQUFDLEdBQzlCRyxJQUFrQkosSUFBVyxRQUEwQixJQUFKLEdBQ25ESyxJQUFpQkwsS0FBWSxJQUFLLE9BQ2xDTSxJQUFnQkYsSUFBZ0JDLEdBQ2hDTCxJQUFXTSxJQUFnQkg7QUFFNUIsU0FBT0gsSUFBVztBQUNuQjtBQUdBLElBQUlPLEtBQThDLDJCQUFXO0FBQzVELE1BQUlDLElBQVcsQ0FBQyxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sR0FBTSxLQUFNLElBQU0sR0FBTSxLQUFNLElBQU0sQ0FBSSxHQUNwR0MsSUFBYyxDQUFDLE9BQVEsTUFBUSxPQUFRLE9BQVEsTUFBUSxNQUFRLE9BQVEsT0FBUSxNQUFRLE9BQVEsT0FBUSxPQUFRLE9BQVEsT0FBUSxLQUFNLEdBQ3JJQyxJQUFZLENBQUMsT0FBUSxPQUFRLE9BQVEsT0FBUSxPQUFRLE9BQVEsT0FBUSxPQUFRLE9BQVEsT0FBUSxPQUFRLE9BQVEsT0FBUSxPQUFRLE9BQVEsT0FBUSxNQUFRLE1BQVEsTUFBUSxPQUFRLE9BQVEsS0FBUSxNQUFRLE1BQVEsTUFBUSxPQUFRLE9BQVEsT0FBUSxPQUFRLE9BQVEsT0FBUSxPQUFRLE9BQVEsT0FBUSxPQUFRLE9BQVEsT0FBUSxPQUFRLE9BQVEsT0FBUSxPQUFRLE9BQVEsT0FBUSxPQUFRLE9BQVEsT0FBUSxPQUFRLE9BQVEsT0FBUSxPQUFRLE9BQVEsTUFBUSxNQUFRLE9BQVEsT0FBUSxPQUFRLE9BQVEsT0FBUSxPQUFRLE9BQVEsT0FBUSxPQUFRLE9BQVEsT0FBUSxPQUFRLE1BQVEsTUFBUSxNQUFRLE9BQVEsT0FBUSxPQUFRLE9BQVEsT0FBUSxLQUFRLE1BQVEsTUFBUSxNQUFRLE9BQVEsT0FBUSxPQUFRLE9BQVEsTUFBUSxPQUFRLE9BQVEsT0FBUSxPQUFRLE9BQVEsT0FBUSxPQUFRLE9BQVEsTUFBUSxPQUFRLE9BQVEsT0FBUSxPQUFRLEtBQVEsTUFBUSxNQUFRLE1BQVEsTUFBUSxPQUFRLE9BQVEsTUFBUSxNQUFRLEtBQU0sR0FDbjFCQyxJQUFNLFNBQVNDLEdBQU07QUFBRSxZQUFTQSxJQUFLLElBQU1BLElBQUssT0FBUTtBQUFBLEVBQUssR0FDN0RDLElBQVMsU0FBU0MsR0FBT0MsR0FBTztBQUFFLFdBQU9KLEVBQUlHLElBQVFDLENBQUs7QUFBQSxLQUMxREMsSUFBdUIsU0FBU2pCLEdBQVU7QUFHN0MsYUFGSWtCLElBQVNSLEVBQVlWLEVBQVMsU0FBUyxDQUFDLEdBQ3hDbUIsSUFBaUIsS0FDYnA2QyxJQUFJaTVDLEVBQVMsU0FBTyxHQUFHajVDLEtBQUssR0FBRyxFQUFFQTtBQUV4QyxlQURJcTZDLElBQU9wQixFQUFTajVDLENBQUMsR0FDYm1CLElBQUksR0FBR0EsS0FBSyxHQUFHLEVBQUVBO0FBQ3hCLFFBQUdrNUMsSUFBTyxPQUFNRixLQUFVUCxFQUFVUSxDQUFjLElBQ2xEQyxLQUFRLEdBQUcsRUFBRUQ7QUFHZixXQUFPRDtBQUFBLEVBQ1Q7QUFDQyxTQUFPLFNBQVNHLEdBQXFCO0FBS3BDLGFBSklyQixJQUFXdEIsR0FBUzJDLENBQVEsR0FDNUJILElBQVNELEVBQXFCakIsQ0FBUSxHQUN0Q3NCLElBQVF0QixFQUFTLFFBQ2pCdUIsSUFBbUJoM0MsR0FBWSxFQUFFLEdBQzdCeEQsSUFBSSxHQUFHQSxLQUFLLElBQUksRUFBRUE7QUFBRyxNQUFBdzZDLEVBQWlCeDZDLENBQUMsSUFBSTtBQUNuRCxRQUFJeTZDLEdBQU1DLEdBQWtCQztBQVM1QixVQVJJSixJQUFRLE9BQU8sTUFDbEJFLElBQU9OLEtBQVUsR0FDakJLLEVBQWlCRCxDQUFLLElBQUlSLEVBQU9MLEVBQVMsQ0FBQyxHQUFHZSxDQUFJLEdBQ2xELEVBQUVGLEdBQ0ZFLElBQU9OLElBQVMsS0FDaEJPLElBQW1CekIsRUFBU0EsRUFBUyxTQUFTLENBQUMsR0FDL0N1QixFQUFpQkQsQ0FBSyxJQUFJUixFQUFPVyxHQUFrQkQsQ0FBSSxJQUVsREYsSUFBUTtBQUNiLFFBQUVBLEdBQ0ZFLElBQU9OLEtBQVUsR0FDakJLLEVBQWlCRCxDQUFLLElBQUlSLEVBQU9kLEVBQVNzQixDQUFLLEdBQUdFLENBQUksR0FDdEQsRUFBRUYsR0FDRkUsSUFBT04sSUFBUyxLQUNoQkssRUFBaUJELENBQUssSUFBSVIsRUFBT2QsRUFBU3NCLENBQUssR0FBR0UsQ0FBSTtBQUl2RCxTQUZBRixJQUFRLElBQ1JJLElBQVcsS0FBSzFCLEVBQVMsUUFDbkIwQixJQUFXO0FBQ2hCLE1BQUFGLElBQU9OLEtBQVUsR0FDakJLLEVBQWlCRCxDQUFLLElBQUlSLEVBQU9MLEVBQVNpQixDQUFRLEdBQUdGLENBQUksR0FDekQsRUFBRUYsR0FDRixFQUFFSSxHQUNGRixJQUFPTixJQUFTLEtBQ2hCSyxFQUFpQkQsQ0FBSyxJQUFJUixFQUFPZCxFQUFTc0IsQ0FBSyxHQUFHRSxDQUFJLEdBQ3RELEVBQUVGLEdBQ0YsRUFBRUk7QUFFSCxXQUFPSDtBQUFBLEVBQ1Q7QUFDQSxLQUdJSSxLQUE2QixTQUFTTixHQUFxQk8sR0FBTUMsR0FBZUMsR0FBVTVTLEdBQUc7QUFFaEcsRUFBSUEsTUFBR0EsSUFBSTBTLElBQ1BFLE1BQVVBLElBQVd0QixHQUE4QmEsQ0FBUTtBQUMvRCxNQUFJQyxHQUFPUztBQUNYLE9BQUlULElBQVEsR0FBR0EsS0FBU00sRUFBSyxRQUFRLEVBQUVOO0FBQ3RDLElBQUFTLElBQVFILEVBQUtOLENBQUssR0FDbEJTLEtBQVNELEVBQVNELENBQWEsR0FDL0JFLEtBQVVBLEtBQU8sSUFBTUEsS0FBTyxLQUFNLEtBQ3BDN1MsRUFBRW9TLENBQUssSUFBSVMsR0FDWCxFQUFFRjtBQUVILFNBQU8sQ0FBQzNTLEdBQUcyUyxHQUFlQyxDQUFRO0FBQ25DLEdBRUlFLEtBQTBCLFNBQVNYLEdBQXFCO0FBQzNELE1BQUlRLElBQWdCLEdBQUdDLElBQVd0QixHQUE4QmEsQ0FBUTtBQUN4RSxTQUFPLFNBQVNPLEdBQU07QUFDckIsUUFBSTFTLElBQUl5UyxHQUEyQixJQUFJQyxHQUFNQyxHQUFlQyxDQUFRO0FBQ3BFLFdBQUFELElBQWdCM1MsRUFBRSxDQUFDLEdBQ1pBLEVBQUUsQ0FBQztBQUFBLEVBQ1o7QUFDQTtBQUdBLFNBQVMrUyxHQUFxQng3QyxHQUFNcXFCLEdBQVF0akIsR0FBTXJDLEdBQUs7QUFDdEQsTUFBSW5DLElBQUssRUFBRSxLQUFLbTVCLEdBQVkxN0IsQ0FBSSxHQUFHLG1CQUFtQjA3QixHQUFZMTdCLENBQUksRUFBQztBQUN2RSxTQUFHK0csRUFBSyxhQUFVeEUsRUFBRSxXQUFXKzJDLEdBQXNDdnlDLEVBQUssUUFBUSxJQUNsRnJDLEVBQUksUUFBUW5DLEVBQUUsc0JBQXNCQSxFQUFFLFVBQ25DbUMsRUFBSSxVQUFPQSxFQUFJLFNBQVM2MkMsR0FBd0J4MEMsRUFBSyxRQUFRLElBQ3pEeEU7QUFDUjtBQUdBLFNBQVNrNUMsR0FBcUJ6N0MsR0FBTXFxQixHQUFtQlYsR0FBSTtBQUMxRCxNQUFJcG5CLElBQUlvbkIsS0FBTTtBQUFJLFNBQUFwbkIsRUFBRSxPQUFPdkMsRUFBSyxXQUFXLENBQUMsR0FBR0EsRUFBSyxLQUFLLEdBQ3REdUMsRUFBRSxTQUFTLElBQUdBLEVBQUUsT0FBTzgyQyxHQUFnQnI1QyxDQUFZLElBQ2pEdUMsRUFBRSxPQUFPNjJDLEdBQXNCcDVDLEdBQU1xcUIsQ0FBTSxHQUN6QzluQjtBQUNSO0FBQ0EsU0FBU201QyxHQUFlMTdDLEdBQU1xcUIsR0FBbUJ0akIsR0FBTTtBQUN0RCxNQUFJeEUsSUFBSyxFQUFFLE1BQU13RSxFQUFLLFFBQVEsSUFBSS9HLEVBQUssV0FBVyxDQUFDLElBQUksRUFBRztBQUMxRCxTQUFHdUMsRUFBRSxPQUFNazVDLEdBQXFCejdDLEdBQU1xcUIsSUFBTyxHQUFHOW5CLENBQUMsSUFDNUNpNUMsR0FBcUJ4N0MsR0FBTStHLEVBQUssUUFBUSxJQUFJc2pCLElBQVNBLElBQVMsR0FBR3RqQixHQUFNeEUsQ0FBQyxHQUN0RUE7QUFDUjtBQUdBLElBQUlvNUMsS0FBb0IsMkJBQVc7QUFDbEMsV0FBU0MsRUFBYXo2QyxHQUFlNEYsR0FBb0I7QUFDeEQsWUFBT0EsRUFBSyxNQUFJO0FBQUEsTUFDZixLQUFLO0FBQVUsZUFBTzgwQyxFQUFpQnA0QyxHQUFjdEMsQ0FBQyxHQUFHNEYsQ0FBSTtBQUFBLE1BQzdELEtBQUs7QUFBVSxlQUFPODBDLEVBQWlCMTZDLEdBQUc0RixDQUFJO0FBQUEsTUFDOUMsS0FBSztBQUFVLGVBQU84MEMsRUFBaUJuNEMsTUFBVyxPQUFPLFNBQVN2QyxDQUFDLElBQUlBLEVBQUUsU0FBUyxRQUFRLElBQUlnRCxHQUFJaEQsQ0FBQyxHQUFHNEYsQ0FBSTtBQUFBLE1BQzFHLEtBQUs7QUFBVSxlQUFPODBDLEVBQWlCNTVCLEdBQU85Z0IsQ0FBQyxHQUFHNEYsQ0FBSTtBQUFBLElBQ3REO0FBQ0QsVUFBTSxJQUFJLE1BQU0sdUJBQXVCQSxFQUFLLElBQUk7QUFBQSxFQUNoRDtBQUdELFdBQVM4MEMsRUFBaUJ6N0MsR0FBZ0IyRyxHQUFvQjtBQUM3RCxRQUFJeEUsSUFBSXdFLEtBQVEsSUFDWnltQixJQUFtQmpyQixFQUFFLFFBQVMsQ0FBRSxJQUFhLENBQUUsR0FFL0M4c0MsSUFBT2p2QyxFQUFJLE1BQU0sb0JBQW9CO0FBQ3pDLFFBQUcsQ0FBQ2l2QyxFQUFLO0FBQVEsWUFBTSxJQUFJLE1BQU0sbUJBQW1CO0FBQ3BELFFBQUk3akIsSUFBbUIsRUFBQyxHQUFHLEVBQUMsR0FBRSxHQUFHLEdBQUUsRUFBQyxHQUFHLEdBQUcsRUFBQyxHQUFFLEdBQUcsR0FBRTZqQixFQUFLLFNBQVMsRUFBQyxFQUFDO0FBQ2xFLFdBQUFBLEVBQUssUUFBUSxTQUFTeU0sR0FBT3ByQyxHQUFHO0FBQy9CLE1BQUcsTUFBTSxRQUFROGMsQ0FBRSxNQUFHQSxFQUFHOWMsQ0FBQyxJQUFJO0FBSzlCLGVBSklxckMsSUFBUSxZQUNSQyxJQUFhLEdBQ2J0NEIsR0FDQXRULElBQUksSUFDRHNULElBQU1xNEIsRUFBTSxLQUFLRCxDQUFLLEtBQUk7QUFDaEMsZ0JBQU9wNEIsRUFBSSxDQUFDLEdBQUM7QUFBQSxVQUNaLEtBQUs7QUFDSixnQkFBSTdsQixJQUFPaStDLEVBQU0sTUFBTUUsR0FBWUQsRUFBTSxZQUFZcjRCLEVBQUksQ0FBQyxFQUFFLE1BQU07QUFHbEUsZ0JBRkc3bEIsRUFBSyxDQUFDLEtBQUssUUFBS0EsSUFBT0EsRUFBSyxNQUFNLENBQUMsSUFDdEMsRUFBRXVTLEdBQ0N2UyxFQUFLLFFBQVE7QUFFZixrQkFBSXl0QixJQUFPLEVBQUMsR0FBR3p0QixHQUFNLEdBQUUsSUFBRztBQUMxQixjQUFHLE1BQU0sUUFBUTJ2QixDQUFFLElBQUdBLEVBQUc5YyxDQUFDLEVBQUVOLENBQUMsSUFBSWtiLElBQzVCa0MsRUFBRzdCLEdBQVksRUFBQyxHQUFFamIsR0FBRyxHQUFFTixFQUFDLENBQUMsQ0FBQyxJQUFJa2I7QUFBQSxZQUNuQztBQUNEO0FBQUEsUUFDRDtBQUNELFFBQUEwd0IsSUFBYUQsRUFBTTtBQUFBLE1BQ25CO0FBQ0QsTUFBRzNyQyxJQUFJb2IsRUFBTSxFQUFFLE1BQUdBLEVBQU0sRUFBRSxJQUFJcGI7QUFBQSxJQUNqQyxDQUFHLEdBQ0RvZCxFQUFHLE1BQU0sSUFBSWIsR0FBYW5CLENBQUssR0FDeEJnQztBQUFBLEVBQ1A7QUFFRCxXQUFTeXVCLEVBQWdCOTZDLEdBQWU0RixHQUFtQjtBQUFFLFdBQU9tbUIsR0FBa0IwdUIsRUFBYXo2QyxHQUFHNEYsQ0FBSSxHQUFHQSxDQUFJO0FBQUEsRUFBSTtBQUdySCxXQUFTbTFDLEVBQWExdUIsR0FBeUM7QUFJOUQsYUFISWpyQixJQUFJLENBQUMsZUFBZSxHQUNwQnlILElBQUk4aUIsR0FBa0JVLEVBQUcsTUFBTSxDQUFDLEdBQUdsQyxHQUNuQ2lDLElBQVEsTUFBTSxRQUFRQyxDQUFFLEdBQ3BCOWMsSUFBSTFHLEVBQUUsRUFBRSxHQUFHMEcsS0FBSzFHLEVBQUUsRUFBRSxHQUFHLEVBQUUwRyxHQUFHO0FBQ25DLE1BQUFuTyxFQUFFLEtBQUsscUJBQXFCO0FBQzVCLGVBQVE2TixJQUFJcEcsRUFBRSxFQUFFLEdBQUdvRyxLQUFLcEcsRUFBRSxFQUFFLEdBQUcsRUFBRW9HO0FBQUcsUUFBQTdOLEVBQUUsS0FBSyxhQUFhNk4sSUFBRSxFQUFFO0FBRTVELFdBREE3TixFQUFFLEtBQUssZUFBZSxHQUNsQjZOLElBQUlwRyxFQUFFLEVBQUUsR0FBR29HLEtBQUtwRyxFQUFFLEVBQUUsR0FBRyxFQUFFb0csR0FBRztBQUMvQixZQUFJcS9CLElBQVE5akIsR0FBWSxFQUFDLEdBQUVqYixHQUFFLEdBQUVOLEVBQUMsQ0FBQztBQUVqQyxRQURBa2IsSUFBT2lDLEtBQVNDLEVBQUc5YyxDQUFDLEtBQUcsQ0FBRSxHQUFFTixDQUFDLElBQUdvZCxFQUFHaWlCLENBQUssR0FDcEMsR0FBQ25rQixLQUFRQSxFQUFLLEtBQUssU0FBUyxDQUFDQSxFQUFLLEtBQUtBLEVBQUssUUFDL0Mvb0IsRUFBRSxLQUFLLE9BQU8rb0IsRUFBSyxNQUFNMEIsR0FBWTFCLENBQUksR0FBR0EsRUFBSyxHQUFHLEdBQ3BEL29CLEVBQUUsS0FBSyxRQUFRO0FBQUEsTUFDZjtBQUNELE1BQUFBLEVBQUUsS0FBSyxvQkFBb0I7QUFBQSxJQUMzQjtBQUNELFdBQU9BLEVBQUUsS0FBSyxFQUFFLElBQUk7QUFBQSxFQUNwQjtBQUVELFNBQU87QUFBQSxJQUNOLGFBQWEwNUM7QUFBQSxJQUNiLFVBQVVMO0FBQUEsSUFDVixZQUFZTTtBQUFBLEVBQ2Q7QUFDQTtBQUNBLFNBQVNDLEdBQVEzNkMsR0FBRztBQUNuQixNQUFJZSxJQUFJZixFQUFFLE1BQU1BLEVBQUUsQ0FBQyxNQUFJLE1BQUksSUFBRSxDQUFDLEVBQUUsTUFBTSxHQUFFLENBQUM7QUFDekMsU0FBTyxDQUFDLFNBQVNlLEVBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsU0FBU0EsRUFBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxTQUFTQSxFQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsRUFBRSxDQUFDO0FBQ3RGO0FBQ0EsU0FBU3l1QixHQUFRRyxHQUFLO0FBQ3JCLFdBQVE3d0IsSUFBRSxHQUFFaUMsSUFBRSxHQUFHakMsS0FBRyxHQUFHLEVBQUVBO0FBQUcsSUFBQWlDLElBQUlBLElBQUUsT0FBTzR1QixFQUFJN3dCLENBQUMsSUFBRSxNQUFJLE1BQUk2d0IsRUFBSTd3QixDQUFDLElBQUUsSUFBRSxJQUFFNndCLEVBQUk3d0IsQ0FBQztBQUN4RSxTQUFPaUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxjQUFjLE1BQU0sQ0FBQztBQUM1QztBQUVBLFNBQVM2NUMsR0FBUWpyQixHQUFLO0FBQ3JCLE1BQUl6Z0IsSUFBSXlnQixFQUFJLENBQUMsSUFBRSxLQUFLa3JCLElBQUlsckIsRUFBSSxDQUFDLElBQUUsS0FBSzlxQixJQUFFOHFCLEVBQUksQ0FBQyxJQUFFLEtBQ3pDN2lCLElBQUksS0FBSyxJQUFJb0MsR0FBRzJyQyxHQUFHaDJDLENBQUMsR0FBRzFFLElBQUksS0FBSyxJQUFJK08sR0FBRzJyQyxHQUFHaDJDLENBQUMsR0FBRytKLElBQUk5QixJQUFJM007QUFDMUQsTUFBR3lPLE1BQU07QUFBRyxXQUFPLENBQUMsR0FBRyxHQUFHTSxDQUFDO0FBRTNCLE1BQUk0ckMsSUFBSyxHQUFHL3RDLElBQUksR0FBR2d1QyxJQUFNanVDLElBQUkzTTtBQUU3QixVQURBNE0sSUFBSTZCLEtBQUttc0MsSUFBSyxJQUFJLElBQUlBLElBQUtBLElBQ3BCanVDLEdBQUM7QUFBQSxJQUNQLEtBQUtvQztBQUFHLE1BQUE0ckMsTUFBT0QsSUFBSWgyQyxLQUFLK0osSUFBSSxLQUFHO0FBQUc7QUFBQSxJQUNsQyxLQUFLaXNDO0FBQUcsTUFBQUMsS0FBT2oyQyxJQUFJcUssS0FBS04sSUFBSTtBQUFJO0FBQUEsSUFDaEMsS0FBSy9KO0FBQUcsTUFBQWkyQyxLQUFPNXJDLElBQUkyckMsS0FBS2pzQyxJQUFJO0FBQUk7QUFBQSxFQUNoQztBQUNELFNBQU8sQ0FBQ2tzQyxJQUFLLEdBQUcvdEMsR0FBR2d1QyxJQUFLLENBQUM7QUFDMUI7QUFFQSxTQUFTQyxHQUFRQyxHQUFJO0FBQ3BCLE1BQUlwdUMsSUFBSW91QyxFQUFJLENBQUMsR0FBR2x1QyxJQUFJa3VDLEVBQUksQ0FBQyxHQUFHNzNDLElBQUk2M0MsRUFBSSxDQUFDLEdBQ2pDcnNDLElBQUk3QixJQUFJLEtBQUszSixJQUFJLE1BQU1BLElBQUksSUFBSUEsSUFBSWpELElBQUlpRCxJQUFJd0wsSUFBRSxHQUM3QytnQixJQUFNLENBQUN4dkIsR0FBRUEsR0FBRUEsQ0FBQyxHQUFHKzZDLElBQUssSUFBRXJ1QyxHQUV0QnN1QztBQUNKLE1BQUdwdUMsTUFBTTtBQUFHLFlBQU9tdUMsSUFBRyxHQUFDO0FBQUEsTUFDdEIsS0FBSztBQUFBLE1BQUcsS0FBSztBQUFHLFFBQUFDLElBQUl2c0MsSUFBSXNzQyxHQUFJdnJCLEVBQUksQ0FBQyxLQUFLL2dCLEdBQUcrZ0IsRUFBSSxDQUFDLEtBQUt3ckI7QUFBRztBQUFBLE1BQ3RELEtBQUs7QUFBRyxRQUFBQSxJQUFJdnNDLEtBQUssSUFBSXNzQyxJQUFPdnJCLEVBQUksQ0FBQyxLQUFLd3JCLEdBQUd4ckIsRUFBSSxDQUFDLEtBQUsvZ0I7QUFBRztBQUFBLE1BQ3RELEtBQUs7QUFBRyxRQUFBdXNDLElBQUl2c0MsS0FBS3NzQyxJQUFLLElBQU12ckIsRUFBSSxDQUFDLEtBQUsvZ0IsR0FBRytnQixFQUFJLENBQUMsS0FBS3dyQjtBQUFHO0FBQUEsTUFDdEQsS0FBSztBQUFHLFFBQUFBLElBQUl2c0MsS0FBSyxJQUFJc3NDLElBQU92ckIsRUFBSSxDQUFDLEtBQUt3ckIsR0FBR3hyQixFQUFJLENBQUMsS0FBSy9nQjtBQUFHO0FBQUEsTUFDdEQsS0FBSztBQUFHLFFBQUF1c0MsSUFBSXZzQyxLQUFLc3NDLElBQUssSUFBTXZyQixFQUFJLENBQUMsS0FBSy9nQixHQUFHK2dCLEVBQUksQ0FBQyxLQUFLd3JCO0FBQUc7QUFBQSxNQUN0RCxLQUFLO0FBQUcsUUFBQUEsSUFBSXZzQyxLQUFLLElBQUlzc0MsSUFBT3ZyQixFQUFJLENBQUMsS0FBS3dyQixHQUFHeHJCLEVBQUksQ0FBQyxLQUFLL2dCO0FBQUc7QUFBQSxJQUN0RDtBQUNELFdBQVE5UCxJQUFJLEdBQUdBLEtBQUssR0FBRyxFQUFFQTtBQUFHLElBQUE2d0IsRUFBSTd3QixDQUFDLElBQUksS0FBSyxNQUFNNndCLEVBQUk3d0IsQ0FBQyxJQUFFLEdBQUc7QUFDMUQsU0FBTzZ3QjtBQUNSO0FBR0EsU0FBU3lyQixHQUFTQyxHQUFLQyxHQUFNO0FBQzVCLE1BQUdBLE1BQVM7QUFBRyxXQUFPRDtBQUN0QixNQUFJSixJQUFNTCxHQUFRRCxHQUFRVSxDQUFHLENBQUM7QUFDOUIsU0FBSUMsSUFBTyxJQUFHTCxFQUFJLENBQUMsSUFBSUEsRUFBSSxDQUFDLEtBQUssSUFBSUssS0FDaENMLEVBQUksQ0FBQyxJQUFJLEtBQUssSUFBSUEsRUFBSSxDQUFDLE1BQU0sSUFBSUssSUFDL0I5ckIsR0FBUXdyQixHQUFRQyxDQUFHLENBQUM7QUFDNUI7QUFJQSxJQUFJTSxLQUFVLEdBQUdDLEtBQVUsSUFBSUMsS0FBVSxHQUFHQyxLQUFNSDtBQUNsRCxTQUFTN04sR0FBUzdTLEdBQU87QUFBRSxTQUFPLEtBQUssT0FBUUEsSUFBUyxLQUFLLE1BQU0sTUFBSTZnQixFQUFHLElBQUcsT0FBT0EsRUFBSztBQUFHO0FBQzVGLFNBQVMvTixHQUFRZ08sR0FBSTtBQUFFLFNBQVEsS0FBSyxPQUFPQSxJQUFLLEtBQUdELEtBQU0sTUFBTSxHQUFHLElBQUc7QUFBTTtBQUMzRSxTQUFTRSxHQUFXQyxHQUFLO0FBQUUsU0FBUSxLQUFLLE9BQU9BLElBQU1ILEtBQU0sS0FBR0EsS0FBSSxHQUFHLElBQUc7QUFBTTtBQUc5RSxTQUFTSSxHQUFZQyxHQUFPO0FBQUUsU0FBT0gsR0FBV2pPLEdBQVFELEdBQVNxTyxDQUFLLENBQUMsQ0FBQztBQUFJO0FBRTVFLFNBQVNDLEdBQWNELEdBQU87QUFDN0IsTUFBSUUsSUFBUSxLQUFLLElBQUlGLElBQVFELEdBQVlDLENBQUssQ0FBQyxHQUFHRyxJQUFPUjtBQUN6RCxNQUFHTyxJQUFRO0FBQU8sU0FBSVAsS0FBSUQsSUFBU0MsS0FBSUYsSUFBUyxFQUFFRTtBQUFLLE1BQUcsS0FBSyxJQUFJSyxJQUFRRCxHQUFZQyxDQUFLLENBQUMsS0FBS0UsTUFBU0EsSUFBUSxLQUFLLElBQUlGLElBQVFELEdBQVlDLENBQUssQ0FBQyxHQUFHRyxJQUFPUjtBQUNoSyxFQUFBQSxLQUFNUTtBQUNQO0FBYUEsU0FBU2pQLEdBQVlrUCxHQUFrQjtBQUN0QyxFQUFHQSxFQUFLLFNBQ1BBLEVBQUssTUFBTXpPLEdBQVN5TyxFQUFLLEtBQUssR0FDOUJBLEVBQUssTUFBTXhPLEdBQVF3TyxFQUFLLEdBQUcsR0FDM0JBLEVBQUssTUFBTVQsTUFDRlMsRUFBSyxPQUNkQSxFQUFLLE1BQU14TyxHQUFRd08sRUFBSyxHQUFHLEdBQzNCQSxFQUFLLFFBQVFQLEdBQVdPLEVBQUssR0FBRyxHQUNoQ0EsRUFBSyxNQUFNVCxNQUNGLE9BQU9TLEVBQUssT0FBTyxhQUM1QkEsRUFBSyxRQUFRUCxHQUFXTyxFQUFLLEdBQUcsR0FDaENBLEVBQUssTUFBTXpPLEdBQVN5TyxFQUFLLEtBQUssR0FDOUJBLEVBQUssTUFBTVQsS0FFVFMsRUFBSyxlQUFhLE9BQU9BLEVBQUs7QUFDbEM7QUFFQSxJQUFJQyxLQUFVLElBQUlDLEtBQU1EO0FBQ3hCLFNBQVN0TyxHQUFNNk4sR0FBSTtBQUFFLFNBQU9BLElBQUssS0FBS1U7QUFBTTtBQUM1QyxTQUFTblAsR0FBTW9QLEdBQUk7QUFBRSxTQUFPQSxJQUFLRCxLQUFNO0FBQUs7QUFHNUMsSUFBSUUsS0FBcUI7QUFBQSxFQUN4QixNQUFRO0FBQUEsRUFDUixPQUFTO0FBQUEsRUFDVCxRQUFVO0FBQUEsRUFDVixRQUFVO0FBQUEsRUFDVixRQUFVO0FBQUEsRUFDVixZQUFjO0FBQUEsRUFDZCxZQUFjO0FBQUEsRUFDZCxtQkFBcUI7QUFBQSxFQUNyQixZQUFjO0FBQUEsRUFDZCxXQUFhO0FBQUEsRUFDYixnQkFBa0I7QUFBQSxFQUNsQixnQkFBa0I7QUFBQSxFQUNsQixnQkFBa0I7QUFBQSxFQUNsQix1QkFBeUI7QUFBQSxFQUN6QixlQUFpQjtBQUNsQjtBQUdBLFNBQVNDLEdBQWM5NEMsR0FBRys0QyxHQUFRQyxHQUFRbjNDLEdBQU07QUFDL0MsRUFBQWszQyxFQUFPLFVBQVU7QUFDakIsTUFBSUUsSUFBUyxDQUFBLEdBQ1RuSSxJQUFPO0FBQ1gsR0FBQzl3QyxFQUFFLENBQUMsRUFBRSxNQUFNbWYsRUFBUSxLQUFHLENBQUUsR0FBRSxRQUFRLFNBQVN2aEIsR0FBRztBQUM5QyxRQUFJNkYsSUFBSTZiLEdBQVkxaEIsQ0FBQztBQUNyQixZQUFPaWlCLEdBQVNwYyxFQUFFLENBQUMsQ0FBQyxHQUFDO0FBQUEsTUFDcEIsS0FBSztBQUFBLE1BQVksS0FBSztBQUFBLE1BQWEsS0FBSztBQUFjO0FBQUEsTUFHdEQsS0FBSztBQUFBLE1BQVcsS0FBSztBQUFBLE1BQVksS0FBSztBQUNyQyxRQUFBdzFDO0FBQUEsUUFBZ0IsQ0FBQSxHQUNieDFDLEVBQUUsZUFBWXcxQyxFQUFPLGFBQWFuNEIsR0FBYXJkLEVBQUUsVUFBVSxJQUMzREEsRUFBRSxpQkFBY3cxQyxFQUFPLGVBQWVuNEIsR0FBYXJkLEVBQUUsWUFBWSxJQUNwRXMxQyxFQUFPLFFBQVEsS0FBS0UsQ0FBTTtBQUMxQjtBQUFBLE1BQ0QsS0FBSztBQUFhO0FBQUEsTUFHbEIsS0FBSztBQUFXO0FBQUEsTUFDaEIsS0FBSztBQUFBLE1BQVMsS0FBSztBQUFVO0FBQUEsTUFDN0IsS0FBSztBQUFXO0FBQUEsTUFHaEIsS0FBSztBQUFZO0FBQUEsTUFDakIsS0FBSztBQUFBLE1BQVUsS0FBSztBQUFXO0FBQUEsTUFDL0IsS0FBSztBQUFZO0FBQUEsTUFHakIsS0FBSztBQUFVO0FBQUEsTUFDZixLQUFLO0FBQUEsTUFBUSxLQUFLO0FBQVM7QUFBQSxNQUMzQixLQUFLO0FBQVU7QUFBQSxNQUdmLEtBQUs7QUFBYTtBQUFBLE1BQ2xCLEtBQUs7QUFBQSxNQUFXLEtBQUs7QUFBWTtBQUFBLE1BQ2pDLEtBQUs7QUFBYTtBQUFBLE1BR2xCLEtBQUs7QUFBQSxNQUFhLEtBQUs7QUFBQSxNQUFjLEtBQUs7QUFBZTtBQUFBLE1BQ3pELEtBQUs7QUFBZTtBQUFBLE1BR3BCLEtBQUs7QUFBQSxNQUFlLEtBQUs7QUFBQSxNQUFnQixLQUFLO0FBQWlCO0FBQUEsTUFDL0QsS0FBSztBQUFpQjtBQUFBLE1BR3RCLEtBQUs7QUFBQSxNQUFhLEtBQUs7QUFBQSxNQUFjLEtBQUs7QUFBZTtBQUFBLE1BQ3pELEtBQUs7QUFBZTtBQUFBLE1BR3BCLEtBQUs7QUFBQSxNQUFVLEtBQUs7QUFBQSxNQUFXLEtBQUs7QUFBWTtBQUFBLE1BQ2hELEtBQUs7QUFBWTtBQUFBLE1BR2pCLEtBQUs7QUFBQSxNQUFRLEtBQUs7QUFBQSxNQUFTLEtBQUs7QUFBVTtBQUFBLE1BQzFDLEtBQUs7QUFBVTtBQUFBLE1BR2YsS0FBSztBQUFBLE1BQVUsS0FBSztBQUNuQjtBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQVksS0FBSztBQUFZO0FBQUEsTUFHbEMsS0FBSztBQUFBLE1BQVcsS0FBSztBQUFBLE1BQVksS0FBSztBQUFhO0FBQUEsTUFDbkQsS0FBSztBQUFRLFFBQUFuSSxJQUFPO0FBQU07QUFBQSxNQUMxQixLQUFLO0FBQVUsUUFBQUEsSUFBTztBQUFPO0FBQUEsTUFDN0I7QUFBUyxZQUFHanZDLEtBQVFBLEVBQUssT0FDckIsQ0FBQ2l2QztBQUFNLGdCQUFNLElBQUksTUFBTSxrQkFBa0JydEMsRUFBRSxDQUFDLElBQUksYUFBYTtBQUFBLElBRWpFO0FBQUEsRUFDSCxDQUFFO0FBQ0Y7QUFHQSxTQUFTeTFDLEdBQVlsNUMsR0FBRys0QyxHQUFRQyxHQUFRbjNDLEdBQU07QUFDN0MsRUFBQWszQyxFQUFPLFFBQVE7QUFDZixNQUFJOTRDLElBQU8sQ0FBQSxHQUNQNndDLElBQU87QUFDWCxHQUFDOXdDLEVBQUUsQ0FBQyxFQUFFLE1BQU1tZixFQUFRLEtBQUcsQ0FBRSxHQUFFLFFBQVEsU0FBU3ZoQixHQUFHO0FBQzlDLFFBQUk2RixJQUFJNmIsR0FBWTFoQixDQUFDO0FBQ3JCLFlBQU9paUIsR0FBU3BjLEVBQUUsQ0FBQyxDQUFDLEdBQUM7QUFBQSxNQUNwQixLQUFLO0FBQUEsTUFBVSxLQUFLO0FBQUEsTUFBVyxLQUFLO0FBQVk7QUFBQSxNQUdoRCxLQUFLO0FBQUEsTUFBVSxLQUFLO0FBQUEsTUFBUyxLQUFLO0FBQ2pDLFFBQUF4RCxJQUFPLENBQUUsR0FBRTg0QyxFQUFPLE1BQU0sS0FBSzk0QyxDQUFJO0FBQUc7QUFBQSxNQUNyQyxLQUFLO0FBQVc7QUFBQSxNQUdoQixLQUFLO0FBQWtCO0FBQUEsTUFDdkIsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFtQixRQUFBODRDLEVBQU8sTUFBTSxLQUFLOTRDLENBQUksR0FBR0EsSUFBTyxDQUFFO0FBQUU7QUFBQSxNQUc1RCxLQUFLO0FBQUEsTUFBZ0IsS0FBSztBQUN6QixRQUFHd0QsRUFBRSxnQkFBYXhELEVBQUssY0FBY3dELEVBQUU7QUFDdkM7QUFBQSxNQUNELEtBQUs7QUFBQSxNQUFrQixLQUFLO0FBQWtCO0FBQUEsTUFHOUMsS0FBSztBQUNKLFFBQUl4RCxFQUFLLFlBQVNBLEVBQUssVUFBVSxDQUFBLElBQzlCd0QsRUFBRSxZQUFTeEQsRUFBSyxRQUFRLFVBQVUsU0FBU3dELEVBQUUsU0FBUyxFQUFFLElBQ3hEQSxFQUFFLFVBQU94RCxFQUFLLFFBQVEsUUFBUSxTQUFTd0QsRUFBRSxPQUFPLEVBQUUsSUFDbERBLEVBQUUsU0FBTXhELEVBQUssUUFBUSxPQUFPLFdBQVd3RCxFQUFFLElBQUksSUFFN0NBLEVBQUUsUUFBS3hELEVBQUssUUFBUSxNQUFNd0QsRUFBRSxJQUFJLE1BQU0sRUFBRTtBQUMzQztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQWMsS0FBSztBQUFjO0FBQUEsTUFHdEMsS0FBSztBQUNKLFFBQUl4RCxFQUFLLFlBQVNBLEVBQUssVUFBVSxDQUFBLElBQzlCd0QsRUFBRSxVQUFPeEQsRUFBSyxRQUFRLFFBQVEsU0FBU3dELEVBQUUsT0FBTyxFQUFFLElBQ2xEQSxFQUFFLFNBQU14RCxFQUFLLFFBQVEsT0FBTyxXQUFXd0QsRUFBRSxJQUFJLElBRTdDQSxFQUFFLE9BQU8sU0FBTXhELEVBQUssUUFBUSxNQUFNd0QsRUFBRSxJQUFJLE1BQU0sRUFBRTtBQUNuRDtBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQWMsS0FBSztBQUFjO0FBQUEsTUFHdEMsS0FBSztBQUFBLE1BQVMsS0FBSztBQUFXO0FBQUEsTUFDOUIsS0FBSztBQUFXO0FBQUEsTUFHaEIsS0FBSztBQUFBLE1BQVUsS0FBSztBQUFZO0FBQUEsTUFDaEMsS0FBSztBQUFZO0FBQUEsTUFHakIsS0FBSztBQUFBLE1BQVcsS0FBSztBQUFBLE1BQVksS0FBSztBQUFhO0FBQUEsTUFDbkQsS0FBSztBQUFRLFFBQUFxdEMsSUFBTztBQUFNO0FBQUEsTUFDMUIsS0FBSztBQUFVLFFBQUFBLElBQU87QUFBTztBQUFBLE1BQzdCO0FBQVMsWUFBR2p2QyxLQUFRQSxFQUFLLE9BQ3JCLENBQUNpdkM7QUFBTSxnQkFBTSxJQUFJLE1BQU0sa0JBQWtCcnRDLEVBQUUsQ0FBQyxJQUFJLFdBQVc7QUFBQSxJQUUvRDtBQUFBLEVBQ0gsQ0FBRTtBQUNGO0FBR0EsU0FBUzAxQyxHQUFZbjVDLEdBQUcrNEMsR0FBUUMsR0FBUW4zQyxHQUFNO0FBQzdDLEVBQUFrM0MsRUFBTyxRQUFRO0FBQ2YsTUFBSTNzQixJQUFPLENBQUEsR0FDUDBrQixJQUFPO0FBQ1gsR0FBQzl3QyxFQUFFLENBQUMsRUFBRSxNQUFNbWYsRUFBUSxLQUFHLENBQUUsR0FBRSxRQUFRLFNBQVN2aEIsR0FBRztBQUM5QyxRQUFJNkYsSUFBSTZiLEdBQVkxaEIsQ0FBQztBQUNyQixZQUFPaWlCLEdBQVNwYyxFQUFFLENBQUMsQ0FBQyxHQUFDO0FBQUEsTUFDcEIsS0FBSztBQUFBLE1BQVUsS0FBSztBQUFBLE1BQVcsS0FBSztBQUFZO0FBQUEsTUFHaEQsS0FBSztBQUFBLE1BQVMsS0FBSztBQUFVO0FBQUEsTUFDN0IsS0FBSztBQUFBLE1BQVcsS0FBSztBQUNwQixRQUFBczFDLEVBQU8sTUFBTSxLQUFLM3NCLENBQUksR0FDdEJBLElBQU8sQ0FBQTtBQUNQO0FBQUEsTUFHRCxLQUFLO0FBQVMsUUFBRzNvQixFQUFFLFFBQUsyb0IsRUFBSyxPQUFPL0ssR0FBUzVkLEVBQUUsR0FBRztBQUFHO0FBQUEsTUFDckQsS0FBSztBQUFBLE1BQVcsS0FBSztBQUFXO0FBQUEsTUFHaEMsS0FBSztBQUFNLFFBQUEyb0IsRUFBSyxPQUFPM29CLEVBQUUsTUFBTXFkLEdBQWFyZCxFQUFFLEdBQUcsSUFBSTtBQUFHO0FBQUEsTUFDeEQsS0FBSztBQUFRLFFBQUEyb0IsRUFBSyxPQUFPO0FBQUc7QUFBQSxNQUc1QixLQUFLO0FBQU0sUUFBQUEsRUFBSyxTQUFTM29CLEVBQUUsTUFBTXFkLEdBQWFyZCxFQUFFLEdBQUcsSUFBSTtBQUFHO0FBQUEsTUFDMUQsS0FBSztBQUFRLFFBQUEyb0IsRUFBSyxTQUFTO0FBQUc7QUFBQSxNQUc5QixLQUFLO0FBQ0osZ0JBQU8zb0IsRUFBRSxLQUFHO0FBQUEsVUFDWCxLQUFLO0FBQVEsWUFBQTJvQixFQUFLLFlBQVk7QUFBTTtBQUFBLFVBQ3BDLEtBQUs7QUFBVSxZQUFBQSxFQUFLLFlBQVk7QUFBTTtBQUFBLFVBQ3RDLEtBQUs7QUFBVSxZQUFBQSxFQUFLLFlBQVk7QUFBTTtBQUFBLFVBQ3RDLEtBQUs7QUFBb0IsWUFBQUEsRUFBSyxZQUFZO0FBQU07QUFBQSxVQUNoRCxLQUFLO0FBQW9CLFlBQUFBLEVBQUssWUFBWTtBQUFNO0FBQUEsUUFDckQ7QUFBTTtBQUFBLE1BQ0gsS0FBSztBQUFRLFFBQUFBLEVBQUssWUFBWTtBQUFHO0FBQUEsTUFHakMsS0FBSztBQUFXLFFBQUFBLEVBQUssU0FBUzNvQixFQUFFLE1BQU1xZCxHQUFhcmQsRUFBRSxHQUFHLElBQUk7QUFBRztBQUFBLE1BQy9ELEtBQUs7QUFBYSxRQUFBMm9CLEVBQUssU0FBUztBQUFHO0FBQUEsTUFHbkMsS0FBSztBQUFZLFFBQUFBLEVBQUssVUFBVTNvQixFQUFFLE1BQU1xZCxHQUFhcmQsRUFBRSxHQUFHLElBQUk7QUFBRztBQUFBLE1BQ2pFLEtBQUs7QUFBYyxRQUFBMm9CLEVBQUssVUFBVTtBQUFHO0FBQUEsTUFHckMsS0FBSztBQUFXLFFBQUFBLEVBQUssU0FBUzNvQixFQUFFLE1BQU1xZCxHQUFhcmQsRUFBRSxHQUFHLElBQUk7QUFBRztBQUFBLE1BQy9ELEtBQUs7QUFBYSxRQUFBMm9CLEVBQUssU0FBUztBQUFHO0FBQUEsTUFHbkMsS0FBSztBQUFhLFFBQUFBLEVBQUssV0FBVzNvQixFQUFFLE1BQU1xZCxHQUFhcmQsRUFBRSxHQUFHLElBQUk7QUFBRztBQUFBLE1BQ25FLEtBQUs7QUFBZSxRQUFBMm9CLEVBQUssV0FBVztBQUFHO0FBQUEsTUFHdkMsS0FBSztBQUFXLFFBQUFBLEVBQUssU0FBUzNvQixFQUFFLE1BQU1xZCxHQUFhcmQsRUFBRSxHQUFHLElBQUk7QUFBRztBQUFBLE1BQy9ELEtBQUs7QUFBYSxRQUFBMm9CLEVBQUssU0FBUztBQUFHO0FBQUEsTUFHbkMsS0FBSztBQUFPLFFBQUczb0IsRUFBRSxRQUFLMm9CLEVBQUssS0FBSyxDQUFDM29CLEVBQUU7QUFBSztBQUFBLE1BQ3hDLEtBQUs7QUFBQSxNQUFTLEtBQUs7QUFBUztBQUFBLE1BRzVCLEtBQUs7QUFBYyxRQUFHQSxFQUFFLFFBQUsyb0IsRUFBSyxZQUFZM29CLEVBQUU7QUFBSztBQUFBLE1BQ3JELEtBQUs7QUFBQSxNQUFnQixLQUFLO0FBQWdCO0FBQUEsTUFHMUMsS0FBSztBQUFXLFFBQUdBLEVBQUUsUUFBSzJvQixFQUFLLFNBQVMsU0FBUzNvQixFQUFFLEtBQUksRUFBRTtBQUFHO0FBQUEsTUFDNUQsS0FBSztBQUFBLE1BQWEsS0FBSztBQUFhO0FBQUEsTUFHcEMsS0FBSztBQUFXLFFBQUdBLEVBQUUsUUFBSzJvQixFQUFLLFNBQVMzb0IsRUFBRTtBQUFLO0FBQUEsTUFDL0MsS0FBSztBQUFBLE1BQWEsS0FBSztBQUFhO0FBQUEsTUFHcEMsS0FBSztBQUNKLFlBQUdBLEVBQUUsT0FBTztBQUFLO0FBQ2pCLFFBQUFBLEVBQUUsV0FBVzNHLEdBQU0sU0FBUzJHLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDdEM7QUFBQSxNQUdELEtBQUs7QUFJSixZQUhJMm9CLEVBQUssVUFBT0EsRUFBSyxRQUFRLENBQUEsSUFDMUIzb0IsRUFBRSxTQUFNMm9CLEVBQUssTUFBTSxPQUFPdEwsR0FBYXJkLEVBQUUsSUFBSSxJQUU3Q0EsRUFBRTtBQUFLLFVBQUEyb0IsRUFBSyxNQUFNLE1BQU0zb0IsRUFBRSxJQUFJLE1BQU0sRUFBRTtBQUFBLGlCQUNqQ0EsRUFBRSxTQUFTO0FBQ2xCLFVBQUEyb0IsRUFBSyxNQUFNLFFBQVEsU0FBUzNvQixFQUFFLFNBQVMsRUFBRTtBQUN6QyxjQUFJbW9CLElBQU1DLEdBQU9PLEVBQUssTUFBTSxLQUFLO0FBQ2pDLFVBQUdBLEVBQUssTUFBTSxTQUFTLE9BQUlSLElBQU1DLEdBQU8sQ0FBQyxJQUNyQ0QsTUFBS0EsSUFBTUMsR0FBTyxDQUFDLElBQ3ZCTyxFQUFLLE1BQU0sTUFBTVIsRUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUlBLEVBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJQSxFQUFJLENBQUMsRUFBRSxTQUFTLEVBQUU7QUFBQSxRQUNwRjtBQUFXLFVBQUdub0IsRUFBRSxVQUNYMm9CLEVBQUssTUFBTSxRQUFRLFNBQVMzb0IsRUFBRSxPQUFPLEVBQUUsR0FDcENBLEVBQUUsU0FBTTJvQixFQUFLLE1BQU0sT0FBTyxXQUFXM29CLEVBQUUsSUFBSSxJQUMzQ0EsRUFBRSxTQUFTdTFDLEVBQU8saUJBQWlCQSxFQUFPLGNBQWMsY0FDMUQ1c0IsRUFBSyxNQUFNLE1BQU1zckIsR0FBU3NCLEVBQU8sY0FBYyxVQUFVNXNCLEVBQUssTUFBTSxLQUFLLEVBQUUsS0FBS0EsRUFBSyxNQUFNLFFBQVEsQ0FBQztBQUl0RztBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQVksS0FBSztBQUFZO0FBQUEsTUFHbEMsS0FBSztBQUFxQixRQUFBMGtCLElBQU87QUFBTTtBQUFBLE1BQ3ZDLEtBQUs7QUFBdUIsUUFBQUEsSUFBTztBQUFPO0FBQUEsTUFHMUMsS0FBSztBQUFBLE1BQVcsS0FBSztBQUFBLE1BQVksS0FBSztBQUFhO0FBQUEsTUFDbkQsS0FBSztBQUFRLFFBQUFBLElBQU87QUFBTTtBQUFBLE1BQzFCLEtBQUs7QUFBVSxRQUFBQSxJQUFPO0FBQU87QUFBQSxNQUM3QjtBQUFTLFlBQUdqdkMsS0FBUUEsRUFBSyxPQUNyQixDQUFDaXZDO0FBQU0sZ0JBQU0sSUFBSSxNQUFNLGtCQUFrQnJ0QyxFQUFFLENBQUMsSUFBSSxXQUFXO0FBQUEsSUFFL0Q7QUFBQSxFQUNILENBQUU7QUFDRjtBQUdBLFNBQVMyMUMsR0FBY3A1QyxHQUFHKzRDLEdBQVFsM0MsR0FBTTtBQUN2QyxFQUFBazNDLEVBQU8sWUFBWTtBQUVuQixXQURJeC9DLElBQXNCZ2lCLEdBQUszYSxFQUFTLEdBQ2hDeEYsSUFBRSxHQUFHQSxJQUFJN0IsRUFBRSxRQUFRLEVBQUU2QjtBQUFHLElBQUEyOUMsRUFBTyxVQUFVeC9DLEVBQUU2QixDQUFDLENBQUMsSUFBSXdGLEdBQVVySCxFQUFFNkIsQ0FBQyxDQUFDO0FBQ3ZFLE1BQUlxQixJQUFJdUQsRUFBRSxDQUFDLEVBQUUsTUFBTW1mLEVBQVE7QUFDM0IsTUFBSTFpQjtBQUNKLFNBQUlyQixJQUFFLEdBQUdBLElBQUlxQixFQUFFLFFBQVEsRUFBRXJCLEdBQUc7QUFDM0IsVUFBSXFJLElBQUk2YixHQUFZN2lCLEVBQUVyQixDQUFDLENBQUM7QUFDeEIsY0FBT3lrQixHQUFTcGMsRUFBRSxDQUFDLENBQUMsR0FBQztBQUFBLFFBQ3BCLEtBQUs7QUFBQSxRQUFZLEtBQUs7QUFBQSxRQUFjLEtBQUs7QUFBQSxRQUFjLEtBQUs7QUFBYTtBQUFBLFFBQ3pFLEtBQUs7QUFBVztBQUNmLGdCQUFJLElBQUV1YyxHQUFZcUIsR0FBUzVkLEVBQUUsVUFBVSxDQUFDLEdBQUdsSCxJQUFFLFNBQVNrSCxFQUFFLFVBQVMsRUFBRTtBQUVuRSxnQkFEQXMxQyxFQUFPLFVBQVV4OEMsQ0FBQyxJQUFJLEdBQ25CQSxJQUFFLEdBQUc7QUFDUCxrQkFBR0EsSUFBSSxLQUFPO0FBQ2IscUJBQUlBLElBQUksS0FBT0EsSUFBSSxNQUFjdzhDLEVBQU8sVUFBVXg4QyxDQUFDLEtBQUssTUFBL0IsRUFBRUE7QUFBRztBQUM5QixnQkFBQXc4QyxFQUFPLFVBQVV4OEMsQ0FBQyxJQUFJO0FBQUEsY0FDdEI7QUFDRCxjQUFBZ00sR0FBUyxHQUFFaE0sQ0FBQztBQUFBLFlBQ1o7QUFBQSxVQUNMO0FBQUs7QUFBQSxRQUNGLEtBQUs7QUFBYTtBQUFBLFFBQ2xCO0FBQVMsY0FBR3NGLEVBQUs7QUFBSyxrQkFBTSxJQUFJLE1BQU0sa0JBQWtCNEIsRUFBRSxDQUFDLElBQUksYUFBYTtBQUFBLE1BQzVFO0FBQUEsSUFDRDtBQUNGO0FBRUEsU0FBUzQxQyxHQUFjQyxHQUErQztBQUNyRSxNQUFJajhDLElBQUksQ0FBQyxXQUFXO0FBSXBCLFNBSEEsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsR0FBRTtBQUFBO0FBQUEsSUFBTztBQUFBO0FBQUEsSUFBZ0I7QUFBQSxFQUFHLENBQUMsRUFBRSxRQUFRLFNBQVMsR0FBRztBQUN2RSxhQUFRakMsSUFBSSxFQUFFLENBQUMsR0FBR0EsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFQTtBQUFHLE1BQUdrK0MsRUFBR2wrQyxDQUFDLEtBQUssU0FBTWlDLEVBQUVBLEVBQUUsTUFBTSxJQUFLOGtCLEdBQVUsVUFBUyxNQUFLLEVBQUMsVUFBUy9tQixHQUFFLFlBQVdpbEIsR0FBVWk1QixFQUFHbCtDLENBQUMsQ0FBQyxFQUFDLENBQUM7QUFBQSxFQUNySSxDQUFFLEdBQ0VpQyxFQUFFLFdBQVcsSUFBVSxNQUMxQkEsRUFBRUEsRUFBRSxNQUFNLElBQUssY0FDZkEsRUFBRSxDQUFDLElBQUk4a0IsR0FBVSxXQUFXLE1BQU0sRUFBRSxPQUFNOWtCLEVBQUUsU0FBTyxFQUFDLENBQUUsRUFBRSxRQUFRLE1BQU0sR0FBRyxHQUNsRUEsRUFBRSxLQUFLLEVBQUU7QUFDakI7QUFHQSxJQUFJazhDLEtBQWMsQ0FBRSxZQUFZLFVBQVUsVUFBVSxZQUFZLFNBQzVEQyxLQUFjLENBQUUsa0JBQWtCLGVBQWUsYUFBYSxhQUFhLHFCQUFxQixtQkFBbUIsZUFBZTtBQUN0SSxTQUFTQyxHQUFjejVDLEdBQUcrNEMsR0FBUWwzQyxHQUFNO0FBQ3ZDLEVBQUFrM0MsRUFBTyxTQUFTO0FBQ2hCLE1BQUlXLEdBQ0E1SSxJQUFPO0FBQ1gsR0FBQzl3QyxFQUFFLENBQUMsRUFBRSxNQUFNbWYsRUFBUSxLQUFHLENBQUUsR0FBRSxRQUFRLFNBQVN2aEIsR0FBRztBQUM5QyxRQUFJNkYsSUFBSTZiLEdBQVkxaEIsQ0FBQyxHQUFHeEMsSUFBSTtBQUM1QixZQUFPeWtCLEdBQVNwYyxFQUFFLENBQUMsQ0FBQyxHQUFDO0FBQUEsTUFDcEIsS0FBSztBQUFBLE1BQVksS0FBSztBQUFBLE1BQWEsS0FBSztBQUFBLE1BQWMsS0FBSztBQUFjO0FBQUEsTUFHekUsS0FBSztBQUFBLE1BQU8sS0FBSztBQUdoQixhQUZBaTJDLElBQUtqMkMsR0FDTCxPQUFPaTJDLEVBQUcsQ0FBQyxHQUNQdCtDLElBQUksR0FBR0EsSUFBSW0rQyxHQUFZLFFBQVEsRUFBRW4rQztBQUFHLFVBQUdzK0MsRUFBR0gsR0FBWW4rQyxDQUFDLENBQUMsTUFDM0RzK0MsRUFBR0gsR0FBWW4rQyxDQUFDLENBQUMsSUFBSSxTQUFTcytDLEVBQUdILEdBQVluK0MsQ0FBQyxDQUFDLEdBQUcsRUFBRTtBQUNyRCxhQUFJQSxJQUFJLEdBQUdBLElBQUlvK0MsR0FBWSxRQUFRLEVBQUVwK0M7QUFBRyxVQUFHcytDLEVBQUdGLEdBQVlwK0MsQ0FBQyxDQUFDLE1BQzNEcytDLEVBQUdGLEdBQVlwK0MsQ0FBQyxDQUFDLElBQUkwbEIsR0FBYTQ0QixFQUFHRixHQUFZcCtDLENBQUMsQ0FBQyxDQUFDO0FBQ3JELFlBQUcyOUMsRUFBTyxhQUFhVyxFQUFHLFdBQVc7QUFDcEMsZUFBSXQrQyxJQUFJLEtBQU9BLElBQUksSUFBTSxFQUFFQTtBQUFHLGdCQUFHMjlDLEVBQU8sVUFBVVcsRUFBRyxRQUFRLEtBQUtYLEVBQU8sVUFBVTM5QyxDQUFDLEdBQUc7QUFBRSxjQUFBcytDLEVBQUcsV0FBV3QrQztBQUFHO0FBQUEsWUFBUTtBQUFBO0FBRW5ILFFBQUEyOUMsRUFBTyxPQUFPLEtBQUtXLENBQUU7QUFBRztBQUFBLE1BQ3pCLEtBQUs7QUFBUztBQUFBLE1BR2QsS0FBSztBQUFBLE1BQWMsS0FBSztBQUN2QixZQUFJQyxJQUFZLENBQUE7QUFDaEIsUUFBR2wyQyxFQUFFLGFBQVVrMkMsRUFBVSxXQUFXbDJDLEVBQUUsV0FDbkNBLEVBQUUsZUFBWWsyQyxFQUFVLGFBQWFsMkMsRUFBRSxhQUN2Q0EsRUFBRSxnQkFBZ0IsU0FBTWsyQyxFQUFVLGVBQWVsMkMsRUFBRSxlQUNuREEsRUFBRSxXQUFRazJDLEVBQVUsU0FBU2wyQyxFQUFFLFNBQy9CQSxFQUFFLGFBQVVrMkMsRUFBVSxXQUFXNzRCLEdBQWFyZCxFQUFFLFFBQVEsSUFDM0RpMkMsRUFBRyxZQUFZQztBQUNmO0FBQUEsTUFDRCxLQUFLO0FBQWdCO0FBQUEsTUFHckIsS0FBSztBQUNKO0FBQUEsTUFDRCxLQUFLO0FBQUEsTUFBaUIsS0FBSztBQUFpQjtBQUFBLE1BRzVDLEtBQUs7QUFBcUIsUUFBQTdJLElBQU87QUFBTTtBQUFBLE1BQ3ZDLEtBQUs7QUFBdUIsUUFBQUEsSUFBTztBQUFPO0FBQUEsTUFHMUMsS0FBSztBQUFBLE1BQVcsS0FBSztBQUFBLE1BQVksS0FBSztBQUFhO0FBQUEsTUFDbkQsS0FBSztBQUFRLFFBQUFBLElBQU87QUFBTTtBQUFBLE1BQzFCLEtBQUs7QUFBVSxRQUFBQSxJQUFPO0FBQU87QUFBQSxNQUM3QjtBQUFTLFlBQUdqdkMsS0FBUUEsRUFBSyxPQUNyQixDQUFDaXZDO0FBQU0sZ0JBQU0sSUFBSSxNQUFNLGtCQUFrQnJ0QyxFQUFFLENBQUMsSUFBSSxhQUFhO0FBQUEsSUFFakU7QUFBQSxFQUNILENBQUU7QUFDRjtBQUVBLFNBQVNtMkMsR0FBY0MsR0FBb0I7QUFDMUMsTUFBSXg4QyxJQUFzQixDQUFBO0FBTTFCLFNBTEFBLEVBQUVBLEVBQUUsTUFBTSxJQUFLOGtCLEdBQVUsV0FBVSxJQUFJLEdBQ3ZDMDNCLEVBQVEsUUFBUSxTQUFTNzlDLEdBQUc7QUFDM0IsSUFBQXFCLEVBQUVBLEVBQUUsTUFBTSxJQUFLOGtCLEdBQVUsTUFBTSxNQUFNbm1CLENBQUM7QUFBQSxFQUN4QyxDQUFFLEdBQ0RxQixFQUFFQSxFQUFFLE1BQU0sSUFBSyxjQUNaQSxFQUFFLFdBQVcsSUFBVSxNQUMxQkEsRUFBRSxDQUFDLElBQUk4a0IsR0FBVSxXQUFVLE1BQU0sRUFBQyxPQUFNOWtCLEVBQUUsU0FBTyxFQUFDLENBQUMsRUFBRSxRQUFRLE1BQUssR0FBRyxHQUM5REEsRUFBRSxLQUFLLEVBQUU7QUFDakI7QUFHQSxJQUFJeThDLEtBQTZCLDJCQUFzQjtBQUN2RCxNQUFJQyxJQUFjLHlEQUNkQyxJQUFjLHlEQUNkQyxJQUFhLHFEQUNiQyxJQUFhLHFEQUNiQyxJQUFlO0FBRW5CLFNBQU8sU0FBdUJ4aEQsR0FBTXFnRCxHQUFRbjNDLEdBQU07QUFDakQsUUFBSWszQyxJQUFTLENBQUE7QUFDYixRQUFHLENBQUNwZ0Q7QUFBTSxhQUFPb2dEO0FBQ2pCLElBQUFwZ0QsSUFBT0EsRUFBSyxRQUFRLHVCQUFzQixFQUFFLEVBQUUsUUFBUSxnQ0FBK0IsRUFBRTtBQUV2RixRQUFJcUg7QUFHSixZQUFJQSxJQUFFckgsRUFBSyxNQUFNb2hELENBQVcsTUFBSVgsR0FBY3A1QyxHQUFHKzRDLEdBQVFsM0MsQ0FBSSxJQUd6RDdCLElBQUVySCxFQUFLLE1BQU11aEQsQ0FBVSxNQUFJZixHQUFZbjVDLEdBQUcrNEMsR0FBUUMsR0FBUW4zQyxDQUFJLElBRzlEN0IsSUFBRXJILEVBQUssTUFBTXNoRCxDQUFVLE1BQUlmLEdBQVlsNUMsR0FBRys0QyxHQUFRQyxHQUFRbjNDLENBQUksSUFHOUQ3QixJQUFFckgsRUFBSyxNQUFNd2hELENBQVksTUFBSXJCLEdBQWM5NEMsR0FBRys0QyxHQUFRQyxHQUFRbjNDLENBQUksSUFNbEU3QixJQUFFckgsRUFBSyxNQUFNcWhELENBQVcsTUFBSVAsR0FBY3o1QyxHQUFHKzRDLEdBQVFsM0MsQ0FBSSxHQU90RGszQztBQUFBLEVBQ1I7QUFDQTtBQUVBLFNBQVNxQixHQUFjeGUsR0FBaUIvNUIsR0FBaUI7QUFDeEQsTUFBSXhFLElBQUksQ0FBQzBoQixJQUFZb0QsR0FBVSxjQUFjLE1BQU07QUFBQSxJQUNsRCxPQUFTTyxHQUFXLENBQUM7QUFBQSxJQUNyQixZQUFZRCxHQUFNO0FBQUEsRUFDcEIsQ0FBRSxDQUFDLEdBQUc1ZjtBQUNMLFNBQUcrNEIsRUFBRyxRQUFRLzRCLElBQUl3MkMsR0FBY3pkLEVBQUcsR0FBRyxNQUFNLFNBQU12K0IsRUFBRUEsRUFBRSxNQUFNLElBQUl3RixJQUNoRXhGLEVBQUVBLEVBQUUsTUFBTSxJQUFLLHFJQUNmQSxFQUFFQSxFQUFFLE1BQU0sSUFBSyw0SEFDZkEsRUFBRUEsRUFBRSxNQUFNLElBQUssMkZBQ2ZBLEVBQUVBLEVBQUUsTUFBTSxJQUFLLGlHQUNYd0YsSUFBSSsyQyxHQUFjLzNDLEVBQUssT0FBTyxPQUFJeEUsRUFBRUEsRUFBRSxNQUFNLElBQUt3RixJQUNyRHhGLEVBQUVBLEVBQUUsTUFBTSxJQUFLLHdGQUNmQSxFQUFFQSxFQUFFLE1BQU0sSUFBSyxxQkFDZkEsRUFBRUEsRUFBRSxNQUFNLElBQUssd0dBRVpBLEVBQUUsU0FBTyxNQUFJQSxFQUFFQSxFQUFFLE1BQU0sSUFBSyxpQkFBa0JBLEVBQUUsQ0FBQyxJQUFFQSxFQUFFLENBQUMsRUFBRSxRQUFRLE1BQUssR0FBRyxJQUNwRUEsRUFBRSxLQUFLLEVBQUU7QUFDakI7QUFFQSxTQUFTZzlDLEdBQWExaEQsR0FBTXdzQixHQUFtQjtBQUM5QyxNQUFJdVosSUFBVy9sQyxFQUFLLFdBQVcsQ0FBQyxHQUM1QjJoRCxJQUFZcnhCLEdBQW1CdHdCLENBQWE7QUFDaEQsU0FBTyxDQUFDK2xDLEdBQVU0YixDQUFTO0FBQzVCO0FBQ0EsU0FBU0MsR0FBYW4vQyxHQUFjZ0IsR0FBY2lCLEdBQUc7QUFDcEQsRUFBSUEsTUFBR0EsSUFBSTZSLEVBQVEsSUFBSSxJQUFJOVMsRUFBRSxNQUFNLElBQ25DaUIsRUFBRSxZQUFZLEdBQUdqQyxDQUFDLEdBQ2xCK3RCLEdBQW1CL3NCLEdBQUdpQixDQUFDO0FBQ3ZCLE1BQUltQyxJQUFPbkMsRUFBRSxTQUFTQSxFQUFFLElBQUtBLEVBQUUsTUFBTSxHQUFHQSxFQUFFLENBQUMsSUFBSUE7QUFDL0MsU0FBR0EsRUFBRSxLQUFLLFNBQU1BLEVBQUUsSUFBSUEsRUFBRSxTQUNqQm1DO0FBQ1I7QUFHQSxTQUFTZzdDLEdBQWM3aEQsR0FBTXdzQixHQUFtQnRqQixHQUFNO0FBQ3JELE1BQUlyQyxJQUFPLENBQUE7QUFFWCxFQUFBQSxFQUFJLEtBQUs3RyxFQUFLLFdBQVcsQ0FBQyxJQUFJO0FBRTlCLE1BQUkwekIsSUFBUUgsR0FBZ0J2ekIsQ0FBYTtBQUN6QyxFQUFHMHpCLEVBQU0sWUFBUzdzQixFQUFJLFNBQVMsSUFDNUI2c0IsRUFBTSxjQUFXN3NCLEVBQUksV0FBVyxJQUNoQzZzQixFQUFNLFlBQVM3c0IsRUFBSSxTQUFTLElBQzVCNnNCLEVBQU0sWUFBUzdzQixFQUFJLFNBQVMsSUFDNUI2c0IsRUFBTSxhQUFVN3NCLEVBQUksVUFBVSxJQUM5QjZzQixFQUFNLGVBQVk3c0IsRUFBSSxTQUFTO0FBRWxDLE1BQUlpN0MsSUFBTTloRCxFQUFLLFdBQVcsQ0FBQztBQUczQixVQUZHOGhELE1BQVEsUUFBUWo3QyxFQUFJLE9BQU8sSUFFdkI3RyxFQUFLLFdBQVcsQ0FBQyxHQUFDO0FBQUEsSUFFeEIsS0FBSztBQUFHLE1BQUE2RyxFQUFJLFlBQVk7QUFBZTtBQUFBLElBQ3ZDLEtBQUs7QUFBRyxNQUFBQSxFQUFJLFlBQVk7QUFBYTtBQUFBLEVBQ3JDO0FBRUQsTUFBSWs3QyxJQUFZL2hELEVBQUssV0FBVyxDQUFDO0FBQ2pDLEVBQUcraEQsS0FBYSxNQUFHbDdDLEVBQUksWUFBWWs3QztBQUVuQyxNQUFJQyxJQUFTaGlELEVBQUssV0FBVyxDQUFDO0FBQzlCLEVBQUdnaUQsSUFBUyxNQUFHbjdDLEVBQUksU0FBU203QztBQUU1QixNQUFJQyxJQUFXamlELEVBQUssV0FBVyxDQUFDO0FBTWhDLFVBTEdpaUQsSUFBVyxNQUFHcDdDLEVBQUksVUFBVW83QyxJQUUvQmppRCxFQUFLLEtBQ0w2RyxFQUFJLFFBQVE4ckIsR0FBZTN5QixDQUFPLEdBRTNCQSxFQUFLLFdBQVcsQ0FBQyxHQUFDO0FBQUEsSUFFeEIsS0FBSztBQUFHLE1BQUE2RyxFQUFJLFNBQVM7QUFBUztBQUFBLElBQzlCLEtBQUs7QUFBRyxNQUFBQSxFQUFJLFNBQVM7QUFBUztBQUFBLEVBQzlCO0FBRUQsU0FBQUEsRUFBSSxPQUFPeXBCLEdBQW1CdHdCLENBQWlCLEdBRXhDNkc7QUFDUjtBQUNBLFNBQVNxN0MsR0FBY3p1QixHQUFjL3VCLEdBQUc7QUFDdkMsRUFBSUEsTUFBR0EsSUFBSTZSLEVBQVEsS0FBRyxJQUFFLEVBQUUsSUFDMUI3UixFQUFFLFlBQVksR0FBRyt1QixFQUFLLEtBQUssRUFBRSxHQUM3QkQsR0FBZ0JDLEdBQU0vdUIsQ0FBQyxHQUN2QkEsRUFBRSxZQUFZLEdBQUcrdUIsRUFBSyxPQUFPLE1BQVMsR0FBTTtBQUM1QyxNQUFJMHVCLElBQU07QUFDVixFQUFHMXVCLEVBQUssYUFBYSxnQkFBZTB1QixJQUFNLElBQ2xDMXVCLEVBQUssYUFBYSxnQkFBYTB1QixJQUFNLElBQzdDejlDLEVBQUUsWUFBWSxHQUFHeTlDLENBQUcsR0FDcEJ6OUMsRUFBRSxZQUFZLEdBQUcrdUIsRUFBSyxhQUFhLENBQUMsR0FDcEMvdUIsRUFBRSxZQUFZLEdBQUcrdUIsRUFBSyxVQUFVLENBQUMsR0FDakMvdUIsRUFBRSxZQUFZLEdBQUcrdUIsRUFBSyxXQUFXLENBQUMsR0FDbEMvdUIsRUFBRSxZQUFZLEdBQUcsQ0FBQyxHQUNsQjB1QixHQUFlSyxFQUFLLE9BQU8vdUIsQ0FBQztBQUM1QixNQUFJMDlDLElBQVM7QUFDYixTQUFHM3VCLEVBQUssVUFBVSxZQUFTMnVCLElBQVMsSUFDakMzdUIsRUFBSyxVQUFVLFlBQVMydUIsSUFBUyxJQUNwQzE5QyxFQUFFLFlBQVksR0FBRzA5QyxDQUFNLEdBQ3ZCNXhCLEdBQW1CaUQsRUFBSyxNQUFNL3VCLENBQUMsR0FDeEJBLEVBQUUsU0FBU0EsRUFBRSxJQUFJQSxFQUFFLE1BQU0sR0FBR0EsRUFBRSxDQUFDLElBQUlBO0FBQzNDO0FBR0EsSUFBSTI5QyxLQUFrQjtBQUFBLEVBQ3JCO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQ0QsR0FDSUMsSUFFQUMsS0FBZ0JoMkI7QUFDcEIsU0FBU2kyQixHQUFjbDdDLEdBQU01QyxHQUFHO0FBQy9CLEVBQUlBLE1BQUdBLElBQUk2UixFQUFRLElBQUUsSUFBSSxJQUFFLElBQUksS0FBRyxDQUFDLElBQy9CK3JDLE9BQXFCQSxLQUF1Qm4vQixHQUFNay9CLEVBQWU7QUFDckUsTUFBSUksSUFBaUJILEdBQW9CaDdDLEVBQUssV0FBVztBQUN6RCxFQUFHbTdDLEtBQU8sU0FBTUEsSUFBTSxLQUN0Qi85QyxFQUFFLFlBQVksR0FBRys5QyxDQUFHO0FBQ3BCLE1BQUk3K0MsSUFBSTtBQUNSLE1BQUc2K0MsS0FBTztBQU1ULFNBSkFydkIsR0FBZSxFQUFDLE1BQUssRUFBQyxHQUFHMXVCLENBQUMsR0FFMUIwdUIsR0FBZSxFQUFDLE1BQUssRUFBQyxHQUFHMXVCLENBQUMsR0FFcEJkLElBQUksSUFBSSxFQUFFQTtBQUFHLE1BQUFjLEVBQUUsWUFBWSxHQUFHLENBQUM7QUFBQSxPQUMvQjtBQUNOLFdBQU1kLElBQUksR0FBRyxFQUFFQTtBQUFHLE1BQUFjLEVBQUUsWUFBWSxHQUFHLENBQUM7QUFFcEMsV0FBTWQsSUFBSSxJQUFJLEVBQUVBO0FBQUcsTUFBQWMsRUFBRSxZQUFZLEdBQUcsQ0FBQztBQUFBLEVBU3JDO0FBQ0QsU0FBT0EsRUFBRSxTQUFTQSxFQUFFLElBQUlBLEVBQUUsTUFBTSxHQUFHQSxFQUFFLENBQUMsSUFBSUE7QUFDM0M7QUFHQSxTQUFTZytDLEdBQVkxaUQsR0FBTXdzQixHQUFtQjtBQUM3QyxNQUFJL1ksSUFBTXpULEVBQUssSUFBSXdzQixHQUNmbTJCLElBQWEzaUQsRUFBSyxXQUFXLENBQUMsR0FDOUI0aUQsSUFBTzVpRCxFQUFLLFdBQVcsQ0FBQztBQUM1QixTQUFBQSxFQUFLLElBQUl5VCxHQUNGLEVBQUMsTUFBS2t2QyxHQUFZLFVBQVNDLEVBQUk7QUFDdkM7QUFDQSxTQUFTQyxHQUFZN2lELEdBQU1nbkMsR0FBT3RpQyxHQUFHO0FBQ3BDLEVBQUlBLE1BQUdBLElBQUk2UixFQUFRLEVBQUUsSUFDckI3UixFQUFFLFlBQVksR0FBR3NpQyxLQUFPLENBQUMsR0FDekJ0aUMsRUFBRSxZQUFZLEdBQUcxRSxFQUFLLFlBQVUsQ0FBQyxHQUNqQzBFLEVBQUUsWUFBWSxHQUFHLENBQUMsR0FDbEJBLEVBQUUsWUFBWSxHQUFHLENBQUMsR0FDbEJBLEVBQUUsWUFBWSxHQUFHLENBQUMsR0FDbEJBLEVBQUUsWUFBWSxHQUFHLENBQUMsR0FDbEJBLEVBQUUsWUFBWSxHQUFHLENBQUM7QUFDbEIsTUFBSW8rQyxJQUFPO0FBQ1gsU0FBQXArQyxFQUFFLFlBQVksR0FBR28rQyxDQUFJLEdBQ3JCcCtDLEVBQUUsWUFBWSxHQUFHLENBQUMsR0FDbEJBLEVBQUUsWUFBWSxHQUFHLENBQUMsR0FDbEJBLEVBQUUsWUFBWSxHQUFHLENBQUMsR0FDWEE7QUFDUjtBQUdBLFNBQVNxK0MsR0FBVy9pRCxHQUFNMEUsR0FBRztBQUM1QixTQUFJQSxNQUFHQSxJQUFJNlIsRUFBUSxFQUFFLElBQ3JCN1IsRUFBRSxZQUFZLEdBQUcsQ0FBQyxHQUNsQkEsRUFBRSxZQUFZLEdBQUcsQ0FBQyxHQUNsQkEsRUFBRSxZQUFZLEdBQUcsQ0FBQyxHQUNsQkEsRUFBRSxZQUFZLEdBQUcsQ0FBQyxHQUNYQTtBQUNSO0FBRUEsSUFBSXMrQyxLQUFrQnoyQjtBQUN0QixTQUFTMDJCLEdBQWdCM0MsR0FBUTU3QyxHQUFHO0FBQ25DLFNBQUlBLE1BQUdBLElBQUk2UixFQUFRLEVBQUUsSUFDckI3UixFQUFFLFlBQVksR0FBRyxDQUFDLEdBQ2xCcStDLEdBQVcsTUFBTXIrQyxDQUFDLEdBQ2xCcStDLEdBQVcsTUFBTXIrQyxDQUFDLEdBQ2xCcStDLEdBQVcsTUFBTXIrQyxDQUFDLEdBQ2xCcStDLEdBQVcsTUFBTXIrQyxDQUFDLEdBQ2xCcStDLEdBQVcsTUFBTXIrQyxDQUFDLEdBQ1hBLEVBQUUsU0FBU0EsRUFBRSxJQUFJQSxFQUFFLE1BQU0sR0FBR0EsRUFBRSxDQUFDLElBQUlBO0FBQzNDO0FBR0EsU0FBU3crQyxHQUFlcmMsR0FBT25pQyxHQUFHO0FBQ2pDLFNBQUlBLE1BQUdBLElBQUk2UixFQUFRLEtBQUcsSUFBRSxFQUFFLElBQzFCN1IsRUFBRSxZQUFZLEdBQUdtaUMsRUFBTSxJQUFJLEdBQzNCbmlDLEVBQUUsWUFBWSxHQUFHLENBQUMsR0FDbEJBLEVBQUUsWUFBWSxHQUFHLENBQUNtaUMsRUFBTSxTQUFTLEdBQ2pDbmlDLEVBQUUsWUFBWSxHQUFHLENBQUMsR0FDbEJpdEIsR0FBMkJrVixFQUFNLFFBQVEsSUFBSW5pQyxDQUFDLEdBQ3ZDQSxFQUFFLFNBQVNBLEVBQUUsSUFBSUEsRUFBRSxNQUFNLEdBQUdBLEVBQUUsQ0FBQyxJQUFJQTtBQUMzQztBQUdBLFNBQVN5K0MsR0FBMEIzc0MsR0FBSzRzQyxHQUFlQyxHQUFlO0FBQ3JFLE1BQUkzK0MsSUFBSTZSLEVBQVEsSUFBUztBQUN6QixTQUFBN1IsRUFBRSxZQUFZLEdBQUc4UixDQUFHLEdBQ3BCbWIsR0FBMkJ5eEIsR0FBZTErQyxDQUFDLEdBQzNDaXRCLEdBQTJCMHhCLEdBQWUzK0MsQ0FBQyxHQUNwQ0EsRUFBRSxTQUFTQSxFQUFFLElBQUlBLEVBQUUsTUFBTSxHQUFHQSxFQUFFLENBQUMsSUFBSUE7QUFDM0M7QUFHQSxTQUFTNCtDLEdBQWN0akQsR0FBTXFnRCxHQUFRbjNDLEdBQU07QUFDMUMsTUFBSWszQyxJQUFTLENBQUE7QUFDYixFQUFBQSxFQUFPLFlBQWEsQ0FBQTtBQUNwQixXQUFRdDFDLEtBQUs3QztBQUFXLElBQUFtNEMsRUFBTyxVQUFVdDFDLENBQUMsSUFBSTdDLEdBQVU2QyxDQUFDO0FBRXpELEVBQUFzMUMsRUFBTyxTQUFTLElBQ2hCQSxFQUFPLFFBQVE7QUFDZixNQUFJbUQsSUFBMEIsQ0FBQSxHQUMxQnBMLElBQU87QUFDWCxTQUFBMXJCLEdBQWF6c0IsR0FBTSxTQUFvQjBLLEdBQUttSSxHQUFHZ2EsR0FBSTtBQUNsRCxZQUFPQSxHQUFFO0FBQUEsTUFDUixLQUFLO0FBQ0osUUFBQXV6QixFQUFPLFVBQVUxMUMsRUFBSSxDQUFDLENBQUMsSUFBSUEsRUFBSSxDQUFDLEdBQUdrRixHQUFTbEYsRUFBSSxDQUFDLEdBQUdBLEVBQUksQ0FBQyxDQUFDO0FBQzFEO0FBQUEsTUFDRCxLQUFLO0FBQ0osUUFBQTAxQyxFQUFPLE1BQU0sS0FBSzExQyxDQUFHLEdBQ2xCQSxFQUFJLE1BQU0sU0FBUyxRQUFRMjFDLEtBQVVBLEVBQU8saUJBQWlCQSxFQUFPLGNBQWMsY0FDcEYzMUMsRUFBSSxNQUFNLE1BQU1xMEMsR0FBU3NCLEVBQU8sY0FBYyxVQUFVMzFDLEVBQUksTUFBTSxLQUFLLEVBQUUsS0FBS0EsRUFBSSxNQUFNLFFBQVEsQ0FBQztBQUVsRztBQUFBLE1BQ0QsS0FBSztBQUE0QjtBQUFBLE1BQ2pDLEtBQUs7QUFDSjtBQUFBLE1BQ0QsS0FBSztBQUNKO0FBQUEsTUFDRCxLQUFLO0FBQ0osUUFBRzY0QyxFQUFNQSxFQUFNLFNBQVMsQ0FBQyxLQUFLLE9BQzdCbkQsRUFBTyxPQUFPLEtBQUsxMUMsQ0FBRztBQUV2QjtBQUFBLE1BQ0QsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUNKO0FBQUEsTUFFRCxLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQ0o7QUFBQSxNQUVELEtBQUs7QUFDSixRQUFBeXRDLElBQU87QUFBTTtBQUFBLE1BQ2QsS0FBSztBQUNKLFFBQUFBLElBQU87QUFBTztBQUFBLE1BQ2YsS0FBSztBQUNKLFFBQUFvTCxFQUFNLEtBQUsxMkIsQ0FBRSxHQUFHc3JCLElBQU87QUFBTTtBQUFBLE1BQzlCLEtBQUs7QUFDSixRQUFBb0wsRUFBTSxJQUFLLEdBQUVwTCxJQUFPO0FBQU87QUFBQSxNQUU1QjtBQUNDLFlBQUd0bEMsRUFBRSxJQUFJO0FBQUcsVUFBQTB3QyxFQUFNLEtBQUsxMkIsQ0FBRTtBQUFBLGlCQUNqQmhhLEVBQUUsSUFBSTtBQUFHLFVBQUEwd0MsRUFBTSxJQUFHO0FBQUEsaUJBQ2xCLENBQUNwTCxLQUFTanZDLEVBQUssT0FBT3E2QyxFQUFNQSxFQUFNLFNBQU8sQ0FBQyxLQUFLO0FBQTBCLGdCQUFNLElBQUksTUFBTSx5QkFBeUIxMkIsRUFBRyxTQUFTLEVBQUUsQ0FBQztBQUFBLElBQzFJO0FBQUEsRUFDSCxDQUFFLEdBQ011ekI7QUFDUjtBQUVBLFNBQVNvRCxHQUFlajJCLEdBQUlvekIsR0FBa0I7QUFDN0MsTUFBSUEsR0FDSjtBQUFBLFFBQUlucUMsSUFBTTtBQU1WLElBTEEsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsR0FBRTtBQUFBO0FBQUEsTUFBTztBQUFBO0FBQUEsTUFBZ0I7QUFBQSxJQUFHLENBQUMsRUFBRSxRQUFRLFNBQVNySyxHQUFHO0FBRXZFLGVBQVExSixJQUFJMEosRUFBRSxDQUFDLEdBQUcxSixLQUFLMEosRUFBRSxDQUFDLEdBQUcsRUFBRTFKO0FBQUcsUUFBR2srQyxFQUFHbCtDLENBQUMsS0FBSyxRQUFNLEVBQUUrVDtBQUFBLElBQ3hELENBQUUsR0FFRUEsS0FBTyxNQUNWOFcsRUFBYUMsR0FBSSxLQUEyQjhDLEdBQWU3WixDQUFHLENBQUMsR0FDL0QsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLENBQUMsSUFBRyxFQUFFLEdBQUUsQ0FBQyxJQUFHLEVBQUUsR0FBRTtBQUFBO0FBQUEsTUFBTztBQUFBO0FBQUEsTUFBZ0I7QUFBQSxJQUFHLENBQUMsRUFBRSxRQUFRLFNBQVNySyxHQUFHO0FBRXZFLGVBQVExSixJQUFJMEosRUFBRSxDQUFDLEdBQUcxSixLQUFLMEosRUFBRSxDQUFDLEdBQUcsRUFBRTFKO0FBQUcsUUFBR2srQyxFQUFHbCtDLENBQUMsS0FBSyxRQUFNNnFCLEVBQWFDLEdBQUksSUFBcUJxMEIsR0FBYW4vQyxHQUFHaytDLEVBQUdsK0MsQ0FBQyxDQUFDLENBQUM7QUFBQSxJQUNsSCxDQUFFLEdBQ0Q2cUI7QUFBQSxNQUFhQztBQUFBLE1BQUk7QUFBQTtBQUFBOztBQUNsQjtBQUVBLFNBQVNrMkIsR0FBZ0JsMkIsR0FBZ0I7QUFDeEMsTUFBSS9XLElBQU07QUFHVixFQUFBOFcsRUFBYUMsR0FBSSxLQUE0QjhDLEdBQWU3WixDQUFHLENBQUMsR0FDaEU4VyxFQUFhQyxHQUFJLElBQXNCMjBCLEdBQWM7QUFBQSxJQUNwRCxJQUFHO0FBQUEsSUFDSCxPQUFPLEVBQUMsT0FBTSxFQUFDO0FBQUEsSUFDZixNQUFNO0FBQUEsSUFDTixRQUFRO0FBQUEsSUFDUixRQUFRO0FBQUEsRUFDUixDQUFBLENBQUMsR0FFRjUwQjtBQUFBLElBQWFDO0FBQUEsSUFBSTtBQUFBO0FBQUE7QUFDbEI7QUFFQSxTQUFTbTJCLEdBQWdCbjJCLEdBQWdCO0FBQ3hDLE1BQUkvVyxJQUFNO0FBR1YsRUFBQThXLEVBQWFDLEdBQUksS0FBNEI4QyxHQUFlN1osQ0FBRyxDQUFDLEdBQ2hFOFcsRUFBYUMsR0FBSSxJQUFzQmkxQixHQUFjLEVBQUMsYUFBWSxPQUFNLENBQUMsQ0FBQyxHQUMxRWwxQixFQUFhQyxHQUFJLElBQXNCaTFCLEdBQWMsRUFBQyxhQUFZLFVBQVMsQ0FBQyxDQUFDLEdBRTdFbDFCO0FBQUEsSUFBYUM7QUFBQSxJQUFJO0FBQUE7QUFBQTtBQUNsQjtBQUVBLFNBQVNvMkIsR0FBa0JwMkIsR0FBZ0I7QUFDMUMsTUFBSS9XLElBQU07QUFHVixFQUFBOFcsRUFBYUMsR0FBSSxLQUE4QjhDLEdBQWU3WixDQUFHLENBQUMsR0FDbEU4VyxFQUFhQyxHQUFJLElBQXdCMDFCLEdBQWtCLENBQUMsR0FFNUQzMUI7QUFBQSxJQUFhQztBQUFBLElBQUk7QUFBQTtBQUFBO0FBQ2xCO0FBRUEsU0FBU3EyQixHQUF1QnIyQixHQUFnQjtBQUMvQyxNQUFJL1csSUFBTTtBQUNWLEVBQUE4VyxFQUFhQyxHQUFJLEtBQW1DOEMsR0FBZTdaLENBQUcsQ0FBQyxHQUN2RThXLEVBQWFDLEdBQUksSUFBb0JzMUIsR0FBWTtBQUFBLElBQ2hELFVBQVU7QUFBQSxJQUNWLFFBQVU7QUFBQSxJQUNWLFFBQVU7QUFBQSxJQUNWLFVBQVU7QUFBQSxFQUNaLEdBQUksS0FBTSxDQUFDLEdBRVZ2MUI7QUFBQSxJQUFhQztBQUFBLElBQUk7QUFBQTtBQUFBO0FBQ2xCO0FBRUEsU0FBU3MyQixHQUFrQnQyQixHQUFJdnRCLEdBQU07QUFDcEMsRUFBQXN0QixFQUFhQyxHQUFJLEtBQThCOEMsR0FBZXJ3QixFQUFLLE1BQU0sQ0FBQyxHQUMxRUEsRUFBSyxRQUFRLFNBQVNxRCxHQUFHO0FBQUUsSUFBQWlxQixFQUFhQyxHQUFJLElBQW9CczFCLEdBQVl4L0MsR0FBRSxDQUFDLENBQUM7QUFBQSxFQUFJLENBQUEsR0FFcEZpcUI7QUFBQSxJQUFhQztBQUFBLElBQUk7QUFBQTtBQUFBO0FBQ2xCO0FBRUEsU0FBU3UyQixHQUFpQnYyQixHQUFnQjtBQUN6QyxNQUFJL1csSUFBTTtBQUVWLEVBQUE4VyxFQUFhQyxHQUFJLEtBQTZCOEMsR0FBZTdaLENBQUcsQ0FBQyxHQUNqRThXLEVBQWFDLEdBQUksSUFBdUIyMUIsR0FBZTtBQUFBLElBQ3RELE1BQUs7QUFBQSxJQUNMLFdBQVU7QUFBQSxJQUNWLE1BQUs7QUFBQSxFQUNMLENBQUEsQ0FBQyxHQUVGNTFCO0FBQUEsSUFBYUM7QUFBQSxJQUFJO0FBQUE7QUFBQTtBQUNsQjtBQUVBLFNBQVN3MkIsR0FBZXgyQixHQUFnQjtBQUN2QyxNQUFJL1csSUFBTTtBQUVWLEVBQUE4VyxFQUFhQyxHQUFJLEtBQTJCOEMsR0FBZTdaLENBQUcsQ0FBQyxHQUUvRDhXO0FBQUEsSUFBYUM7QUFBQSxJQUFJO0FBQUE7QUFBQTtBQUNsQjtBQUVBLFNBQVN5MkIsR0FBc0J6MkIsR0FBZ0I7QUFDOUMsTUFBSS9XLElBQU07QUFFVixFQUFBOFcsRUFBYUMsR0FBSSxLQUFrQzQxQixHQUEwQjNzQyxHQUFLLHFCQUFxQixtQkFBbUIsQ0FBQyxHQUUzSDhXO0FBQUEsSUFBYUM7QUFBQSxJQUFJO0FBQUE7QUFBQTtBQUNsQjtBQVFBLFNBQVMwMkIsR0FBY2hoQixHQUFJLzVCLEdBQU07QUFDaEMsTUFBSXFrQixJQUFLUjtBQUNULFNBQUFPO0FBQUEsSUFBYUM7QUFBQSxJQUFJO0FBQUE7QUFBQSxLQUNqQmkyQixHQUFlajJCLEdBQUkwVixFQUFHLEdBQUcsR0FDekJ3Z0IsR0FBZ0JsMkIsQ0FBTSxHQUN0Qm0yQixHQUFnQm4yQixDQUFNLEdBQ3RCbzJCLEdBQWtCcDJCLENBQU0sR0FDeEJxMkIsR0FBdUJyMkIsQ0FBTSxHQUM3QnMyQixHQUFrQnQyQixHQUFJcmtCLEVBQUssT0FBTyxHQUNsQzQ2QyxHQUFpQnYyQixDQUFNLEdBQ3ZCdzJCLEdBQWV4MkIsQ0FBTSxHQUNyQnkyQixHQUFzQnoyQixDQUFNLEdBRzVCRDtBQUFBLElBQWFDO0FBQUEsSUFBSTtBQUFBO0FBQUEsS0FDVkEsRUFBRztBQUNYO0FBRUEsSUFBSTIyQixLQUFxQjtBQUFBLEVBQ3hCO0FBQUEsRUFBWTtBQUFBLEVBQVk7QUFBQSxFQUFZO0FBQUEsRUFDcEM7QUFBQSxFQUFnQjtBQUFBLEVBQWdCO0FBQUEsRUFDaEM7QUFBQSxFQUFnQjtBQUFBLEVBQWdCO0FBQUEsRUFDaEM7QUFBQSxFQUFjO0FBQ2Y7QUFFQSxTQUFTQyxHQUFnQjk4QyxHQUFHZzVDLEdBQVFuM0MsR0FBTTtBQUN6QyxFQUFBbTNDLEVBQU8sY0FBYyxZQUFZO0FBQ2pDLE1BQUlodEIsSUFBUSxDQUFBO0FBQ1osR0FBQ2hzQixFQUFFLENBQUMsRUFBRSxNQUFNbWYsRUFBUSxLQUFHLENBQUUsR0FBRSxRQUFRLFNBQVN2aEIsR0FBRztBQUM5QyxRQUFJNkYsSUFBSTZiLEdBQVkxaEIsQ0FBQztBQUNyQixZQUFPNkYsRUFBRSxDQUFDLEdBQUM7QUFBQSxNQUVWLEtBQUs7QUFBQSxNQUFnQixLQUFLO0FBQWtCO0FBQUEsTUFHNUMsS0FBSztBQUNKLFFBQUF1b0IsRUFBTSxNQUFNdm9CLEVBQUU7QUFBSztBQUFBLE1BR3BCLEtBQUs7QUFDSixRQUFBdW9CLEVBQU0sTUFBTXZvQixFQUFFO0FBQVM7QUFBQSxNQWN4QixLQUFLO0FBQUEsTUFBVyxLQUFLO0FBQUEsTUFDckIsS0FBSztBQUFBLE1BQVcsS0FBSztBQUFBLE1BQ3JCLEtBQUs7QUFBQSxNQUFXLEtBQUs7QUFBQSxNQUNyQixLQUFLO0FBQUEsTUFBVyxLQUFLO0FBQUEsTUFDckIsS0FBSztBQUFBLE1BQWUsS0FBSztBQUFBLE1BQ3pCLEtBQUs7QUFBQSxNQUFlLEtBQUs7QUFBQSxNQUN6QixLQUFLO0FBQUEsTUFBZSxLQUFLO0FBQUEsTUFDekIsS0FBSztBQUFBLE1BQWUsS0FBSztBQUFBLE1BQ3pCLEtBQUs7QUFBQSxNQUFlLEtBQUs7QUFBQSxNQUN6QixLQUFLO0FBQUEsTUFBZSxLQUFLO0FBQUEsTUFDekIsS0FBSztBQUFBLE1BQWEsS0FBSztBQUFBLE1BQ3ZCLEtBQUs7QUFBQSxNQUFnQixLQUFLO0FBQ3pCLFFBQUlBLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxNQUFNLE9BQ3RCdTFDLEVBQU8sY0FBYyxVQUFVNkQsR0FBbUIsUUFBUXA1QyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUl1b0IsR0FDbkVBLElBQVEsQ0FBQSxLQUVSQSxFQUFNLE9BQU92b0IsRUFBRSxDQUFDLEVBQUUsTUFBTSxHQUFHQSxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUM7QUFFM0M7QUFBQSxNQUVEO0FBQVMsWUFBRzVCLEtBQVFBLEVBQUs7QUFBSyxnQkFBTSxJQUFJLE1BQU0sa0JBQWtCNEIsRUFBRSxDQUFDLElBQUksZUFBZTtBQUFBLElBQ3RGO0FBQUEsRUFDSCxDQUFFO0FBQ0Y7QUFHQSxTQUFTczVDLEtBQXdDO0FBQUc7QUFHcEQsU0FBU0MsS0FBdUM7QUFBRztBQUVuRCxJQUFJQyxLQUFZLDhDQUNaQyxLQUFZLGdEQUNaQyxLQUFZO0FBR2hCLFNBQVNDLEdBQW9CemtELEdBQU1xZ0QsR0FBUW4zQyxHQUFNO0FBQ2hELEVBQUFtM0MsRUFBTyxnQkFBZ0I7QUFFdkIsTUFBSWg1QztBQUVKO0FBQUE7QUFBQSxJQUVDLENBQUMsYUFBYWk5QyxJQUFXSCxFQUFlO0FBQUE7QUFBQSxJQUV4QyxDQUFDLGNBQWNJLElBQVdILEVBQWdCO0FBQUE7QUFBQSxJQUUxQyxDQUFDLGFBQWFJLElBQVdILEVBQWU7QUFBQSxFQUMxQyxFQUFHLFFBQVEsU0FBU3ZnRCxHQUFHO0FBQ3JCLFFBQUcsRUFBRXVELElBQUVySCxFQUFLLE1BQU04RCxFQUFFLENBQUMsQ0FBQztBQUFJLFlBQU0sSUFBSSxNQUFNQSxFQUFFLENBQUMsSUFBSSw2QkFBNkI7QUFDOUUsSUFBQUEsRUFBRSxDQUFDLEVBQUV1RCxHQUFHZzVDLEdBQVFuM0MsQ0FBSTtBQUFBLEVBQ3RCLENBQUU7QUFDRjtBQUVBLElBQUl3N0MsS0FBZTtBQUduQixTQUFTQyxHQUFnQjNrRCxHQUFpQmtKLEdBQU07QUFFL0MsR0FBRyxDQUFDbEosS0FBUUEsRUFBSyxXQUFXLE9BQUdBLElBQU80a0Q7QUFFdEMsTUFBSXY5QyxHQUNBZzVDLElBQVMsQ0FBQTtBQUdiLE1BQUcsRUFBRWg1QyxJQUFFckgsRUFBSyxNQUFNMGtELEVBQVk7QUFBSSxVQUFNLElBQUksTUFBTSxrQ0FBa0M7QUFDcEYsU0FBQUQsR0FBb0JwOUMsRUFBRSxDQUFDLEdBQUdnNUMsR0FBUW4zQyxDQUFJLEdBQ3RDbTNDLEVBQU8sTUFBTXJnRCxHQUNOcWdEO0FBQ1I7QUFFQSxTQUFTdUUsR0FBWUMsR0FBUTM3QyxHQUFpQjtBQUM3QyxNQUFHQSxLQUFRQSxFQUFLO0FBQVcsV0FBT0EsRUFBSztBQUN2QyxNQUFHMjdDLEtBQVUsT0FBT0EsRUFBTyxPQUFPO0FBQVUsV0FBT0EsRUFBTztBQUMxRCxNQUFJbmdELElBQUksQ0FBQzBoQixFQUFVO0FBQ25CLFNBQUExaEIsRUFBRUEsRUFBRSxNQUFNLElBQUksaUdBQ2RBLEVBQUVBLEVBQUUsTUFBTSxJQUFLLHFCQUVmQSxFQUFFQSxFQUFFLE1BQU0sSUFBTSwrQkFDaEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFPLGdFQUNqQkEsRUFBRUEsRUFBRSxNQUFNLElBQU8sNERBQ2pCQSxFQUFFQSxFQUFFLE1BQU0sSUFBTyw0Q0FDakJBLEVBQUVBLEVBQUUsTUFBTSxJQUFPLDRDQUNqQkEsRUFBRUEsRUFBRSxNQUFNLElBQU8sb0RBQ2pCQSxFQUFFQSxFQUFFLE1BQU0sSUFBTyxvREFDakJBLEVBQUVBLEVBQUUsTUFBTSxJQUFPLG9EQUNqQkEsRUFBRUEsRUFBRSxNQUFNLElBQU8sb0RBQ2pCQSxFQUFFQSxFQUFFLE1BQU0sSUFBTyxvREFDakJBLEVBQUVBLEVBQUUsTUFBTSxJQUFPLG9EQUNqQkEsRUFBRUEsRUFBRSxNQUFNLElBQU8sZ0RBQ2pCQSxFQUFFQSxFQUFFLE1BQU0sSUFBTyxzREFDakJBLEVBQUVBLEVBQUUsTUFBTSxJQUFNLGtCQUVoQkEsRUFBRUEsRUFBRSxNQUFNLElBQU0sZ0NBQ2hCQSxFQUFFQSxFQUFFLE1BQU0sSUFBTyxpQkFDakJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLGlDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsdUJBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSx1QkFDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLCtDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsNENBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSx5Q0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLDJDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsc0RBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSxzREFDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLDZDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsNENBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSw2Q0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLDZDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsZ0RBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSw0Q0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLDRDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsK0NBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSwyREFDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLHlEQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEseURBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSw4Q0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLDZDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsOENBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSw0Q0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLHdEQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsOENBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSw4Q0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLGdEQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsbURBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSxzREFDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLHNEQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsdURBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSw4Q0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFPLGtCQUNqQkEsRUFBRUEsRUFBRSxNQUFNLElBQU8saUJBQ2pCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSxpQ0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLHVCQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsdUJBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSwrQ0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLDRDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEseUNBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSwyQ0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLDRDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsNENBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSw2Q0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLDRDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsNkNBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSw2Q0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLCtDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsNENBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSw0Q0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLCtDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsMkRBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSx5REFDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLHlEQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsOENBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSw2Q0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLDhDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsNENBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSx3REFDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLDhDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsOENBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSxnREFDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLG1EQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsc0RBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSw0Q0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLHVEQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsOENBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBTyxrQkFDakJBLEVBQUVBLEVBQUUsTUFBTSxJQUFNLG1CQUVoQkEsRUFBRUEsRUFBRSxNQUFNLElBQU0sK0JBQ2hCQSxFQUFFQSxFQUFFLE1BQU0sSUFBTyxvQkFDakJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLHlEQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsaUNBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUyxhQUNuQkEsRUFBRUEsRUFBRSxNQUFNLElBQVUsNkdBQ3BCQSxFQUFFQSxFQUFFLE1BQU0sSUFBVSxpSEFDcEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFVLGtIQUNwQkEsRUFBRUEsRUFBRSxNQUFNLElBQVMsY0FDbkJBLEVBQUVBLEVBQUUsTUFBTSxJQUFTLHNDQUNuQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsaUJBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSxpQ0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFTLGFBQ25CQSxFQUFFQSxFQUFFLE1BQU0sSUFBVSxxSUFDcEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFVLHlJQUNwQkEsRUFBRUEsRUFBRSxNQUFNLElBQVMsY0FDbkJBLEVBQUVBLEVBQUUsTUFBTSxJQUFTLHNDQUNuQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsaUJBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBTyxxQkFDakJBLEVBQUVBLEVBQUUsTUFBTSxJQUFPLGtCQUNqQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsb01BQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSwwSUFDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLDBJQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQU8sbUJBQ2pCQSxFQUFFQSxFQUFFLE1BQU0sSUFBTyxzQkFDakJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLG1CQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQVMsaUJBQ25CQSxFQUFFQSxFQUFFLE1BQU0sSUFBVSxxSkFDcEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFTLGtCQUNuQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsb0JBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSxtQkFDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFTLGlCQUNuQkEsRUFBRUEsRUFBRSxNQUFNLElBQVUscUpBQ3BCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUyxrQkFDbkJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLG9CQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsbUJBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUyxpQkFDbkJBLEVBQUVBLEVBQUUsTUFBTSxJQUFVLHFKQUNwQkEsRUFBRUEsRUFBRSxNQUFNLElBQVMsa0JBQ25CQSxFQUFFQSxFQUFFLE1BQU0sSUFBUyw4TEFDbkJBLEVBQUVBLEVBQUUsTUFBTSxJQUFTLG9EQUNuQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEsb0JBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBTyx1QkFDakJBLEVBQUVBLEVBQUUsTUFBTSxJQUFPLHNCQUNqQkEsRUFBRUEsRUFBRSxNQUFNLElBQVEseURBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSxpQ0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFTLGFBQ25CQSxFQUFFQSxFQUFFLE1BQU0sSUFBVSw2R0FDcEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFVLHVJQUNwQkEsRUFBRUEsRUFBRSxNQUFNLElBQVUsbUhBQ3BCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUyxjQUNuQkEsRUFBRUEsRUFBRSxNQUFNLElBQVMsNEZBQ25CQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSxpQkFDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFRLGlDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLElBQVMsYUFDbkJBLEVBQUVBLEVBQUUsTUFBTSxJQUFVLDZHQUNwQkEsRUFBRUEsRUFBRSxNQUFNLElBQVUsbUhBQ3BCQSxFQUFFQSxFQUFFLE1BQU0sSUFBUyxjQUNuQkEsRUFBRUEsRUFBRSxNQUFNLElBQVMsMEZBQ25CQSxFQUFFQSxFQUFFLE1BQU0sSUFBUSxpQkFDbEJBLEVBQUVBLEVBQUUsTUFBTSxJQUFPLHVCQUNqQkEsRUFBRUEsRUFBRSxNQUFNLElBQU0sa0JBQ2hCQSxFQUFFQSxFQUFFLE1BQU0sSUFBSyxzQkFFZkEsRUFBRUEsRUFBRSxNQUFNLElBQUssc0JBQ2ZBLEVBQUVBLEVBQUUsTUFBTSxJQUFNLGFBQ2hCQSxFQUFFQSxFQUFFLE1BQU0sSUFBTyxvU0FDakJBLEVBQUVBLEVBQUUsTUFBTSxJQUFNLGNBQ2hCQSxFQUFFQSxFQUFFLE1BQU0sSUFBTSxhQUNoQkEsRUFBRUEsRUFBRSxNQUFNLElBQU8sb1NBQ2pCQSxFQUFFQSxFQUFFLE1BQU0sSUFBTSxjQUNoQkEsRUFBRUEsRUFBRSxNQUFNLElBQUssdUJBQ2ZBLEVBQUVBLEVBQUUsTUFBTSxJQUFLLDBCQUNmQSxFQUFFQSxFQUFFLE1BQU0sSUFBSSxjQUNQQSxFQUFFLEtBQUssRUFBRTtBQUNqQjtBQUVBLFNBQVNvZ0QsR0FBWTNpRCxHQUFNcXFCLEdBQVF0akIsR0FBTTtBQUN4QyxNQUFJckcsSUFBTVYsRUFBSyxJQUFJcXFCLEdBQ2Z1NEIsSUFBaUI1aUQsRUFBSyxXQUFXLENBQUM7QUFDdEMsTUFBRzRpRCxNQUFtQixRQUN0QjtBQUFBLFFBQUcsQ0FBQzc3QyxFQUFLLFlBQVk7QUFBRSxNQUFBL0csRUFBSyxJQUFJVTtBQUFLO0FBQUEsSUFBUztBQUM5QyxRQUFJN0MsSUFBT21DLEVBQUssTUFBTUEsRUFBSyxDQUFDO0FBQzVCLElBQUFBLEVBQUssSUFBSVU7QUFDVCxRQUFJd2lCO0FBQUssUUFBSTtBQUFFLE1BQUFBLElBQU1VLEdBQVMvbEIsR0FBTSxFQUFDLE1BQU0sUUFBTyxDQUFDO0FBQUEsSUFBRSxRQUFZO0FBQUU7QUFBQSxJQUFTO0FBQzVFLFFBQUlnbEQsSUFBV3YvQixHQUFVSixHQUFLLDBCQUEwQixFQUFJO0FBQzVELFFBQUkyL0I7QUFDSixhQUFPTCxHQUFnQkssR0FBVTk3QyxDQUFJO0FBQUE7QUFDdEM7QUFHQSxTQUFTKzdDLEdBQWlCOWlELEdBQW9CO0FBQUUsU0FBT0EsRUFBSyxXQUFXLENBQUM7QUFBSTtBQUc1RSxTQUFTK2lELEdBQW1CL2lELEdBQW9CO0FBQy9DLE1BQUl1QyxJQUFJLENBQUE7QUFHUixVQUZBQSxFQUFFLFdBQVd2QyxFQUFLLFdBQVcsQ0FBQyxHQUM5QnVDLEVBQUUsYUFBYXZDLEVBQUssV0FBVyxDQUFDLEdBQ3pCdUMsRUFBRSxVQUFRO0FBQUEsSUFDaEIsS0FBSztBQUFHLE1BQUF2QyxFQUFLLEtBQUs7QUFBRztBQUFBLElBQ3JCLEtBQUs7QUFBRyxNQUFBdUMsRUFBRSxZQUFZeWdELEdBQVloakQsR0FBTSxDQUFDO0FBQUc7QUFBQSxJQUM1QyxLQUFLO0FBQUcsTUFBQXVDLEVBQUUsWUFBWW04QixHQUFlMStCLENBQU87QUFBRztBQUFBLElBQy9DLEtBQUs7QUFBRyxNQUFBdUMsRUFBRSxZQUFZdWdELEdBQWlCOWlELENBQU87QUFBRztBQUFBLElBQ2pELEtBQUs7QUFBRyxNQUFBQSxFQUFLLEtBQUs7QUFBRztBQUFBLEVBQ3JCO0FBQ0QsU0FBQUEsRUFBSyxLQUFLLEdBQ0h1QztBQUNSO0FBR0EsU0FBU3lnRCxHQUFZaGpELEdBQU1xcUIsR0FBUTtBQUNsQyxTQUFPRCxHQUFVcHFCLEdBQU1xcUIsQ0FBTTtBQUM5QjtBQUdBLFNBQVM0NEIsR0FBb0JqakQsR0FBTXFxQixHQUFRO0FBQzFDLFNBQU9ELEdBQVVwcUIsR0FBTXFxQixDQUFNO0FBQzlCO0FBR0EsU0FBUzY0QixHQUFjbGpELEdBQW1DO0FBQ3pELE1BQUltakQsSUFBVW5qRCxFQUFLLFdBQVcsQ0FBQyxHQUMzQnVxQixJQUFLdnFCLEVBQUssV0FBVyxDQUFDLElBQUksR0FDMUJ1QyxJQUFJLENBQUM0Z0QsQ0FBTztBQUNoQixVQUFPQSxHQUFPO0FBQUEsSUFDYixLQUFLO0FBQUEsSUFBTSxLQUFLO0FBQUEsSUFBTSxLQUFLO0FBQUEsSUFBTSxLQUFLO0FBQUEsSUFDdEMsS0FBSztBQUFBLElBQU0sS0FBSztBQUFBLElBQU0sS0FBSztBQUFBLElBQU0sS0FBSztBQUNyQyxNQUFBNWdELEVBQUUsQ0FBQyxJQUFJd2dELEdBQW1CL2lELENBQVE7QUFBRztBQUFBLElBQ3RDLEtBQUs7QUFBTSxNQUFBdUMsRUFBRSxDQUFDLElBQUkwZ0QsR0FBb0JqakQsR0FBTXVxQixDQUFFO0FBQUc7QUFBQSxJQUNqRCxLQUFLO0FBQUEsSUFBTSxLQUFLO0FBQU0sTUFBQWhvQixFQUFFLENBQUMsSUFBSXZDLEVBQUssV0FBV3VxQixNQUFPLElBQUksSUFBSSxDQUFDO0FBQUc7QUFBQSxJQUNoRTtBQUFTLFlBQU0sSUFBSSxNQUFNLGdDQUFnQzQ0QixJQUFVLE1BQU01NEIsQ0FBRTtBQUFBLEVBQzNFO0FBQ0QsU0FBT2hvQjtBQUNSO0FBR0EsU0FBUzZnRCxHQUFZcGpELEdBQU1xcUIsR0FBUTtBQUNsQyxNQUFJM3BCLElBQU1WLEVBQUssSUFBSXFxQjtBQUNuQixFQUFBcnFCLEVBQUssS0FBSztBQUNWLE1BQUk4K0IsSUFBTzkrQixFQUFLLFdBQVcsQ0FBQztBQUM1QixFQUFBQSxFQUFLLEtBQUs7QUFHVixXQUZJcWpELElBQVFyakQsRUFBSyxXQUFXLENBQUMsR0FDekJpZSxJQUFjLENBQUEsR0FDWm9sQyxNQUFVO0FBQUcsSUFBQXBsQyxFQUFJLEtBQUtpbEMsR0FBY2xqRCxHQUFNVSxJQUFJVixFQUFLLENBQUMsQ0FBQztBQUMzRCxTQUFPLEVBQUMsTUFBSzgrQixHQUFNLEtBQUk3Z0IsRUFBRztBQUMzQjtBQUdBLFNBQVNxbEMsR0FBYTFFLEdBQUkyRSxHQUFPO0FBQ2hDLEVBQUFBLEVBQU0sUUFBUSxTQUFTQyxHQUFLO0FBQzNCLFlBQU9BLEVBQUksQ0FBQyxHQUFDO0FBQUEsSUFhWjtBQUFBLEVBQ0gsQ0FBRTtBQUNGO0FBRUEsU0FBU0MsR0FBaUI1bEQsR0FBTXdzQixHQUFRO0FBQ3RDLFNBQU87QUFBQSxJQUNMLE9BQU94c0IsRUFBSyxXQUFXLENBQUM7QUFBQSxJQUN4QixTQUFTQSxFQUFLLFdBQVcsQ0FBQztBQUFBLElBQzFCLE1BQU1zd0IsR0FBbUJ0d0IsQ0FBZ0I7QUFBQSxFQUM3QztBQUNBO0FBQ0EsU0FBUzZsRCxHQUFpQjdsRCxHQUFNO0FBQzlCLE1BQUkwRSxJQUFJNlIsRUFBUSxLQUFLLElBQUl2VyxFQUFLLEtBQUssTUFBTTtBQUN6QyxTQUFBMEUsRUFBRSxZQUFZLEdBQUcxRSxFQUFLLEtBQUssR0FDM0IwRSxFQUFFLFlBQVksR0FBRzFFLEVBQUssT0FBTyxHQUM3Qnd3QixHQUFtQnh3QixFQUFLLE1BQU0wRSxDQUFDLEdBQ3hCQSxFQUFFLE1BQU0sR0FBR0EsRUFBRSxDQUFDO0FBQ3ZCO0FBQ0EsU0FBU29oRCxHQUFhOWxELEdBQU07QUFHMUIsV0FGSTZHLElBQU0sQ0FBQSxHQUNOMlAsSUFBTXhXLEVBQUssV0FBVyxDQUFDLEdBQ3BCd1csTUFBUTtBQUNiLElBQUEzUCxFQUFJLEtBQUssQ0FBQzdHLEVBQUssV0FBVyxDQUFDLEdBQUdBLEVBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztBQUNuRCxTQUFPNkc7QUFDVDtBQUNBLFNBQVNrL0MsR0FBYUMsR0FBSztBQUN6QixNQUFJdGhELElBQUk2UixFQUFRLElBQUksSUFBSXl2QyxFQUFJLE1BQU07QUFDbEMsRUFBQXRoRCxFQUFFLFlBQVksR0FBR3NoRCxFQUFJLE1BQU07QUFDM0IsV0FBU3ZqRCxJQUFJLEdBQUdBLElBQUl1akQsRUFBSSxRQUFRLEVBQUV2akQ7QUFDaEMsSUFBQWlDLEVBQUUsWUFBWSxHQUFHc2hELEVBQUl2akQsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUMxQmlDLEVBQUUsWUFBWSxHQUFHc2hELEVBQUl2akQsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUU1QixTQUFPaUM7QUFDVDtBQUNBLFNBQVN1aEQsR0FBb0J6dkMsR0FBS1ksR0FBTTtBQUN0QyxNQUFJMVMsSUFBSTZSLEVBQVEsSUFBSSxJQUFJYSxFQUFLLE1BQU07QUFDbkMsU0FBQTFTLEVBQUUsWUFBWSxHQUFHOFIsQ0FBRyxHQUNwQmdhLEdBQW1CcFosR0FBTTFTLENBQUMsR0FDbkJBLEVBQUUsTUFBTSxHQUFHQSxFQUFFLENBQUM7QUFDdkI7QUFDQSxTQUFTd2hELEdBQW9CbG1ELEdBQU07QUFDakMsU0FBQUEsRUFBSyxLQUFLLEdBQ0hBLEVBQUssV0FBVyxDQUFDLEtBQUs7QUFDL0I7QUFDQSxTQUFTbW1ELEdBQW9CM3ZDLEdBQUs0dkMsR0FBSTtBQUNwQyxNQUFJMWhELElBQUk2UixFQUFRLENBQUM7QUFDakIsU0FBQTdSLEVBQUUsWUFBWSxHQUFHOFIsQ0FBRyxHQUNwQjlSLEVBQUUsWUFBWSxHQUFHMGhELElBQUssSUFBSSxDQUFDLEdBQ3BCMWhEO0FBQ1Q7QUFDQSxTQUFTMmhELEdBQWlCcm1ELEdBQU1vWCxHQUFNc0IsR0FBTztBQUMzQyxNQUFJN1IsSUFBTSxFQUFFLE9BQU8sQ0FBRSxHQUFFLE1BQU0sSUFBSSxPQUFPLENBQUEsS0FDcENxQyxJQUFPd1AsS0FBUyxJQUNoQjZxQyxJQUFRLENBQUEsR0FDUnBMLElBQU8sSUFDUG1PLElBQVc7QUFDZixTQUFBNzVCLEdBQWF6c0IsR0FBTSxTQUFTMEssR0FBS21JLEdBQUdnYSxHQUFJO0FBQ3RDLFlBQVFBLEdBQUU7QUFBQSxNQUNSLEtBQUs7QUFDSCxRQUFBaG1CLEVBQUksTUFBTSxLQUFLLEVBQUUsTUFBTTZELEVBQUksS0FBSSxDQUFFO0FBQ2pDO0FBQUEsTUFDRixLQUFLO0FBQ0gsUUFBQUEsRUFBSSxRQUFRLFNBQVN5QixHQUFHO0FBQ3RCLFVBQUltNkMsS0FBWSxJQUNkei9DLEVBQUksS0FBSyxLQUFLLEVBQUUsTUFBTUEsRUFBSSxNQUFNc0YsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sT0FBT0EsRUFBRSxDQUFDLEVBQUMsQ0FBRSxJQUN0RG02QyxLQUFZLEtBQ25Cei9DLEVBQUksTUFBTSxLQUFLLEVBQUUsTUFBTUEsRUFBSSxNQUFNc0YsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sT0FBT0EsRUFBRSxDQUFDLEVBQUMsQ0FBRTtBQUFBLFFBQzFFLENBQVM7QUFDRDtBQUFBLE1BQ0YsS0FBSztBQUNILFFBQUFtNkMsSUFBVzU3QyxJQUFNLElBQUk7QUFDckI7QUFBQSxNQUNGLEtBQUs7QUFDSCxRQUFBNDdDLElBQVc7QUFDWDtBQUFBLE1BQ0YsS0FBSztBQUNILFFBQUEvQyxFQUFNLEtBQUsxMkIsQ0FBRSxHQUNic3JCLElBQU87QUFDUDtBQUFBLE1BQ0YsS0FBSztBQUNILFFBQUFvTCxFQUFNLElBQUcsR0FDVHBMLElBQU87QUFDUDtBQUFBLE1BQ0Y7QUFDRSxZQUFJLENBQUF0bEMsRUFBRTtBQUNDLGNBQUksQ0FBQ3NsQyxLQUFRanZDLEVBQUssT0FBT3E2QyxFQUFNQSxFQUFNLFNBQVMsQ0FBQyxLQUFLO0FBQ3pELGtCQUFNLElBQUksTUFBTSx5QkFBeUIxMkIsRUFBRyxTQUFTLEVBQUUsQ0FBQztBQUFBO0FBQUEsSUFDN0Q7QUFBQSxFQUNMLENBQUcsR0FDTWhtQjtBQUNUO0FBQ0EsU0FBUzAvQyxLQUFtQjtBQUMxQixNQUFJaDVCLElBQUtSO0FBQ1QsU0FBQU8sRUFBYUMsR0FBSSxHQUFHLEdBQ3BCRCxFQUFhQyxHQUFJLEtBQUs4QyxHQUFlLENBQUMsQ0FBQyxHQUN2Qy9DLEVBQWFDLEdBQUksS0FBS3M0QixHQUFpQjtBQUFBLElBQ3JDLE1BQU07QUFBQSxJQUNOLFNBQVM7QUFBQSxJQUNULE9BQU87QUFBQSxFQUNSLENBQUEsQ0FBQyxHQUNGdjRCLEVBQWFDLEdBQUksR0FBRyxHQUNwQkQsRUFBYUMsR0FBSSxLQUFLMDRCLEdBQW9CLEdBQUcsUUFBUSxDQUFDLEdBQ3REMzRCLEVBQWFDLEdBQUksRUFBRSxHQUNuQkQsRUFBYUMsR0FBSSxJQUFJOEMsR0FBZSxHQUFHLENBQUMsR0FDeEMvQyxFQUFhQyxHQUFJLE1BQU04QyxHQUFlLENBQUMsQ0FBQyxHQUN4Qy9DLEVBQWFDLEdBQUksTUFBTXVRLEdBQVksQ0FBQyxDQUFDLEdBQ3JDeFEsRUFBYUMsR0FBSSxFQUFFLEdBQ25CRCxFQUFhQyxHQUFJLEVBQUUsR0FDbkJELEVBQWFDLEdBQUksR0FBRyxHQUNwQkQsRUFBYUMsR0FBSSxLQUFLNDRCLEdBQW9CLEdBQUcsRUFBSSxDQUFDLEdBQ2xENzRCLEVBQWFDLEdBQUksSUFBSXc0QixHQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FDM0N6NEIsRUFBYUMsR0FBSSxHQUFHLEdBQ3BCRCxFQUFhQyxHQUFJLEdBQUcsR0FDYkEsRUFBRztBQUNaO0FBQ0EsU0FBU2k1QixHQUFpQnhtRCxHQUFNb1gsR0FBTWxPLEdBQU07QUFDMUMsTUFBSXJDLElBQU0sRUFBRSxPQUFPLENBQUUsR0FBRSxNQUFNLElBQUksT0FBTyxDQUFBO0FBQ3hDLE1BQUksQ0FBQzdHO0FBQ0gsV0FBTzZHO0FBQ1QsTUFBSXN4QyxJQUFPLElBQ1BtTyxJQUFXLEdBQ1hHO0FBQ0osU0FBQXptRCxFQUFLLFFBQVF3bUIsSUFBVSxTQUFTdmhCLEdBQUc7QUFDakMsUUFBSTZGLElBQUk2YixHQUFZMWhCLENBQUM7QUFDckIsWUFBUWlpQixHQUFTcGMsRUFBRSxDQUFDLENBQUMsR0FBQztBQUFBLE1BQ3BCLEtBQUs7QUFDSDtBQUFBLE1BQ0YsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUNIO0FBQUEsTUFDRixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQ0g7QUFBQSxNQUNGLEtBQUs7QUFDSCxRQUFBakUsRUFBSSxNQUFNLEtBQUssRUFBRSxNQUFNaUUsRUFBRSxLQUFJLENBQUU7QUFDL0I7QUFBQSxNQUNGLEtBQUs7QUFDSDtBQUFBLE1BQ0YsS0FBSztBQUNILGlCQUFTbEgsSUFBSSxHQUFHQSxJQUFJaUQsRUFBSSxNQUFNLFFBQVEsRUFBRWpEO0FBQ3RDLFVBQUlpRCxFQUFJLE1BQU1qRCxDQUFDLEVBQUUsUUFBUWtILEVBQUUsU0FDekIyN0MsSUFBVzUvQyxFQUFJLE1BQU1qRCxDQUFDO0FBQzFCO0FBQUEsTUFDRixLQUFLO0FBQ0g7QUFBQSxNQUNGLEtBQUs7QUFDSDtBQUFBLE1BQ0YsS0FBSztBQUNIO0FBQUEsTUFDRixLQUFLO0FBQ0gsUUFBSTBpRCxLQUFZLElBQ2R6L0MsRUFBSSxLQUFLLEtBQUssRUFBRSxNQUFNQSxFQUFJLE1BQU1pRSxFQUFFLElBQUksQ0FBQyxFQUFFLE1BQU0sT0FBTyxDQUFDQSxFQUFFLEVBQUMsQ0FBRSxJQUNyRHc3QyxLQUFZLEtBQ25Cei9DLEVBQUksTUFBTSxLQUFLLEVBQUUsTUFBTUEsRUFBSSxNQUFNaUUsRUFBRSxJQUFJLENBQUMsRUFBRSxNQUFNLE9BQU8sQ0FBQ0EsRUFBRSxFQUFDLENBQUU7QUFDL0Q7QUFBQSxNQUNGLEtBQUs7QUFDSDtBQUFBLE1BQ0YsS0FBSztBQUNILFFBQUF3N0MsSUFBVztBQUNYO0FBQUEsTUFDRixLQUFLO0FBQ0gsUUFBQUEsSUFBVztBQUNYO0FBQUEsTUFDRixLQUFLO0FBQ0gsUUFBQUEsSUFBVztBQUNYO0FBQUEsTUFDRixLQUFLO0FBQ0gsUUFBQUEsSUFBVztBQUNYO0FBQUEsTUFDRixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQ0g7QUFBQSxNQUNGLEtBQUs7QUFDSCxRQUFBbk8sSUFBTztBQUNQO0FBQUEsTUFDRixLQUFLO0FBQ0gsUUFBQUEsSUFBTztBQUNQO0FBQUEsTUFDRixLQUFLO0FBQ0gsWUFBSSxDQUFDc087QUFDSDtBQUNGLFFBQUtBLEVBQVMsWUFDWkEsRUFBUyxVQUFVLEtBQ3JCQSxFQUFTLFFBQVEsS0FBSyxDQUFDMzdDLEVBQUUsQ0FBQztBQUMxQjtBQUFBLE1BQ0Y7QUFDRSxZQUFJLENBQUNxdEMsS0FBUWp2QyxFQUFLO0FBQ2hCLGdCQUFNLElBQUksTUFBTSxrQkFBa0I0QixFQUFFLENBQUMsSUFBSSxjQUFjO0FBQUEsSUFDNUQ7QUFDRCxXQUFPN0Y7QUFBQSxFQUNYLENBQUcsR0FDTTRCO0FBQ1Q7QUFDQSxTQUFTNi9DLEtBQW1CO0FBQzFCLE1BQUloaUQsSUFBSSxDQUFDMGhCLEVBQVU7QUFDbkIsU0FBQTFoQixFQUFFLEtBQUs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBbTJCLEdBQ24yQkEsRUFBRSxLQUFLLEVBQUU7QUFDbEI7QUFFQSxTQUFTaWlELEdBQWEzbUQsR0FBdUM7QUFDNUQsTUFBSXNELElBQUksQ0FBQTtBQUNSLE1BQUcsQ0FBQ3REO0FBQU0sV0FBT3NEO0FBQ2pCLE1BQUliLElBQUk7QUFDUixVQUFDekMsRUFBSyxNQUFNd21CLEVBQVEsS0FBRyxDQUFBLEdBQUksUUFBUSxTQUFTdmhCLEdBQUc7QUFDOUMsUUFBSTZGLElBQUk2YixHQUFZMWhCLENBQUM7QUFDckIsWUFBTzZGLEVBQUUsQ0FBQyxHQUFDO0FBQUEsTUFDVixLQUFLO0FBQVM7QUFBQSxNQUVkLEtBQUs7QUFBQSxNQUFjLEtBQUs7QUFBQSxNQUFlLEtBQUs7QUFBZ0I7QUFBQSxNQUU1RCxLQUFLO0FBQU0sZUFBT0EsRUFBRSxDQUFDLEdBQU1BLEVBQUUsSUFBR3JJLElBQUlxSSxFQUFFLElBQVFBLEVBQUUsSUFBSXJJLEdBQUdhLEVBQUUsS0FBS3dILENBQUM7QUFBRztBQUFBLElBQ2xFO0FBQUEsRUFDSCxDQUFFLEdBQ014SDtBQUNSO0FBS0EsU0FBU3NqRCxHQUF3QjVtRCxHQUFNO0FBQ3RDLE1BQUk2RyxJQUFNLENBQUE7QUFDVixFQUFBQSxFQUFJLElBQUk3RyxFQUFLLFdBQVcsQ0FBQztBQUN6QixNQUFJeXRCLElBQU8sQ0FBQTtBQUNYLEVBQUFBLEVBQUssSUFBSXp0QixFQUFLLFdBQVcsQ0FBQyxHQUMxQnl0QixFQUFLLElBQUl6dEIsRUFBSyxXQUFXLENBQUMsR0FDMUI2RyxFQUFJLElBQUlpbkIsR0FBWUwsQ0FBSTtBQUN4QixNQUFJbGEsSUFBUXZULEVBQUssV0FBVyxDQUFDO0FBQzdCLFNBQUd1VCxJQUFRLE1BQUsxTSxFQUFJLElBQUksTUFDckIwTSxJQUFRLE1BQUsxTSxFQUFJLElBQUksTUFDakJBO0FBQ1I7QUFHQSxTQUFTZ2dELEdBQWE3bUQsR0FBTW9YLEdBQU1sTyxHQUFNO0FBQ3ZDLE1BQUlyQyxJQUFNLENBQUE7QUFFVixTQUFBNGxCLEdBQWF6c0IsR0FBTSxTQUFtQjBLLEdBQUttSSxHQUFHZ2EsR0FBSTtBQUNqRCxZQUFPQSxHQUFFO0FBQUEsTUFDUixLQUFLO0FBQ0osUUFBQWhtQixFQUFJLEtBQUs2RCxDQUFHO0FBQUc7QUFBQSxNQUVoQjtBQUNDLFlBQUcsQ0FBQW1JLEVBQUU7QUFDc0IsZ0JBQU0sSUFBSSxNQUFNLHlCQUF5QmdhLEVBQUcsU0FBUyxFQUFFLENBQUM7QUFBQSxJQUNwRjtBQUFBLEVBQ0gsQ0FBRSxHQUNNaG1CO0FBQ1I7QUFVQSxTQUFTaWdELEdBQWdCOW1ELEdBQU1tMkIsR0FBSy9lLEdBQWlCc0IsR0FBTztBQUMzRCxNQUFHLENBQUMxWTtBQUFNLFdBQU9BO0FBQ2pCLE1BQUlrSixJQUFPd1AsS0FBUyxJQUVoQnkvQixJQUFPO0FBRVgsRUFBQTFyQixHQUFhenNCLEdBQU0sU0FBcUIwSyxHQUFLbUksR0FBR2dhLEdBQUk7QUFFbkQsWUFBT0EsR0FBRTtBQUFBLE1BQ1IsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsS0FBSztBQUNKO0FBQUEsTUFFRCxLQUFLO0FBQ0osUUFBQXNyQixJQUFPO0FBQU07QUFBQSxNQUNkLEtBQUs7QUFDSixRQUFBQSxJQUFPO0FBQU87QUFBQSxNQUVmO0FBQ0MsWUFBRyxDQUFBdGxDLEVBQUU7QUFDQSxjQUFHLENBQUNzbEMsS0FBUWp2QyxFQUFLO0FBQUssa0JBQU0sSUFBSSxNQUFNLHlCQUF5QjJqQixFQUFHLFNBQVMsRUFBRSxDQUFDO0FBQUE7QUFBQSxJQUNwRjtBQUFBLEVBQ0QsR0FBRTNqQixDQUFJO0FBQ1I7QUFHQSxTQUFTNjlDLEdBQWMvbUQsR0FBTWsyQixHQUFjO0FBQzFDLE1BQUcsQ0FBQ2wyQjtBQUFNLFdBQU87QUFZakIsTUFBSXVpQyxLQUFNdmlDLEVBQUssTUFBTSw4QkFBOEIsS0FBRyxDQUFDLElBQUcsRUFBRSxHQUFHLENBQUM7QUFFaEUsU0FBT2syQixFQUFLLEtBQUssRUFBRXFNLENBQUUsRUFBRTtBQUN4QjtBQUdBLElBQUl5a0IsS0FBVztBQUNmLFNBQVNDLEdBQW1CendCLEdBQWdCMHdCLEdBQVU7QUFZckQsV0FYSUMsSUFBUSxDQUFDLE9BQU8sS0FBSyxHQUVyQkMsSUFBTyxDQUFDLFVBQVNELEVBQU0sQ0FBQyxHQUFFQSxFQUFNLENBQUMsR0FBRUEsRUFBTSxDQUFDLEdBQUVBLEVBQU0sQ0FBQyxHQUFFLEtBQUssRUFBRSxLQUFLLEdBQUcsR0FDcEV6aUQsSUFBSTtBQUFBLElBQ1A4a0IsR0FBVSxPQUFPLE1BQU0sRUFBRSxXQUFXUSxHQUFPLEdBQUcsV0FBV0EsR0FBTyxHQUFHLFdBQVdBLEdBQU8sR0FBRyxZQUFZQSxHQUFPLEdBQUUsQ0FBRSxFQUFFLFFBQVEsT0FBTSxHQUFHO0FBQUEsSUFDbElSLEdBQVUsaUJBQWlCQSxHQUFVLFdBQVcsTUFBTSxFQUFDLFNBQVEsUUFBUSxNQUFPZ04sRUFBRyxDQUFDLEdBQUcsRUFBQyxTQUFRLE9BQU0sQ0FBQztBQUFBLElBQ3JHaE4sR0FBVSxlQUFlO0FBQUEsTUFDeEJBLEdBQVUsWUFBWSxNQUFNLEVBQUMsV0FBVSxRQUFPLENBQUM7QUFBQSxNQUMvQ0EsR0FBVSxVQUFVLE1BQU0sRUFBQyxpQkFBZ0IsS0FBSyxpQkFBZ0IsT0FBTSxDQUFDO0FBQUEsSUFDMUUsRUFBSSxLQUFLLEVBQUUsR0FBRyxFQUFDLElBQUcsZUFBZSxTQUFRLEtBQUssV0FBVTI5QixFQUFNLEtBQUssR0FBRyxHQUFFLE1BQUtDLEVBQUksQ0FBQztBQUFBLEVBQ2xGLEdBQ09KLEtBQVd4d0IsSUFBTTtBQUFNLElBQUF3d0IsTUFBWTtBQUV6QyxTQUFBRSxFQUFTLFFBQVEsU0FBU2ppRCxHQUFHO0FBQzdCLFFBQUk1QixJQUFJdXJCLEdBQVkzcEIsRUFBRSxDQUFDLENBQUMsR0FDcEJvaUQ7QUFBQTtBQUFBLE1BQWtCLEVBQUMsUUFBUyxXQUFXLE1BQU8sV0FBVTtBQUFBO0FBQzVELElBQUdBLEVBQVMsUUFBUSxlQUFZQSxFQUFTLFFBQVE7QUFDakQsUUFBSUMsSUFBV0QsRUFBUyxRQUFRLGFBQWE3OUIsR0FBVSxVQUFVLE1BQU0sRUFBQyxNQUFLLG9CQUFvQixTQUFRLE9BQU0sQ0FBQyxJQUFJLE1BQ2hIKzlCLElBQVUvOUIsR0FBVSxVQUFVODlCLEdBQVVELENBQVEsR0FFaERHLElBQVcsRUFBQyxJQUFHLEtBQUssVUFBVyxJQUFHO0FBQ3RDLE1BQUVSLElBRUZ0aUQsSUFBSUEsRUFBRSxPQUFPO0FBQUEsTUFDYixhQUFhNmtCLEdBQVc7QUFBQSxRQUN2QixJQUFHLGFBQWF5OUI7QUFBQSxRQUNoQixNQUFLO0FBQUEsUUFDTCxPQUFNLDJGQUEyRi9oRCxFQUFFLENBQUMsRUFBRSxTQUFTLHVCQUF1QjtBQUFBLFFBQ3RJLFdBQVU7QUFBQSxRQUNWLGFBQVk7QUFBQSxNQUNaLENBQUEsSUFBSTtBQUFBLE1BQ0pzaUQ7QUFBQSxNQUNBLzlCLEdBQVUsWUFBWSxNQUFNZytCLENBQU87QUFBQSxNQUNuQ2grQixHQUFVLFVBQVUsTUFBTSxFQUFDLGlCQUFnQixPQUFNLENBQUM7QUFBQSxNQUNsRDtBQUFBLE1BQ0E7QUFBQSxNQUNDO0FBQUEsTUFDQTtBQUFBO0FBQUEsTUFFQUYsR0FBUyxZQUFZLENBQUNqbUIsRUFBRSxJQUFFLEdBQUcsR0FBR0EsRUFBRSxJQUFFLEdBQUcsR0FBR0EsRUFBRSxJQUFFLEdBQUcsSUFBSUEsRUFBRSxJQUFFLEdBQUcsRUFBRSxFQUFFLEtBQUssR0FBRyxDQUFDO0FBQUEsTUFDekVpbUIsR0FBUyxjQUFjLE9BQU87QUFBQSxNQUM5QkEsR0FBUyxTQUFTLE9BQU9qbUIsRUFBRSxDQUFDLENBQUM7QUFBQSxNQUM3QmltQixHQUFTLFlBQVksT0FBT2ptQixFQUFFLENBQUMsQ0FBQztBQUFBLE1BQ2hDNEIsRUFBRSxDQUFDLEVBQUUsU0FBUyxLQUFLO0FBQUEsTUFDcEI7QUFBQSxNQUNEO0FBQUEsSUFDRCxDQUFFO0FBQUEsRUFBSSxDQUFBLEdBQ0xQLEVBQUUsS0FBSyxRQUFRLEdBQ1JBLEVBQUUsS0FBSyxFQUFFO0FBQ2pCO0FBQ0EsU0FBUytpRCxHQUFzQm40QixHQUFPNDNCLEdBQWdDUSxHQUFzQkMsR0FBd0I7QUFDbkgsTUFBSWo0QixJQUFRLE1BQU0sUUFBUUosQ0FBSyxHQUMzQjdCO0FBQ0osRUFBQXk1QixFQUFTLFFBQVEsU0FBU3JlLEdBQVM7QUFDbEMsUUFBSTE4QixJQUFJeWlCLEdBQVlpYSxFQUFRLEdBQUc7QUFLL0IsUUFKR25aLEtBQ0VKLEVBQU1uakIsRUFBRSxDQUFDLE1BQUdtakIsRUFBTW5qQixFQUFFLENBQUMsSUFBSSxLQUM3QnNoQixJQUFPNkIsRUFBTW5qQixFQUFFLENBQUMsRUFBRUEsRUFBRSxDQUFDLEtBQ2ZzaEIsSUFBTzZCLEVBQU11WixFQUFRLEdBQUcsR0FDM0IsQ0FBQ3BiLEdBQU07QUFDVixNQUFBQSxJQUFRLEVBQUMsR0FBRSxJQUFHLEdBQ1hpQyxJQUFPSixFQUFNbmpCLEVBQUUsQ0FBQyxFQUFFQSxFQUFFLENBQUMsSUFBSXNoQixJQUN2QjZCLEVBQU11WixFQUFRLEdBQUcsSUFBSXBiO0FBQzFCLFVBQUlFLElBQVFzQixHQUFrQkssRUFBTSxNQUFNLEtBQUcsaUJBQWlCO0FBQzlELE1BQUczQixFQUFNLEVBQUUsSUFBSXhoQixFQUFFLE1BQUd3aEIsRUFBTSxFQUFFLElBQUl4aEIsRUFBRSxJQUMvQndoQixFQUFNLEVBQUUsSUFBSXhoQixFQUFFLE1BQUd3aEIsRUFBTSxFQUFFLElBQUl4aEIsRUFBRSxJQUMvQndoQixFQUFNLEVBQUUsSUFBSXhoQixFQUFFLE1BQUd3aEIsRUFBTSxFQUFFLElBQUl4aEIsRUFBRSxJQUMvQndoQixFQUFNLEVBQUUsSUFBSXhoQixFQUFFLE1BQUd3aEIsRUFBTSxFQUFFLElBQUl4aEIsRUFBRTtBQUNsQyxVQUFJb1UsSUFBVXVPLEdBQWFuQixDQUFLO0FBQ2hDLE1BQUlwTixNQUFZK08sRUFBTSxNQUFNLE1BQUdBLEVBQU0sTUFBTSxJQUFJL087QUFBQSxJQUMvQztBQUVELElBQUtrTixFQUFLLE1BQUdBLEVBQUssSUFBSSxDQUFBO0FBQ3RCLFFBQUkvb0IsSUFBaUIsRUFBQyxHQUFHbWtDLEVBQVEsUUFBUSxHQUFHQSxFQUFRLEdBQUcsR0FBR0EsRUFBUSxHQUFHLEdBQUc2ZSxFQUFRO0FBQ2hGLElBQUc3ZSxFQUFRLE1BQUdua0MsRUFBRSxJQUFJbWtDLEVBQVE7QUFHNUIsYUFBUXBtQyxJQUFJZ3JCLEVBQUssRUFBRSxTQUFTLEdBQUdockIsS0FBSyxHQUFHLEVBQUVBLEdBQUc7QUFDM0MsVUFBRyxDQUFDaWxELEtBQVlqNkIsRUFBSyxFQUFFaHJCLENBQUMsRUFBRTtBQUFHO0FBQzdCLE1BQUdpbEQsS0FBWSxDQUFDajZCLEVBQUssRUFBRWhyQixDQUFDLEVBQUUsS0FBR2dyQixFQUFLLEVBQUUsT0FBT2hyQixHQUFHLENBQUM7QUFBQSxJQUMvQztBQUNELFFBQUdpbEQsS0FBWUM7QUFBUSxXQUFJbGxELElBQUksR0FBR0EsSUFBSWtsRCxFQUFPLFFBQVEsRUFBRWxsRDtBQUN0RCxZQUFHaUMsRUFBRSxLQUFLaWpELEVBQU9sbEQsQ0FBQyxFQUFFLElBQUk7QUFBRSxVQUFBaUMsRUFBRSxJQUFJaWpELEVBQU9sbEQsQ0FBQyxFQUFFLFFBQVFpQyxFQUFFO0FBQUc7QUFBQSxRQUFRO0FBQUE7QUFFaEUsSUFBQStvQixFQUFLLEVBQUUsS0FBSy9vQixDQUFDO0FBQUEsRUFDZixDQUFFO0FBQ0Y7QUFHQSxTQUFTa2pELEdBQW1CNW5ELEdBQWlCa0osR0FBNEI7QUFFeEUsTUFBR2xKLEVBQUssTUFBTSx5QkFBeUI7QUFBRyxXQUFPLENBQUE7QUFDakQsTUFBSTZuRCxJQUE0QixDQUFBLEdBQzVCQyxJQUFvQyxDQUFBLEdBQ3BDQyxJQUFVL25ELEVBQUssTUFBTSxpREFBaUQ7QUFDMUUsRUFBRytuRCxLQUFXQSxFQUFRLENBQUMsS0FBR0EsRUFBUSxDQUFDLEVBQUUsTUFBTSxpQkFBaUIsRUFBRSxRQUFRLFNBQVM5aUQsR0FBRztBQUNqRixRQUFHLEVBQUFBLE1BQU0sTUFBTUEsRUFBRSxLQUFNLE1BQUssS0FDNUI7QUFBQSxVQUFJOUIsSUFBSThCLEVBQUUsTUFBTSw0QkFBNEI7QUFDNUMsTUFBRzlCLEtBQUcwa0QsRUFBUSxLQUFLMWtELEVBQUUsQ0FBQyxDQUFDO0FBQUE7QUFBQSxFQUN6QixDQUFFO0FBQ0QsTUFBSTZrRCxJQUFVaG9ELEVBQUssTUFBTSx5REFBeUQ7QUFDbEYsU0FBR2dvRCxLQUFXQSxFQUFRLENBQUMsS0FBR0EsRUFBUSxDQUFDLEVBQUUsTUFBTSxrQkFBa0IsRUFBRSxRQUFRLFNBQVMvaUQsR0FBRztBQUNsRixRQUFHLEVBQUFBLE1BQU0sTUFBTUEsRUFBRSxLQUFNLE1BQUssS0FDNUI7QUFBQSxVQUFJbWhELElBQUtuaEQsRUFBRSxNQUFNLHlCQUF5QjtBQUMxQyxVQUFJbWhELEdBQ0o7QUFBQSxZQUFJdDdDLElBQUk2YixHQUFZeS9CLEVBQUcsQ0FBQyxDQUFDLEdBQ3JCdmQsSUFBMEIsRUFBRSxRQUFRLzlCLEVBQUUsWUFBWSs4QyxFQUFRLzhDLEVBQUUsUUFBUSxLQUFLLGdCQUFnQixLQUFLQSxFQUFFLEtBQUssTUFBTUEsRUFBRSxLQUFJLEdBQ2pIMmlCLElBQU9tQixHQUFZOWpCLEVBQUUsR0FBRztBQUM1QixZQUFHLEVBQUE1QixFQUFLLGFBQWFBLEVBQUssYUFBYXVrQixFQUFLLElBQzVDO0FBQUEsY0FBSXc2QixJQUFZaGpELEVBQUUsTUFBTSwyQ0FBMkMsR0FDL0RtOEIsSUFBSyxDQUFDLENBQUM2bUIsS0FBYSxDQUFDLENBQUNBLEVBQVUsQ0FBQyxLQUFLM08sR0FBUzJPLEVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBQyxHQUFFLElBQUcsR0FBRSxJQUFHLEdBQUUsR0FBRTtBQUNuRixVQUFBcGYsRUFBUSxJQUFJekgsRUFBRyxHQUNaQSxFQUFHLEtBQUssY0FBV0EsRUFBRyxJQUFJQSxFQUFHLElBQUksS0FDcEN5SCxFQUFRLEtBQUt6SCxFQUFHLEtBQUcsSUFBSSxRQUFRLFNBQVE7QUFBQSxDQUFJLEVBQUUsUUFBUSxPQUFNO0FBQUEsQ0FBSSxHQUM1RGw0QixFQUFLLGFBQVUyL0IsRUFBUSxJQUFJekgsRUFBRyxJQUNqQzBtQixFQUFZLEtBQUtqZixDQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFDMUIsQ0FBRSxHQUNNaWY7QUFDUjtBQUVBLFNBQVNJLEdBQW1CbG9ELEdBQWtCO0FBQzdDLE1BQUkwRSxJQUFJLENBQUMwaEIsSUFBWW9ELEdBQVUsWUFBWSxNQUFNLEVBQUUsT0FBU08sR0FBVyxDQUFDLEVBQUMsQ0FBRSxDQUFDLEdBRXhFbytCLElBQTRCLENBQUE7QUFDaEMsU0FBQXpqRCxFQUFFLEtBQUssV0FBVyxHQUNsQjFFLEVBQUssUUFBUSxTQUFTaUYsR0FBRztBQUFFLElBQUFBLEVBQUUsQ0FBQyxFQUFFLFFBQVEsU0FBU2lGLEdBQUc7QUFBRSxVQUFJL0csSUFBSXVrQixHQUFVeGQsRUFBRSxDQUFDO0FBQzFFLE1BQUdpK0MsRUFBUSxRQUFRaGxELENBQUMsS0FBSyxPQUN4QmdsRCxFQUFRLEtBQUtobEQsQ0FBQyxHQUNkdUIsRUFBRSxLQUFLLGFBQWF2QixJQUFJLFdBQVcsSUFFakMrRyxFQUFFLEtBQUtBLEVBQUUsTUFBTWkrQyxFQUFRLFFBQVEsUUFBUWorQyxFQUFFLEVBQUUsS0FBSyxPQUNsRGkrQyxFQUFRLEtBQUssUUFBUWorQyxFQUFFLEVBQUUsR0FDekJ4RixFQUFFLEtBQUssZ0JBQXFCd0YsRUFBRSxLQUFLLFdBQVc7QUFBQSxJQUVqRCxDQUFFO0FBQUEsRUFBSSxDQUFBLEdBQ0ZpK0MsRUFBUSxVQUFVLE1BQUtBLEVBQVEsS0FBSyxTQUFTLEdBQUd6akQsRUFBRSxLQUFLLDBCQUEwQixJQUNwRkEsRUFBRSxLQUFLLFlBQVksR0FDbkJBLEVBQUUsS0FBSyxlQUFlLEdBQ3RCMUUsRUFBSyxRQUFRLFNBQVNzRCxHQUFHO0FBRXhCLFFBQUk4a0QsSUFBYSxHQUFHQyxJQUFLO0FBT3pCLFFBTkcva0QsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLQSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBS0EsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUk4a0QsSUFBYUQsRUFBUSxRQUFRLFFBQVE3a0QsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFDakZBLEVBQUUsQ0FBQyxFQUFFLFFBQVEsU0FBUyxHQUFHO0FBQzdCLE1BQUcsRUFBRSxNQUFHOGtELElBQWFELEVBQVEsUUFBUXpnQyxHQUFVLEVBQUUsQ0FBQyxDQUFDLElBQ25EMmdDLEVBQUcsS0FBSyxFQUFFLEtBQUcsRUFBRTtBQUFBLElBQ2xCLENBQUcsR0FDRDNqRCxFQUFFLEtBQUssbUJBQW1CcEIsRUFBRSxDQUFDLElBQUksaUJBQWlCOGtELElBQWEsVUFBVSxHQUN0RUMsRUFBRyxVQUFVO0FBQUcsTUFBQTNqRCxFQUFFLEtBQUs0a0IsR0FBUyxLQUFLNUIsR0FBVTJnQyxFQUFHLENBQUMsS0FBRyxFQUFFLENBQUMsQ0FBQztBQUFBLFNBQ3hEO0FBR0osZUFESWhoRCxJQUFJO0FBQUEsUUFBb0JnaEQsRUFBRyxDQUFDLElBQUs7QUFBQSxHQUM3QjVsRCxJQUFJLEdBQUdBLElBQUk0bEQsRUFBRyxRQUFRLEVBQUU1bEQ7QUFBRyxRQUFBNEUsS0FBSztBQUFBLFFBQWlCZ2hELEVBQUc1bEQsQ0FBQyxJQUFJO0FBQUE7QUFDakUsTUFBQWlDLEVBQUUsS0FBSzRrQixHQUFTLEtBQUs1QixHQUFVcmdCLENBQUMsQ0FBQyxDQUFDO0FBQUEsSUFDbEM7QUFDRCxJQUFBM0MsRUFBRSxLQUFLLG1CQUFtQjtBQUFBLEVBQzVCLENBQUUsR0FDREEsRUFBRSxLQUFLLGdCQUFnQixHQUNwQkEsRUFBRSxTQUFPLE1BQUtBLEVBQUVBLEVBQUUsTUFBTSxJQUFLLGVBQWdCQSxFQUFFLENBQUMsSUFBRUEsRUFBRSxDQUFDLEVBQUUsUUFBUSxNQUFLLEdBQUcsSUFDbkVBLEVBQUUsS0FBSyxFQUFFO0FBQ2pCO0FBR0EsU0FBUzRqRCxHQUFnQnRvRCxHQUFpQmtKLEdBQTRCO0FBQ3JFLE1BQUlyQyxJQUFNLENBQUEsR0FDTnN4QyxJQUFPLElBQU90UCxJQUFVLENBQUEsR0FBSTBmLElBQU87QUFDdkMsU0FBQXZvRCxFQUFLLFFBQVF3bUIsSUFBVSxTQUFtQnZoQixHQUFHdUcsR0FBSztBQUNqRCxRQUFJVixJQUFZNmIsR0FBWTFoQixDQUFDO0FBQzdCLFlBQU9paUIsR0FBU3BjLEVBQUUsQ0FBQyxDQUFDLEdBQUM7QUFBQSxNQUNwQixLQUFLO0FBQVM7QUFBQSxNQUdkLEtBQUs7QUFBcUI7QUFBQSxNQUMxQixLQUFLO0FBQXVCO0FBQUEsTUFHNUIsS0FBSztBQUFvQixRQUFBKzlCLElBQVUsRUFBQyxRQUFRLzlCLEVBQUUsVUFBVSxNQUFNQSxFQUFFLElBQUksS0FBS0EsRUFBRSxLQUFLLEdBQUcsRUFBQztBQUFHO0FBQUEsTUFDdkYsS0FBSztBQUFzQixRQUFHKzlCLEVBQVEsS0FBSyxRQUFNaGlDLEVBQUksS0FBS2dpQyxDQUFPO0FBQUc7QUFBQSxNQUVwRSxLQUFLO0FBQUEsTUFBVSxLQUFLO0FBQVMsUUFBQTBmLElBQU8vOEMsSUFBTXZHLEVBQUU7QUFBUTtBQUFBLE1BQ3BELEtBQUs7QUFBVyxRQUFBNGpDLEVBQVEsSUFBSTdvQyxFQUFLLE1BQU11b0QsR0FBTS84QyxDQUFHLEVBQUUsUUFBUSxTQUFTO0FBQUEsQ0FBSSxFQUFFLFFBQVEsT0FBTztBQUFBLENBQUk7QUFBRztBQUFBLE1BRy9GLEtBQUs7QUFBQSxNQUFhLEtBQUs7QUFBYyxRQUFBMnNDLElBQU87QUFBTTtBQUFBLE1BQ2xELEtBQUs7QUFBZSxRQUFBQSxJQUFPO0FBQU87QUFBQSxNQUtsQyxLQUFLO0FBQUEsTUFBVyxLQUFLO0FBQUEsTUFBWSxLQUFLO0FBQUEsTUFBYSxLQUFLO0FBQWE7QUFBQSxNQUVyRSxLQUFLO0FBQVEsUUFBQUEsSUFBSztBQUFNO0FBQUEsTUFDeEIsS0FBSztBQUFVLFFBQUFBLElBQUs7QUFBTztBQUFBLE1BRTNCO0FBQVMsWUFBRyxDQUFDQSxLQUFRanZDLEVBQUs7QUFBSyxnQkFBTSxJQUFJLE1BQU0sa0JBQWtCNEIsRUFBRSxDQUFDLElBQUksdUJBQXVCO0FBQUEsSUFDL0Y7QUFDRCxXQUFPN0Y7QUFBQSxFQUNULENBQUUsR0FDTTRCO0FBQ1I7QUFFQSxTQUFTMmhELEdBQWdCdEIsR0FBVVMsR0FBUXorQyxHQUFNO0FBQ2hELE1BQUl4RSxJQUFJLENBQUMwaEIsSUFBWW9ELEdBQVUsb0JBQW9CLE1BQU0sRUFBRSxPQUFTTSxHQUFNLE1BQU8sQ0FBQSxFQUFFLFFBQVEsU0FBUyxHQUFHLENBQUM7QUFDeEcsU0FBQW85QixFQUFTLFFBQVEsU0FBU3VCLEdBQU07QUFDL0IsUUFBSUMsSUFBUztBQUNiLEtBQUNELEVBQUssQ0FBQyxLQUFLLENBQUEsR0FBSSxRQUFRLFNBQVNwbEQsR0FBR21JLEdBQUs7QUFDeEMsVUFBRyxDQUFDbkksRUFBRSxHQUFHO0FBQUUsZUFBT0EsRUFBRTtBQUFJO0FBQUEsTUFBUztBQUNqQyxNQUFHQSxFQUFFLEtBQUtza0QsRUFBTyxRQUFRdGtELEVBQUUsQ0FBQyxLQUFLLE1BQUlza0QsRUFBTyxLQUFLdGtELEVBQUUsQ0FBQztBQUNwRCxVQUFJc2xELElBQVM7QUFBQSxRQUNaLEtBQUtGLEVBQUssQ0FBQztBQUFBLFFBQ1gsSUFBSSwrQkFBK0IsaUJBQWlCdi9DLEVBQUssUUFBUSxNQUFNLEdBQUcsSUFBSTtBQUFBLE1BQ2xGO0FBQ0csTUFBR3NDLEtBQU8sSUFBR2s5QyxJQUFTQyxFQUFPLEtBQ3hCQSxFQUFPLFdBQVdELEdBQ3ZCcmxELEVBQUUsS0FBS3NsRCxFQUFPLElBQ1h0bEQsRUFBRSxNQUFHc2xELEVBQU8sV0FBVywrQkFBK0IsaUJBQWlCaEIsRUFBTyxRQUFRdGtELEVBQUUsQ0FBQyxHQUFHLE1BQU0sR0FBRyxJQUFJLE1BQzVHcUIsRUFBRSxLQUFLOGtCLEdBQVUsbUJBQW1CRixHQUFTLFFBQVFqbUIsRUFBRSxLQUFHLEVBQUUsR0FBR3NsRCxDQUFNLENBQUM7QUFBQSxJQUN6RSxDQUFHO0FBQUEsRUFDSCxDQUFFLEdBQ0Rqa0QsRUFBRSxLQUFLLHFCQUFxQixHQUNyQkEsRUFBRSxLQUFLLEVBQUU7QUFDakI7QUFHQSxTQUFTa2tELEdBQWlCNW9ELEdBQWlCa0osR0FBTTtBQUNoRCxNQUFJckMsSUFBTSxDQUFBLEdBQ05zeEMsSUFBTztBQUNYLFNBQUFuNEMsRUFBSyxRQUFRd21CLElBQVUsU0FBbUJ2aEIsR0FBRztBQUM1QyxRQUFJNkYsSUFBWTZiLEdBQVkxaEIsQ0FBQztBQUM3QixZQUFPaWlCLEdBQVNwYyxFQUFFLENBQUMsQ0FBQyxHQUFDO0FBQUEsTUFDcEIsS0FBSztBQUFTO0FBQUEsTUFHZCxLQUFLO0FBQWU7QUFBQSxNQUNwQixLQUFLO0FBQWlCO0FBQUEsTUFHdEIsS0FBSztBQUFXLFFBQUFqRSxFQUFJLEtBQUssRUFBQyxNQUFNaUUsRUFBRSxhQUFhLElBQUlBLEVBQUUsR0FBSSxDQUFBO0FBQUc7QUFBQSxNQUM1RCxLQUFLO0FBQWE7QUFBQSxNQUdsQixLQUFLO0FBQUEsTUFBVyxLQUFLO0FBQUEsTUFBWSxLQUFLO0FBQUEsTUFBYSxLQUFLO0FBQWE7QUFBQSxNQUVyRSxLQUFLO0FBQVEsUUFBQXF0QyxJQUFLO0FBQU07QUFBQSxNQUN4QixLQUFLO0FBQVUsUUFBQUEsSUFBSztBQUFPO0FBQUEsTUFFM0I7QUFBUyxZQUFHLENBQUNBLEtBQVFqdkMsRUFBSztBQUFLLGdCQUFNLElBQUksTUFBTSxrQkFBa0I0QixFQUFFLENBQUMsSUFBSSx1QkFBdUI7QUFBQSxJQUMvRjtBQUNELFdBQU83RjtBQUFBLEVBQ1QsQ0FBRSxHQUNNNEI7QUFDUjtBQUNBLFNBQVNnaUQsR0FBaUJsQixHQUFrQjtBQUMzQyxNQUFJampELElBQUksQ0FBQzBoQixJQUFZb0QsR0FBVSxjQUFjLE1BQU07QUFBQSxJQUNsRCxPQUFTTSxHQUFNO0FBQUEsSUFDZixXQUFXQyxHQUFXLENBQUM7QUFBQSxFQUN2QixDQUFBLEVBQUUsUUFBUSxTQUFTLEdBQUcsQ0FBQztBQUN4QixTQUFBNDlCLEVBQU8sUUFBUSxTQUFTbUIsR0FBUXQ5QyxHQUFLO0FBQ3BDLElBQUE5RyxFQUFFLEtBQUs4a0IsR0FBVSxVQUFVLE1BQU07QUFBQSxNQUNoQyxhQUFhcy9CO0FBQUEsTUFDYixJQUFJLCtCQUErQixpQkFBaUJ0OUMsR0FBSyxNQUFNLEdBQUcsSUFBSTtBQUFBLE1BQ3RFLFFBQVFzOUM7QUFBQSxNQUNSLFlBQVk7QUFBQSxJQUNaLENBQUEsQ0FBQztBQUFBLEVBQ0osQ0FBRSxHQUNEcGtELEVBQUUsS0FBSyxlQUFlLEdBQ2ZBLEVBQUUsS0FBSyxFQUFFO0FBQ2pCO0FBRUEsU0FBU3FrRCxHQUFzQi9vRCxHQUFNO0FBQ3BDLE1BQUk2RyxJQUFNLENBQUE7QUFDVixFQUFBQSxFQUFJLFVBQVU3RyxFQUFLLFdBQVcsQ0FBQztBQUMvQixNQUFJZ3BELElBQU16MkIsR0FBbUJ2eUIsQ0FBUTtBQUNyQyxTQUFBNkcsRUFBSSxNQUFNbWlELEVBQUksR0FDZG5pRCxFQUFJLE1BQU1pbkIsR0FBWWs3QixFQUFJLENBQUMsR0FDM0JocEQsRUFBSyxLQUFLLElBQ0g2RztBQUNSO0FBQ0EsU0FBU29pRCxHQUFzQmpwRCxHQUFNMEUsR0FBRztBQUN2QyxTQUFHQSxLQUFLLFNBQU1BLElBQUk2UixFQUFRLEVBQUUsSUFDNUI3UixFQUFFLFlBQVksR0FBRzFFLEVBQUssQ0FBQyxFQUFFLE9BQU8sR0FDaEN3eUIsR0FBb0J4eUIsRUFBSyxDQUFDLEdBQVkwRSxDQUFDLEdBQ3ZDQSxFQUFFLFlBQVksR0FBRyxDQUFDLEdBQ2xCQSxFQUFFLFlBQVksR0FBRyxDQUFDLEdBQ2xCQSxFQUFFLFlBQVksR0FBRyxDQUFDLEdBQ2xCQSxFQUFFLFlBQVksR0FBRyxDQUFDLEdBQ1hBO0FBQ1I7QUFHQSxJQUFJd2tELEtBQXlCNTRCO0FBQzdCLFNBQVM2NEIsR0FBdUJucEQsR0FBTTtBQUFFLFNBQU93d0IsR0FBbUJ4d0IsRUFBSyxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQUk7QUFHdkYsU0FBU29wRCxHQUFtQnBwRCxHQUFNa0osR0FBNEI7QUFDN0QsTUFBSXJDLElBQTRCLENBQUEsR0FDNUJnaEQsSUFBNEIsQ0FBQSxHQUM1QnhrRCxJQUFJLENBQUEsR0FDSjgwQyxJQUFPO0FBQ1gsU0FBQTFyQixHQUFhenNCLEdBQU0sU0FBcUIwSyxHQUFLbUksR0FBR2dhLEdBQUk7QUFDbkQsWUFBT0EsR0FBRTtBQUFBLE1BQ1IsS0FBSztBQUNKLFFBQUFnN0IsRUFBUSxLQUFLbjlDLENBQUc7QUFBRztBQUFBLE1BQ3BCLEtBQUs7QUFDSixRQUFBckgsSUFBSXFIO0FBQUs7QUFBQSxNQUNWLEtBQUs7QUFDSixRQUFBckgsRUFBRSxJQUFJcUgsRUFBSSxHQUFHckgsRUFBRSxJQUFJcUgsRUFBSSxHQUFHckgsRUFBRSxJQUFJcUgsRUFBSTtBQUFHO0FBQUEsTUFDeEMsS0FBSztBQUdKLFlBRkFySCxFQUFFLFNBQVN3a0QsRUFBUXhrRCxFQUFFLE9BQU8sR0FDNUIsT0FBUUEsRUFBVyxTQUNoQjZGLEVBQUssYUFBYTdGLEVBQUUsT0FBTzZGLEVBQUssYUFBYTdGLEVBQUUsSUFBSTtBQUFHO0FBQ3pELFFBQUlBLEVBQUUsTUFBR0EsRUFBRSxJQUFJLEtBQ2YsT0FBT0EsRUFBRSxLQUFLd0QsRUFBSSxLQUFLeEQsQ0FBQztBQUFHO0FBQUEsTUFFNUIsS0FBSztBQUNKO0FBQUEsTUFFRCxLQUFLO0FBQ0osUUFBQTgwQyxJQUFPO0FBQU07QUFBQSxNQUNkLEtBQUs7QUFDSixRQUFBQSxJQUFPO0FBQU87QUFBQSxNQUNmLEtBQUs7QUFBMkI7QUFBQSxNQUNoQyxLQUFLO0FBQXlCO0FBQUEsTUFHOUI7QUFDQyxZQUFHLENBQUF0bEMsRUFBRTtBQUNBLGNBQUcsQ0FBQ3NsQyxLQUFRanZDLEVBQUs7QUFBSyxrQkFBTSxJQUFJLE1BQU0seUJBQXlCMmpCLEVBQUcsU0FBUyxFQUFFLENBQUM7QUFBQTtBQUFBLElBQ3BGO0FBQUEsRUFDSCxDQUFFLEdBQ01obUI7QUFDUjtBQUVBLFNBQVN3aUQsR0FBbUJycEQsR0FBa0I7QUFDN0MsTUFBSXV0QixJQUFLUixNQUNMbzdCLElBQTRCLENBQUE7QUFDaEMsU0FBQTc2QjtBQUFBLElBQWFDO0FBQUEsSUFBSTtBQUFBO0FBQUEsS0FFakJEO0FBQUEsSUFBYUM7QUFBQSxJQUFJO0FBQUE7QUFBQSxLQUNqQnZ0QixFQUFLLFFBQVEsU0FBUzZvQyxHQUFTO0FBQzlCLElBQUFBLEVBQVEsQ0FBQyxFQUFFLFFBQVEsU0FBU3hsQyxHQUFHO0FBQzlCLE1BQUc4a0QsRUFBUSxRQUFROWtELEVBQUUsQ0FBQyxJQUFJLE9BQzFCOGtELEVBQVEsS0FBSzlrRCxFQUFFLEVBQUUsTUFBTSxHQUFFLEVBQUUsQ0FBQyxHQUM1QmlxQixFQUFhQyxHQUFJLEtBQStCNDdCLEdBQXVCOWxELEVBQUUsQ0FBQyxDQUFDO0FBQUEsSUFDOUUsQ0FBRztBQUFBLEVBQ0gsQ0FBRSxHQUNEaXFCO0FBQUEsSUFBYUM7QUFBQSxJQUFJO0FBQUE7QUFBQSxLQUVqQkQ7QUFBQSxJQUFhQztBQUFBLElBQUk7QUFBQTtBQUFBLEtBQ2pCdnRCLEVBQUssUUFBUSxTQUFTNm9DLEdBQVM7QUFDOUIsSUFBQUEsRUFBUSxDQUFDLEVBQUUsUUFBUSxTQUFTeGxDLEdBQUc7QUFDOUIsTUFBQUEsRUFBRSxVQUFVOGtELEVBQVEsUUFBUTlrRCxFQUFFLENBQUM7QUFDL0IsVUFBSXNxQixJQUFRLEVBQUMsR0FBRWlCLEdBQVlpYSxFQUFRLENBQUMsQ0FBQyxHQUFFLEdBQUVqYSxHQUFZaWEsRUFBUSxDQUFDLENBQUMsRUFBQztBQUNoRSxNQUFBdmIsRUFBYUMsR0FBSSxLQUE4QjA3QixHQUFzQixDQUFDdDdCLEdBQU90cUIsQ0FBQyxDQUFDLENBQUMsR0FDN0VBLEVBQUUsS0FBS0EsRUFBRSxFQUFFLFNBQVMsS0FBR2lxQixFQUFhQyxHQUFJLEtBQTZCMkQsR0FBcUI3dEIsQ0FBQyxDQUFDLEdBQy9GaXFCO0FBQUEsUUFBYUM7QUFBQSxRQUFJO0FBQUE7QUFBQSxTQUNqQixPQUFPbHFCLEVBQUU7QUFBQSxJQUNaLENBQUc7QUFBQSxFQUNILENBQUUsR0FDRGlxQjtBQUFBLElBQWFDO0FBQUEsSUFBSTtBQUFBO0FBQUEsS0FFakJEO0FBQUEsSUFBYUM7QUFBQSxJQUFJO0FBQUE7QUFBQSxLQUNWQSxFQUFHO0FBQ1g7QUFDQSxJQUFJKzdCLEtBQVM7QUFDYixTQUFTQyxHQUFhenhDLEdBQUs7QUFDekIsTUFBSTB4QyxJQUFTOTJDLEdBQUksTUFBTSxRQUFRLEVBQUUsTUFBTSxJQUFHLENBQUU7QUFDNUMsU0FBQW9GLEVBQUksVUFBVSxRQUFRLFNBQVM5RSxHQUFHdlEsR0FBRztBQUNuQyxRQUFJLEVBQUF1USxFQUFFLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQ0EsRUFBRSxNQUFNLGtCQUFrQixJQUV0RDtBQUFBLFVBQUl5MkMsSUFBVXoyQyxFQUFFLFFBQVEsV0FBVyxHQUFHLEVBQUUsUUFBUSw2QkFBNkIsRUFBRTtBQUMvRSxNQUFBTixHQUFJLE1BQU0sUUFBUTgyQyxHQUFRQyxHQUFTM3hDLEVBQUksVUFBVXJWLENBQUMsRUFBRSxPQUFPO0FBQUE7QUFBQSxFQUMvRCxDQUFHLEdBQ01pUSxHQUFJLE1BQU04MkMsQ0FBTTtBQUN6QjtBQUNBLFNBQVNFLEdBQWE1eEMsR0FBSzZ4QyxHQUFLO0FBQzlCLEVBQUFBLEVBQUksVUFBVSxRQUFRLFNBQVMzMkMsR0FBR3ZRLEdBQUc7QUFDbkMsUUFBSUEsS0FBSyxHQUVUO0FBQUEsVUFBSWduRCxJQUFVejJDLEVBQUUsUUFBUSxjQUFjLG9CQUFvQjtBQUMxRCxNQUFJeTJDLEVBQVEsTUFBTSxFQUFFLE1BQU0sT0FDeEIvMkMsR0FBSSxNQUFNLFFBQVFvRixHQUFLMnhDLEdBQVNFLEVBQUksVUFBVWxuRCxDQUFDLEVBQUUsT0FBTztBQUFBO0FBQUEsRUFDOUQsQ0FBRztBQUNIO0FBQ0EsSUFBSW1uRCxLQUFVLENBQUMsUUFBUSxRQUFRLFFBQVEsU0FBUyxLQUFLO0FBRXJELFNBQVNDLEtBQXVGO0FBQUUsU0FBTyxFQUFDLFNBQVEsU0FBUTtBQUFJO0FBQzlILFNBQVNDLEtBQXVGO0FBQUUsU0FBTyxFQUFDLFNBQVEsU0FBUTtBQUFJO0FBQzlILFNBQVNDLEtBQXVGO0FBQUUsU0FBTyxFQUFDLFNBQVEsUUFBTztBQUFJO0FBQzdILFNBQVNDLEtBQXVGO0FBQUUsU0FBTyxFQUFDLFNBQVEsUUFBTztBQUFJO0FBRTdILElBQUl4WixLQUF5QiwyQkFBVTtBQUN0QyxNQUFJeVosSUFBVSxpRkFDVkMsSUFBbUIsRUFBQyxHQUFFLEdBQUUsR0FBRSxFQUFDO0FBQy9CLFdBQVNDLEVBQU90K0MsR0FBR0MsR0FBR0MsR0FBR0MsR0FBSTtBQUM1QixRQUFJbytDLElBQU8sSUFBT0MsSUFBTztBQUV6QixJQUFHdCtDLEVBQUcsVUFBVSxJQUFHcytDLElBQU8sS0FDbEJ0K0MsRUFBRyxPQUFPLENBQUMsS0FBSyxRQUFPcytDLElBQU8sSUFBTXQrQyxJQUFLQSxFQUFHLE1BQU0sR0FBRyxFQUFFLElBRTVEQyxFQUFHLFVBQVUsSUFBR28rQyxJQUFPLEtBQ2xCcCtDLEVBQUcsT0FBTyxDQUFDLEtBQUssUUFBT28rQyxJQUFPLElBQU1wK0MsSUFBS0EsRUFBRyxNQUFNLEdBQUcsRUFBRTtBQUUvRCxRQUFJNkcsSUFBSTlHLEVBQUcsU0FBTyxJQUFFLFNBQVNBLEdBQUcsRUFBRSxJQUFFLElBQUUsR0FBR3dHLElBQUl2RyxFQUFHLFNBQU8sSUFBRSxTQUFTQSxHQUFHLEVBQUUsSUFBRSxJQUFFO0FBRTNFLFdBQUdvK0MsSUFBTTczQyxLQUFLMjNDLEVBQU8sSUFBUSxFQUFFMzNDLEdBQzVCODNDLElBQU14M0MsS0FBS3EzQyxFQUFPLElBQVEsRUFBRXIzQyxHQUN4Qi9HLEtBQU1zK0MsSUFBTyxLQUFLLE9BQU9sOEIsR0FBVzNiLENBQUMsS0FBSzgzQyxJQUFPLEtBQUssT0FBT2w4QixHQUFXdGIsQ0FBQztBQUFBLEVBQ2hGO0FBQ0QsU0FBTyxTQUFrQnkzQyxHQUFpQjk5QyxHQUEwQjtBQUNuRSxXQUFBMDlDLElBQVMxOUMsR0FDRjg5QyxFQUFLLFFBQVFMLEdBQVNFLENBQU07QUFBQSxFQUNyQztBQUNBLEtBRUlJLEtBQVksa0xBQ1pyWixLQUF5QiwyQkFBVTtBQUN0QyxTQUFPLFNBQWtCb1osR0FBaUI5OUMsR0FBc0I7QUFDL0QsV0FBTzg5QyxFQUFLLFFBQVFDLElBQVcsU0FBU0MsR0FBSTErQyxHQUFJQyxHQUFJQyxHQUFJeStDLEdBQUlDLEdBQUk7QUFDL0QsVUFBSXJuRCxJQUFJa3JCLEdBQVd2aUIsQ0FBRSxLQUFLRCxJQUFLLElBQUlTLEVBQUssSUFDcENMLElBQUlpaUIsR0FBV3M4QixDQUFFLEtBQUtELElBQUssSUFBSWorQyxFQUFLLElBQ3BDcUcsSUFBSzFHLEtBQUssSUFBSSxLQUFNcytDLElBQXNCdCtDLElBQUUsSUFBbkIsTUFBTUEsSUFBSSxLQUNuQ29HLElBQUtsUCxLQUFLLElBQUksS0FBTTBJLElBQXNCMUksSUFBRSxJQUFuQixNQUFNQSxJQUFJO0FBQ3ZDLGFBQU95SSxJQUFLLE1BQU0rRyxJQUFJLE1BQU1OO0FBQUEsSUFDL0IsQ0FBRztBQUFBLEVBQ0g7QUFDQTtBQUdBLFNBQVNtK0IsR0FBa0JqdEMsR0FBY204QyxHQUEyQjtBQUNuRSxTQUFPbjhDLEVBQUUsUUFBUThtRCxJQUFXLFNBQVNDLEdBQUkxK0MsR0FBSUMsR0FBSUMsR0FBSXkrQyxHQUFJQyxHQUFJO0FBQzVELFdBQU81K0MsS0FBSUMsS0FBSSxNQUFNQSxJQUFHQyxJQUFLa2lCLEdBQVdLLEdBQVd2aUIsQ0FBRSxJQUFFNHpDLEVBQU0sQ0FBQyxNQUFJNkssS0FBSSxNQUFNQSxJQUFHQyxJQUFLdjhCLEdBQVdDLEdBQVdzOEIsQ0FBRSxJQUFJOUssRUFBTSxDQUFDO0FBQUEsRUFDekgsQ0FBRTtBQUNGO0FBRUEsU0FBUytLLEdBQW1CbG5ELEdBQWNrcUIsR0FBa0JGLEdBQTRCO0FBQ3ZGLE1BQUl0aEIsSUFBSTBpQixHQUFhbEIsQ0FBSyxHQUFHdm5CLElBQUkrRixFQUFFLEdBQUc5SSxJQUFJdXJCLEdBQVluQixDQUFJLEdBQ3REbXlCLElBQVEsRUFBQyxHQUFFdjhDLEVBQUUsSUFBSStDLEVBQUUsR0FBRyxHQUFFL0MsRUFBRSxJQUFJK0MsRUFBRSxFQUFDO0FBQ3JDLFNBQU9zcUMsR0FBa0JqdEMsR0FBR204QyxDQUFLO0FBQ2xDO0FBR0EsU0FBUzlMLEdBQVVyd0MsR0FBMEI7QUFDNUMsU0FBR0EsRUFBRSxVQUFVO0FBRWhCO0FBRUEsU0FBU21uRCxHQUFNbm5ELEdBQXlCO0FBQ3ZDLFNBQU9BLEVBQUUsUUFBUSxZQUFXLEVBQUU7QUFDL0I7QUFDQSxTQUFTb25ELEdBQVcxb0QsR0FBTTtBQUFFLEVBQUFBLEVBQUssS0FBRztBQUFZO0FBR2hELFNBQVMyb0QsR0FBYzNvRCxHQUFNcXFCLEdBQVE7QUFDcEMsTUFBSW5wQixJQUFJbEIsRUFBSyxXQUFXcXFCLEtBQVUsSUFBSSxJQUFJLENBQUM7QUFDM0MsU0FBTyxDQUFDbnBCLElBQUksT0FBU0EsS0FBSyxLQUFNLEdBQUlBLEtBQUssS0FBTSxDQUFDO0FBQ2pEO0FBR0EsU0FBUzBuRCxHQUFlNW9ELEdBQU1xcUIsR0FBUXRqQixHQUFNO0FBQzNDLE1BQUlnQixJQUFJO0FBQ1IsTUFBR2hCLEdBQU07QUFDUixRQUFHQSxFQUFLLFFBQVEsS0FBS0EsRUFBSyxRQUFRO0FBQUcsYUFBTzhoRCxHQUFxQjdvRCxDQUFrQjtBQUM5RSxJQUFHK0csRUFBSyxRQUFRLE9BQUlnQixJQUFJO0FBQUEsRUFDN0I7QUFDRCxNQUFJaUMsSUFBRWhLLEVBQUssV0FBVytILENBQUMsR0FBRzJJLElBQUUxUSxFQUFLLFdBQVcrSCxDQUFDLEdBQ3pDN0csSUFBRXluRCxHQUFjM29ELEdBQU0sQ0FBQyxHQUN2Qm9RLElBQUV1NEMsR0FBYzNvRCxHQUFNLENBQUM7QUFDM0IsU0FBTyxFQUFFLEdBQUUsRUFBQyxHQUFFZ0ssR0FBRyxHQUFFOUksRUFBRSxDQUFDLEdBQUcsTUFBS0EsRUFBRSxDQUFDLEdBQUcsTUFBS0EsRUFBRSxDQUFDLEVBQUMsR0FBRyxHQUFFLEVBQUMsR0FBRXdQLEdBQUcsR0FBRU4sRUFBRSxDQUFDLEdBQUcsTUFBS0EsRUFBRSxDQUFDLEdBQUcsTUFBS0EsRUFBRSxDQUFDLEVBQUMsRUFBQztBQUN0RjtBQUVBLFNBQVN5NEMsR0FBcUI3b0QsR0FBMEI7QUFDdkQsTUFBSWdLLElBQUUyK0MsR0FBYzNvRCxHQUFNLENBQUMsR0FBRzBRLElBQUVpNEMsR0FBYzNvRCxHQUFNLENBQUMsR0FDakRrQixJQUFFbEIsRUFBSyxXQUFXLENBQUMsR0FDbkJvUSxJQUFFcFEsRUFBSyxXQUFXLENBQUM7QUFDdkIsU0FBTyxFQUFFLEdBQUUsRUFBQyxHQUFFZ0ssRUFBRSxDQUFDLEdBQUcsR0FBRTlJLEdBQUcsTUFBSzhJLEVBQUUsQ0FBQyxHQUFHLE1BQUtBLEVBQUUsQ0FBQyxFQUFDLEdBQUcsR0FBRSxFQUFDLEdBQUUwRyxFQUFFLENBQUMsR0FBRyxHQUFFTixHQUFHLE1BQUtNLEVBQUUsQ0FBQyxHQUFHLE1BQUtBLEVBQUUsQ0FBQyxFQUFDLEVBQUM7QUFDdEY7QUFHQSxTQUFTbzRDLEdBQWtCOW9ELEdBQU1xcUIsR0FBUXRqQixHQUFNO0FBQzlDLE1BQUdBLEVBQUssT0FBTztBQUFHLFdBQU84aEQsR0FBcUI3b0QsQ0FBa0I7QUFDaEUsTUFBSWdLLElBQUVoSyxFQUFLLFdBQVcrRyxFQUFLLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRzJKLElBQUUxUSxFQUFLLFdBQVcrRyxFQUFLLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FDckY3RixJQUFFeW5ELEdBQWMzb0QsR0FBTSxDQUFDLEdBQ3ZCb1EsSUFBRXU0QyxHQUFjM29ELEdBQU0sQ0FBQztBQUMzQixTQUFPLEVBQUUsR0FBRSxFQUFDLEdBQUVnSyxHQUFHLEdBQUU5SSxFQUFFLENBQUMsR0FBRyxNQUFLQSxFQUFFLENBQUMsR0FBRyxNQUFLQSxFQUFFLENBQUMsRUFBQyxHQUFHLEdBQUUsRUFBQyxHQUFFd1AsR0FBRyxHQUFFTixFQUFFLENBQUMsR0FBRyxNQUFLQSxFQUFFLENBQUMsR0FBRyxNQUFLQSxFQUFFLENBQUMsRUFBQyxFQUFDO0FBQ3RGO0FBR0EsU0FBUzI0QyxHQUFjL29ELEdBQU1xcUIsR0FBUXRqQixHQUFNO0FBQzFDLE1BQUdBLEtBQVFBLEVBQUssUUFBUSxLQUFLQSxFQUFLLFFBQVE7QUFBRyxXQUFPaWlELEdBQW9CaHBELENBQWtCO0FBQzFGLE1BQUlnSyxJQUFJaEssRUFBSyxXQUFXK0csS0FBUUEsRUFBSyxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQ25EN0YsSUFBSXluRCxHQUFjM29ELEdBQU0sQ0FBQztBQUM3QixTQUFPLEVBQUMsR0FBRWdLLEdBQUcsR0FBRTlJLEVBQUUsQ0FBQyxHQUFHLE1BQUtBLEVBQUUsQ0FBQyxHQUFHLE1BQUtBLEVBQUUsQ0FBQyxFQUFDO0FBQzFDO0FBQ0EsU0FBUzhuRCxHQUFvQmhwRCxHQUEwQjtBQUN0RCxNQUFJZ0ssSUFBSTIrQyxHQUFjM29ELEdBQU0sQ0FBQyxHQUN6QmtCLElBQUlsQixFQUFLLFdBQVcsQ0FBQztBQUN6QixTQUFPLEVBQUMsR0FBRWdLLEVBQUUsQ0FBQyxHQUFHLEdBQUU5SSxHQUFHLE1BQUs4SSxFQUFFLENBQUMsR0FBRyxNQUFLQSxFQUFFLENBQUMsRUFBQztBQUMxQztBQUdBLFNBQVNpL0MsR0FBaUJqcEQsR0FBMEI7QUFDbkQsTUFBSWdLLElBQUloSyxFQUFLLFdBQVcsQ0FBQyxHQUNyQmtCLElBQUlsQixFQUFLLFdBQVcsQ0FBQztBQUN6QixTQUFPLEVBQUMsR0FBRWdLLEdBQUcsR0FBRTlJLElBQUksS0FBTSxTQUFRLENBQUMsRUFBRUEsSUFBSSxRQUFTLE1BQUtBLEtBQUcsSUFBSSxNQUFLQSxLQUFHO0FBQ3RFO0FBR0EsU0FBU2dvRCxHQUFpQmxwRCxHQUFNcXFCLEdBQVF0akIsR0FBTTtBQUM3QyxNQUFJMmtCLElBQU8za0IsS0FBUUEsRUFBSyxPQUFPQSxFQUFLLE9BQU87QUFDM0MsTUFBRzJrQixLQUFRLEtBQUtBLEtBQVE7QUFBRyxXQUFPeTlCLEdBQXVCbnBELENBQWtCO0FBQzNFLE1BQUlnSyxJQUFJaEssRUFBSyxXQUFXMHJCLEtBQVEsS0FBSyxJQUFJLENBQUMsR0FDdEMwOUIsSUFBS3BwRCxFQUFLLFdBQVcsQ0FBQyxHQUN0QmlvRCxLQUFRbUIsSUFBSyxVQUFXLElBQUlsQixLQUFRa0IsSUFBSyxVQUFXO0FBRXhELE1BREFBLEtBQU0sT0FDSGxCLEtBQVE7QUFBRyxXQUFNbCtDLElBQUk7QUFBUyxNQUFBQSxLQUFLO0FBQ3RDLE1BQUdpK0MsS0FBUTtBQUFHLFdBQU1tQixJQUFLO0FBQVEsTUFBQUEsSUFBS0EsSUFBSztBQUMzQyxTQUFPLEVBQUMsR0FBRXAvQyxHQUFFLEdBQUVvL0MsR0FBRyxNQUFLbkIsR0FBSyxNQUFLQyxFQUFJO0FBQ3JDO0FBQ0EsU0FBU2lCLEdBQXVCbnBELEdBQWlDO0FBQ2hFLE1BQUlxcEQsSUFBS3JwRCxFQUFLLFdBQVcsQ0FBQyxHQUN0QmtCLElBQUlsQixFQUFLLFdBQVcsQ0FBQyxHQUNyQmtvRCxLQUFRbUIsSUFBSyxVQUFXLElBQUlwQixLQUFRb0IsSUFBSyxVQUFXO0FBQ3hELFNBQUFBLEtBQU0sT0FDSG5CLEtBQVEsS0FBS21CLEtBQU0sU0FBUUEsSUFBS0EsSUFBSyxRQUNyQ3BCLEtBQVEsS0FBSy9tRCxLQUFLLFFBQU1BLElBQUlBLElBQUksTUFDNUIsRUFBQyxHQUFFbW9ELEdBQUcsR0FBRW5vRCxHQUFFLE1BQUsrbUQsR0FBSyxNQUFLQyxFQUFJO0FBQ3JDO0FBR0EsU0FBU29CLEdBQWN0cEQsR0FBTXFxQixHQUFRdGpCLEdBQU07QUFDMUMsTUFBSS9ILEtBQVFnQixFQUFLQSxFQUFLLEdBQUcsSUFBSSxPQUFTLEdBQ2xDdXBELElBQU9YLEdBQWU1b0QsR0FBTStHLEVBQUssUUFBUSxLQUFLQSxFQUFLLFFBQVEsSUFBSSxJQUFJLEdBQUdBLENBQUk7QUFDOUUsU0FBTyxDQUFDL0gsR0FBTXVxRCxDQUFJO0FBQ25CO0FBR0EsU0FBU0MsR0FBZ0J4cEQsR0FBTXFxQixHQUFRdGpCLEdBQU07QUFDNUMsTUFBSS9ILEtBQVFnQixFQUFLQSxFQUFLLEdBQUcsSUFBSSxPQUFTLEdBQ2xDeXBELElBQU96cEQsRUFBSyxXQUFXLEdBQUcsR0FBRyxHQUM3QitILElBQUk7QUFDUixNQUFHaEI7QUFBTSxZQUFPQSxFQUFLLE1BQUk7QUFBQSxNQUN4QixLQUFLO0FBQUcsUUFBQS9HLEVBQUssS0FBSyxJQUFJK0gsSUFBSTtBQUFHO0FBQUEsTUFDN0IsS0FBSztBQUFJLFFBQUFBLElBQUk7QUFBSTtBQUFBLElBQ2pCO0FBQ0QsTUFBSXdoRCxJQUFPWCxHQUFlNW9ELEdBQU0rSCxHQUFHaEIsQ0FBSTtBQUN2QyxTQUFPLENBQUMvSCxHQUFNeXFELEdBQU1GLENBQUk7QUFDekI7QUFHQSxTQUFTRyxHQUFpQjFwRCxHQUFNcXFCLEdBQVF0akIsR0FBTTtBQUM3QyxNQUFJL0gsS0FBUWdCLEVBQUtBLEVBQUssR0FBRyxJQUFJLE9BQVM7QUFDdEMsU0FBQUEsRUFBSyxLQUFLK0csS0FBU0EsRUFBSyxPQUFPLElBQUssS0FBTUEsRUFBSyxPQUFPLElBQUksSUFBSSxHQUN2RCxDQUFDL0gsQ0FBSTtBQUNiO0FBRUEsU0FBUzJxRCxHQUFtQjNwRCxHQUFNcXFCLEdBQVF0akIsR0FBTTtBQUMvQyxNQUFJL0gsS0FBUWdCLEVBQUtBLEVBQUssR0FBRyxJQUFJLE9BQVMsR0FDbEN5cEQsSUFBT3pwRCxFQUFLLFdBQVcsQ0FBQyxHQUN4QitILElBQUk7QUFDUixNQUFHaEI7QUFBTSxZQUFPQSxFQUFLLE1BQUk7QUFBQSxNQUN4QixLQUFLO0FBQUcsUUFBQS9HLEVBQUssS0FBSyxJQUFJK0gsSUFBSTtBQUFHO0FBQUEsTUFDN0IsS0FBSztBQUFJLFFBQUFBLElBQUk7QUFBSTtBQUFBLElBQ2pCO0FBQ0QsU0FBQS9ILEVBQUssS0FBSytILEdBQ0gsQ0FBQy9JLEdBQU15cUQsQ0FBSTtBQUNuQjtBQUdBLFNBQVNHLEdBQWU1cEQsR0FBTXFxQixHQUFRdGpCLEdBQU07QUFDM0MsTUFBSS9ILEtBQVFnQixFQUFLQSxFQUFLLEdBQUcsSUFBSSxPQUFTLEdBQ2xDdXBELElBQU9ULEdBQWtCOW9ELEdBQU1xcUIsSUFBUyxHQUFHdGpCLENBQUk7QUFDbkQsU0FBTyxDQUFDL0gsR0FBTXVxRCxDQUFJO0FBQ25CO0FBR0EsU0FBU00sR0FBZTdwRCxHQUFNcXFCLEdBQVF0akIsR0FBTTtBQUMzQyxNQUFJL0gsS0FBUWdCLEVBQUtBLEVBQUssR0FBRyxJQUFJLE9BQVM7QUFDdEMsU0FBQUEsRUFBSyxLQUFLK0csRUFBSyxRQUFRLElBQUksSUFBSUEsRUFBSyxRQUFRLEtBQUssS0FBSyxHQUMvQyxDQUFDL0gsQ0FBSTtBQUNiO0FBR0EsU0FBUzhxRCxHQUFvQjlwRCxHQUFNO0FBQ2xDLE1BQUkrcEQsSUFBVS9wRCxFQUFLQSxFQUFLLElBQUUsQ0FBQyxJQUFJLEdBQzNCZ3FELElBQVk7QUFDaEIsU0FBQWhxRCxFQUFLLEtBQUssR0FDSCxDQUFDK3BELEdBQVNDLENBQVM7QUFDM0I7QUFHQSxTQUFTQyxHQUFvQmpxRCxHQUFNcXFCLEdBQVF0akIsR0FBd0I7QUFDbEUsRUFBQS9HLEVBQUssS0FBSTtBQUlULFdBSElzVixJQUFTdFYsRUFBSyxXQUFXK0csS0FBUUEsRUFBSyxRQUFRLElBQUksSUFBSSxDQUFDLEdBQ3ZEeEUsSUFBc0IsQ0FBQSxHQUVsQixJQUFJLEdBQUcsS0FBSytTLEdBQVEsRUFBRTtBQUFHLElBQUEvUyxFQUFFLEtBQUt2QyxFQUFLLFdBQVcrRyxLQUFRQSxFQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQztBQUN2RixTQUFPeEU7QUFDUjtBQUdBLFNBQVMybkQsR0FBa0JscUQsR0FBTXFxQixHQUFRdGpCLEdBQU07QUFDOUMsTUFBSW9qRCxJQUFXbnFELEVBQUtBLEVBQUssSUFBRSxDQUFDLElBQUksTUFBUSxJQUFJO0FBQzVDLFNBQUFBLEVBQUssS0FBSyxHQUNILENBQUNtcUQsR0FBU25xRCxFQUFLLFdBQVcrRyxLQUFRQSxFQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQztBQUNqRTtBQUdBLFNBQVNxakQsR0FBZ0JwcUQsR0FBTXFxQixHQUFRdGpCLEdBQU07QUFDNUMsTUFBSXNqRCxJQUFTcnFELEVBQUtBLEVBQUssSUFBRSxDQUFDLElBQUksTUFBUSxJQUFJO0FBQzFDLFNBQUFBLEVBQUssS0FBSyxHQUNILENBQUNxcUQsR0FBT3JxRCxFQUFLLFdBQVcrRyxLQUFRQSxFQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQztBQUMvRDtBQUdBLFNBQVN1akQsR0FBcUJ0cUQsR0FBTTtBQUNuQyxNQUFJcXFELElBQVNycUQsRUFBS0EsRUFBSyxJQUFFLENBQUMsSUFBSSxNQUFRLElBQUk7QUFDMUMsU0FBQUEsRUFBSyxLQUFLLEdBQ0gsQ0FBQ3FxRCxHQUFPcnFELEVBQUssV0FBVyxDQUFDLENBQUM7QUFDbEM7QUFHQSxTQUFTdXFELEdBQWtCdnFELEdBQU1xcUIsR0FBUXRqQixHQUFNO0FBQzlDLE1BQUlnakQsSUFBVy9wRCxFQUFLQSxFQUFLLElBQUUsQ0FBQyxJQUFJLE1BQVEsSUFBSTtBQUM1QyxTQUFBQSxFQUFLLEtBQUsrRyxLQUFRQSxFQUFLLFFBQVEsSUFBSSxJQUFJLEdBQ2hDLENBQUNnakQsQ0FBTztBQUNoQjtBQUdBLFNBQVNTLEdBQXVCeHFELEdBQW9CO0FBQ25ELE1BQUloQixJQUFPZ0IsRUFBSyxXQUFXLENBQUMsR0FBR2c4QixJQUFNaDhCLEVBQUssV0FBVyxDQUFDO0FBQ3RELFNBQU8sQ0FBQ2hCLEdBQU1nOUIsQ0FBRztBQUNsQjtBQUdBLFNBQVN5dUIsR0FBbUJ6cUQsR0FBTTtBQUNqQyxTQUFBQSxFQUFLLFdBQVcsQ0FBQyxHQUNWd3FELEdBQXVCeHFELENBQU87QUFDdEM7QUFHQSxTQUFTMHFELEdBQXVCMXFELEdBQU07QUFDckMsU0FBQUEsRUFBSyxXQUFXLENBQUMsR0FDVndxRCxHQUF1QnhxRCxDQUFPO0FBQ3RDO0FBR0EsU0FBUzJxRCxHQUFhM3FELEdBQU1xcUIsR0FBUXRqQixHQUFNO0FBRXpDLE1BQUkvSCxLQUFRZ0IsRUFBS0EsRUFBSyxDQUFDLElBQUksT0FBTztBQUNsQyxFQUFBQSxFQUFLLEtBQUs7QUFDVixNQUFJNHBCLElBQU1tL0IsR0FBYy9vRCxHQUFNLEdBQUcrRyxDQUFJO0FBQ3JDLFNBQU8sQ0FBQy9ILEdBQU00cUIsQ0FBRztBQUNsQjtBQUdBLFNBQVNnaEMsR0FBYzVxRCxHQUFNcXFCLEdBQVF0akIsR0FBTTtBQUMxQyxNQUFJL0gsS0FBUWdCLEVBQUtBLEVBQUssQ0FBQyxJQUFJLE9BQU87QUFDbEMsRUFBQUEsRUFBSyxLQUFLO0FBQ1YsTUFBSTRwQixJQUFNcy9CLEdBQWlCbHBELEdBQU0sR0FBRytHLENBQUk7QUFDeEMsU0FBTyxDQUFDL0gsR0FBTTRxQixDQUFHO0FBQ2xCO0FBR0EsU0FBU2loQyxHQUFlN3FELEdBQU1xcUIsR0FBUXRqQixHQUFNO0FBQzNDLE1BQUkvSCxLQUFRZ0IsRUFBS0EsRUFBSyxDQUFDLElBQUksT0FBTztBQUNsQyxFQUFBQSxFQUFLLEtBQUs7QUFDVixNQUFJeXBELElBQU96cEQsRUFBSyxXQUFXLENBQUM7QUFDNUIsRUFBRytHLEtBQVFBLEVBQUssUUFBUSxNQUFHL0csRUFBSyxLQUFLO0FBQ3JDLE1BQUk0cEIsSUFBTW0vQixHQUFjL29ELEdBQU0sR0FBRytHLENBQUk7QUFDckMsU0FBTyxDQUFDL0gsR0FBTXlxRCxHQUFNNy9CLENBQUc7QUFDeEI7QUFJQSxTQUFTa2hDLEdBQWM5cUQsR0FBTXFxQixHQUFRdGpCLEdBQU07QUFFMUMsTUFBSS9ILEtBQVFnQixFQUFLQSxFQUFLLENBQUMsSUFBSSxPQUFPO0FBQ2xDLEVBQUFBLEVBQUssS0FBSztBQUNWLE1BQUkrcUQsSUFBUS9xRCxFQUFLLFdBQVcrRyxLQUFRQSxFQUFLLFFBQVEsSUFBSSxJQUFJLENBQUM7QUFDMUQsU0FBTyxDQUFDaWtELEdBQVNELENBQUssR0FBR0UsR0FBS0YsQ0FBSyxHQUFHL3JELENBQUk7QUFDM0M7QUFFQSxTQUFTa3NELEdBQWlCbHJELEdBQU1xcUIsR0FBUXRqQixHQUFNO0FBQzdDLE1BQUkvSCxJQUFPZ0IsRUFBS0EsRUFBSyxHQUFHLEdBQ3BCbXJELElBQVVuckQsRUFBSyxXQUFXLENBQUMsR0FBR29yRCxJQUFNcmtELEtBQVFBLEVBQUssUUFBUSxJQUFJLENBQUUvSCxLQUFRLEtBQU8sS0FBSyxHQUFJZ0IsRUFBSyxXQUFXLENBQUMsQ0FBQyxJQUFHcXJELEdBQVNyckQsQ0FBSTtBQUM3SCxTQUFPLENBQUNtckQsSUFBVUMsRUFBSSxDQUFDLE1BQU0sSUFBSUgsS0FBT0ssSUFBT0YsRUFBSSxDQUFDLENBQUMsQ0FBQztBQUN2RDtBQUVBLFNBQVNDLEdBQVNyckQsR0FBTTtBQUN2QixTQUFPLENBQUNBLEVBQUtBLEVBQUssSUFBRSxDQUFDLEtBQUcsR0FBR0EsRUFBSyxXQUFXLENBQUMsSUFBSSxLQUFNO0FBQ3ZEO0FBR0EsU0FBU3VyRCxHQUFpQnZyRCxHQUFNcXFCLEdBQVF0akIsR0FBTTtBQUM3QyxFQUFBL0csRUFBSyxLQUFLK0csS0FBUUEsRUFBSyxRQUFRLElBQUksSUFBSTtBQUN4QztBQUdBLFNBQVN5a0QsR0FBYXhyRCxHQUFNcXFCLEdBQVF0akIsR0FBTTtBQUV6QyxNQURBL0csRUFBSyxLQUNGK0csS0FBUUEsRUFBSyxRQUFRO0FBQUksV0FBTyxDQUFDL0csRUFBSyxXQUFXLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDOUQsTUFBSXZDLElBQU11QyxFQUFLLFdBQVcsQ0FBQyxHQUN2QnVzQixJQUFNdnNCLEVBQUssV0FBVytHLEtBQVFBLEVBQUssUUFBUSxJQUFJLElBQUksQ0FBQztBQUN4RCxTQUFPLENBQUN0SixHQUFLOHVCLENBQUc7QUFDakI7QUFHQSxTQUFTay9CLEdBQWF6ckQsR0FBTTtBQUFFLFNBQUFBLEVBQUssS0FBWWl0QixHQUFLanRCLEVBQUssV0FBVyxDQUFDLENBQUM7QUFBSTtBQUcxRSxTQUFTMHJELEdBQWExckQsR0FBTTtBQUFFLFNBQUFBLEVBQUssS0FBWUEsRUFBSyxXQUFXLENBQUM7QUFBSTtBQUdwRSxTQUFTMnJELEdBQWMzckQsR0FBTTtBQUFFLFNBQUFBLEVBQUssS0FBWUEsRUFBSyxXQUFXLENBQUMsTUFBSTtBQUFFO0FBR3ZFLFNBQVM0ckQsR0FBYTVyRCxHQUFNO0FBQUUsU0FBQUEsRUFBSyxLQUFZc3dCLEdBQVd0d0IsQ0FBTztBQUFJO0FBR3JFLFNBQVM2ckQsR0FBYTdyRCxHQUFNcXFCLEdBQVF0akIsR0FBTTtBQUFFLFNBQUEvRyxFQUFLLEtBQVkrN0IsR0FBMkIvN0IsR0FBTXFxQixJQUFPLEdBQUd0akIsQ0FBSTtBQUFJO0FBSWhILFNBQVMra0QsR0FBWTlyRCxHQUFNMHJCLEdBQWlCO0FBQzNDLE1BQUluakIsSUFBTSxDQUFDdkksRUFBSyxXQUFXLENBQUMsQ0FBQztBQUM3QixNQUFHMHJCLEtBQVE7QUFBSSxZQUFPbmpCLEVBQUksQ0FBQyxHQUFDO0FBQUEsTUFDM0IsS0FBSztBQUFNLFFBQUFBLEVBQUksQ0FBQyxJQUFJO0FBQU07QUFBQSxNQUMxQixLQUFLO0FBQU0sUUFBQUEsRUFBSSxDQUFDLElBQUk7QUFBTTtBQUFBLE1BQzFCLEtBQUs7QUFBTSxRQUFBQSxFQUFJLENBQUMsSUFBSTtBQUFNO0FBQUEsTUFDMUIsS0FBSztBQUFNLFFBQUFBLEVBQUksQ0FBQyxJQUFJO0FBQU07QUFBQSxJQUMxQjtBQUNELFVBQU9BLEVBQUksQ0FBQyxHQUFDO0FBQUEsSUFDWixLQUFLO0FBQ0osTUFBQUEsRUFBSSxDQUFDLElBQUlreEIsR0FBVXo1QixHQUFNLENBQUMsSUFBSSxTQUFTLFNBQ3BDMHJCLEtBQVEsT0FBSTFyQixFQUFLLEtBQUs7QUFBRztBQUFBLElBQzdCLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFDSixNQUFBdUksRUFBSSxDQUFDLElBQUkwa0IsR0FBS2p0QixFQUFLQSxFQUFLLENBQUMsQ0FBQyxHQUMxQkEsRUFBSyxLQUFPMHJCLEtBQVEsS0FBTSxJQUFJO0FBQUk7QUFBQSxJQUNuQyxLQUFLO0FBQ0osTUFBQTFyQixFQUFLLEtBQUs7QUFBRztBQUFBLElBQ2QsS0FBSztBQUNKLE1BQUF1SSxFQUFJLENBQUMsSUFBSStuQixHQUFXdHdCLENBQU87QUFBRztBQUFBLElBQy9CLEtBQUs7QUFDSixNQUFBdUksRUFBSSxDQUFDLElBQUlzMEIsR0FBdUI3OEIsR0FBTSxHQUFHLEVBQUMsTUFBSzByQixJQUFPLEtBQUtBLElBQU8sSUFBSSxJQUFJQSxFQUFJLENBQUM7QUFBRztBQUFBLElBQ25GO0FBQVMsWUFBTSxJQUFJLE1BQU0sZ0JBQWdCbmpCLEVBQUksQ0FBQyxDQUFDO0FBQUEsRUFDL0M7QUFDRCxTQUFPQTtBQUNSO0FBR0EsU0FBU3dqRCxHQUFrQi9yRCxHQUFNZ21DLEdBQUtqL0IsR0FBTTtBQUczQyxXQUZJaWxELElBQVFoc0QsRUFBSyxXQUFZK0csRUFBSyxRQUFRLEtBQU0sSUFBSSxDQUFDLEdBQ2pEckMsSUFBdUIsQ0FBQSxHQUNuQixJQUFJLEdBQUcsS0FBS3NuRCxHQUFPLEVBQUU7QUFBRyxJQUFBdG5ELEVBQUksTUFBT3FDLEVBQUssUUFBUSxLQUFNcXBCLEtBQXFCc1AsSUFBYTEvQixDQUFPLENBQUM7QUFDeEcsU0FBTzBFO0FBQ1I7QUFHQSxTQUFTdW5ELEdBQW9CanNELEdBQU1xcUIsR0FBUXRqQixHQUFNO0FBQ2hELE1BQUlzb0MsSUFBTyxHQUFHdEQsSUFBTztBQUNyQixFQUFHaGxDLEVBQUssUUFBUSxNQUNmc29DLElBQU9ydkMsRUFBSyxXQUFXLENBQUMsR0FDeEIrckMsSUFBTy9yQyxFQUFLLFdBQVcsQ0FBQyxNQUV4QityQyxJQUFPLElBQUkvckMsRUFBSyxXQUFXLENBQUMsR0FDNUJxdkMsSUFBTyxJQUFJcnZDLEVBQUssV0FBVyxDQUFDLElBRTFCK0csRUFBSyxRQUFRLEtBQUtBLEVBQUssT0FBTyxNQUFLLEVBQUVzb0MsR0FBUyxFQUFFdEQsS0FBUSxNQUFHQSxJQUFPO0FBRXJFLFdBQVEsSUFBSSxHQUFHeHBDLElBQTBCLENBQUEsR0FBSSxLQUFLOHNDLE1BQVM5c0MsRUFBRSxDQUFDLElBQUksQ0FBRSxJQUFHLEVBQUU7QUFDeEUsYUFBUWQsSUFBSSxHQUFHQSxLQUFLc3FDLEdBQU0sRUFBRXRxQztBQUFHLE1BQUFjLEVBQUUsQ0FBQyxFQUFFZCxDQUFDLElBQUlxcUQsR0FBWTlyRCxHQUFNK0csRUFBSyxJQUFJO0FBQ3JFLFNBQU94RTtBQUNSO0FBR0EsU0FBUzJwRCxHQUFjbHNELEdBQU1xcUIsR0FBUXRqQixHQUFNO0FBQzFDLE1BQUkvSCxJQUFRZ0IsRUFBSyxXQUFXLENBQUMsTUFBTSxJQUFLLEdBQ3BDK0gsSUFBSyxDQUFDaEIsS0FBU0EsRUFBSyxRQUFRLElBQU0sSUFBSSxHQUN0Q29sRCxJQUFZbnNELEVBQUssV0FBVytILENBQUM7QUFDakMsVUFBT2hCLEVBQUssTUFBSTtBQUFBLElBQ2YsS0FBSztBQUFHLE1BQUEvRyxFQUFLLEtBQUs7QUFBRztBQUFBLElBQ3JCLEtBQUs7QUFBQSxJQUFHLEtBQUs7QUFBRyxNQUFBQSxFQUFLLEtBQUs7QUFBRztBQUFBLElBQzdCLEtBQUs7QUFBRyxNQUFBQSxFQUFLLEtBQUs7QUFBSTtBQUFBLEVBQ3RCO0FBQ0QsU0FBTyxDQUFDaEIsR0FBTSxHQUFHbXRELENBQVM7QUFDM0I7QUFHQSxTQUFTQyxHQUFlcHNELEdBQU1xcUIsR0FBUXRqQixHQUFNO0FBQzNDLE1BQUdBLEVBQUssUUFBUTtBQUFHLFdBQU9zbEQsR0FBcUJyc0QsQ0FBa0I7QUFDakUsTUFBSWhCLElBQVFnQixFQUFLLFdBQVcsQ0FBQyxNQUFNLElBQUssR0FDcEN5cEQsSUFBT3pwRCxFQUFLLFdBQVcsQ0FBQyxHQUN4Qm1zRCxJQUFZbnNELEVBQUssV0FBVyxDQUFDO0FBQ2pDLFNBQU8sQ0FBQ2hCLEdBQU15cUQsR0FBTTBDLENBQVM7QUFDOUI7QUFDQSxTQUFTRSxHQUFxQnJzRCxHQUEwQjtBQUN2RCxNQUFJaEIsSUFBUWdCLEVBQUssV0FBVyxDQUFDLE1BQU0sSUFBSyxHQUNwQ3lwRCxJQUFPenBELEVBQUssV0FBVyxHQUFHLEdBQUc7QUFDakMsRUFBQUEsRUFBSyxLQUFLO0FBQ1YsTUFBSW1zRCxJQUFZbnNELEVBQUssV0FBVyxDQUFDO0FBQ2pDLFNBQUFBLEVBQUssS0FBSyxJQUNILENBQUNoQixHQUFNeXFELEdBQU0wQyxDQUFTO0FBQzlCO0FBR0EsU0FBU0csR0FBaUJ0c0QsR0FBTXFxQixHQUFRdGpCLEdBQU07QUFDN0MsTUFBSS9ILElBQVFnQixFQUFLLFdBQVcsQ0FBQyxNQUFNLElBQUs7QUFDeEMsRUFBQUEsRUFBSyxLQUFNK0csS0FBUUEsRUFBSyxRQUFRLElBQUksSUFBSTtBQUN4QyxNQUFJaS9CLElBQU1obUMsRUFBSyxXQUFXK0csS0FBUUEsRUFBSyxRQUFRLElBQUksSUFBSSxDQUFDO0FBQ3hELFNBQU8sQ0FBQy9ILEdBQU1nbkMsQ0FBRztBQUNsQjtBQUdBLFNBQVN1bUIsR0FBaUJ2c0QsR0FBTXFxQixHQUFRdGpCLEdBQU07QUFDN0MsTUFBSS9ILElBQVFnQixFQUFLLFdBQVcsQ0FBQyxNQUFNLElBQUssR0FDcENnbUMsSUFBTWhtQyxFQUFLLFdBQVcrRyxLQUFRQSxFQUFLLFFBQVEsSUFBSSxJQUFJLENBQUM7QUFDeEQsU0FBTyxDQUFDL0gsR0FBTWduQyxDQUFHO0FBQ2xCO0FBSUEsU0FBU3dtQixHQUFnQnhzRCxHQUFNcXFCLEdBQVF0akIsR0FBTTtBQUM1QyxNQUFJL0gsSUFBUWdCLEVBQUssV0FBVyxDQUFDLE1BQU0sSUFBSztBQUN4QyxTQUFBQSxFQUFLLEtBQUssR0FDUCtHLEVBQUssT0FBTyxLQUFHL0csRUFBSyxLQUNwQitHLEVBQUssUUFBUSxPQUFJL0csRUFBSyxLQUFLLElBQ3ZCLENBQUNoQixDQUFJO0FBQ2I7QUFHQSxTQUFTeXRELEdBQWtCenNELEdBQU1xcUIsR0FBUXRqQixHQUFNO0FBQzlDLE1BQUkvSCxLQUFRZ0IsRUFBS0EsRUFBSyxHQUFHLElBQUksT0FBUyxHQUNsQ3lwRCxJQUFPenBELEVBQUssV0FBVyxDQUFDLEdBQ3hCK0gsSUFBSTtBQUNSLE1BQUdoQjtBQUFNLFlBQU9BLEVBQUssTUFBSTtBQUFBLE1BQ3hCLEtBQUs7QUFBRyxRQUFBZ0IsSUFBSTtBQUFJO0FBQUEsTUFDaEIsS0FBSztBQUFJLFFBQUFBLElBQUk7QUFBRztBQUFBLElBQ2hCO0FBQ0QsU0FBQS9ILEVBQUssS0FBSytILEdBQ0gsQ0FBQy9JLEdBQU15cUQsQ0FBSTtBQUNuQjtBQUdBLElBQUlpRCxLQUFrQnRpQyxJQUVsQnVpQyxLQUFvQnZpQyxJQUVwQndpQyxLQUFleGlDO0FBRW5CLFNBQVN5aUMsR0FBZ0I3c0QsR0FBTXFxQixHQUFRdGpCLEdBQU07QUFDNUMsU0FBQS9HLEVBQUssS0FBSyxHQUNILENBQUNpcEQsR0FBaUJqcEQsQ0FBYSxDQUFDO0FBQ3hDO0FBQ0EsU0FBUzhzRCxHQUFpQjlzRCxHQUEwQjtBQUNuRCxTQUFBQSxFQUFLLEtBQUssR0FDSDtBQUNSO0FBRUEsSUFBSStzRCxLQUFrQkYsSUFFbEJHLEtBQW1CRixJQUVuQkcsS0FBb0JILElBRXBCSSxLQUFtQkw7QUFFdkIsU0FBU00sR0FBZ0JudEQsR0FBMEI7QUFDbEQsU0FBQUEsRUFBSyxLQUFLLEdBQ0gsQ0FBQzA3QixHQUFZMTdCLENBQUksR0FBR0EsRUFBSyxXQUFXLENBQUMsSUFBSSxDQUFJO0FBQ3JEO0FBRUEsSUFBSW90RCxLQUFzQlAsSUFFdEJRLEtBQXlCRixJQUV6QkcsS0FBdUJSLElBRXZCUyxLQUFpQlYsSUFFakJXLEtBQWtCWCxJQUdsQlksS0FBWTtBQUFBLEVBQ2Y7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQ0Q7QUFDQSxTQUFTQyxHQUFjMXRELEdBQTBCO0FBQ2hELEVBQUFBLEVBQUssS0FBSztBQUNWLE1BQUl5cEQsSUFBT3pwRCxFQUFLLFdBQVcsQ0FBQyxHQUN4Qm9SLElBQVFwUixFQUFLLFdBQVcsQ0FBQyxHQUN6QnFKLElBQU1ySixFQUFLLFdBQVcsQ0FBQyxHQUN2QmtCLElBQUlsQixFQUFLLFdBQVcsQ0FBQyxHQUNyQm9RLElBQUlwUSxFQUFLLFdBQVcsQ0FBQyxHQUNyQmkvQixJQUFLd3VCLEdBQVdyOEMsS0FBUyxJQUFLLEVBQUk7QUFDdEMsU0FBTyxFQUFDLE1BQU1xNEMsR0FBTSxTQUFTcjRDLElBQU0sR0FBTSxJQUFHNnRCLEdBQUksS0FBSTUxQixHQUFLLEdBQUVuSSxHQUFHLEdBQUVrUCxFQUFDO0FBQ2xFO0FBRUEsU0FBU3U5QyxHQUFnQjN0RCxHQUEwQjtBQUNsRCxTQUFBQSxFQUFLLEtBQUssR0FDSCxDQUFDQSxFQUFLLFdBQVcsQ0FBQyxDQUFDO0FBQzNCO0FBR0EsU0FBUzR0RCxHQUFlNXRELEdBQU1xcUIsR0FBUXRqQixHQUFNO0FBQzNDLFNBQUEvRyxFQUFLLEtBQUssR0FDVkEsRUFBSyxLQUFLLEdBQ1ZBLEVBQUssS0FBTStHLEVBQUssUUFBUSxJQUFJLElBQUksR0FDekIsQ0FBQyxVQUFVO0FBQ25CO0FBQ0EsU0FBUzhtRCxHQUFrQjd0RCxHQUFNcXFCLEdBQVF0akIsR0FBTTtBQUM5QyxTQUFBL0csRUFBSyxLQUFNK0csRUFBSyxRQUFRLElBQUksSUFBSSxHQUN6QixDQUFDLGFBQWE7QUFDdEI7QUFDQSxTQUFTK21ELEdBQWtCOXRELEdBQTBCO0FBQ3BELE1BQUloQixJQUFRZ0IsRUFBSyxXQUFXLENBQUMsTUFBTSxJQUFLLEdBQ3BDZ21DLElBQU1obUMsRUFBSyxXQUFXLENBQUM7QUFDM0IsU0FBTyxDQUFDaEIsR0FBTWduQyxDQUFHO0FBQ2xCO0FBQ0EsU0FBUytuQixHQUFtQi90RCxHQUEwQjtBQUNyRCxNQUFJaEIsSUFBUWdCLEVBQUssV0FBVyxDQUFDLE1BQU0sSUFBSyxHQUNwQ2dtQyxJQUFNaG1DLEVBQUssV0FBVyxDQUFDO0FBQzNCLFNBQU8sQ0FBQ2hCLEdBQU1nbkMsQ0FBRztBQUNsQjtBQUNBLFNBQVNnb0IsR0FBa0JodUQsR0FBMEI7QUFDcEQsU0FBQUEsRUFBSyxLQUFLLEdBQ0gsQ0FBQyxHQUFHLENBQUM7QUFDYjtBQUdBLElBQUlpdUQsS0FBVztBQUFBO0FBQUEsRUFDUCxHQUFhLEVBQUUsR0FBRSxVQUFVLEdBQUV6QyxHQUFjO0FBQUE7QUFBQSxFQUMzQyxHQUFhLEVBQUUsR0FBRSxVQUFVLEdBQUVvQixHQUFjO0FBQUE7QUFBQSxFQUMzQyxHQUFhLEVBQUUsR0FBRSxVQUFVLEdBQUVsRSxHQUFZO0FBQUE7QUFBQSxFQUN6QyxHQUFhLEVBQUUsR0FBRSxVQUFVLEdBQUVBLEdBQVk7QUFBQTtBQUFBLEVBQ3pDLEdBQWEsRUFBRSxHQUFFLFVBQVUsR0FBRUEsR0FBWTtBQUFBO0FBQUEsRUFDekMsR0FBYSxFQUFFLEdBQUUsVUFBVSxHQUFFQSxHQUFZO0FBQUE7QUFBQSxFQUN6QyxHQUFhLEVBQUUsR0FBRSxZQUFZLEdBQUVBLEdBQVk7QUFBQTtBQUFBLEVBQzNDLEdBQWEsRUFBRSxHQUFFLGFBQWEsR0FBRUEsR0FBWTtBQUFBO0FBQUEsRUFDNUMsR0FBYSxFQUFFLEdBQUUsU0FBUyxHQUFFQSxHQUFZO0FBQUE7QUFBQSxFQUN4QyxJQUFhLEVBQUUsR0FBRSxTQUFTLEdBQUVBLEdBQVk7QUFBQTtBQUFBLEVBQ3hDLElBQWEsRUFBRSxHQUFFLFNBQVMsR0FBRUEsR0FBWTtBQUFBO0FBQUEsRUFDeEMsSUFBYSxFQUFFLEdBQUUsU0FBUyxHQUFFQSxHQUFZO0FBQUE7QUFBQSxFQUN4QyxJQUFhLEVBQUUsR0FBRSxTQUFTLEdBQUVBLEdBQVk7QUFBQTtBQUFBLEVBQ3hDLElBQWEsRUFBRSxHQUFFLFNBQVMsR0FBRUEsR0FBWTtBQUFBO0FBQUEsRUFDeEMsSUFBYSxFQUFFLEdBQUUsWUFBWSxHQUFFQSxHQUFZO0FBQUE7QUFBQSxFQUMzQyxJQUFhLEVBQUUsR0FBRSxZQUFZLEdBQUVBLEdBQVk7QUFBQTtBQUFBLEVBQzNDLElBQWEsRUFBRSxHQUFFLFlBQVksR0FBRUEsR0FBWTtBQUFBO0FBQUEsRUFDM0MsSUFBYSxFQUFFLEdBQUUsWUFBWSxHQUFFQSxHQUFZO0FBQUE7QUFBQSxFQUMzQyxJQUFhLEVBQUUsR0FBRSxhQUFhLEdBQUVBLEdBQVk7QUFBQTtBQUFBLEVBQzVDLElBQWEsRUFBRSxHQUFFLGNBQWMsR0FBRUEsR0FBWTtBQUFBO0FBQUEsRUFDN0MsSUFBYSxFQUFFLEdBQUUsWUFBWSxHQUFFQSxHQUFZO0FBQUE7QUFBQSxFQUMzQyxJQUFhLEVBQUUsR0FBRSxjQUFjLEdBQUVBLEdBQVk7QUFBQTtBQUFBLEVBQzdDLElBQWEsRUFBRSxHQUFFLFVBQVUsR0FBRW1ELEdBQWM7QUFBQTtBQUFBLEVBQzNDLElBQWEsRUFBRSxHQUFFLFlBQVksR0FBRStCLEdBQWdCO0FBQUE7QUFBQSxFQUMvQyxJQUFhLEVBQUUsR0FBRSxlQUFlLEdBQUVDLEdBQW1CO0FBQUE7QUFBQSxFQUNyRCxJQUFhLEVBQUUsR0FBRSxVQUFVLEdBQUVwQyxHQUFjO0FBQUE7QUFBQSxFQUMzQyxJQUFhLEVBQUUsR0FBRSxXQUFXLEdBQUVFLEdBQWU7QUFBQTtBQUFBLEVBQzdDLElBQWEsRUFBRSxHQUFFLFVBQVUsR0FBRUQsR0FBYztBQUFBO0FBQUEsRUFDM0MsSUFBYSxFQUFFLEdBQUUsVUFBVSxHQUFFRSxHQUFjO0FBQUE7QUFBQSxFQUMzQyxJQUFhLEVBQUUsR0FBRSxZQUFZLEdBQUUvQixHQUFnQjtBQUFBO0FBQUEsRUFDL0MsSUFBYSxFQUFFLEdBQUUsV0FBVyxHQUFFaUIsR0FBZTtBQUFBO0FBQUEsRUFDN0MsSUFBYSxFQUFFLEdBQUUsY0FBYyxHQUFFSSxHQUFrQjtBQUFBO0FBQUEsRUFDbkQsSUFBYSxFQUFFLEdBQUUsV0FBVyxHQUFFZ0IsR0FBZTtBQUFBO0FBQUEsRUFDN0MsSUFBYSxFQUFFLEdBQUUsVUFBVSxHQUFFdkIsR0FBYztBQUFBO0FBQUEsRUFDM0MsSUFBYSxFQUFFLEdBQUUsV0FBVyxHQUFFckIsR0FBZTtBQUFBO0FBQUEsRUFDN0MsSUFBYSxFQUFFLEdBQUUsY0FBYyxHQUFFZ0QsR0FBa0I7QUFBQTtBQUFBLEVBQ25ELElBQWEsRUFBRSxHQUFFLGFBQWEsR0FBRUksR0FBaUI7QUFBQTtBQUFBLEVBQ2pELElBQWEsRUFBRSxHQUFFLGVBQWUsR0FBRUMsR0FBbUI7QUFBQTtBQUFBLEVBQ3JELElBQWEsRUFBRSxHQUFFLGNBQWMsR0FBRUosR0FBa0I7QUFBQTtBQUFBLEVBQ25ELElBQWEsRUFBRSxHQUFFLGFBQWEsR0FBRUMsR0FBaUI7QUFBQTtBQUFBLEVBQ2pELElBQWEsRUFBRSxHQUFFLGNBQWMsR0FBRTlDLEdBQWtCO0FBQUE7QUFBQSxFQUNuRCxJQUFhLEVBQUUsR0FBRSxXQUFXLEdBQUVrQixHQUFlO0FBQUE7QUFBQSxFQUM3QyxJQUFhLEVBQUUsR0FBRSxZQUFZLEdBQUVoQixHQUFnQjtBQUFBO0FBQUEsRUFDL0MsSUFBYSxFQUFFLEdBQUUsZUFBZSxHQUFFa0UsR0FBbUI7QUFBQTtBQUFBLEVBQ3JELElBQWEsRUFBRSxHQUFFLGdCQUFnQixHQUFFQyxHQUFvQjtBQUFBO0FBQUEsRUFDdkQsSUFBYSxFQUFFLEdBQUUsWUFBWSxHQUFFM0IsR0FBZ0I7QUFBQTtBQUFBLEVBQy9DLElBQWEsRUFBRSxHQUFFLFlBQVksR0FBRXZCLEdBQWdCO0FBQUE7QUFBQSxFQUMvQyxJQUFhLEVBQUUsR0FBRSxhQUFhLEdBQUVyQixHQUFpQjtBQUFBO0FBQUEsRUFDakQsSUFBYSxFQUFFLEdBQUUsZUFBZSxHQUFFaUQsR0FBbUI7QUFBQTtBQUFBLEVBQ3JELElBQWEsRUFBRSxHQUFFLGdCQUFnQixHQUFFOUMsR0FBb0I7QUFBQTtBQUFBLEVBQ3ZELEtBQWEsQ0FBRTtBQUN2QixHQUVJdUUsS0FBVztBQUFBO0FBQUEsRUFDUCxJQUFhO0FBQUE7QUFBQSxFQUFhLElBQWE7QUFBQTtBQUFBLEVBQ3ZDLElBQWE7QUFBQTtBQUFBLEVBQWEsSUFBYTtBQUFBO0FBQUEsRUFDdkMsSUFBYTtBQUFBO0FBQUEsRUFBYSxJQUFhO0FBQUE7QUFBQSxFQUN2QyxJQUFhO0FBQUE7QUFBQSxFQUFhLElBQWE7QUFBQTtBQUFBLEVBQ3ZDLElBQWE7QUFBQTtBQUFBLEVBQWEsS0FBYTtBQUFBO0FBQUEsRUFDdkMsSUFBYTtBQUFBO0FBQUEsRUFBYSxLQUFhO0FBQUE7QUFBQSxFQUN2QyxJQUFhO0FBQUE7QUFBQSxFQUFhLEtBQWE7QUFBQTtBQUFBLEVBQ3ZDLElBQWE7QUFBQTtBQUFBLEVBQWEsS0FBYTtBQUFBO0FBQUEsRUFDdkMsSUFBYTtBQUFBO0FBQUEsRUFBYSxLQUFhO0FBQUE7QUFBQSxFQUN2QyxJQUFhO0FBQUE7QUFBQSxFQUFhLEtBQWE7QUFBQTtBQUFBLEVBQ3ZDLElBQWE7QUFBQTtBQUFBLEVBQWEsS0FBYTtBQUFBO0FBQUEsRUFDdkMsSUFBYTtBQUFBO0FBQUEsRUFBYSxLQUFhO0FBQUE7QUFBQSxFQUN2QyxJQUFhO0FBQUE7QUFBQSxFQUFhLEtBQWE7QUFBQTtBQUFBLEVBQ3ZDLElBQWE7QUFBQTtBQUFBLEVBQWEsS0FBYTtBQUFBO0FBQUEsRUFDdkMsSUFBYTtBQUFBO0FBQUEsRUFBYSxLQUFhO0FBQUE7QUFBQSxFQUN2QyxJQUFhO0FBQUE7QUFBQSxFQUFhLEtBQWE7QUFBQTtBQUFBLEVBQ3ZDLElBQWE7QUFBQTtBQUFBLEVBQWEsS0FBYTtBQUFBO0FBQUEsRUFDdkMsSUFBYTtBQUFBO0FBQUEsRUFBYSxLQUFhO0FBQUE7QUFBQSxFQUN2QyxJQUFhO0FBQUE7QUFBQSxFQUFhLEtBQWE7QUFBQTtBQUFBLEVBQ3ZDLElBQWE7QUFBQTtBQUFBLEVBQWEsS0FBYTtBQUFBO0FBQUEsRUFDdkMsSUFBYTtBQUFBO0FBQUEsRUFBYSxLQUFhO0FBQUE7QUFBQSxFQUN2QyxJQUFhO0FBQUE7QUFBQSxFQUFhLEtBQWE7QUFDL0MsR0FFSUMsS0FBUTtB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QSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFBQSxFQUNMLEtBQUs7QUFDUCxHQUNJTCxLQUFPO0FBQUEsRUFDVCxHQUFHO0FBQUEsRUFDSCxHQUFHO0FBQUEsRUFDSCxHQUFHO0FBQUEsRUFDSCxHQUFHO0FBQUEsRUFDSCxHQUFHO0FBQUEsRUFDSCxHQUFHO0FBQUEsRUFDSCxHQUFHO0FBQUEsRUFDSCxHQUFHO0FBQUEsRUFDSCxHQUFHO0FBQUEsRUFDSCxHQUFHO0FBQUEsRUFDSCxJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQUEsRUFDTCxLQUFLO0FBQ1AsR0FDSUQsS0FBVztBQUFBLEVBQ2IsR0FBRztBQUFBLEVBQ0gsR0FBRztBQUFBLEVBQ0gsSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsS0FBSztB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QUFlO0FBQUE7QUFBQSxJQUF5QyxHQUFFO0FBQUEsRUFBRztBQUFBO0FBQUEsRUFDN0QsTUFBZTtBQUFBO0FBQUEsSUFBdUMsR0FBRTtBQUFBLEVBQUk7QUFBQTtBQUFBLEVBQzVELE1BQWU7QUFBQTtBQUFBLElBQTJDLEdBQUU7QUFBQSxFQUFHO0FBQUE7QUFBQSxFQUMvRCxNQUFlO0FBQUE7QUFBQSxJQUF5QyxHQUFFO0FBQUEsRUFBSTtBQUFBO0FBQUEsRUFDOUQsTUFBZTtBQUFBO0FBQUEsSUFBMEMsR0FBRTtBQUFBLEVBQUc7QUFBQTtBQUFBLEVBQzlELE1BQWU7QUFBQTtBQUFBLElBQXdDLEdBQUU7QUFBQSxFQUFJO0FBQUE7QUFBQSxFQUM3RCxNQUFlO0FBQUE7QUFBQSxJQUF5QyxHQUFFO0FBQUEsRUFBRztBQUFBO0FBQUEsRUFDN0QsTUFBZTtBQUFBO0FBQUEsSUFBdUMsR0FBRTtBQUFBLEVBQUk7QUFBQTtBQUFBLEVBQzVELE1BQWU7QUFBQTtBQUFBLElBQXdDLEdBQUU7QUFBQSxFQUFHO0FBQUE7QUFBQSxFQUM1RCxNQUFlO0FBQUE7QUFBQSxJQUFzQyxHQUFFO0FBQUEsRUFBSTtBQUFBO0FBQUEsRUFDM0QsTUFBZTtBQUFBO0FBQUEsRUFBb0M7QUFBQTtBQUFBLEVBQ25ELE1BQWU7QUFBQTtBQUFBLElBQTJDLEdBQUU7QUFBQSxFQUFHO0FBQUE7QUFBQSxFQUMvRCxNQUFlO0FBQUE7QUFBQSxFQUFxQztBQUFBO0FBQUEsRUFDcEQsTUFBZTtBQUFBO0FBQUEsSUFBeUMsR0FBRTtBQUFBLEVBQUk7QUFBQTtBQUFBLEVBQzlELE1BQWU7QUFBQTtBQUFBLElBQXVDLEdBQUU7QUFBQSxFQUFHO0FBQUE7QUFBQSxFQUMzRCxNQUFlO0FBQUE7QUFBQSxJQUFxQyxHQUFFO0FBQUEsRUFBSTtBQUFBO0FBQUEsRUFDMUQsTUFBZTtBQUFBO0FBQUEsRUFBc0M7QUFBQTtBQUFBLEVBQ3JELE1BQWU7QUFBQTtBQUFBLEVBQWtDO0FBQUE7QUFBQSxFQUNqRCxNQUFlO0FBQUE7QUFBQSxFQUFxQztBQUFB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