您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
增强 V2EX 主题的回复。
当前为
/******/ (() => { // webpackBootstrap /******/ "use strict"; /******/ var __webpack_modules__ = ({ /***/ 915: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ A: () => (/* binding */ Store) /* harmony export */ }); function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /** * 存储 */ var Store = /*#__PURE__*/function () { function Store() { _classCallCheck(this, Store); } return _createClass(Store, null, [{ key: "get", value: /** * 获取 * @param key 键 */ function get(key) { return GM_getValue(key); } /** * 设置 * @param key 键 * @param value 值 */ }, { key: "set", value: function set(key, value) { GM_setValue(key, value); } }]); }(); /***/ }), /***/ 952: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { // EXPORTS __webpack_require__.d(__webpack_exports__, { A: () => (/* binding */ Options) }); // EXTERNAL MODULE: ./utils/src/gm/Store.ts var Store = __webpack_require__(915); ;// CONCATENATED MODULE: ./utils/src/gm/MenuCmd.ts function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /** * 选项菜单 */ var MenuCmd = /*#__PURE__*/function () { function MenuCmd() { _classCallCheck(this, MenuCmd); } return _createClass(MenuCmd, null, [{ key: "register", value: /** * 注册 * @param name 名称 * @param fn 点击菜单时执行的函数 */ function register(name, fn) { return GM_registerMenuCommand(name, fn); } /** * 注销 * @param menuCmdId 注册时返回的 ID */ }, { key: "unregister", value: function unregister(menuCmdId) { GM_unregisterMenuCommand(menuCmdId); } }]); }(); ;// CONCATENATED MODULE: ./utils/src/CommonOptions.ts function CommonOptions_typeof(o) { "@babel/helpers - typeof"; return CommonOptions_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, CommonOptions_typeof(o); } function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function CommonOptions_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function CommonOptions_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, CommonOptions_toPropertyKey(descriptor.key), descriptor); } } function CommonOptions_createClass(Constructor, protoProps, staticProps) { if (protoProps) CommonOptions_defineProperties(Constructor.prototype, protoProps); if (staticProps) CommonOptions_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function CommonOptions_toPropertyKey(t) { var i = CommonOptions_toPrimitive(t, "string"); return "symbol" == CommonOptions_typeof(i) ? i : i + ""; } function CommonOptions_toPrimitive(t, r) { if ("object" != CommonOptions_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != CommonOptions_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /** * 选项菜单 */ var CommonOptions = /*#__PURE__*/function () { function CommonOptions() { CommonOptions_classCallCheck(this, CommonOptions); } return CommonOptions_createClass(CommonOptions, null, [{ key: "registerBoolOption", value: // /** // * 选项 Key // */ // protected static Keys = { // // xxx: 'xxx' // } // // /** // * 选项 // * @private // */ // protected static options = [ // // {label: '', name: this.Keys.xxx, version: 1, value: false, menuCmdId: null}, // ]; /** * 注册 bool 类型的选项 * @param option 选项 */ function registerBoolOption(option) { var _this = this; var val = option.value, valIsBool = typeof val === 'boolean'; if (!valIsBool) { return; } // 注册选项 var currentMenuCmdId = MenuCmd.register((val ? '☑️ ' : '🔲 ') + option.label, function () { // 点击值取反 option.value = !option.value; Store/* default */.A.set(option.name, JSON.stringify(option)); // 取消注册 MenuCmd.unregister(currentMenuCmdId); // 重新注册 _this.registerBoolOption(option); // 刷新页面 window.location.reload(); }); // 保存选项 ID option.menuCmdId = currentMenuCmdId; Store/* default */.A.set(option.name, JSON.stringify(option)); } /** * 注册所有选项 * @param url 设置页面 URL * @param options */ }, { key: "registerAll", value: function registerAll(url, options) { MenuCmd.register('更多设置', function () { window.open(url, '_blank'); }); var _iterator = _createForOfIteratorHelper(options), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var option = _step.value; // TODO 【调试】不保留选项的值,每次都从 Store 中获取 // Store.set(option.name, null); var storeOption = Store/* default */.A.get(option.name) ? JSON.parse(Store/* default */.A.get(option.name)) : null; // 如果选项不存在 || 版本不一致 时重置选项 if (storeOption === null || !storeOption['version'] || storeOption['version'] < option.version) { Store/* default */.A.set(option.name, JSON.stringify(option)); storeOption = option; } this.registerBoolOption(storeOption); } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } } /** * 在页面中加载选项 */ }, { key: "loadInGreasyfork", value: function loadInGreasyfork(scriptId, loadOptionContentFn) { if (location.host !== 'greasyfork.org' || location.href.indexOf('/scripts/' + scriptId) == -1) { return; } var selector = { scriptLinks: '#script-links', scriptOptions: '#script-options', scriptContent: '#script-content' }; var $body = $(document.body), $scriptLinks = $(selector.scriptLinks), $scriptContent = $(selector.scriptContent); // 添加脚本设置的选项卡 $scriptLinks.children('li:eq(0)').after("<li><a href=\"javascript:;\" id=\"script-options\">\u811A\u672C\u8BBE\u7F6E</a></li>"); // 脚本设置选项点击事件 $body.on('click', selector.scriptOptions, function () { // 移除已选中选项的样式 var $currentLi = $scriptLinks.children('li.current'); $currentLi.html("<a href=\"".concat(location.href, "\">").concat($currentLi.text(), "</a>")); $currentLi.removeClass('current'); // 添加选中选项的样式 var $scriptOptions = $(selector.scriptOptions); $scriptOptions.parent().addClass('current'); loadOptionContentFn($scriptContent); }); } }]); }(); ;// CONCATENATED MODULE: ./v2ex-replies-pro/src/Options.ts var _Options; function Options_typeof(o) { "@babel/helpers - typeof"; return Options_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, Options_typeof(o); } function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function Options_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function Options_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, Options_toPropertyKey(descriptor.key), descriptor); } } function Options_createClass(Constructor, protoProps, staticProps) { if (protoProps) Options_defineProperties(Constructor.prototype, protoProps); if (staticProps) Options_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _defineProperty(obj, key, value) { key = Options_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function Options_toPropertyKey(t) { var i = Options_toPrimitive(t, "string"); return "symbol" == Options_typeof(i) ? i : i + ""; } function Options_toPrimitive(t, r) { if ("object" != Options_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != Options_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } var Options = /*#__PURE__*/function () { function Options() { Options_classCallCheck(this, Options); } return Options_createClass(Options, null, [{ key: "registerAll", value: /** * 注册所有选项 */ function registerAll() { CommonOptions.registerAll('https://www.v2ex.com/settings', this.options); } /** * 在页面中加载选项 */ }, { key: "loadInV2ex", value: function loadInV2ex() { var _this = this; if (location.href.indexOf('v2ex.com/settings') == -1) { return; } var selector = { menuTab: 'a.tab', currentMenuTab: 'a.tab_current', scriptOptions: '#script-options', scriptContent: '#Main .box', v2exTokenInput: 'input[name="v2exToken"]', saveOptionsBtn: '#save-options' }, $body = $(document.body), $menuTab = $(selector.menuTab); // 添加脚本设置的选项卡 $menuTab.parent().append("<a id=\"script-options\" class=\"tab\" href=\"javascript:void(0);\">\u811A\u672C\u8BBE\u7F6E</a>"); // 脚本设置选项点击事件 $body.on('click', selector.scriptOptions, function () { // 移除已选中选项的样式 var $currentMenuTab = $(selector.currentMenuTab); $currentMenuTab.removeClass('tab_current'); $currentMenuTab.addClass('tab'); // 添加选中选项的样式 var $scriptOptions = $(selector.scriptOptions); $scriptOptions.removeClass('tab'); $scriptOptions.addClass('tab_current'); // 添加脚本设置的内容 $(selector.scriptContent + ' div:gt(1)').remove(); $(selector.scriptContent).append("\n <form>\n <div class=\"inner\">\n <div class=\"topic_content markdown_body\">\n <!--<p><a href=\"https://www.v2ex.com/settings/tokens\" target=\"_blank\">\u83B7\u53D6 V2EX Token</a></p> -->\n </div>\n <div class=\"sep20\"></div>\n <div class=\"social-settings-form\">\n <div>\n <div><a href=\"https://www.v2ex.com/settings/tokens\" target=\"_blank\">V2EX Token</a>\uFF1A</div>\n <input type=\"password\" class=\"sl\" name=\"v2exToken\" value=\"".concat(JSON.parse(Store/* default */.A.get(_this.Keys.v2exToken)).value, "\">\n </div>\n </div>\n </div>\n <div class=\"cell_ops\">\n <input id=\"save-options\" type=\"submit\" class=\"super normal button\" value=\"Save\">\n </div>\n </form>\n ")); $body.on('click', selector.saveOptionsBtn, function () { var token = $(selector.v2exTokenInput).val(); Store/* default */.A.set(_this.Keys.v2exToken, JSON.stringify(_objectSpread(_objectSpread({}, JSON.parse(Store/* default */.A.get(_this.Keys.v2exToken))), { value: token }))); layer.msg('保存成功'); return false; }); }); } }]); }(); _Options = Options; /** * 选项 Key */ _defineProperty(Options, "Keys", { v2exToken: 'v2exToken' }); /** * 选项 * @private */ _defineProperty(Options, "options", [{ label: 'V2EX Token', name: _Options.Keys.v2exToken, version: 1, value: '', menuCmdId: null }]); /***/ }), /***/ 922: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { // EXPORTS __webpack_require__.d(__webpack_exports__, { A: () => (/* binding */ Replay) }); ;// CONCATENATED MODULE: ./utils/src/gm/enum/HttpDataType.ts var HttpDataType = /*#__PURE__*/function (HttpDataType) { HttpDataType["JSON"] = "JSON"; return HttpDataType; }({}); ;// CONCATENATED MODULE: ./utils/src/gm/Request.ts function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } var Request = /*#__PURE__*/function () { function Request() { _classCallCheck(this, Request); } return _createClass(Request, null, [{ key: "get", value: function () { var _get = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(option) { var onload1; return _regeneratorRuntime().wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: option['method'] = 'GET'; // 同步时返回 Promise if (!option.synchronous) { _context.next = 5; break; } return _context.abrupt("return", new Promise(function (resolve, reject) { GM_xmlhttpRequest(_objectSpread(_objectSpread({}, option), {}, { onload: function onload(response) { resolve(option.dataType === HttpDataType.JSON ? JSON.parse(response.responseText) : response.responseText); }, onerror: function onerror(error) { reject(error); } })); })); case 5: onload1 = function onload1(details) { var response; if (option.dataType === HttpDataType.JSON) { response = JSON.parse(details.responseText); } else { response = details.response; } option.onload(response); }; GM_xmlhttpRequest(_objectSpread(_objectSpread({}, option), {}, { onload: onload1 })); case 7: case "end": return _context.stop(); } }, _callee); })); function get(_x) { return _get.apply(this, arguments); } return get; }() }]); }(); ;// CONCATENATED MODULE: ./utils/src/gm/Info.ts function Info_typeof(o) { "@babel/helpers - typeof"; return Info_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, Info_typeof(o); } function Info_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function Info_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, Info_toPropertyKey(descriptor.key), descriptor); } } function Info_createClass(Constructor, protoProps, staticProps) { if (protoProps) Info_defineProperties(Constructor.prototype, protoProps); if (staticProps) Info_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function Info_toPropertyKey(t) { var i = Info_toPrimitive(t, "string"); return "symbol" == Info_typeof(i) ? i : i + ""; } function Info_toPrimitive(t, r) { if ("object" != Info_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != Info_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /** * 获取脚本信息 */ var Info = /*#__PURE__*/function () { function Info() { Info_classCallCheck(this, Info); } return Info_createClass(Info, null, [{ key: "get", value: function get() { return GM_info.script; } }, { key: "getName", value: function getName() { return this.get().name; } }, { key: "getVersion", value: function getVersion() { return this.get().version; } }]); }(); // EXTERNAL MODULE: ./utils/src/gm/Store.ts var Store = __webpack_require__(915); // EXTERNAL MODULE: ./v2ex-replies-pro/src/Options.ts + 2 modules var Options = __webpack_require__(952); ;// CONCATENATED MODULE: ./v2ex-replies-pro/src/api/V2ex.ts function V2ex_typeof(o) { "@babel/helpers - typeof"; return V2ex_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, V2ex_typeof(o); } function V2ex_regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ V2ex_regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == V2ex_typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(V2ex_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } function V2ex_asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function V2ex_asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { V2ex_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { V2ex_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } function V2ex_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function V2ex_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, V2ex_toPropertyKey(descriptor.key), descriptor); } } function V2ex_createClass(Constructor, protoProps, staticProps) { if (protoProps) V2ex_defineProperties(Constructor.prototype, protoProps); if (staticProps) V2ex_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function V2ex_defineProperty(obj, key, value) { key = V2ex_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function V2ex_toPropertyKey(t) { var i = V2ex_toPrimitive(t, "string"); return "symbol" == V2ex_typeof(i) ? i : i + ""; } function V2ex_toPrimitive(t, r) { if ("object" != V2ex_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != V2ex_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } var V2ex = /*#__PURE__*/function () { function V2ex() { V2ex_classCallCheck(this, V2ex); } return V2ex_createClass(V2ex, null, [{ key: "checkToken", value: ( /** * 检查 Token 是否有效 */ function () { var _checkToken = V2ex_asyncToGenerator( /*#__PURE__*/V2ex_regeneratorRuntime().mark(function _callee() { var token, result; return V2ex_regeneratorRuntime().wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: token = JSON.parse(Store/* default */.A.get(Options/* default */.A.Keys.v2exToken)).value; if (!(!token && location.href.indexOf('v2ex.com/settings') == -1)) { _context.next = 4; break; } layer.msg('请先在“脚本设置”中填写 Token!', { icon: 4, offset: 'rb' }, function () { window.open('https://www.v2ex.com/settings', '_blank'); }); return _context.abrupt("return", false); case 4: _context.next = 6; return Request.get({ url: this.BASE_URL + 'token', dataType: HttpDataType.JSON, synchronous: true, headers: { 'Authorization': 'Bearer ' + token } }); case 6: result = _context.sent; if (result['success']) { _context.next = 10; break; } layer.msg(Info.getName() + ":" + result['message'], { icon: 2, offset: 'rb', time: 5000 }); return _context.abrupt("return", false); case 10: return _context.abrupt("return", true); case 11: case "end": return _context.stop(); } }, _callee, this); })); function checkToken() { return _checkToken.apply(this, arguments); } return checkToken; }() /** * 获取主题回复 * @param topicId 主题 ID * @param page 页码 */ ) }, { key: "getReplies", value: (function () { var _getReplies = V2ex_asyncToGenerator( /*#__PURE__*/V2ex_regeneratorRuntime().mark(function _callee2(topicId, page) { var result; return V2ex_regeneratorRuntime().wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: _context2.next = 2; return Request.get({ url: this.BASE_URL + 'topics/' + topicId + '/replies' + (page ? '?p=' + page : ''), dataType: HttpDataType.JSON, synchronous: true, headers: { 'Authorization': 'Bearer ' + JSON.parse(Store/* default */.A.get(Options/* default */.A.Keys.v2exToken)).value } }); case 2: result = _context2.sent; if (result['success']) { _context2.next = 6; break; } console.warn(Info.getName() + ":" + result['message']); return _context2.abrupt("return"); case 6: return _context2.abrupt("return", result['result']); case 7: case "end": return _context2.stop(); } }, _callee2, this); })); function getReplies(_x, _x2) { return _getReplies.apply(this, arguments); } return getReplies; }()) }]); }(); V2ex_defineProperty(V2ex, "BASE_URL", 'https://www.v2ex.com/api/v2/'); ;// CONCATENATED MODULE: ./v2ex-replies-pro/src/Replay.ts function Replay_typeof(o) { "@babel/helpers - typeof"; return Replay_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, Replay_typeof(o); } function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } function Replay_regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ Replay_regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == Replay_typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(Replay_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function Replay_asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function Replay_asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { Replay_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { Replay_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } function Replay_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function Replay_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, Replay_toPropertyKey(descriptor.key), descriptor); } } function Replay_createClass(Constructor, protoProps, staticProps) { if (protoProps) Replay_defineProperties(Constructor.prototype, protoProps); if (staticProps) Replay_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function Replay_toPropertyKey(t) { var i = Replay_toPrimitive(t, "string"); return "symbol" == Replay_typeof(i) ? i : i + ""; } function Replay_toPrimitive(t, r) { if ("object" != Replay_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != Replay_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } var Replay = /*#__PURE__*/function () { function Replay() { Replay_classCallCheck(this, Replay); } return Replay_createClass(Replay, null, [{ key: "run", value: function () { var _run = Replay_asyncToGenerator( /*#__PURE__*/Replay_regeneratorRuntime().mark(function _callee4() { var selector, $body, $head, $allReplies, $repliesNumber, $opUserName, repliesNumber, opUserName, replies, i, JsStore, loadWorkerScript, connection, _i, reply, replyId, created, created1, createdFormat, createdAgo, member, username, avatar, replyDivId, $replyDivId, $fade, fadeHtml, contentRendered, atSearchStartIndex, atSearchStr, atLinkIndex, atUsername, replaceStr, html, inserted, rows, _iterator, _step, row, showTaSay; return Replay_regeneratorRuntime().wrap(function _callee4$(_context4) { while (1) switch (_context4.prev = _context4.next) { case 0: if (!(location.href.indexOf('v2ex.com/t/') === -1)) { _context4.next = 2; break; } return _context4.abrupt("return"); case 2: _context4.next = 4; return V2ex.checkToken(); case 4: if (_context4.sent) { _context4.next = 6; break; } return _context4.abrupt("return"); case 6: selector = { // 回复列表 repliesBox: '#Main .box:eq(1)', // 所有回复 allReplies: '#Main .box:eq(1) .cell:not(:eq(0))', // 回复数 repliesNumber: '#Main .box:eq(1) .gray', // OP 名 opUserName: '.header .gray a:eq(0)', // @ 链接 atLink: '.at-link', // 右侧内容 taSay: '.ta-say' }, $body = $(document.body), $head = $(document.head), $allReplies = $(selector.allReplies), $repliesNumber = $(selector.repliesNumber), $opUserName = $(selector.opUserName); // 添加弹窗样式 $head.append("<style>\n .winbox".concat(selector.taSay, " {\n border-shadow: 0 14px 12px rgb(0 0 0 / 25%), 0 10px 10px rgb(0 0 0 / 22%) !important;\n }\n .winbox").concat(selector.taSay, " .wb-drag {\n background-color: #e2e2e2;\n color: #666;\n }\n </style>")); // 隐藏原回复 $allReplies.hide(); // 获取回复数 repliesNumber = $repliesNumber.text().substring(0, $repliesNumber.text().indexOf('条')); // 获取 OP 名 opUserName = $opUserName.text(); // 获取所有回复 replies = []; i = 1; case 13: if (!(i <= Math.ceil(Number(repliesNumber) / 20))) { _context4.next = 25; break; } _context4.t0 = replies.push; _context4.t1 = replies; _context4.t2 = _toConsumableArray; _context4.next = 19; return V2ex.getReplies(topicId, i); case 19: _context4.t3 = _context4.sent; _context4.t4 = (0, _context4.t2)(_context4.t3); _context4.t0.apply.call(_context4.t0, _context4.t1, _context4.t4); case 22: i++; _context4.next = 13; break; case 25: (function () { "use strict"; var e = { d: function d(t, n) { for (var o in n) e.o(n, o) && !e.o(t, o) && Object.defineProperty(t, o, { enumerable: !0, get: n[o] }); }, o: function o(e, t) { return Object.prototype.hasOwnProperty.call(e, t); }, r: function r(e) { "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e, "__esModule", { value: !0 }); } }, t = {}; e.r(t), e.d(t, { API: function API() { return r; }, CONNECTION_STATUS: function CONNECTION_STATUS() { return p; }, Connection: function Connection() { return b; }, DATA_TYPE: function DATA_TYPE() { return o; }, ERROR_TYPE: function ERROR_TYPE() { return l; }, EVENT: function EVENT() { return i; }, IDB_MODE: function IDB_MODE() { return u; }, OCCURENCE: function OCCURENCE() { return a; }, QUERY_OPTION: function QUERY_OPTION() { return s; }, WORKER_STATUS: function WORKER_STATUS() { return n; }, forObj: function forObj() { return q; }, promise: function promise() { return d; }, promiseAll: function promiseAll() { return v; }, promiseResolve: function promiseResolve() { return f; } }); var n, o, r, i, s, u, a, p, c = function () { function e(e, t) { this.type = e, this._info = t, this.message = this.getMsg(); } return e.prototype["throw"] = function () { throw this; }, e.prototype.log = function (e) { this.status && console.log(e); }, e.prototype.logError = function () { console.error(this.get()); }, e.prototype.logWarning = function () { console.warn(this.get()); }, e.prototype.get = function () { return { message: this.message, type: this.type }; }, e.prototype.getMsg = function () { return this.type, this.message; }, e; }(), l = { InvalidUpdateColumn: "invalid_update_column", UndefinedColumn: "undefined_column", UndefinedValue: "undefined_value", UndefinedColumnName: "undefined_column_name", UndefinedDbName: "undefined_database_name", UndefinedColumnValue: "undefined_column_value", NotArray: "not_array", NoValueSupplied: "no_value_supplied", ColumnNotExist: "column_not_exist", NoIndexFound: "no_index_found", InvalidOp: "invalid_operator", NullValue: "null_value", WrongDataType: "wrong_data_type", TableNotExist: "table_not_exist", DbNotExist: "db_not_exist", ConnectionAborted: "connection_aborted", ConnectionClosed: "connection_closed", NotObject: "not_object", InvalidConfig: "invalid_config", DbBlocked: "Db_blocked", IndexedDbNotSupported: "indexeddb_not_supported", NullValueInWhere: "null_value_in_where", InvalidJoinQuery: "invalid_join_query", InvalidQuery: "invalid_query", ImportScriptsFailed: "import_scripts_failed", MethodNotExist: "method_not_exist", Unknown: "unknown", InvalidMiddleware: "invalid_middleware" }; (function (e) { e.Registered = "registerd", e.Failed = "failed", e.NotStarted = "not_started"; })(n || (n = {})), function (e) { e.String = "string", e.Object = "object", e.Array = "array", e.Number = "number", e.Boolean = "boolean", e.Null = "null", e.DateTime = "date_time"; }(o || (o = {})), function (e) { e.InitDb = "init_db", e.MapGet = "map_get", e.MapSet = "map_set", e.MapHas = "map_has", e.MapDelete = "map_delete", e.Select = "select", e.Insert = "insert", e.Update = "update", e.Remove = "remove", e.OpenDb = "open_db", e.Clear = "clear", e.DropDb = "drop_db", e.Count = "count", e.ChangeLogStatus = "change_log_status", e.Terminate = "terminate", e.Transaction = "transaction", e.CloseDb = "close_db", e.Union = "union", e.Intersect = "intersect", e.ImportScripts = "import_scripts", e.Middleware = "middleware"; }(r || (r = {})), function (e) { e.RequestQueueEmpty = "requestQueueEmpty", e.RequestQueueFilled = "requestQueueFilled", e.Upgrade = "upgrade", e.Create = "create", e.Open = "open"; }(i || (i = {})), function (e) { e.Where = "where", e.Like = "like", e.Regex = "regex", e.In = "in", e.Equal = "=", e.Between = "-", e.GreaterThan = ">", e.LessThan = "<", e.GreaterThanEqualTo = ">=", e.LessThanEqualTo = "<=", e.NotEqualTo = "!=", e.Aggregate = "aggregate", e.Max = "max", e.Min = "min", e.Avg = "avg", e.Count = "count", e.Sum = "sum", e.List = "list", e.Or = "or", e.Skip = "skip", e.Limit = "limit", e.And = "and", e.IgnoreCase = "ignoreCase", e.Then = "then"; }(s || (s = {})), function (e) { e.ReadOnly = "readonly", e.ReadWrite = "readwrite"; }(u || (u = {})), function (e) { e.First = "f", e.Last = "l", e.Any = "a"; }(a || (a = {})), function (e) { e.Connected = "connected", e.Closed = "closed", e.NotStarted = "not_started", e.UnableToStart = "unable_to_start", e.ClosedByJsStore = "closed_by_jsstore"; }(p || (p = {})); var _h, d = function d(e) { return new Promise(e); }, f = function f(e) { return Promise.resolve(e); }, _ = function () { function e(e) { this._events = {}, this._ctx = e; } return e.prototype.on = function (e, t) { return null == this._events[e] && (this._events[e] = []), this._events[e].push(t), this; }, e.prototype.off = function (e, t) { if (this._events[e]) if (t) { var n = this._events[e].indexOf(t); this._events[e].splice(n, 1); } else this._events[e] = []; }, e.prototype.emit = function (e) { for (var t = this, n = [], o = 1; o < arguments.length; o++) n[o - 1] = arguments[o]; var r = this._events[e] || [], i = 0, s = r.length, u = []; return new Promise(function (e) { var o = function o() { i < s ? function () { var e = r[i++]; if (e) { var o = e.call.apply(e, function (e, t, n) { if (n || 2 === arguments.length) for (var o, r = 0, i = t.length; r < i; r++) !o && r in t || (o || (o = Array.prototype.slice.call(t, 0, r)), o[r] = t[r]); return e.concat(o || Array.prototype.slice.call(t)); }([t._ctx], n, !1)); return o && o.then ? o : Promise.resolve(o); } }().then(function (e) { u.push(e), o(); }) : e(u); }; o(); }); }, e.prototype.destroy = function () { this._events = null, this._ctx = null; }, e; }(), y = function () { function e(e) { this.isConOpened_ = !1, this.isDbIdle_ = !0, this.requestQueue_ = [], this.isCodeExecuting_ = !1, this.inactivityTimer_ = -1e3, this.middlewares = [], this.eventBus_ = new _(this), this.whiteListApi_ = [r.InitDb, r.OpenDb, r.MapGet, r.MapSet, r.MapHas, r.MapDelete, r.ChangeLogStatus, r.Terminate, r.DropDb], this.isWorker = !0, this.logger = new c(null), e ? (this.worker_ = e, this.worker_.onmessage = this.onMessageFromWorker_.bind(this)) : (this.isWorker = !1, this.initQueryManager_()); } return Object.defineProperty(e.prototype, "jsstoreWorker", { get: function get() { return this.$worker || self.JsStoreWorker; }, enumerable: !1, configurable: !0 }), e.prototype.initQueryManager_ = function () { var e = this.jsstoreWorker; e && (this.queryManager = new e.QueryManager(this.processFinishedQuery_.bind(this))); }, e.prototype.onMessageFromWorker_ = function (e) { this.processFinishedQuery_(e.data); }, e.prototype.processFinishedQuery_ = function (e) { var t = this.requestQueue_.shift(); if (t) { if (this.logger.log("request ".concat(t.name, " finished")), e.error) t.onError(e.error);else { switch (t.name) { case r.OpenDb: case r.InitDb: this.isConOpened_ = !0; break; case r.Terminate: this.isConOpened_ = !1, !0 === this.isWorker && this.worker_.terminate(); case r.DropDb: this.isConOpened_ = !1, this.requestQueue_ = [], this.isDbIdle_ = !0; break; case r.CloseDb: this.isDbIdle_ = !0, this.eventBus_.emit(i.RequestQueueEmpty, []), this.requestQueue_.length > 0 && this.openDb_(!1); } t.onSuccess(e.result); } this.isCodeExecuting_ = !1, this.executeQry_(); } }, e.prototype.openDb_ = function (e) { void 0 === e && (e = !0); var t = { name: r.OpenDb, query: { name: this.database.name, version: this.database.version }, onSuccess: function onSuccess() {}, onError: function onError(e) { console.error(e); } }; e ? this.prcoessExecutionOfQry_(t, 0) : this.requestQueue_.splice(0, 0, t); }, e.prototype.executeMiddleware_ = function (e) { var t = this; return d(function (n) { var o = 0, r = t.middlewares.length - 1, i = function i() { if (o <= r) { var s = t.middlewares[o++](e); s && s.then || (s = f(s)), s.then(function (e) { i(); }); } else n(); }; i(); }); }, e.prototype.callResultMiddleware = function (e, t) { return d(function (n) { var o = 0, r = e.length - 1, i = function i() { if (o <= r) { var s = e[o++](t); s.then || (s = f(s)), s.then(function (e) { t = e, i(); }); } else n(t); }; i(); }); }, e.prototype.pushApi = function (e) { var t = this; return new Promise(function (n, o) { var s = []; e.onResult = function (e) { s.push(function (t) { return e(t); }); }, t.executeMiddleware_(e).then(function () { e.onSuccess = function (o) { t.callResultMiddleware(s, o).then(function (e) { n(e); })["catch"](function (t) { e.onError(t); }); }, e.onError = function (e) { s = [], o(e); }, 0 === t.requestQueue_.length && (t.eventBus_.emit(i.RequestQueueFilled, []), t.isDbIdle_ && t.isConOpened_ && ([r.InitDb, r.CloseDb, r.DropDb, r.OpenDb, r.Terminate].indexOf(e.name) >= 0 || t.openDb_()), clearTimeout(t.inactivityTimer_)), t.prcoessExecutionOfQry_(e); })["catch"](o); }); }, e.prototype.prcoessExecutionOfQry_ = function (e, t) { this.isDbIdle_ = !1, null != t ? this.requestQueue_.splice(t, 0, e) : this.requestQueue_.push(e), this.logger.log("request pushed: " + e.name), this.executeQry_(); }, e.prototype.executeQry_ = function () { var e = this, t = this.requestQueue_.length; if (!this.isCodeExecuting_ && t > 0) { if (!0 === this.isConOpened_) return void this.sendRequestToWorker_(this.requestQueue_[0]); var n = this.requestQueue_.findIndex(function (t) { return e.whiteListApi_.indexOf(t.name) >= 0; }); n >= 0 && (this.requestQueue_.splice(0, 0, this.requestQueue_.splice(n, 1)[0]), this.sendRequestToWorker_(this.requestQueue_[0])); } else 0 === t && !1 === this.isDbIdle_ && this.isConOpened_ && (this.inactivityTimer_ = setTimeout(function () { e.prcoessExecutionOfQry_({ name: r.CloseDb, onSuccess: function onSuccess() {}, onError: function onError(e) { console.error(e); } }); }, 100)); }, e.prototype.sendRequestToWorker_ = function (e) { this.isCodeExecuting_ = !0, this.logger.log("request executing: " + e.name); var t = { name: e.name, query: e.query }; !0 === this.isWorker ? this.worker_.postMessage(t) : this.queryManager.run(t); }, e; }(), m = function () { function e(e) { this.con = e; } return e.prototype.get = function (e) { return this.con.pushApi({ name: r.MapGet, query: e }); }, e.prototype.has = function (e) { return this.con.pushApi({ name: r.MapHas, query: e }); }, e.prototype.set = function (e, t) { return this.con.pushApi({ name: r.MapSet, query: { key: e, value: t } }); }, e.prototype["delete"] = function (e) { return this.con.pushApi({ name: r.MapDelete, query: e }); }, e; }(), g = (_h = function h(e, t) { return _h = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t; } || function (e, t) { for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]); }, _h(e, t); }, function (e, t) { if ("function" != typeof t && null !== t) throw new TypeError("Class extends value " + String(t) + " is not a constructor or null"); function n() { this.constructor = e; } _h(e, t), e.prototype = null === t ? Object.create(t) : (n.prototype = t.prototype, new n()); }), b = function (e) { function t(t) { var n = e.call(this, t) || this; return n.Map = new m(n), n; } return g(t, e), t.prototype.initDb = function (e) { var t = this; return this.database = e, this.pushApi({ name: r.InitDb, query: e }).then(function (e) { var n, o = e.database; return e.isCreated && (n = e.oldVersion ? t.eventBus_.emit(i.Upgrade, o, e.oldVersion, e.newVersion) : t.eventBus_.emit(i.Create, o)), (n || f()).then(function (e) { return t.eventBus_.emit(i.Open, o); }).then(function (t) { return e.isCreated; }); }); }, t.prototype.dropDb = function () { return this.pushApi({ name: r.DropDb }); }, t.prototype.select = function (e) { return this.pushApi({ name: r.Select, query: e }); }, t.prototype.count = function (e) { return this.pushApi({ name: r.Count, query: e }); }, t.prototype.insert = function (e) { return this.pushApi({ name: r.Insert, query: e }); }, t.prototype.update = function (e) { return this.pushApi({ name: r.Update, query: e }); }, t.prototype.remove = function (e) { return this.pushApi({ name: r.Remove, query: e }); }, t.prototype.clear = function (e) { return this.pushApi({ name: r.Clear, query: e }); }, Object.defineProperty(t.prototype, "logStatus", { set: function set(e) { this.logger.status = e, this.pushApi({ name: r.ChangeLogStatus, query: e }); }, enumerable: !1, configurable: !0 }), t.prototype.openDb = function (e, t) { var n = this; return this.pushApi({ name: r.OpenDb, query: { version: t, name: e } }).then(function (e) { return n.database = e, e; }); }, t.prototype.getDbList = function () { return console.warn("Api getDbList is recommended to use for debugging only. Do not use in code."), indexedDB.databases(); }, t.prototype.get = function (e) { return console.warn("This API is obsolete, please use Map"), this.Map.get(e); }, t.prototype.set = function (e, t) { return console.warn("This API is obsolete, please use Map"), this.Map.set(e, t); }, t.prototype.terminate = function () { return this.pushApi({ name: r.Terminate }); }, t.prototype.transaction = function (e) { return this.pushApi({ name: r.Transaction, query: e }); }, t.prototype.on = function (e, t) { this.eventBus_.on(e, t); }, t.prototype.off = function (e, t) { this.eventBus_.off(e, t); }, t.prototype.union = function (e) { return this.pushApi({ name: r.Union, query: e }); }, t.prototype.intersect = function (e) { return this.pushApi({ name: r.Intersect, query: e }); }, t.prototype.addPlugin = function (e, t) { return e.setup(this, t); }, t.prototype.addMiddleware = function (e, t) { return t ? this.pushApi({ name: r.Middleware, query: e }) : (this.middlewares.push(e), Promise.resolve()); }, t.prototype.importScripts = function () { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]; return this.pushApi({ name: r.ImportScripts, query: e }); }, t; }(y), v = function v(e) { return Promise.all(e); }, q = function q(e, t) { for (var n in e) t(n, e[n]); }; JsStore = t; })(); /** * 加载 JsStore Worker 脚本为 blob URL */ loadWorkerScript = /*#__PURE__*/function () { var _ref = Replay_asyncToGenerator( /*#__PURE__*/Replay_regeneratorRuntime().mark(function _callee() { return Replay_regeneratorRuntime().wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: return _context.abrupt("return", new Promise(function (resolve, reject) { var xhr = new XMLHttpRequest(); xhr.open('GET', 'https://cdn.jsdelivr.net/npm/jsstore/dist/jsstore.worker.min.js', true); xhr.responseType = 'blob'; xhr.onload = function () { if (this.status === 200) { resolve(URL.createObjectURL(this.response)); } else { reject(new Error('Failed to load worker script')); } }; xhr.send(); })); case 1: case "end": return _context.stop(); } }, _callee); })); return function loadWorkerScript() { return _ref.apply(this, arguments); }; }(); // 使用 Blob URL 创建 Worker _context4.t5 = JsStore.Connection; _context4.t6 = Worker; _context4.next = 31; return loadWorkerScript(); case 31: _context4.t7 = _context4.sent; _context4.t8 = new _context4.t6(_context4.t7); connection = new _context4.t5(_context4.t8); _context4.next = 36; return connection.initDb({ name: 'v2ex-replies-pro', tables: [{ name: 'rendered_replies', columns: { replyId: { primaryKey: true, dataType: 'number' }, username: { dataType: 'string' }, created: { dataType: 'number' }, html: { dataType: 'string' }, contentRendered: { dataType: 'string' } } }] }); case 36: _context4.next = 38; return connection.clear('rendered_replies'); case 38: _i = 0; case 39: if (!(_i < replies.length)) { _context4.next = 61; break; } reply = replies[_i], replyId = reply.id, created = reply.created, created1 = Number(created + '000'), createdFormat = moment(created1).format('YYYY-MM-DD HH:mm:ss'), createdAgo = moment(created1).fromNow(), member = reply.member, username = member.username, avatar = member.avatar, replyDivId = 'r_' + replyId, $replyDivId = $('#' + replyDivId), $fade = $replyDivId.find('.fade'), fadeHtml = $fade.length === 0 ? '' : $fade.prop('outerHTML'); // 删除原回复 $replyDivId.remove(); contentRendered = reply.content_rendered, atSearchStartIndex = 0; // 可能会 @ 多个人 atSearchStr = '@<a href=\"/member/'; case 44: if (false) {} atLinkIndex = contentRendered.indexOf(atSearchStr, atSearchStartIndex); if (!(atLinkIndex === -1)) { _context4.next = 48; break; } return _context4.abrupt("break", 54); case 48: // 获取 @ 的用户名 atUsername = contentRendered.substring(atLinkIndex + atSearchStr.length, contentRendered.indexOf('">', atLinkIndex)); // 回复内容,其中 @ 链接添加了 class 和 @ 的用户名传递 replaceStr = "@<a class=\"".concat(selector.atLink.substring(1), "\" data-reply-div-id=\"").concat(replyDivId, "\" data-username=\"").concat(atUsername, "\" data-created=\"").concat(created, "\" onclick=\"return false;\" href=\"/member/").concat(atUsername); contentRendered = contentRendered.replaceAll("@<a href=\"/member/".concat(atUsername), replaceStr); atSearchStartIndex = atLinkIndex + replaceStr.length; _context4.next = 44; break; case 54: html = "\n <!-- \u6B64\u5904\u7684 style \u4E3A\u6A21\u4EFF .cell \u6837\u5F0F -->\n <div id=\"".concat(replyDivId, "\" style=\"font-size: 14px; line-height: 150%; border-bottom: 1px solid #e2e2e2\">\n <div style=\"display: flex;\">\n <div style=\"display: flex; flex-direction: column; align-items: center; background-color: #fafbfc; padding: 12px 0 10px 0\">\n ").concat(username === opUserName ? "\n <div style=\"height: 0\">\n <div style=\"position: relative; left: 44px; top: -12px; background-image: linear-gradient(225deg, #558bf6 23px, #fafbfc 0); width: 32px; height: 32px;\">\n <div class=\"badges\" style=\"color: white; transform: rotate(45deg); position: relative; top: -1px; right: -5px\">OP</div>\n </div>\n </div>\n " : '', "\n <img src=\"").concat(avatar, "\" class=\"avatar\" alt=\"").concat(username, "\" style=\"width: 48px\">\n <div style=\"width: 120px;\">\n <a href=\"/member/").concat(username, "\" class=\"dark\">").concat(username, "</a>\n </div>\n </div>\n <div style=\"padding: 10px 10px 10px 12px; width: 100%\">\n <div style=\"display: flex; justify-content: space-between\">\n <div>\n <span class=\"ago\" title=\"").concat(createdFormat, "\">").concat(createdAgo, "</span> ").concat(fadeHtml, "\n </div>\n <div>\n <!-- \u6B64\u5904\u4E3A\u539F\u5185\u5BB9\u4FDD\u6301\u4E0D\u53D8 -->\n <div id=\"thank_area_").concat(replyId, "\" class=\"thank_area\"><a href=\"#;\" onclick=\"if (confirm('\u786E\u8BA4\u8981\u4E0D\u518D\u663E\u793A\u6765\u81EA @").concat(username, " \u7684\u8FD9\u6761\u56DE\u590D\uFF1F')) { ignoreReply(").concat(replyId, ", ").concat(once, "); }\" class=\"thank\" style=\"color: #ccc;\">\u9690\u85CF</a> <a href=\"#;\" onclick=\"if (confirm('\u786E\u8BA4\u82B1\u8D39 10 \u4E2A\u94DC\u5E01\u5411 @").concat(username, " \u7684\u8FD9\u6761\u56DE\u590D\u53D1\u9001\u611F\u8C22\uFF1F')) { thankReply(").concat(replyId, "); }\" class=\"thank\">\u611F\u8C22\u56DE\u590D\u8005</a></div> <a href=\"#;\" onclick=\"replyOne('").concat(username, "');\"><img src=\"/static/img/reply_neue.png\" align=\"absmiddle\" border=\"0\" alt=\"Reply\" width=\"20\"></a> <span class=\"no\">1</span>\n </div>\n </div>\n <div style=\"text-align: left\">\n <span>").concat(contentRendered, "</span>\n </div>\n </div>\n </div>\n </div>\n "); // 保存已渲染的回复 _context4.next = 57; return connection.insert({ into: 'rendered_replies', validation: false, skipDataCheck: false, values: [{ replyId: replyId, username: username, created: created, html: html, contentRendered: contentRendered }] }); case 57: inserted = _context4.sent; case 58: _i++; _context4.next = 39; break; case 61: _context4.next = 63; return connection.select({ from: 'rendered_replies', order: { by: 'created', type: 'asc' } }); case 63: rows = _context4.sent; _iterator = _createForOfIteratorHelper(rows); try { for (_iterator.s(); !(_step = _iterator.n()).done;) { row = _step.value; $(selector.repliesBox).append(row.html); } // 给 @ 链接添加点击事件 } catch (err) { _iterator.e(err); } finally { _iterator.f(); } $body.on('click', selector.atLink, /*#__PURE__*/Replay_asyncToGenerator( /*#__PURE__*/Replay_regeneratorRuntime().mark(function _callee2() { var $this; return Replay_regeneratorRuntime().wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: $this = $(this); _context2.next = 3; return showTaSay(connection, $this.data('replyDivId'), $this.data('username'), $this.data('created')); case 3: case "end": return _context2.stop(); } }, _callee2, this); }))); // endregion /** * 展示 TA 说了什么 * @param connection 数据库连接 * @param replyDivId 回复的 div id * @param username 用户名 * @param created 创建时间 */ showTaSay = /*#__PURE__*/function () { var _ref3 = Replay_asyncToGenerator( /*#__PURE__*/Replay_regeneratorRuntime().mark(function _callee3(connection, replyDivId, username, created) { var $reply, html, isGeByPrev, isHighlighted, rows, _i2, row, borderStyle; return Replay_regeneratorRuntime().wrap(function _callee3$(_context3) { while (1) switch (_context3.prev = _context3.next) { case 0: // 关闭弹窗 if (Replay.winbox) { Replay.winbox.close(); } // 高亮点击 @ 链接的那条回复 $reply = $('#' + replyDivId); $reply.css('border', '2px solid'); // 跳转到高亮回复 $('html,body').animate({ scrollTop: $reply.offset().top - $(window).height() / 2 }, 500); html = '', isGeByPrev = true, isHighlighted = false; _context3.next = 7; return connection.select({ from: 'rendered_replies', where: { username: username } }); case 7: rows = _context3.sent; for (_i2 = 0; _i2 < rows.length; _i2++) { row = rows[_i2]; borderStyle = 'border-bottom: 1px solid #e2e2e2;'; // 在点击回复所在位置高亮 if (!(created > row.created) && isGeByPrev) { borderStyle += 'border-top: 2px solid'; isHighlighted = true; } else if (_i2 === rows.length - 1 && !isHighlighted) { borderStyle = 'border-bottom: 2px solid'; } html += "\n <div style=\"".concat(borderStyle, "\">\n ").concat($(row.html).find('.ago').parent().prop('outerHTML'), "\n <div style=\"padding-bottom: 5px\">").concat(row.contentRendered, "</div>\n </div>\n "); // 当前条是否为之前的回复,用于下一条判断是否需要高亮 isGeByPrev = created > row.created; } Replay.winbox = new WinBox({ "class": selector.taSay.substring(1), title: username + ' 说了什么?', x: localStorage.getItem('ta_say_x') || 'right', y: localStorage.getItem('ta_say_y') || 'bottom', width: localStorage.getItem('ta_say_width') || '540px', height: localStorage.getItem('ta_say_height') || '70%', html: "<div style=\"padding: 10px; font-size: 14px\">".concat(html, "</div>"), onresize: function onresize(width, height) { // 改变窗口大小时记录窗口大小 localStorage.setItem('ta_say_width', width + 'px'); localStorage.setItem('ta_say_height', height + 'px'); }, onmove: function onmove(x, y) { // 移动窗口时记录窗口位置 localStorage.setItem('ta_say_x', x); localStorage.setItem('ta_say_y', y); }, onclose: function onclose() { // 关闭弹窗时取消回复高亮 $reply.css('border', 'none'); $reply.css('border-bottom', '1px solid #e2e2e2'); Replay.winbox = null; } }); case 10: case "end": return _context3.stop(); } }, _callee3); })); return function showTaSay(_x, _x2, _x3, _x4) { return _ref3.apply(this, arguments); }; }(); case 68: case "end": return _context4.stop(); } }, _callee4); })); function run() { return _run.apply(this, arguments); } return run; }() }]); }(); /***/ }), /***/ 423: /***/ ((__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) => { /* harmony import */ var _Replay__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(922); /* harmony import */ var _Options__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(952); function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } // ==UserScript== // @name V2EX 主题回复增强 // @namespace http://tampermonkey.net/ // @version 0.0.5 // @description 增强 V2EX 主题的回复。 // @author duanluan // @copyright 2022, duanluan (https://github.com/duanluan) // @license Apache-2.0; https://www.apache.org/licenses/LICENSE-2.0.txt // @match *://*.v2ex.com/* // @require https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js // @require https://cdn.bootcdn.net/ajax/libs/moment.js/2.29.4/moment-with-locales.min.js // @require https://cdn.bootcdn.net/ajax/libs/moment.js/2.29.4/locale/zh-cn.min.js // @require https://cdn.jsdelivr.net/npm/[email protected]/dist/winbox.bundle.min.js // @resource css https://cdn.bootcdn.net/ajax/libs/layer/3.5.1/theme/default/layer.min.css // @require https://cdn.bootcdn.net/ajax/libs/layer/3.5.1/layer.min.js // @grant GM_xmlhttpRequest // @grant GM_getValue // @grant GM_setValue // @grant GM_registerMenuCommand // @grant GM_unregisterMenuCommand // @grant GM_getResourceText // @grant GM_addStyle // ==/UserScript== // ==OpenUserJS== // @author duanluan // ==/OpenUserJS== _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { 'use strict'; // 加载 CSS return _regeneratorRuntime().wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: GM_addStyle(GM_getResourceText('css')); // 设置 layer 图标 $(document.head).append("<style>\n .layui-layer-ico{background:url('https://cdn.bootcdn.net/ajax/libs/layer/3.5.1/theme/default/icon.png') no-repeat}\n /* \u539F\u6837\u5F0F\u4E0D\u77E5\u4E3A\u4F55\u4F1A\u5931\u6548\uFF0C\u5BFC\u81F4 icon \u8BBE\u7F6E\u65E0\u6548 */\n .layui-layer-ico1{background-position:-30px 0}\n .layui-layer-ico2{background-position:-60px 0}\n .layui-layer-ico3{background-position:-90px 0}\n .layui-layer-ico4{background-position:-120px 0}\n .layui-layer-ico5{background-position:-150px 0}\n .layui-layer-ico6{background-position:-180px 0}\n </style>"); _Options__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.registerAll(); _Options__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.loadInV2ex(); _Replay__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.run(); case 5: case "end": return _context.stop(); } }, _callee); }))(); /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /******/ /* webpack/runtime/define property getters */ /******/ (() => { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = (exports, definition) => { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) /******/ })(); /******/ /************************************************************************/ /******/ /******/ // startup /******/ // Load entry module and return exports /******/ // This entry module is referenced by other modules so it can't be inlined /******/ __webpack_require__(922); /******/ __webpack_require__(952); /******/ var __webpack_exports__ = __webpack_require__(423); /******/ /******/ })() ; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBRkEsSUFHcUJBLEtBQUs7RUFBQSxTQUFBQSxNQUFBO0lBQUFDLGVBQUEsT0FBQUQsS0FBQTtFQUFBO0VBQUEsT0FBQUUsWUFBQSxDQUFBRixLQUFBO0lBQUFHLEdBQUE7SUFBQUMsS0FBQTtJQUV4QjtBQUNGO0FBQ0E7QUFDQTtJQUNFLFNBQUFDLElBQVdGLEdBQVcsRUFBTztNQUMzQixPQUFPRyxXQUFXLENBQUNILEdBQUcsQ0FBQztJQUN6Qjs7SUFFQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0VBSkU7SUFBQUEsR0FBQTtJQUFBQyxLQUFBLEVBS0EsU0FBQUcsSUFBV0osR0FBVyxFQUFFQyxLQUFVLEVBQUU7TUFDbENJLFdBQVcsQ0FBQ0wsR0FBRyxFQUFFQyxLQUFLLENBQUM7SUFDekI7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BCSDtBQUNBO0FBQ0E7QUFGQSxJQUdxQk0sT0FBTztFQUFBLFNBQUFBLFFBQUE7SUFBQVQsZUFBQSxPQUFBUyxPQUFBO0VBQUE7RUFBQSxPQUFBUixZQUFBLENBQUFRLE9BQUE7SUFBQVAsR0FBQTtJQUFBQyxLQUFBO0lBRTFCO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7SUFDRSxTQUFBTyxTQUFnQkMsSUFBWSxFQUFFQyxFQUFjLEVBQVU7TUFDcEQsT0FBT0Msc0JBQXNCLENBQUNGLElBQUksRUFBRUMsRUFBRSxDQUFDO0lBQ3pDOztJQUVBO0FBQ0Y7QUFDQTtBQUNBO0VBSEU7SUFBQVYsR0FBQTtJQUFBQyxLQUFBLEVBSUEsU0FBQVcsV0FBa0JDLFNBQWlCLEVBQUU7TUFDbkNDLHdCQUF3QixDQUFDRCxTQUFTLENBQUM7SUFDckM7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7QUNwQmlDO0FBQ0k7O0FBRXhDO0FBQ0E7QUFDQTtBQUZBLElBR3FCRSxhQUFhO0VBQUEsU0FBQUEsY0FBQTtJQUFBakIsNEJBQUEsT0FBQWlCLGFBQUE7RUFBQTtFQUFBLE9BQUFoQix5QkFBQSxDQUFBZ0IsYUFBQTtJQUFBZixHQUFBO0lBQUFDLEtBQUE7SUFFaEM7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTs7SUFFQTtBQUNGO0FBQ0E7QUFDQTtJQUNFLFNBQUFlLG1CQUEwQkMsTUFBVyxFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUNyQyxJQUFNQyxHQUFHLEdBQUdGLE1BQU0sQ0FBQ2hCLEtBQUs7UUFBRW1CLFNBQVMsR0FBSSxPQUFPRCxHQUFHLEtBQUssU0FBVTtNQUVoRSxJQUFJLENBQUNDLFNBQVMsRUFBRTtRQUNkO01BQ0Y7TUFDQTtNQUNBLElBQU1DLGdCQUFnQixHQUFHZCxPQUFPLENBQUNDLFFBQVEsQ0FBQyxDQUFDVyxHQUFHLEdBQUcsS0FBSyxHQUFHLEtBQUssSUFBSUYsTUFBTSxDQUFDSyxLQUFLLEVBQUUsWUFBTTtRQUNwRjtRQUNBTCxNQUFNLENBQUNoQixLQUFLLEdBQUcsQ0FBQ2dCLE1BQU0sQ0FBQ2hCLEtBQUs7UUFDNUJKLG9CQUFLLENBQUNPLEdBQUcsQ0FBQ2EsTUFBTSxDQUFDUixJQUFJLEVBQUVjLElBQUksQ0FBQ0MsU0FBUyxDQUFDUCxNQUFNLENBQUMsQ0FBQzs7UUFFOUM7UUFDQVYsT0FBTyxDQUFDSyxVQUFVLENBQUNTLGdCQUFnQixDQUFDO1FBQ3BDO1FBQ0FILEtBQUksQ0FBQ0Ysa0JBQWtCLENBQUNDLE1BQU0sQ0FBQztRQUMvQjtRQUNBUSxNQUFNLENBQUNDLFFBQVEsQ0FBQ0MsTUFBTSxDQUFDLENBQUM7TUFDMUIsQ0FBQyxDQUFDOztNQUVGO01BQ0FWLE1BQU0sQ0FBQ0osU0FBUyxHQUFHUSxnQkFBZ0I7TUFDbkN4QixvQkFBSyxDQUFDTyxHQUFHLENBQUNhLE1BQU0sQ0FBQ1IsSUFBSSxFQUFFYyxJQUFJLENBQUNDLFNBQVMsQ0FBQ1AsTUFBTSxDQUFDLENBQUM7SUFDaEQ7O0lBRUE7QUFDRjtBQUNBO0FBQ0E7QUFDQTtFQUpFO0lBQUFqQixHQUFBO0lBQUFDLEtBQUEsRUFLQSxTQUFBMkIsWUFBbUJDLEdBQVcsRUFBRUMsT0FBYyxFQUFFO01BQzlDdkIsT0FBTyxDQUFDQyxRQUFRLENBQUMsTUFBTSxFQUFFLFlBQU07UUFDN0JpQixNQUFNLENBQUNNLElBQUksQ0FBQ0YsR0FBRyxFQUFFLFFBQVEsQ0FBQztNQUM1QixDQUFDLENBQUM7TUFBQyxJQUFBRyxTQUFBLEdBQUFDLDBCQUFBLENBRWtCSCxPQUFPO1FBQUFJLEtBQUE7TUFBQTtRQUE1QixLQUFBRixTQUFBLENBQUFHLENBQUEsTUFBQUQsS0FBQSxHQUFBRixTQUFBLENBQUFJLENBQUEsSUFBQUMsSUFBQSxHQUE4QjtVQUFBLElBQW5CcEIsTUFBTSxHQUFBaUIsS0FBQSxDQUFBakMsS0FBQTtVQUNmO1VBQ0E7O1VBRUEsSUFBSXFDLFdBQVcsR0FBR3pDLG9CQUFLLENBQUNLLEdBQUcsQ0FBQ2UsTUFBTSxDQUFDUixJQUFJLENBQUMsR0FBR2MsSUFBSSxDQUFDZ0IsS0FBSyxDQUFDMUMsb0JBQUssQ0FBQ0ssR0FBRyxDQUFDZSxNQUFNLENBQUNSLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSTtVQUNwRjtVQUNBLElBQUk2QixXQUFXLEtBQUssSUFBSSxJQUFJLENBQUNBLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSUEsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHckIsTUFBTSxDQUFDdUIsT0FBTyxFQUFFO1lBQzlGM0Msb0JBQUssQ0FBQ08sR0FBRyxDQUFDYSxNQUFNLENBQUNSLElBQUksRUFBRWMsSUFBSSxDQUFDQyxTQUFTLENBQUNQLE1BQU0sQ0FBQyxDQUFDO1lBQzlDcUIsV0FBVyxHQUFHckIsTUFBTTtVQUN0QjtVQUNBLElBQUksQ0FBQ0Qsa0JBQWtCLENBQUNzQixXQUFXLENBQUM7UUFDdEM7TUFBQyxTQUFBRyxHQUFBO1FBQUFULFNBQUEsQ0FBQVUsQ0FBQSxDQUFBRCxHQUFBO01BQUE7UUFBQVQsU0FBQSxDQUFBVyxDQUFBO01BQUE7SUFDSDs7SUFFQTtBQUNGO0FBQ0E7RUFGRTtJQUFBM0MsR0FBQTtJQUFBQyxLQUFBLEVBR0EsU0FBQTJDLGlCQUF3QkMsUUFBZ0IsRUFBRUMsbUJBQTZCLEVBQUU7TUFDdkUsSUFBSXBCLFFBQVEsQ0FBQ3FCLElBQUksS0FBSyxnQkFBZ0IsSUFBSXJCLFFBQVEsQ0FBQ3NCLElBQUksQ0FBQ0MsT0FBTyxDQUFDLFdBQVcsR0FBR0osUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7UUFDN0Y7TUFDRjtNQUNBLElBQU1LLFFBQVEsR0FBRztRQUNmQyxXQUFXLEVBQUUsZUFBZTtRQUM1QkMsYUFBYSxFQUFFLGlCQUFpQjtRQUNoQ0MsYUFBYSxFQUFFO01BQ2pCLENBQUM7TUFDRCxJQUFNQyxLQUFLLEdBQUdDLENBQUMsQ0FBQ0MsUUFBUSxDQUFDQyxJQUFJLENBQUM7UUFBRUMsWUFBWSxHQUFHSCxDQUFDLENBQUNMLFFBQVEsQ0FBQ0MsV0FBVyxDQUFDO1FBQUVRLGNBQWMsR0FBR0osQ0FBQyxDQUFDTCxRQUFRLENBQUNHLGFBQWEsQ0FBQzs7TUFFbEg7TUFDQUssWUFBWSxDQUFDRSxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUNDLEtBQUssdUZBQStELENBQUM7TUFDdkc7TUFDQVAsS0FBSyxDQUFDUSxFQUFFLENBQUMsT0FBTyxFQUFFWixRQUFRLENBQUNFLGFBQWEsRUFBRSxZQUFNO1FBQzlDO1FBQ0EsSUFBTVcsVUFBVSxHQUFHTCxZQUFZLENBQUNFLFFBQVEsQ0FBQyxZQUFZLENBQUM7UUFDdERHLFVBQVUsQ0FBQ0MsSUFBSSxjQUFBQyxNQUFBLENBQWF2QyxRQUFRLENBQUNzQixJQUFJLFNBQUFpQixNQUFBLENBQUtGLFVBQVUsQ0FBQ0csSUFBSSxDQUFDLENBQUMsU0FBTSxDQUFDO1FBQ3RFSCxVQUFVLENBQUNJLFdBQVcsQ0FBQyxTQUFTLENBQUM7O1FBRWpDO1FBQ0EsSUFBTUMsY0FBYyxHQUFHYixDQUFDLENBQUNMLFFBQVEsQ0FBQ0UsYUFBYSxDQUFDO1FBQ2hEZ0IsY0FBYyxDQUFDQyxNQUFNLENBQUMsQ0FBQyxDQUFDQyxRQUFRLENBQUMsU0FBUyxDQUFDO1FBRTNDeEIsbUJBQW1CLENBQUNhLGNBQWMsQ0FBQztNQUNyQyxDQUFDLENBQUM7SUFDSjtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7QUN6RzhDO0FBQ2I7QUFBQSxJQUVmWSxPQUFPO0VBQUEsU0FBQUEsUUFBQTtJQUFBekUsc0JBQUEsT0FBQXlFLE9BQUE7RUFBQTtFQUFBLE9BQUF4RSxtQkFBQSxDQUFBd0UsT0FBQTtJQUFBdkUsR0FBQTtJQUFBQyxLQUFBO0lBaUIxQjtBQUNGO0FBQ0E7SUFDRSxTQUFBMkIsWUFBQSxFQUFxQjtNQUNuQmIsYUFBYSxDQUFDYSxXQUFXLENBQUMsK0JBQStCLEVBQUUsSUFBSSxDQUFDRSxPQUFPLENBQUM7SUFDMUU7O0lBRUE7QUFDRjtBQUNBO0VBRkU7SUFBQTlCLEdBQUE7SUFBQUMsS0FBQSxFQUdBLFNBQUF1RSxXQUFBLEVBQW9CO01BQUEsSUFBQXRELEtBQUE7TUFDbEIsSUFBSVEsUUFBUSxDQUFDc0IsSUFBSSxDQUFDQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtRQUNwRDtNQUNGO01BQ0EsSUFBTUMsUUFBUSxHQUFHO1VBQ2J1QixPQUFPLEVBQUUsT0FBTztVQUNoQkMsY0FBYyxFQUFFLGVBQWU7VUFDL0J0QixhQUFhLEVBQUUsaUJBQWlCO1VBQ2hDQyxhQUFhLEVBQUUsWUFBWTtVQUUzQnNCLGNBQWMsRUFBRSx5QkFBeUI7VUFDekNDLGNBQWMsRUFBRTtRQUNsQixDQUFDO1FBQ0R0QixLQUFLLEdBQUdDLENBQUMsQ0FBQ0MsUUFBUSxDQUFDQyxJQUFJLENBQUM7UUFBRW9CLFFBQVEsR0FBR3RCLENBQUMsQ0FBQ0wsUUFBUSxDQUFDdUIsT0FBTyxDQUFDOztNQUUxRDtNQUNBSSxRQUFRLENBQUNSLE1BQU0sQ0FBQyxDQUFDLENBQUNTLE1BQU0sbUdBQXlFLENBQUM7TUFDbEc7TUFDQXhCLEtBQUssQ0FBQ1EsRUFBRSxDQUFDLE9BQU8sRUFBRVosUUFBUSxDQUFDRSxhQUFhLEVBQUUsWUFBTTtRQUM5QztRQUNBLElBQU0yQixlQUFlLEdBQUd4QixDQUFDLENBQUNMLFFBQVEsQ0FBQ3dCLGNBQWMsQ0FBQztRQUNsREssZUFBZSxDQUFDWixXQUFXLENBQUMsYUFBYSxDQUFDO1FBQzFDWSxlQUFlLENBQUNULFFBQVEsQ0FBQyxLQUFLLENBQUM7O1FBRS9CO1FBQ0EsSUFBTUYsY0FBYyxHQUFHYixDQUFDLENBQUNMLFFBQVEsQ0FBQ0UsYUFBYSxDQUFDO1FBQ2hEZ0IsY0FBYyxDQUFDRCxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQ2pDQyxjQUFjLENBQUNFLFFBQVEsQ0FBQyxhQUFhLENBQUM7O1FBRXRDO1FBQ0FmLENBQUMsQ0FBQ0wsUUFBUSxDQUFDRyxhQUFhLEdBQUcsWUFBWSxDQUFDLENBQUMyQixNQUFNLENBQUMsQ0FBQztRQUNqRHpCLENBQUMsQ0FBQ0wsUUFBUSxDQUFDRyxhQUFhLENBQUMsQ0FBQ3lCLE1BQU0sK2pCQUFBYixNQUFBLENBVXNDMUMsSUFBSSxDQUFDZ0IsS0FBSyxDQUFDMUMsb0JBQUssQ0FBQ0ssR0FBRyxDQUFDZ0IsS0FBSSxDQUFDK0QsSUFBSSxDQUFDQyxTQUFTLENBQUMsQ0FBQyxDQUFDakYsS0FBSyx5UEFRckgsQ0FBQztRQUVGcUQsS0FBSyxDQUFDUSxFQUFFLENBQUMsT0FBTyxFQUFFWixRQUFRLENBQUMwQixjQUFjLEVBQUUsWUFBTTtVQUMvQyxJQUFNTyxLQUFLLEdBQUc1QixDQUFDLENBQUNMLFFBQVEsQ0FBQ3lCLGNBQWMsQ0FBQyxDQUFDeEQsR0FBRyxDQUFDLENBQUM7VUFDOUN0QixvQkFBSyxDQUFDTyxHQUFHLENBQUNjLEtBQUksQ0FBQytELElBQUksQ0FBQ0MsU0FBUyxFQUFFM0QsSUFBSSxDQUFDQyxTQUFTLENBQUE0RCxhQUFBLENBQUFBLGFBQUEsS0FBSzdELElBQUksQ0FBQ2dCLEtBQUssQ0FBQzFDLG9CQUFLLENBQUNLLEdBQUcsQ0FBQ2dCLEtBQUksQ0FBQytELElBQUksQ0FBQ0MsU0FBUyxDQUFDLENBQUMsR0FBSztZQUFDakYsS0FBSyxFQUFFa0Y7VUFBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1VBQ2xIRSxLQUFLLENBQUNDLEdBQUcsQ0FBQyxNQUFNLENBQUM7VUFDakIsT0FBTyxLQUFLO1FBQ2QsQ0FBQyxDQUFDO01BQ0osQ0FBQyxDQUFDO0lBQ0o7RUFBQztBQUFBO0FBQUFDLFFBQUEsR0FyRmtCaEIsT0FBTztBQUUxQjtBQUNGO0FBQ0E7QUFGRWlCLGVBQUEsQ0FGbUJqQixPQUFPLFVBS1o7RUFDWlcsU0FBUyxFQUFFO0FBQ2IsQ0FBQztBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBSEVNLGVBQUEsQ0FUbUJqQixPQUFPLGFBYUMsQ0FDekI7RUFBQ2pELEtBQUssRUFBRSxZQUFZO0VBQUViLElBQUksRUFBRThFLFFBQUEsQ0FBS04sSUFBSSxDQUFDQyxTQUFTO0VBQUUxQyxPQUFPLEVBQUUsQ0FBQztFQUFFdkMsS0FBSyxFQUFFLEVBQUU7RUFBRVksU0FBUyxFQUFFO0FBQUksQ0FBQyxDQUN6Rjs7Ozs7Ozs7Ozs7Ozs7O0FDbEJJLElBQUs0RSxZQUFZLDBCQUFaQSxZQUFZO0VBQVpBLFlBQVk7RUFBQSxPQUFaQSxZQUFZO0FBQUE7OzsrQ0NDeEIscUpBQUFDLG1CQUFBLFlBQUFBLG9CQUFBLFdBQUFoRCxDQUFBLFNBQUFpRCxDQUFBLEVBQUFqRCxDQUFBLE9BQUFrRCxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsU0FBQSxFQUFBMUQsQ0FBQSxHQUFBd0QsQ0FBQSxDQUFBRyxjQUFBLEVBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBSSxjQUFBLGNBQUFOLENBQUEsRUFBQWpELENBQUEsRUFBQWtELENBQUEsSUFBQUQsQ0FBQSxDQUFBakQsQ0FBQSxJQUFBa0QsQ0FBQSxDQUFBM0YsS0FBQSxLQUFBaUcsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssYUFBQSx1QkFBQUMsQ0FBQSxHQUFBTixDQUFBLENBQUFPLFdBQUEsOEJBQUFDLE9BQUFmLENBQUEsRUFBQWpELENBQUEsRUFBQWtELENBQUEsV0FBQUMsTUFBQSxDQUFBSSxjQUFBLENBQUFOLENBQUEsRUFBQWpELENBQUEsSUFBQXpDLEtBQUEsRUFBQTJGLENBQUEsRUFBQWUsVUFBQSxNQUFBQyxZQUFBLE1BQUFDLFFBQUEsU0FBQWxCLENBQUEsQ0FBQWpELENBQUEsV0FBQWdFLE1BQUEsbUJBQUFmLENBQUEsSUFBQWUsTUFBQSxZQUFBQSxPQUFBZixDQUFBLEVBQUFqRCxDQUFBLEVBQUFrRCxDQUFBLFdBQUFELENBQUEsQ0FBQWpELENBQUEsSUFBQWtELENBQUEsZ0JBQUFrQixLQUFBbkIsQ0FBQSxFQUFBakQsQ0FBQSxFQUFBa0QsQ0FBQSxFQUFBeEQsQ0FBQSxRQUFBOEQsQ0FBQSxHQUFBeEQsQ0FBQSxJQUFBQSxDQUFBLENBQUFvRCxTQUFBLFlBQUFpQixTQUFBLEdBQUFyRSxDQUFBLEdBQUFxRSxTQUFBLEVBQUFYLENBQUEsR0FBQVAsTUFBQSxDQUFBbUIsTUFBQSxDQUFBZCxDQUFBLENBQUFKLFNBQUEsR0FBQVEsQ0FBQSxPQUFBVyxPQUFBLENBQUE3RSxDQUFBLGdCQUFBNEQsQ0FBQSxDQUFBSSxDQUFBLGVBQUFuRyxLQUFBLEVBQUFpSCxnQkFBQSxDQUFBdkIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFVLENBQUEsTUFBQUYsQ0FBQSxhQUFBZSxTQUFBeEIsQ0FBQSxFQUFBakQsQ0FBQSxFQUFBa0QsQ0FBQSxtQkFBQXdCLElBQUEsWUFBQUMsR0FBQSxFQUFBMUIsQ0FBQSxDQUFBMkIsSUFBQSxDQUFBNUUsQ0FBQSxFQUFBa0QsQ0FBQSxjQUFBRCxDQUFBLGFBQUF5QixJQUFBLFdBQUFDLEdBQUEsRUFBQTFCLENBQUEsUUFBQWpELENBQUEsQ0FBQW9FLElBQUEsR0FBQUEsSUFBQSxNQUFBUyxDQUFBLHFCQUFBQyxDQUFBLHFCQUFBN0UsQ0FBQSxnQkFBQVIsQ0FBQSxnQkFBQXNGLENBQUEsZ0JBQUFWLFVBQUEsY0FBQVcsa0JBQUEsY0FBQUMsMkJBQUEsU0FBQUMsQ0FBQSxPQUFBbEIsTUFBQSxDQUFBa0IsQ0FBQSxFQUFBeEIsQ0FBQSxxQ0FBQXlCLENBQUEsR0FBQWhDLE1BQUEsQ0FBQWlDLGNBQUEsRUFBQUMsQ0FBQSxHQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUEsQ0FBQSxDQUFBRyxNQUFBLFFBQUFELENBQUEsSUFBQUEsQ0FBQSxLQUFBbkMsQ0FBQSxJQUFBeEQsQ0FBQSxDQUFBa0YsSUFBQSxDQUFBUyxDQUFBLEVBQUEzQixDQUFBLE1BQUF3QixDQUFBLEdBQUFHLENBQUEsT0FBQUUsQ0FBQSxHQUFBTiwwQkFBQSxDQUFBN0IsU0FBQSxHQUFBaUIsU0FBQSxDQUFBakIsU0FBQSxHQUFBRCxNQUFBLENBQUFtQixNQUFBLENBQUFZLENBQUEsWUFBQU0sc0JBQUF2QyxDQUFBLGdDQUFBd0MsT0FBQSxXQUFBekYsQ0FBQSxJQUFBZ0UsTUFBQSxDQUFBZixDQUFBLEVBQUFqRCxDQUFBLFlBQUFpRCxDQUFBLGdCQUFBeUMsT0FBQSxDQUFBMUYsQ0FBQSxFQUFBaUQsQ0FBQSxzQkFBQTBDLGNBQUExQyxDQUFBLEVBQUFqRCxDQUFBLGFBQUE0RixPQUFBMUMsQ0FBQSxFQUFBSSxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBRSxDQUFBLEdBQUFhLFFBQUEsQ0FBQXhCLENBQUEsQ0FBQUMsQ0FBQSxHQUFBRCxDQUFBLEVBQUFLLENBQUEsbUJBQUFNLENBQUEsQ0FBQWMsSUFBQSxRQUFBWixDQUFBLEdBQUFGLENBQUEsQ0FBQWUsR0FBQSxFQUFBRSxDQUFBLEdBQUFmLENBQUEsQ0FBQXZHLEtBQUEsU0FBQXNILENBQUEsZ0JBQUFnQixPQUFBLENBQUFoQixDQUFBLEtBQUFuRixDQUFBLENBQUFrRixJQUFBLENBQUFDLENBQUEsZUFBQTdFLENBQUEsQ0FBQThGLE9BQUEsQ0FBQWpCLENBQUEsQ0FBQWtCLE9BQUEsRUFBQUMsSUFBQSxXQUFBL0MsQ0FBQSxJQUFBMkMsTUFBQSxTQUFBM0MsQ0FBQSxFQUFBTyxDQUFBLEVBQUFFLENBQUEsZ0JBQUFULENBQUEsSUFBQTJDLE1BQUEsVUFBQTNDLENBQUEsRUFBQU8sQ0FBQSxFQUFBRSxDQUFBLFFBQUExRCxDQUFBLENBQUE4RixPQUFBLENBQUFqQixDQUFBLEVBQUFtQixJQUFBLFdBQUEvQyxDQUFBLElBQUFhLENBQUEsQ0FBQXZHLEtBQUEsR0FBQTBGLENBQUEsRUFBQU8sQ0FBQSxDQUFBTSxDQUFBLGdCQUFBYixDQUFBLFdBQUEyQyxNQUFBLFVBQUEzQyxDQUFBLEVBQUFPLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLENBQUFFLENBQUEsQ0FBQWUsR0FBQSxTQUFBekIsQ0FBQSxFQUFBSSxDQUFBLG9CQUFBL0YsS0FBQSxXQUFBQSxNQUFBMEYsQ0FBQSxFQUFBdkQsQ0FBQSxhQUFBdUcsMkJBQUEsZUFBQWpHLENBQUEsV0FBQUEsQ0FBQSxFQUFBa0QsQ0FBQSxJQUFBMEMsTUFBQSxDQUFBM0MsQ0FBQSxFQUFBdkQsQ0FBQSxFQUFBTSxDQUFBLEVBQUFrRCxDQUFBLGdCQUFBQSxDQUFBLEdBQUFBLENBQUEsR0FBQUEsQ0FBQSxDQUFBOEMsSUFBQSxDQUFBQywwQkFBQSxFQUFBQSwwQkFBQSxJQUFBQSwwQkFBQSxxQkFBQXpCLGlCQUFBeEUsQ0FBQSxFQUFBa0QsQ0FBQSxFQUFBeEQsQ0FBQSxRQUFBNEQsQ0FBQSxHQUFBdUIsQ0FBQSxtQkFBQXJCLENBQUEsRUFBQUUsQ0FBQSxRQUFBSixDQUFBLEtBQUFyRCxDQUFBLFFBQUFpRyxLQUFBLHNDQUFBNUMsQ0FBQSxLQUFBN0QsQ0FBQSxvQkFBQStELENBQUEsUUFBQUUsQ0FBQSxXQUFBbkcsS0FBQSxFQUFBMEYsQ0FBQSxFQUFBdEQsSUFBQSxlQUFBRCxDQUFBLENBQUF5RyxNQUFBLEdBQUEzQyxDQUFBLEVBQUE5RCxDQUFBLENBQUFpRixHQUFBLEdBQUFqQixDQUFBLFVBQUFFLENBQUEsR0FBQWxFLENBQUEsQ0FBQTBHLFFBQUEsTUFBQXhDLENBQUEsUUFBQUUsQ0FBQSxHQUFBdUMsbUJBQUEsQ0FBQXpDLENBQUEsRUFBQWxFLENBQUEsT0FBQW9FLENBQUEsUUFBQUEsQ0FBQSxLQUFBaUIsQ0FBQSxtQkFBQWpCLENBQUEscUJBQUFwRSxDQUFBLENBQUF5RyxNQUFBLEVBQUF6RyxDQUFBLENBQUE0RyxJQUFBLEdBQUE1RyxDQUFBLENBQUE2RyxLQUFBLEdBQUE3RyxDQUFBLENBQUFpRixHQUFBLHNCQUFBakYsQ0FBQSxDQUFBeUcsTUFBQSxRQUFBN0MsQ0FBQSxLQUFBdUIsQ0FBQSxRQUFBdkIsQ0FBQSxHQUFBN0QsQ0FBQSxFQUFBQyxDQUFBLENBQUFpRixHQUFBLEVBQUFqRixDQUFBLENBQUE4RyxpQkFBQSxDQUFBOUcsQ0FBQSxDQUFBaUYsR0FBQSx1QkFBQWpGLENBQUEsQ0FBQXlHLE1BQUEsSUFBQXpHLENBQUEsQ0FBQStHLE1BQUEsV0FBQS9HLENBQUEsQ0FBQWlGLEdBQUEsR0FBQXJCLENBQUEsR0FBQXJELENBQUEsTUFBQWlGLENBQUEsR0FBQVQsUUFBQSxDQUFBekUsQ0FBQSxFQUFBa0QsQ0FBQSxFQUFBeEQsQ0FBQSxvQkFBQXdGLENBQUEsQ0FBQVIsSUFBQSxRQUFBcEIsQ0FBQSxHQUFBNUQsQ0FBQSxDQUFBQyxJQUFBLEdBQUFGLENBQUEsR0FBQXFGLENBQUEsRUFBQUksQ0FBQSxDQUFBUCxHQUFBLEtBQUFJLENBQUEscUJBQUF4SCxLQUFBLEVBQUEySCxDQUFBLENBQUFQLEdBQUEsRUFBQWhGLElBQUEsRUFBQUQsQ0FBQSxDQUFBQyxJQUFBLGtCQUFBdUYsQ0FBQSxDQUFBUixJQUFBLEtBQUFwQixDQUFBLEdBQUE3RCxDQUFBLEVBQUFDLENBQUEsQ0FBQXlHLE1BQUEsWUFBQXpHLENBQUEsQ0FBQWlGLEdBQUEsR0FBQU8sQ0FBQSxDQUFBUCxHQUFBLG1CQUFBMEIsb0JBQUFyRyxDQUFBLEVBQUFrRCxDQUFBLFFBQUF4RCxDQUFBLEdBQUF3RCxDQUFBLENBQUFpRCxNQUFBLEVBQUE3QyxDQUFBLEdBQUF0RCxDQUFBLENBQUEyRCxRQUFBLENBQUFqRSxDQUFBLE9BQUE0RCxDQUFBLEtBQUFMLENBQUEsU0FBQUMsQ0FBQSxDQUFBa0QsUUFBQSxxQkFBQTFHLENBQUEsSUFBQU0sQ0FBQSxDQUFBMkQsUUFBQSxlQUFBVCxDQUFBLENBQUFpRCxNQUFBLGFBQUFqRCxDQUFBLENBQUF5QixHQUFBLEdBQUExQixDQUFBLEVBQUFvRCxtQkFBQSxDQUFBckcsQ0FBQSxFQUFBa0QsQ0FBQSxlQUFBQSxDQUFBLENBQUFpRCxNQUFBLGtCQUFBekcsQ0FBQSxLQUFBd0QsQ0FBQSxDQUFBaUQsTUFBQSxZQUFBakQsQ0FBQSxDQUFBeUIsR0FBQSxPQUFBK0IsU0FBQSx1Q0FBQWhILENBQUEsaUJBQUFxRixDQUFBLE1BQUF2QixDQUFBLEdBQUFpQixRQUFBLENBQUFuQixDQUFBLEVBQUF0RCxDQUFBLENBQUEyRCxRQUFBLEVBQUFULENBQUEsQ0FBQXlCLEdBQUEsbUJBQUFuQixDQUFBLENBQUFrQixJQUFBLFNBQUF4QixDQUFBLENBQUFpRCxNQUFBLFlBQUFqRCxDQUFBLENBQUF5QixHQUFBLEdBQUFuQixDQUFBLENBQUFtQixHQUFBLEVBQUF6QixDQUFBLENBQUFrRCxRQUFBLFNBQUFyQixDQUFBLE1BQUFyQixDQUFBLEdBQUFGLENBQUEsQ0FBQW1CLEdBQUEsU0FBQWpCLENBQUEsR0FBQUEsQ0FBQSxDQUFBL0QsSUFBQSxJQUFBdUQsQ0FBQSxDQUFBbEQsQ0FBQSxDQUFBMkcsVUFBQSxJQUFBakQsQ0FBQSxDQUFBbkcsS0FBQSxFQUFBMkYsQ0FBQSxDQUFBMEQsSUFBQSxHQUFBNUcsQ0FBQSxDQUFBNkcsT0FBQSxlQUFBM0QsQ0FBQSxDQUFBaUQsTUFBQSxLQUFBakQsQ0FBQSxDQUFBaUQsTUFBQSxXQUFBakQsQ0FBQSxDQUFBeUIsR0FBQSxHQUFBMUIsQ0FBQSxHQUFBQyxDQUFBLENBQUFrRCxRQUFBLFNBQUFyQixDQUFBLElBQUFyQixDQUFBLElBQUFSLENBQUEsQ0FBQWlELE1BQUEsWUFBQWpELENBQUEsQ0FBQXlCLEdBQUEsT0FBQStCLFNBQUEsc0NBQUF4RCxDQUFBLENBQUFrRCxRQUFBLFNBQUFyQixDQUFBLGNBQUErQixhQUFBN0QsQ0FBQSxRQUFBakQsQ0FBQSxLQUFBK0csTUFBQSxFQUFBOUQsQ0FBQSxZQUFBQSxDQUFBLEtBQUFqRCxDQUFBLENBQUFnSCxRQUFBLEdBQUEvRCxDQUFBLFdBQUFBLENBQUEsS0FBQWpELENBQUEsQ0FBQWlILFVBQUEsR0FBQWhFLENBQUEsS0FBQWpELENBQUEsQ0FBQWtILFFBQUEsR0FBQWpFLENBQUEsV0FBQWtFLFVBQUEsQ0FBQUMsSUFBQSxDQUFBcEgsQ0FBQSxjQUFBcUgsY0FBQXBFLENBQUEsUUFBQWpELENBQUEsR0FBQWlELENBQUEsQ0FBQXFFLFVBQUEsUUFBQXRILENBQUEsQ0FBQTBFLElBQUEsb0JBQUExRSxDQUFBLENBQUEyRSxHQUFBLEVBQUExQixDQUFBLENBQUFxRSxVQUFBLEdBQUF0SCxDQUFBLGFBQUF1RSxRQUFBdEIsQ0FBQSxTQUFBa0UsVUFBQSxNQUFBSixNQUFBLGFBQUE5RCxDQUFBLENBQUF3QyxPQUFBLENBQUFxQixZQUFBLGNBQUFTLEtBQUEsaUJBQUFqQyxPQUFBdEYsQ0FBQSxRQUFBQSxDQUFBLFdBQUFBLENBQUEsUUFBQWtELENBQUEsR0FBQWxELENBQUEsQ0FBQTBELENBQUEsT0FBQVIsQ0FBQSxTQUFBQSxDQUFBLENBQUEwQixJQUFBLENBQUE1RSxDQUFBLDRCQUFBQSxDQUFBLENBQUE0RyxJQUFBLFNBQUE1RyxDQUFBLE9BQUF3SCxLQUFBLENBQUF4SCxDQUFBLENBQUF5SCxNQUFBLFNBQUFuRSxDQUFBLE9BQUFFLENBQUEsWUFBQW9ELEtBQUEsYUFBQXRELENBQUEsR0FBQXRELENBQUEsQ0FBQXlILE1BQUEsT0FBQS9ILENBQUEsQ0FBQWtGLElBQUEsQ0FBQTVFLENBQUEsRUFBQXNELENBQUEsVUFBQXNELElBQUEsQ0FBQXJKLEtBQUEsR0FBQXlDLENBQUEsQ0FBQXNELENBQUEsR0FBQXNELElBQUEsQ0FBQWpILElBQUEsT0FBQWlILElBQUEsU0FBQUEsSUFBQSxDQUFBckosS0FBQSxHQUFBMEYsQ0FBQSxFQUFBMkQsSUFBQSxDQUFBakgsSUFBQSxPQUFBaUgsSUFBQSxZQUFBcEQsQ0FBQSxDQUFBb0QsSUFBQSxHQUFBcEQsQ0FBQSxnQkFBQWtELFNBQUEsQ0FBQWIsT0FBQSxDQUFBN0YsQ0FBQSxrQ0FBQWdGLGlCQUFBLENBQUE1QixTQUFBLEdBQUE2QiwwQkFBQSxFQUFBM0IsQ0FBQSxDQUFBaUMsQ0FBQSxtQkFBQWhJLEtBQUEsRUFBQTBILDBCQUFBLEVBQUFmLFlBQUEsU0FBQVosQ0FBQSxDQUFBMkIsMEJBQUEsbUJBQUExSCxLQUFBLEVBQUF5SCxpQkFBQSxFQUFBZCxZQUFBLFNBQUFjLGlCQUFBLENBQUEwQyxXQUFBLEdBQUExRCxNQUFBLENBQUFpQiwwQkFBQSxFQUFBbkIsQ0FBQSx3QkFBQTlELENBQUEsQ0FBQTJILG1CQUFBLGFBQUExRSxDQUFBLFFBQUFqRCxDQUFBLHdCQUFBaUQsQ0FBQSxJQUFBQSxDQUFBLENBQUEyRSxXQUFBLFdBQUE1SCxDQUFBLEtBQUFBLENBQUEsS0FBQWdGLGlCQUFBLDZCQUFBaEYsQ0FBQSxDQUFBMEgsV0FBQSxJQUFBMUgsQ0FBQSxDQUFBakMsSUFBQSxPQUFBaUMsQ0FBQSxDQUFBNkgsSUFBQSxhQUFBNUUsQ0FBQSxXQUFBRSxNQUFBLENBQUEyRSxjQUFBLEdBQUEzRSxNQUFBLENBQUEyRSxjQUFBLENBQUE3RSxDQUFBLEVBQUFnQywwQkFBQSxLQUFBaEMsQ0FBQSxDQUFBOEUsU0FBQSxHQUFBOUMsMEJBQUEsRUFBQWpCLE1BQUEsQ0FBQWYsQ0FBQSxFQUFBYSxDQUFBLHlCQUFBYixDQUFBLENBQUFHLFNBQUEsR0FBQUQsTUFBQSxDQUFBbUIsTUFBQSxDQUFBaUIsQ0FBQSxHQUFBdEMsQ0FBQSxLQUFBakQsQ0FBQSxDQUFBZ0ksS0FBQSxhQUFBL0UsQ0FBQSxhQUFBOEMsT0FBQSxFQUFBOUMsQ0FBQSxPQUFBdUMscUJBQUEsQ0FBQUcsYUFBQSxDQUFBdkMsU0FBQSxHQUFBWSxNQUFBLENBQUEyQixhQUFBLENBQUF2QyxTQUFBLEVBQUFRLENBQUEsaUNBQUE1RCxDQUFBLENBQUEyRixhQUFBLEdBQUFBLGFBQUEsRUFBQTNGLENBQUEsQ0FBQWlJLEtBQUEsYUFBQWhGLENBQUEsRUFBQUMsQ0FBQSxFQUFBeEQsQ0FBQSxFQUFBNEQsQ0FBQSxFQUFBRSxDQUFBLGVBQUFBLENBQUEsS0FBQUEsQ0FBQSxHQUFBMEUsT0FBQSxPQUFBeEUsQ0FBQSxPQUFBaUMsYUFBQSxDQUFBdkIsSUFBQSxDQUFBbkIsQ0FBQSxFQUFBQyxDQUFBLEVBQUF4RCxDQUFBLEVBQUE0RCxDQUFBLEdBQUFFLENBQUEsVUFBQXhELENBQUEsQ0FBQTJILG1CQUFBLENBQUF6RSxDQUFBLElBQUFRLENBQUEsR0FBQUEsQ0FBQSxDQUFBa0QsSUFBQSxHQUFBWixJQUFBLFdBQUEvQyxDQUFBLFdBQUFBLENBQUEsQ0FBQXRELElBQUEsR0FBQXNELENBQUEsQ0FBQTFGLEtBQUEsR0FBQW1HLENBQUEsQ0FBQWtELElBQUEsV0FBQXBCLHFCQUFBLENBQUFELENBQUEsR0FBQXZCLE1BQUEsQ0FBQXVCLENBQUEsRUFBQXpCLENBQUEsZ0JBQUFFLE1BQUEsQ0FBQXVCLENBQUEsRUFBQTdCLENBQUEsaUNBQUFNLE1BQUEsQ0FBQXVCLENBQUEsNkRBQUF2RixDQUFBLENBQUFtSSxJQUFBLGFBQUFsRixDQUFBLFFBQUFqRCxDQUFBLEdBQUFtRCxNQUFBLENBQUFGLENBQUEsR0FBQUMsQ0FBQSxnQkFBQXhELENBQUEsSUFBQU0sQ0FBQSxFQUFBa0QsQ0FBQSxDQUFBa0UsSUFBQSxDQUFBMUgsQ0FBQSxVQUFBd0QsQ0FBQSxDQUFBa0YsT0FBQSxhQUFBeEIsS0FBQSxXQUFBMUQsQ0FBQSxDQUFBdUUsTUFBQSxTQUFBeEUsQ0FBQSxHQUFBQyxDQUFBLENBQUFtRixHQUFBLFFBQUFwRixDQUFBLElBQUFqRCxDQUFBLFNBQUE0RyxJQUFBLENBQUFySixLQUFBLEdBQUEwRixDQUFBLEVBQUEyRCxJQUFBLENBQUFqSCxJQUFBLE9BQUFpSCxJQUFBLFdBQUFBLElBQUEsQ0FBQWpILElBQUEsT0FBQWlILElBQUEsUUFBQTVHLENBQUEsQ0FBQXNGLE1BQUEsR0FBQUEsTUFBQSxFQUFBZixPQUFBLENBQUFuQixTQUFBLEtBQUF3RSxXQUFBLEVBQUFyRCxPQUFBLEVBQUFnRCxLQUFBLFdBQUFBLE1BQUF2SCxDQUFBLGFBQUFzSSxJQUFBLFdBQUExQixJQUFBLFdBQUFOLElBQUEsUUFBQUMsS0FBQSxHQUFBdEQsQ0FBQSxPQUFBdEQsSUFBQSxZQUFBeUcsUUFBQSxjQUFBRCxNQUFBLGdCQUFBeEIsR0FBQSxHQUFBMUIsQ0FBQSxPQUFBa0UsVUFBQSxDQUFBMUIsT0FBQSxDQUFBNEIsYUFBQSxJQUFBckgsQ0FBQSxXQUFBa0QsQ0FBQSxrQkFBQUEsQ0FBQSxDQUFBcUYsTUFBQSxPQUFBN0ksQ0FBQSxDQUFBa0YsSUFBQSxPQUFBMUIsQ0FBQSxNQUFBc0UsS0FBQSxFQUFBdEUsQ0FBQSxDQUFBc0YsS0FBQSxjQUFBdEYsQ0FBQSxJQUFBRCxDQUFBLE1BQUF3RixJQUFBLFdBQUFBLEtBQUEsU0FBQTlJLElBQUEsV0FBQXNELENBQUEsUUFBQWtFLFVBQUEsSUFBQUcsVUFBQSxrQkFBQXJFLENBQUEsQ0FBQXlCLElBQUEsUUFBQXpCLENBQUEsQ0FBQTBCLEdBQUEsY0FBQStELElBQUEsS0FBQWxDLGlCQUFBLFdBQUFBLGtCQUFBeEcsQ0FBQSxhQUFBTCxJQUFBLFFBQUFLLENBQUEsTUFBQWtELENBQUEsa0JBQUF5RixPQUFBakosQ0FBQSxFQUFBNEQsQ0FBQSxXQUFBSSxDQUFBLENBQUFnQixJQUFBLFlBQUFoQixDQUFBLENBQUFpQixHQUFBLEdBQUEzRSxDQUFBLEVBQUFrRCxDQUFBLENBQUEwRCxJQUFBLEdBQUFsSCxDQUFBLEVBQUE0RCxDQUFBLEtBQUFKLENBQUEsQ0FBQWlELE1BQUEsV0FBQWpELENBQUEsQ0FBQXlCLEdBQUEsR0FBQTFCLENBQUEsS0FBQUssQ0FBQSxhQUFBQSxDQUFBLFFBQUE2RCxVQUFBLENBQUFNLE1BQUEsTUFBQW5FLENBQUEsU0FBQUEsQ0FBQSxRQUFBRSxDQUFBLFFBQUEyRCxVQUFBLENBQUE3RCxDQUFBLEdBQUFJLENBQUEsR0FBQUYsQ0FBQSxDQUFBOEQsVUFBQSxpQkFBQTlELENBQUEsQ0FBQXVELE1BQUEsU0FBQTRCLE1BQUEsYUFBQW5GLENBQUEsQ0FBQXVELE1BQUEsU0FBQXVCLElBQUEsUUFBQTFFLENBQUEsR0FBQWxFLENBQUEsQ0FBQWtGLElBQUEsQ0FBQXBCLENBQUEsZUFBQU0sQ0FBQSxHQUFBcEUsQ0FBQSxDQUFBa0YsSUFBQSxDQUFBcEIsQ0FBQSxxQkFBQUksQ0FBQSxJQUFBRSxDQUFBLGFBQUF3RSxJQUFBLEdBQUE5RSxDQUFBLENBQUF3RCxRQUFBLFNBQUEyQixNQUFBLENBQUFuRixDQUFBLENBQUF3RCxRQUFBLGdCQUFBc0IsSUFBQSxHQUFBOUUsQ0FBQSxDQUFBeUQsVUFBQSxTQUFBMEIsTUFBQSxDQUFBbkYsQ0FBQSxDQUFBeUQsVUFBQSxjQUFBckQsQ0FBQSxhQUFBMEUsSUFBQSxHQUFBOUUsQ0FBQSxDQUFBd0QsUUFBQSxTQUFBMkIsTUFBQSxDQUFBbkYsQ0FBQSxDQUFBd0QsUUFBQSxxQkFBQWxELENBQUEsUUFBQW9DLEtBQUEscURBQUFvQyxJQUFBLEdBQUE5RSxDQUFBLENBQUF5RCxVQUFBLFNBQUEwQixNQUFBLENBQUFuRixDQUFBLENBQUF5RCxVQUFBLFlBQUFSLE1BQUEsV0FBQUEsT0FBQXhELENBQUEsRUFBQWpELENBQUEsYUFBQWtELENBQUEsUUFBQWlFLFVBQUEsQ0FBQU0sTUFBQSxNQUFBdkUsQ0FBQSxTQUFBQSxDQUFBLFFBQUFJLENBQUEsUUFBQTZELFVBQUEsQ0FBQWpFLENBQUEsT0FBQUksQ0FBQSxDQUFBeUQsTUFBQSxTQUFBdUIsSUFBQSxJQUFBNUksQ0FBQSxDQUFBa0YsSUFBQSxDQUFBdEIsQ0FBQSx3QkFBQWdGLElBQUEsR0FBQWhGLENBQUEsQ0FBQTJELFVBQUEsUUFBQXpELENBQUEsR0FBQUYsQ0FBQSxhQUFBRSxDQUFBLGlCQUFBUCxDQUFBLG1CQUFBQSxDQUFBLEtBQUFPLENBQUEsQ0FBQXVELE1BQUEsSUFBQS9HLENBQUEsSUFBQUEsQ0FBQSxJQUFBd0QsQ0FBQSxDQUFBeUQsVUFBQSxLQUFBekQsQ0FBQSxjQUFBRSxDQUFBLEdBQUFGLENBQUEsR0FBQUEsQ0FBQSxDQUFBOEQsVUFBQSxjQUFBNUQsQ0FBQSxDQUFBZ0IsSUFBQSxHQUFBekIsQ0FBQSxFQUFBUyxDQUFBLENBQUFpQixHQUFBLEdBQUEzRSxDQUFBLEVBQUF3RCxDQUFBLFNBQUEyQyxNQUFBLGdCQUFBUyxJQUFBLEdBQUFwRCxDQUFBLENBQUF5RCxVQUFBLEVBQUFsQyxDQUFBLFNBQUE2RCxRQUFBLENBQUFsRixDQUFBLE1BQUFrRixRQUFBLFdBQUFBLFNBQUEzRixDQUFBLEVBQUFqRCxDQUFBLG9CQUFBaUQsQ0FBQSxDQUFBeUIsSUFBQSxRQUFBekIsQ0FBQSxDQUFBMEIsR0FBQSxxQkFBQTFCLENBQUEsQ0FBQXlCLElBQUEsbUJBQUF6QixDQUFBLENBQUF5QixJQUFBLFFBQUFrQyxJQUFBLEdBQUEzRCxDQUFBLENBQUEwQixHQUFBLGdCQUFBMUIsQ0FBQSxDQUFBeUIsSUFBQSxTQUFBZ0UsSUFBQSxRQUFBL0QsR0FBQSxHQUFBMUIsQ0FBQSxDQUFBMEIsR0FBQSxPQUFBd0IsTUFBQSxrQkFBQVMsSUFBQSx5QkFBQTNELENBQUEsQ0FBQXlCLElBQUEsSUFBQTFFLENBQUEsVUFBQTRHLElBQUEsR0FBQTVHLENBQUEsR0FBQStFLENBQUEsS0FBQThELE1BQUEsV0FBQUEsT0FBQTVGLENBQUEsYUFBQWpELENBQUEsUUFBQW1ILFVBQUEsQ0FBQU0sTUFBQSxNQUFBekgsQ0FBQSxTQUFBQSxDQUFBLFFBQUFrRCxDQUFBLFFBQUFpRSxVQUFBLENBQUFuSCxDQUFBLE9BQUFrRCxDQUFBLENBQUErRCxVQUFBLEtBQUFoRSxDQUFBLGNBQUEyRixRQUFBLENBQUExRixDQUFBLENBQUFvRSxVQUFBLEVBQUFwRSxDQUFBLENBQUFnRSxRQUFBLEdBQUFHLGFBQUEsQ0FBQW5FLENBQUEsR0FBQTZCLENBQUEseUJBQUErRCxPQUFBN0YsQ0FBQSxhQUFBakQsQ0FBQSxRQUFBbUgsVUFBQSxDQUFBTSxNQUFBLE1BQUF6SCxDQUFBLFNBQUFBLENBQUEsUUFBQWtELENBQUEsUUFBQWlFLFVBQUEsQ0FBQW5ILENBQUEsT0FBQWtELENBQUEsQ0FBQTZELE1BQUEsS0FBQTlELENBQUEsUUFBQXZELENBQUEsR0FBQXdELENBQUEsQ0FBQW9FLFVBQUEsa0JBQUE1SCxDQUFBLENBQUFnRixJQUFBLFFBQUFwQixDQUFBLEdBQUE1RCxDQUFBLENBQUFpRixHQUFBLEVBQUEwQyxhQUFBLENBQUFuRSxDQUFBLFlBQUFJLENBQUEsWUFBQTRDLEtBQUEsOEJBQUE2QyxhQUFBLFdBQUFBLGNBQUEvSSxDQUFBLEVBQUFrRCxDQUFBLEVBQUF4RCxDQUFBLGdCQUFBMEcsUUFBQSxLQUFBekMsUUFBQSxFQUFBMkIsTUFBQSxDQUFBdEYsQ0FBQSxHQUFBMkcsVUFBQSxFQUFBekQsQ0FBQSxFQUFBMkQsT0FBQSxFQUFBbkgsQ0FBQSxvQkFBQXlHLE1BQUEsVUFBQXhCLEdBQUEsR0FBQTFCLENBQUEsR0FBQThCLENBQUEsT0FBQS9FLENBQUE7QUFBQSxTQUFBZ0osUUFBQWhKLENBQUEsRUFBQWtELENBQUEsUUFBQUQsQ0FBQSxHQUFBRSxNQUFBLENBQUFnRixJQUFBLENBQUFuSSxDQUFBLE9BQUFtRCxNQUFBLENBQUE4RixxQkFBQSxRQUFBM0YsQ0FBQSxHQUFBSCxNQUFBLENBQUE4RixxQkFBQSxDQUFBakosQ0FBQSxHQUFBa0QsQ0FBQSxLQUFBSSxDQUFBLEdBQUFBLENBQUEsQ0FBQTRGLE1BQUEsV0FBQWhHLENBQUEsV0FBQUMsTUFBQSxDQUFBZ0csd0JBQUEsQ0FBQW5KLENBQUEsRUFBQWtELENBQUEsRUFBQWUsVUFBQSxPQUFBaEIsQ0FBQSxDQUFBbUUsSUFBQSxDQUFBZ0MsS0FBQSxDQUFBbkcsQ0FBQSxFQUFBSyxDQUFBLFlBQUFMLENBQUE7QUFBQSxTQUFBUCxjQUFBMUMsQ0FBQSxhQUFBa0QsQ0FBQSxNQUFBQSxDQUFBLEdBQUFtRyxTQUFBLENBQUE1QixNQUFBLEVBQUF2RSxDQUFBLFVBQUFELENBQUEsV0FBQW9HLFNBQUEsQ0FBQW5HLENBQUEsSUFBQW1HLFNBQUEsQ0FBQW5HLENBQUEsUUFBQUEsQ0FBQSxPQUFBOEYsT0FBQSxDQUFBN0YsTUFBQSxDQUFBRixDQUFBLE9BQUF3QyxPQUFBLFdBQUF2QyxDQUFBLElBQUFKLGVBQUEsQ0FBQTlDLENBQUEsRUFBQWtELENBQUEsRUFBQUQsQ0FBQSxDQUFBQyxDQUFBLFNBQUFDLE1BQUEsQ0FBQW1HLHlCQUFBLEdBQUFuRyxNQUFBLENBQUFvRyxnQkFBQSxDQUFBdkosQ0FBQSxFQUFBbUQsTUFBQSxDQUFBbUcseUJBQUEsQ0FBQXJHLENBQUEsS0FBQStGLE9BQUEsQ0FBQTdGLE1BQUEsQ0FBQUYsQ0FBQSxHQUFBd0MsT0FBQSxXQUFBdkMsQ0FBQSxJQUFBQyxNQUFBLENBQUFJLGNBQUEsQ0FBQXZELENBQUEsRUFBQWtELENBQUEsRUFBQUMsTUFBQSxDQUFBZ0csd0JBQUEsQ0FBQWxHLENBQUEsRUFBQUMsQ0FBQSxpQkFBQWxELENBQUE7QUFBQSxTQUFBOEMsZ0JBQUEwRyxHQUFBLEVBQUFsTSxHQUFBLEVBQUFDLEtBQUEsSUFBQUQsR0FBQSxHQUFBbU0sY0FBQSxDQUFBbk0sR0FBQSxPQUFBQSxHQUFBLElBQUFrTSxHQUFBLElBQUFyRyxNQUFBLENBQUFJLGNBQUEsQ0FBQWlHLEdBQUEsRUFBQWxNLEdBQUEsSUFBQUMsS0FBQSxFQUFBQSxLQUFBLEVBQUEwRyxVQUFBLFFBQUFDLFlBQUEsUUFBQUMsUUFBQSxvQkFBQXFGLEdBQUEsQ0FBQWxNLEdBQUEsSUFBQUMsS0FBQSxXQUFBaU0sR0FBQTtBQUFBLFNBQUFFLG1CQUFBQyxHQUFBLEVBQUE3RCxPQUFBLEVBQUE4RCxNQUFBLEVBQUFDLEtBQUEsRUFBQUMsTUFBQSxFQUFBeE0sR0FBQSxFQUFBcUgsR0FBQSxjQUFBb0YsSUFBQSxHQUFBSixHQUFBLENBQUFyTSxHQUFBLEVBQUFxSCxHQUFBLE9BQUFwSCxLQUFBLEdBQUF3TSxJQUFBLENBQUF4TSxLQUFBLFdBQUF5TSxLQUFBLElBQUFKLE1BQUEsQ0FBQUksS0FBQSxpQkFBQUQsSUFBQSxDQUFBcEssSUFBQSxJQUFBbUcsT0FBQSxDQUFBdkksS0FBQSxZQUFBMkssT0FBQSxDQUFBcEMsT0FBQSxDQUFBdkksS0FBQSxFQUFBeUksSUFBQSxDQUFBNkQsS0FBQSxFQUFBQyxNQUFBO0FBQUEsU0FBQUcsa0JBQUFqTSxFQUFBLDZCQUFBa00sSUFBQSxTQUFBQyxJQUFBLEdBQUFkLFNBQUEsYUFBQW5CLE9BQUEsV0FBQXBDLE9BQUEsRUFBQThELE1BQUEsUUFBQUQsR0FBQSxHQUFBM0wsRUFBQSxDQUFBb0wsS0FBQSxDQUFBYyxJQUFBLEVBQUFDLElBQUEsWUFBQU4sTUFBQXRNLEtBQUEsSUFBQW1NLGtCQUFBLENBQUFDLEdBQUEsRUFBQTdELE9BQUEsRUFBQThELE1BQUEsRUFBQUMsS0FBQSxFQUFBQyxNQUFBLFVBQUF2TSxLQUFBLGNBQUF1TSxPQUFBL0osR0FBQSxJQUFBMkosa0JBQUEsQ0FBQUMsR0FBQSxFQUFBN0QsT0FBQSxFQUFBOEQsTUFBQSxFQUFBQyxLQUFBLEVBQUFDLE1BQUEsV0FBQS9KLEdBQUEsS0FBQThKLEtBQUEsQ0FBQU8sU0FBQTtBQUFBLFNBQUFoTixnQkFBQWlOLFFBQUEsRUFBQUMsV0FBQSxVQUFBRCxRQUFBLFlBQUFDLFdBQUEsZUFBQTVELFNBQUE7QUFBQSxTQUFBNkQsa0JBQUFDLE1BQUEsRUFBQUMsS0FBQSxhQUFBakgsQ0FBQSxNQUFBQSxDQUFBLEdBQUFpSCxLQUFBLENBQUFoRCxNQUFBLEVBQUFqRSxDQUFBLFVBQUFrSCxVQUFBLEdBQUFELEtBQUEsQ0FBQWpILENBQUEsR0FBQWtILFVBQUEsQ0FBQXpHLFVBQUEsR0FBQXlHLFVBQUEsQ0FBQXpHLFVBQUEsV0FBQXlHLFVBQUEsQ0FBQXhHLFlBQUEsd0JBQUF3RyxVQUFBLEVBQUFBLFVBQUEsQ0FBQXZHLFFBQUEsU0FBQWhCLE1BQUEsQ0FBQUksY0FBQSxDQUFBaUgsTUFBQSxFQUFBZixjQUFBLENBQUFpQixVQUFBLENBQUFwTixHQUFBLEdBQUFvTixVQUFBO0FBQUEsU0FBQXJOLGFBQUFpTixXQUFBLEVBQUFLLFVBQUEsRUFBQUMsV0FBQSxRQUFBRCxVQUFBLEVBQUFKLGlCQUFBLENBQUFELFdBQUEsQ0FBQWxILFNBQUEsRUFBQXVILFVBQUEsT0FBQUMsV0FBQSxFQUFBTCxpQkFBQSxDQUFBRCxXQUFBLEVBQUFNLFdBQUEsR0FBQXpILE1BQUEsQ0FBQUksY0FBQSxDQUFBK0csV0FBQSxpQkFBQW5HLFFBQUEsbUJBQUFtRyxXQUFBO0FBQUEsU0FBQWIsZUFBQXhHLENBQUEsUUFBQU8sQ0FBQSxHQUFBcUgsWUFBQSxDQUFBNUgsQ0FBQSxnQ0FBQTRDLE9BQUEsQ0FBQXJDLENBQUEsSUFBQUEsQ0FBQSxHQUFBQSxDQUFBO0FBQUEsU0FBQXFILGFBQUE1SCxDQUFBLEVBQUFDLENBQUEsb0JBQUEyQyxPQUFBLENBQUE1QyxDQUFBLE1BQUFBLENBQUEsU0FBQUEsQ0FBQSxNQUFBakQsQ0FBQSxHQUFBaUQsQ0FBQSxDQUFBUSxNQUFBLENBQUFxSCxXQUFBLGtCQUFBOUssQ0FBQSxRQUFBd0QsQ0FBQSxHQUFBeEQsQ0FBQSxDQUFBNEUsSUFBQSxDQUFBM0IsQ0FBQSxFQUFBQyxDQUFBLGdDQUFBMkMsT0FBQSxDQUFBckMsQ0FBQSxVQUFBQSxDQUFBLFlBQUFrRCxTQUFBLHlFQUFBeEQsQ0FBQSxHQUFBNkgsTUFBQSxHQUFBQyxNQUFBLEVBQUEvSCxDQUFBO0FBRGlEO0FBQUEsSUFFNUJnSSxPQUFPO0VBQUEsU0FBQUEsUUFBQTtJQUFBN04sZUFBQSxPQUFBNk4sT0FBQTtFQUFBO0VBQUEsT0FBQTVOLFlBQUEsQ0FBQTROLE9BQUE7SUFBQTNOLEdBQUE7SUFBQUMsS0FBQTtNQUFBLElBQUEyTixJQUFBLEdBQUFqQixpQkFBQSxlQUFBakgsbUJBQUEsR0FBQTZFLElBQUEsQ0FFMUIsU0FBQXNELFFBQWlCNU0sTUFBd0c7UUFBQSxJQUFBNk0sT0FBQTtRQUFBLE9BQUFwSSxtQkFBQSxHQUFBb0IsSUFBQSxVQUFBaUgsU0FBQUMsUUFBQTtVQUFBLGtCQUFBQSxRQUFBLENBQUFoRCxJQUFBLEdBQUFnRCxRQUFBLENBQUExRSxJQUFBO1lBQUE7Y0FDdkhySSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSzs7Y0FFeEI7Y0FBQSxLQUNJQSxNQUFNLENBQUNnTixXQUFXO2dCQUFBRCxRQUFBLENBQUExRSxJQUFBO2dCQUFBO2NBQUE7Y0FBQSxPQUFBMEUsUUFBQSxDQUFBN0UsTUFBQSxXQUNiLElBQUl5QixPQUFPLENBQUMsVUFBQ3BDLE9BQU8sRUFBRThELE1BQU0sRUFBSztnQkFDdEM0QixpQkFBaUIsQ0FBQTlJLGFBQUEsQ0FBQUEsYUFBQSxLQUNabkUsTUFBTTtrQkFDVGtOLE1BQU0sRUFBRSxTQUFBQSxPQUFDQyxRQUFRLEVBQUs7b0JBQ3BCNUYsT0FBTyxDQUFDdkgsTUFBTSxDQUFDb04sUUFBUSxLQUFLNUksWUFBWSxDQUFDbEUsSUFBSSxHQUFHQSxJQUFJLENBQUNnQixLQUFLLENBQUM2TCxRQUFRLENBQUNFLFlBQVksQ0FBQyxHQUFHRixRQUFRLENBQUNFLFlBQVksQ0FBQztrQkFDNUcsQ0FBQztrQkFDREMsT0FBTyxFQUFFLFNBQUFBLFFBQUM3QixLQUFLLEVBQUs7b0JBQ2xCSixNQUFNLENBQUNJLEtBQUssQ0FBQztrQkFDZjtnQkFBQyxFQUNGLENBQUM7Y0FDSixDQUFDLENBQUM7WUFBQTtjQUVJb0IsT0FBTyxHQUFHLFNBQVZBLE9BQU9BLENBQWFVLE9BQU8sRUFBRTtnQkFDakMsSUFBSUosUUFBUTtnQkFDWixJQUFJbk4sTUFBTSxDQUFDb04sUUFBUSxLQUFLNUksWUFBWSxDQUFDbEUsSUFBSSxFQUFFO2tCQUN6QzZNLFFBQVEsR0FBRzdNLElBQUksQ0FBQ2dCLEtBQUssQ0FBQ2lNLE9BQU8sQ0FBQ0YsWUFBWSxDQUFDO2dCQUM3QyxDQUFDLE1BQU07a0JBQ0xGLFFBQVEsR0FBR0ksT0FBTyxDQUFDSixRQUFRO2dCQUM3QjtnQkFDQW5OLE1BQU0sQ0FBQ2tOLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDO2NBQ3pCLENBQUM7Y0FDREYsaUJBQWlCLENBQUE5SSxhQUFBLENBQUFBLGFBQUEsS0FBS25FLE1BQU07Z0JBQUVrTixNQUFNLEVBQUVMO2NBQU8sRUFBQyxDQUFDO1lBQUM7WUFBQTtjQUFBLE9BQUFFLFFBQUEsQ0FBQTdDLElBQUE7VUFBQTtRQUFBLEdBQUEwQyxPQUFBO01BQUEsQ0FFbkQ7TUFBQSxTQUFBM04sSUFBQXVPLEVBQUE7UUFBQSxPQUFBYixJQUFBLENBQUE5QixLQUFBLE9BQUFDLFNBQUE7TUFBQTtNQUFBLE9BQUE3TCxHQUFBO0lBQUE7RUFBQTtBQUFBOzs7Ozs7Ozs7QUNoQ0g7QUFDQTtBQUNBO0FBRkEsSUFHcUJ3TyxJQUFJO0VBQUEsU0FBQUEsS0FBQTtJQUFBNU8sbUJBQUEsT0FBQTRPLElBQUE7RUFBQTtFQUFBLE9BQUEzTyxnQkFBQSxDQUFBMk8sSUFBQTtJQUFBMU8sR0FBQTtJQUFBQyxLQUFBLEVBRXZCLFNBQUFDLElBQUEsRUFBYTtNQUNYLE9BQU95TyxPQUFPLENBQUNDLE1BQU07SUFDdkI7RUFBQztJQUFBNU8sR0FBQTtJQUFBQyxLQUFBLEVBRUQsU0FBQTRPLFFBQUEsRUFBaUI7TUFDZixPQUFPLElBQUksQ0FBQzNPLEdBQUcsQ0FBQyxDQUFDLENBQUNPLElBQUk7SUFDeEI7RUFBQztJQUFBVCxHQUFBO0lBQUFDLEtBQUEsRUFFRCxTQUFBNk8sV0FBQSxFQUFvQjtNQUNsQixPQUFPLElBQUksQ0FBQzVPLEdBQUcsQ0FBQyxDQUFDLENBQUNzQyxPQUFPO0lBQzNCO0VBQUM7QUFBQTs7Ozs7Ozs7bURDZEgscUpBQUFrRCx1QkFBQSxZQUFBQSxvQkFBQSxXQUFBaEQsQ0FBQSxTQUFBaUQsQ0FBQSxFQUFBakQsQ0FBQSxPQUFBa0QsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLFNBQUEsRUFBQTFELENBQUEsR0FBQXdELENBQUEsQ0FBQUcsY0FBQSxFQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUksY0FBQSxjQUFBTixDQUFBLEVBQUFqRCxDQUFBLEVBQUFrRCxDQUFBLElBQUFELENBQUEsQ0FBQWpELENBQUEsSUFBQWtELENBQUEsQ0FBQTNGLEtBQUEsS0FBQWlHLENBQUEsd0JBQUFDLE1BQUEsR0FBQUEsTUFBQSxPQUFBQyxDQUFBLEdBQUFGLENBQUEsQ0FBQUcsUUFBQSxrQkFBQUMsQ0FBQSxHQUFBSixDQUFBLENBQUFLLGFBQUEsdUJBQUFDLENBQUEsR0FBQU4sQ0FBQSxDQUFBTyxXQUFBLDhCQUFBQyxPQUFBZixDQUFBLEVBQUFqRCxDQUFBLEVBQUFrRCxDQUFBLFdBQUFDLE1BQUEsQ0FBQUksY0FBQSxDQUFBTixDQUFBLEVBQUFqRCxDQUFBLElBQUF6QyxLQUFBLEVBQUEyRixDQUFBLEVBQUFlLFVBQUEsTUFBQUMsWUFBQSxNQUFBQyxRQUFBLFNBQUFsQixDQUFBLENBQUFqRCxDQUFBLFdBQUFnRSxNQUFBLG1CQUFBZixDQUFBLElBQUFlLE1BQUEsWUFBQUEsT0FBQWYsQ0FBQSxFQUFBakQsQ0FBQSxFQUFBa0QsQ0FBQSxXQUFBRCxDQUFBLENBQUFqRCxDQUFBLElBQUFrRCxDQUFBLGdCQUFBa0IsS0FBQW5CLENBQUEsRUFBQWpELENBQUEsRUFBQWtELENBQUEsRUFBQXhELENBQUEsUUFBQThELENBQUEsR0FBQXhELENBQUEsSUFBQUEsQ0FBQSxDQUFBb0QsU0FBQSxZQUFBaUIsU0FBQSxHQUFBckUsQ0FBQSxHQUFBcUUsU0FBQSxFQUFBWCxDQUFBLEdBQUFQLE1BQUEsQ0FBQW1CLE1BQUEsQ0FBQWQsQ0FBQSxDQUFBSixTQUFBLEdBQUFRLENBQUEsT0FBQVcsT0FBQSxDQUFBN0UsQ0FBQSxnQkFBQTRELENBQUEsQ0FBQUksQ0FBQSxlQUFBbkcsS0FBQSxFQUFBaUgsZ0JBQUEsQ0FBQXZCLENBQUEsRUFBQUMsQ0FBQSxFQUFBVSxDQUFBLE1BQUFGLENBQUEsYUFBQWUsU0FBQXhCLENBQUEsRUFBQWpELENBQUEsRUFBQWtELENBQUEsbUJBQUF3QixJQUFBLFlBQUFDLEdBQUEsRUFBQTFCLENBQUEsQ0FBQTJCLElBQUEsQ0FBQTVFLENBQUEsRUFBQWtELENBQUEsY0FBQUQsQ0FBQSxhQUFBeUIsSUFBQSxXQUFBQyxHQUFBLEVBQUExQixDQUFBLFFBQUFqRCxDQUFBLENBQUFvRSxJQUFBLEdBQUFBLElBQUEsTUFBQVMsQ0FBQSxxQkFBQUMsQ0FBQSxxQkFBQTdFLENBQUEsZ0JBQUFSLENBQUEsZ0JBQUFzRixDQUFBLGdCQUFBVixVQUFBLGNBQUFXLGtCQUFBLGNBQUFDLDJCQUFBLFNBQUFDLENBQUEsT0FBQWxCLE1BQUEsQ0FBQWtCLENBQUEsRUFBQXhCLENBQUEscUNBQUF5QixDQUFBLEdBQUFoQyxNQUFBLENBQUFpQyxjQUFBLEVBQUFDLENBQUEsR0FBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFBLENBQUEsQ0FBQUcsTUFBQSxRQUFBRCxDQUFBLElBQUFBLENBQUEsS0FBQW5DLENBQUEsSUFBQXhELENBQUEsQ0FBQWtGLElBQUEsQ0FBQVMsQ0FBQSxFQUFBM0IsQ0FBQSxNQUFBd0IsQ0FBQSxHQUFBRyxDQUFBLE9BQUFFLENBQUEsR0FBQU4sMEJBQUEsQ0FBQTdCLFNBQUEsR0FBQWlCLFNBQUEsQ0FBQWpCLFNBQUEsR0FBQUQsTUFBQSxDQUFBbUIsTUFBQSxDQUFBWSxDQUFBLFlBQUFNLHNCQUFBdkMsQ0FBQSxnQ0FBQXdDLE9BQUEsV0FBQXpGLENBQUEsSUFBQWdFLE1BQUEsQ0FBQWYsQ0FBQSxFQUFBakQsQ0FBQSxZQUFBaUQsQ0FBQSxnQkFBQXlDLE9BQUEsQ0FBQTFGLENBQUEsRUFBQWlELENBQUEsc0JBQUEwQyxjQUFBMUMsQ0FBQSxFQUFBakQsQ0FBQSxhQUFBNEYsT0FBQTFDLENBQUEsRUFBQUksQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsUUFBQUUsQ0FBQSxHQUFBYSxRQUFBLENBQUF4QixDQUFBLENBQUFDLENBQUEsR0FBQUQsQ0FBQSxFQUFBSyxDQUFBLG1CQUFBTSxDQUFBLENBQUFjLElBQUEsUUFBQVosQ0FBQSxHQUFBRixDQUFBLENBQUFlLEdBQUEsRUFBQUUsQ0FBQSxHQUFBZixDQUFBLENBQUF2RyxLQUFBLFNBQUFzSCxDQUFBLGdCQUFBZ0IsV0FBQSxDQUFBaEIsQ0FBQSxLQUFBbkYsQ0FBQSxDQUFBa0YsSUFBQSxDQUFBQyxDQUFBLGVBQUE3RSxDQUFBLENBQUE4RixPQUFBLENBQUFqQixDQUFBLENBQUFrQixPQUFBLEVBQUFDLElBQUEsV0FBQS9DLENBQUEsSUFBQTJDLE1BQUEsU0FBQTNDLENBQUEsRUFBQU8sQ0FBQSxFQUFBRSxDQUFBLGdCQUFBVCxDQUFBLElBQUEyQyxNQUFBLFVBQUEzQyxDQUFBLEVBQUFPLENBQUEsRUFBQUUsQ0FBQSxRQUFBMUQsQ0FBQSxDQUFBOEYsT0FBQSxDQUFBakIsQ0FBQSxFQUFBbUIsSUFBQSxXQUFBL0MsQ0FBQSxJQUFBYSxDQUFBLENBQUF2RyxLQUFBLEdBQUEwRixDQUFBLEVBQUFPLENBQUEsQ0FBQU0sQ0FBQSxnQkFBQWIsQ0FBQSxXQUFBMkMsTUFBQSxVQUFBM0MsQ0FBQSxFQUFBTyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxDQUFBRSxDQUFBLENBQUFlLEdBQUEsU0FBQXpCLENBQUEsRUFBQUksQ0FBQSxvQkFBQS9GLEtBQUEsV0FBQUEsTUFBQTBGLENBQUEsRUFBQXZELENBQUEsYUFBQXVHLDJCQUFBLGVBQUFqRyxDQUFBLFdBQUFBLENBQUEsRUFBQWtELENBQUEsSUFBQTBDLE1BQUEsQ0FBQTNDLENBQUEsRUFBQXZELENBQUEsRUFBQU0sQ0FBQSxFQUFBa0QsQ0FBQSxnQkFBQUEsQ0FBQSxHQUFBQSxDQUFBLEdBQUFBLENBQUEsQ0FBQThDLElBQUEsQ0FBQUMsMEJBQUEsRUFBQUEsMEJBQUEsSUFBQUEsMEJBQUEscUJBQUF6QixpQkFBQXhFLENBQUEsRUFBQWtELENBQUEsRUFBQXhELENBQUEsUUFBQTRELENBQUEsR0FBQXVCLENBQUEsbUJBQUFyQixDQUFBLEVBQUFFLENBQUEsUUFBQUosQ0FBQSxLQUFBckQsQ0FBQSxRQUFBaUcsS0FBQSxzQ0FBQTVDLENBQUEsS0FBQTdELENBQUEsb0JBQUErRCxDQUFBLFFBQUFFLENBQUEsV0FBQW5HLEtBQUEsRUFBQTBGLENBQUEsRUFBQXRELElBQUEsZUFBQUQsQ0FBQSxDQUFBeUcsTUFBQSxHQUFBM0MsQ0FBQSxFQUFBOUQsQ0FBQSxDQUFBaUYsR0FBQSxHQUFBakIsQ0FBQSxVQUFBRSxDQUFBLEdBQUFsRSxDQUFBLENBQUEwRyxRQUFBLE1BQUF4QyxDQUFBLFFBQUFFLENBQUEsR0FBQXVDLG1CQUFBLENBQUF6QyxDQUFBLEVBQUFsRSxDQUFBLE9BQUFvRSxDQUFBLFFBQUFBLENBQUEsS0FBQWlCLENBQUEsbUJBQUFqQixDQUFBLHFCQUFBcEUsQ0FBQSxDQUFBeUcsTUFBQSxFQUFBekcsQ0FBQSxDQUFBNEcsSUFBQSxHQUFBNUcsQ0FBQSxDQUFBNkcsS0FBQSxHQUFBN0csQ0FBQSxDQUFBaUYsR0FBQSxzQkFBQWpGLENBQUEsQ0FBQXlHLE1BQUEsUUFBQTdDLENBQUEsS0FBQXVCLENBQUEsUUFBQXZCLENBQUEsR0FBQTdELENBQUEsRUFBQUMsQ0FBQSxDQUFBaUYsR0FBQSxFQUFBakYsQ0FBQSxDQUFBOEcsaUJBQUEsQ0FBQTlHLENBQUEsQ0FBQWlGLEdBQUEsdUJBQUFqRixDQUFBLENBQUF5RyxNQUFBLElBQUF6RyxDQUFBLENBQUErRyxNQUFBLFdBQUEvRyxDQUFBLENBQUFpRixHQUFBLEdBQUFyQixDQUFBLEdBQUFyRCxDQUFBLE1BQUFpRixDQUFBLEdBQUFULFFBQUEsQ0FBQXpFLENBQUEsRUFBQWtELENBQUEsRUFBQXhELENBQUEsb0JBQUF3RixDQUFBLENBQUFSLElBQUEsUUFBQXBCLENBQUEsR0FBQTVELENBQUEsQ0FBQUMsSUFBQSxHQUFBRixDQUFBLEdBQUFxRixDQUFBLEVBQUFJLENBQUEsQ0FBQVAsR0FBQSxLQUFBSSxDQUFBLHFCQUFBeEgsS0FBQSxFQUFBMkgsQ0FBQSxDQUFBUCxHQUFBLEVBQUFoRixJQUFBLEVBQUFELENBQUEsQ0FBQUMsSUFBQSxrQkFBQXVGLENBQUEsQ0FBQVIsSUFBQSxLQUFBcEIsQ0FBQSxHQUFBN0QsQ0FBQSxFQUFBQyxDQUFBLENBQUF5RyxNQUFBLFlBQUF6RyxDQUFBLENBQUFpRixHQUFBLEdBQUFPLENBQUEsQ0FBQVAsR0FBQSxtQkFBQTBCLG9CQUFBckcsQ0FBQSxFQUFBa0QsQ0FBQSxRQUFBeEQsQ0FBQSxHQUFBd0QsQ0FBQSxDQUFBaUQsTUFBQSxFQUFBN0MsQ0FBQSxHQUFBdEQsQ0FBQSxDQUFBMkQsUUFBQSxDQUFBakUsQ0FBQSxPQUFBNEQsQ0FBQSxLQUFBTCxDQUFBLFNBQUFDLENBQUEsQ0FBQWtELFFBQUEscUJBQUExRyxDQUFBLElBQUFNLENBQUEsQ0FBQTJELFFBQUEsZUFBQVQsQ0FBQSxDQUFBaUQsTUFBQSxhQUFBakQsQ0FBQSxDQUFBeUIsR0FBQSxHQUFBMUIsQ0FBQSxFQUFBb0QsbUJBQUEsQ0FBQXJHLENBQUEsRUFBQWtELENBQUEsZUFBQUEsQ0FBQSxDQUFBaUQsTUFBQSxrQkFBQXpHLENBQUEsS0FBQXdELENBQUEsQ0FBQWlELE1BQUEsWUFBQWpELENBQUEsQ0FBQXlCLEdBQUEsT0FBQStCLFNBQUEsdUNBQUFoSCxDQUFBLGlCQUFBcUYsQ0FBQSxNQUFBdkIsQ0FBQSxHQUFBaUIsUUFBQSxDQUFBbkIsQ0FBQSxFQUFBdEQsQ0FBQSxDQUFBMkQsUUFBQSxFQUFBVCxDQUFBLENBQUF5QixHQUFBLG1CQUFBbkIsQ0FBQSxDQUFBa0IsSUFBQSxTQUFBeEIsQ0FBQSxDQUFBaUQsTUFBQSxZQUFBakQsQ0FBQSxDQUFBeUIsR0FBQSxHQUFBbkIsQ0FBQSxDQUFBbUIsR0FBQSxFQUFBekIsQ0FBQSxDQUFBa0QsUUFBQSxTQUFBckIsQ0FBQSxNQUFBckIsQ0FBQSxHQUFBRixDQUFBLENBQUFtQixHQUFBLFNBQUFqQixDQUFBLEdBQUFBLENBQUEsQ0FBQS9ELElBQUEsSUFBQXVELENBQUEsQ0FBQWxELENBQUEsQ0FBQTJHLFVBQUEsSUFBQWpELENBQUEsQ0FBQW5HLEtBQUEsRUFBQTJGLENBQUEsQ0FBQTBELElBQUEsR0FBQTVHLENBQUEsQ0FBQTZHLE9BQUEsZUFBQTNELENBQUEsQ0FBQWlELE1BQUEsS0FBQWpELENBQUEsQ0FBQWlELE1BQUEsV0FBQWpELENBQUEsQ0FBQXlCLEdBQUEsR0FBQTFCLENBQUEsR0FBQUMsQ0FBQSxDQUFBa0QsUUFBQSxTQUFBckIsQ0FBQSxJQUFBckIsQ0FBQSxJQUFBUixDQUFBLENBQUFpRCxNQUFBLFlBQUFqRCxDQUFBLENBQUF5QixHQUFBLE9BQUErQixTQUFBLHNDQUFBeEQsQ0FBQSxDQUFBa0QsUUFBQSxTQUFBckIsQ0FBQSxjQUFBK0IsYUFBQTdELENBQUEsUUFBQWpELENBQUEsS0FBQStHLE1BQUEsRUFBQTlELENBQUEsWUFBQUEsQ0FBQSxLQUFBakQsQ0FBQSxDQUFBZ0gsUUFBQSxHQUFBL0QsQ0FBQSxXQUFBQSxDQUFBLEtBQUFqRCxDQUFBLENBQUFpSCxVQUFBLEdBQUFoRSxDQUFBLEtBQUFqRCxDQUFBLENBQUFrSCxRQUFBLEdBQUFqRSxDQUFBLFdBQUFrRSxVQUFBLENBQUFDLElBQUEsQ0FBQXBILENBQUEsY0FBQXFILGNBQUFwRSxDQUFBLFFBQUFqRCxDQUFBLEdBQUFpRCxDQUFBLENBQUFxRSxVQUFBLFFBQUF0SCxDQUFBLENBQUEwRSxJQUFBLG9CQUFBMUUsQ0FBQSxDQUFBMkUsR0FBQSxFQUFBMUIsQ0FBQSxDQUFBcUUsVUFBQSxHQUFBdEgsQ0FBQSxhQUFBdUUsUUFBQXRCLENBQUEsU0FBQWtFLFVBQUEsTUFBQUosTUFBQSxhQUFBOUQsQ0FBQSxDQUFBd0MsT0FBQSxDQUFBcUIsWUFBQSxjQUFBUyxLQUFBLGlCQUFBakMsT0FBQXRGLENBQUEsUUFBQUEsQ0FBQSxXQUFBQSxDQUFBLFFBQUFrRCxDQUFBLEdBQUFsRCxDQUFBLENBQUEwRCxDQUFBLE9BQUFSLENBQUEsU0FBQUEsQ0FBQSxDQUFBMEIsSUFBQSxDQUFBNUUsQ0FBQSw0QkFBQUEsQ0FBQSxDQUFBNEcsSUFBQSxTQUFBNUcsQ0FBQSxPQUFBd0gsS0FBQSxDQUFBeEgsQ0FBQSxDQUFBeUgsTUFBQSxTQUFBbkUsQ0FBQSxPQUFBRSxDQUFBLFlBQUFvRCxLQUFBLGFBQUF0RCxDQUFBLEdBQUF0RCxDQUFBLENBQUF5SCxNQUFBLE9BQUEvSCxDQUFBLENBQUFrRixJQUFBLENBQUE1RSxDQUFBLEVBQUFzRCxDQUFBLFVBQUFzRCxJQUFBLENBQUFySixLQUFBLEdBQUF5QyxDQUFBLENBQUFzRCxDQUFBLEdBQUFzRCxJQUFBLENBQUFqSCxJQUFBLE9BQUFpSCxJQUFBLFNBQUFBLElBQUEsQ0FBQXJKLEtBQUEsR0FBQTBGLENBQUEsRUFBQTJELElBQUEsQ0FBQWpILElBQUEsT0FBQWlILElBQUEsWUFBQXBELENBQUEsQ0FBQW9ELElBQUEsR0FBQXBELENBQUEsZ0JBQUFrRCxTQUFBLENBQUFiLFdBQUEsQ0FBQTdGLENBQUEsa0NBQUFnRixpQkFBQSxDQUFBNUIsU0FBQSxHQUFBNkIsMEJBQUEsRUFBQTNCLENBQUEsQ0FBQWlDLENBQUEsbUJBQUFoSSxLQUFBLEVBQUEwSCwwQkFBQSxFQUFBZixZQUFBLFNBQUFaLENBQUEsQ0FBQTJCLDBCQUFBLG1CQUFBMUgsS0FBQSxFQUFBeUgsaUJBQUEsRUFBQWQsWUFBQSxTQUFBYyxpQkFBQSxDQUFBMEMsV0FBQSxHQUFBMUQsTUFBQSxDQUFBaUIsMEJBQUEsRUFBQW5CLENBQUEsd0JBQUE5RCxDQUFBLENBQUEySCxtQkFBQSxhQUFBMUUsQ0FBQSxRQUFBakQsQ0FBQSx3QkFBQWlELENBQUEsSUFBQUEsQ0FBQSxDQUFBMkUsV0FBQSxXQUFBNUgsQ0FBQSxLQUFBQSxDQUFBLEtBQUFnRixpQkFBQSw2QkFBQWhGLENBQUEsQ0FBQTBILFdBQUEsSUFBQTFILENBQUEsQ0FBQWpDLElBQUEsT0FBQWlDLENBQUEsQ0FBQTZILElBQUEsYUFBQTVFLENBQUEsV0FBQUUsTUFBQSxDQUFBMkUsY0FBQSxHQUFBM0UsTUFBQSxDQUFBMkUsY0FBQSxDQUFBN0UsQ0FBQSxFQUFBZ0MsMEJBQUEsS0FBQWhDLENBQUEsQ0FBQThFLFNBQUEsR0FBQTlDLDBCQUFBLEVBQUFqQixNQUFBLENBQUFmLENBQUEsRUFBQWEsQ0FBQSx5QkFBQWIsQ0FBQSxDQUFBRyxTQUFBLEdBQUFELE1BQUEsQ0FBQW1CLE1BQUEsQ0FBQWlCLENBQUEsR0FBQXRDLENBQUEsS0FBQWpELENBQUEsQ0FBQWdJLEtBQUEsYUFBQS9FLENBQUEsYUFBQThDLE9BQUEsRUFBQTlDLENBQUEsT0FBQXVDLHFCQUFBLENBQUFHLGFBQUEsQ0FBQXZDLFNBQUEsR0FBQVksTUFBQSxDQUFBMkIsYUFBQSxDQUFBdkMsU0FBQSxFQUFBUSxDQUFBLGlDQUFBNUQsQ0FBQSxDQUFBMkYsYUFBQSxHQUFBQSxhQUFBLEVBQUEzRixDQUFBLENBQUFpSSxLQUFBLGFBQUFoRixDQUFBLEVBQUFDLENBQUEsRUFBQXhELENBQUEsRUFBQTRELENBQUEsRUFBQUUsQ0FBQSxlQUFBQSxDQUFBLEtBQUFBLENBQUEsR0FBQTBFLE9BQUEsT0FBQXhFLENBQUEsT0FBQWlDLGFBQUEsQ0FBQXZCLElBQUEsQ0FBQW5CLENBQUEsRUFBQUMsQ0FBQSxFQUFBeEQsQ0FBQSxFQUFBNEQsQ0FBQSxHQUFBRSxDQUFBLFVBQUF4RCxDQUFBLENBQUEySCxtQkFBQSxDQUFBekUsQ0FBQSxJQUFBUSxDQUFBLEdBQUFBLENBQUEsQ0FBQWtELElBQUEsR0FBQVosSUFBQSxXQUFBL0MsQ0FBQSxXQUFBQSxDQUFBLENBQUF0RCxJQUFBLEdBQUFzRCxDQUFBLENBQUExRixLQUFBLEdBQUFtRyxDQUFBLENBQUFrRCxJQUFBLFdBQUFwQixxQkFBQSxDQUFBRCxDQUFBLEdBQUF2QixNQUFBLENBQUF1QixDQUFBLEVBQUF6QixDQUFBLGdCQUFBRSxNQUFBLENBQUF1QixDQUFBLEVBQUE3QixDQUFBLGlDQUFBTSxNQUFBLENBQUF1QixDQUFBLDZEQUFBdkYsQ0FBQSxDQUFBbUksSUFBQSxhQUFBbEYsQ0FBQSxRQUFBakQsQ0FBQSxHQUFBbUQsTUFBQSxDQUFBRixDQUFBLEdBQUFDLENBQUEsZ0JBQUF4RCxDQUFBLElBQUFNLENBQUEsRUFBQWtELENBQUEsQ0FBQWtFLElBQUEsQ0FBQTFILENBQUEsVUFBQXdELENBQUEsQ0FBQWtGLE9BQUEsYUFBQXhCLEtBQUEsV0FBQTFELENBQUEsQ0FBQXVFLE1BQUEsU0FBQXhFLENBQUEsR0FBQUMsQ0FBQSxDQUFBbUYsR0FBQSxRQUFBcEYsQ0FBQSxJQUFBakQsQ0FBQSxTQUFBNEcsSUFBQSxDQUFBckosS0FBQSxHQUFBMEYsQ0FBQSxFQUFBMkQsSUFBQSxDQUFBakgsSUFBQSxPQUFBaUgsSUFBQSxXQUFBQSxJQUFBLENBQUFqSCxJQUFBLE9BQUFpSCxJQUFBLFFBQUE1RyxDQUFBLENBQUFzRixNQUFBLEdBQUFBLE1BQUEsRUFBQWYsT0FBQSxDQUFBbkIsU0FBQSxLQUFBd0UsV0FBQSxFQUFBckQsT0FBQSxFQUFBZ0QsS0FBQSxXQUFBQSxNQUFBdkgsQ0FBQSxhQUFBc0ksSUFBQSxXQUFBMUIsSUFBQSxXQUFBTixJQUFBLFFBQUFDLEtBQUEsR0FBQXRELENBQUEsT0FBQXRELElBQUEsWUFBQXlHLFFBQUEsY0FBQUQsTUFBQSxnQkFBQXhCLEdBQUEsR0FBQTFCLENBQUEsT0FBQWtFLFVBQUEsQ0FBQTFCLE9BQUEsQ0FBQTRCLGFBQUEsSUFBQXJILENBQUEsV0FBQWtELENBQUEsa0JBQUFBLENBQUEsQ0FBQXFGLE1BQUEsT0FBQTdJLENBQUEsQ0FBQWtGLElBQUEsT0FBQTFCLENBQUEsTUFBQXNFLEtBQUEsRUFBQXRFLENBQUEsQ0FBQXNGLEtBQUEsY0FBQXRGLENBQUEsSUFBQUQsQ0FBQSxNQUFBd0YsSUFBQSxXQUFBQSxLQUFBLFNBQUE5SSxJQUFBLFdBQUFzRCxDQUFBLFFBQUFrRSxVQUFBLElBQUFHLFVBQUEsa0JBQUFyRSxDQUFBLENBQUF5QixJQUFBLFFBQUF6QixDQUFBLENBQUEwQixHQUFBLGNBQUErRCxJQUFBLEtBQUFsQyxpQkFBQSxXQUFBQSxrQkFBQXhHLENBQUEsYUFBQUwsSUFBQSxRQUFBSyxDQUFBLE1BQUFrRCxDQUFBLGtCQUFBeUYsT0FBQWpKLENBQUEsRUFBQTRELENBQUEsV0FBQUksQ0FBQSxDQUFBZ0IsSUFBQSxZQUFBaEIsQ0FBQSxDQUFBaUIsR0FBQSxHQUFBM0UsQ0FBQSxFQUFBa0QsQ0FBQSxDQUFBMEQsSUFBQSxHQUFBbEgsQ0FBQSxFQUFBNEQsQ0FBQSxLQUFBSixDQUFBLENBQUFpRCxNQUFBLFdBQUFqRCxDQUFBLENBQUF5QixHQUFBLEdBQUExQixDQUFBLEtBQUFLLENBQUEsYUFBQUEsQ0FBQSxRQUFBNkQsVUFBQSxDQUFBTSxNQUFBLE1BQUFuRSxDQUFBLFNBQUFBLENBQUEsUUFBQUUsQ0FBQSxRQUFBMkQsVUFBQSxDQUFBN0QsQ0FBQSxHQUFBSSxDQUFBLEdBQUFGLENBQUEsQ0FBQThELFVBQUEsaUJBQUE5RCxDQUFBLENBQUF1RCxNQUFBLFNBQUE0QixNQUFBLGFBQUFuRixDQUFBLENBQUF1RCxNQUFBLFNBQUF1QixJQUFBLFFBQUExRSxDQUFBLEdBQUFsRSxDQUFBLENBQUFrRixJQUFBLENBQUFwQixDQUFBLGVBQUFNLENBQUEsR0FBQXBFLENBQUEsQ0FBQWtGLElBQUEsQ0FBQXBCLENBQUEscUJBQUFJLENBQUEsSUFBQUUsQ0FBQSxhQUFBd0UsSUFBQSxHQUFBOUUsQ0FBQSxDQUFBd0QsUUFBQSxTQUFBMkIsTUFBQSxDQUFBbkYsQ0FBQSxDQUFBd0QsUUFBQSxnQkFBQXNCLElBQUEsR0FBQTlFLENBQUEsQ0FBQXlELFVBQUEsU0FBQTBCLE1BQUEsQ0FBQW5GLENBQUEsQ0FBQXlELFVBQUEsY0FBQXJELENBQUEsYUFBQTBFLElBQUEsR0FBQTlFLENBQUEsQ0FBQXdELFFBQUEsU0FBQTJCLE1BQUEsQ0FBQW5GLENBQUEsQ0FBQXdELFFBQUEscUJBQUFsRCxDQUFBLFFBQUFvQyxLQUFBLHFEQUFBb0MsSUFBQSxHQUFBOUUsQ0FBQSxDQUFBeUQsVUFBQSxTQUFBMEIsTUFBQSxDQUFBbkYsQ0FBQSxDQUFBeUQsVUFBQSxZQUFBUixNQUFBLFdBQUFBLE9BQUF4RCxDQUFBLEVBQUFqRCxDQUFBLGFBQUFrRCxDQUFBLFFBQUFpRSxVQUFBLENBQUFNLE1BQUEsTUFBQXZFLENBQUEsU0FBQUEsQ0FBQSxRQUFBSSxDQUFBLFFBQUE2RCxVQUFBLENBQUFqRSxDQUFBLE9BQUFJLENBQUEsQ0FBQXlELE1BQUEsU0FBQXVCLElBQUEsSUFBQTVJLENBQUEsQ0FBQWtGLElBQUEsQ0FBQXRCLENBQUEsd0JBQUFnRixJQUFBLEdBQUFoRixDQUFBLENBQUEyRCxVQUFBLFFBQUF6RCxDQUFBLEdBQUFGLENBQUEsYUFBQUUsQ0FBQSxpQkFBQVAsQ0FBQSxtQkFBQUEsQ0FBQSxLQUFBTyxDQUFBLENBQUF1RCxNQUFBLElBQUEvRyxDQUFBLElBQUFBLENBQUEsSUFBQXdELENBQUEsQ0FBQXlELFVBQUEsS0FBQXpELENBQUEsY0FBQUUsQ0FBQSxHQUFBRixDQUFBLEdBQUFBLENBQUEsQ0FBQThELFVBQUEsY0FBQTVELENBQUEsQ0FBQWdCLElBQUEsR0FBQXpCLENBQUEsRUFBQVMsQ0FBQSxDQUFBaUIsR0FBQSxHQUFBM0UsQ0FBQSxFQUFBd0QsQ0FBQSxTQUFBMkMsTUFBQSxnQkFBQVMsSUFBQSxHQUFBcEQsQ0FBQSxDQUFBeUQsVUFBQSxFQUFBbEMsQ0FBQSxTQUFBNkQsUUFBQSxDQUFBbEYsQ0FBQSxNQUFBa0YsUUFBQSxXQUFBQSxTQUFBM0YsQ0FBQSxFQUFBakQsQ0FBQSxvQkFBQWlELENBQUEsQ0FBQXlCLElBQUEsUUFBQXpCLENBQUEsQ0FBQTBCLEdBQUEscUJBQUExQixDQUFBLENBQUF5QixJQUFBLG1CQUFBekIsQ0FBQSxDQUFBeUIsSUFBQSxRQUFBa0MsSUFBQSxHQUFBM0QsQ0FBQSxDQUFBMEIsR0FBQSxnQkFBQTFCLENBQUEsQ0FBQXlCLElBQUEsU0FBQWdFLElBQUEsUUFBQS9ELEdBQUEsR0FBQTFCLENBQUEsQ0FBQTBCLEdBQUEsT0FBQXdCLE1BQUEsa0JBQUFTLElBQUEseUJBQUEzRCxDQUFBLENBQUF5QixJQUFBLElBQUExRSxDQUFBLFVBQUE0RyxJQUFBLEdBQUE1RyxDQUFBLEdBQUErRSxDQUFBLEtBQUE4RCxNQUFBLFdBQUFBLE9BQUE1RixDQUFBLGFBQUFqRCxDQUFBLFFBQUFtSCxVQUFBLENBQUFNLE1BQUEsTUFBQXpILENBQUEsU0FBQUEsQ0FBQSxRQUFBa0QsQ0FBQSxRQUFBaUUsVUFBQSxDQUFBbkgsQ0FBQSxPQUFBa0QsQ0FBQSxDQUFBK0QsVUFBQSxLQUFBaEUsQ0FBQSxjQUFBMkYsUUFBQSxDQUFBMUYsQ0FBQSxDQUFBb0UsVUFBQSxFQUFBcEUsQ0FBQSxDQUFBZ0UsUUFBQSxHQUFBRyxhQUFBLENBQUFuRSxDQUFBLEdBQUE2QixDQUFBLHlCQUFBK0QsT0FBQTdGLENBQUEsYUFBQWpELENBQUEsUUFBQW1ILFVBQUEsQ0FBQU0sTUFBQSxNQUFBekgsQ0FBQSxTQUFBQSxDQUFBLFFBQUFrRCxDQUFBLFFBQUFpRSxVQUFBLENBQUFuSCxDQUFBLE9BQUFrRCxDQUFBLENBQUE2RCxNQUFBLEtBQUE5RCxDQUFBLFFBQUF2RCxDQUFBLEdBQUF3RCxDQUFBLENBQUFvRSxVQUFBLGtCQUFBNUgsQ0FBQSxDQUFBZ0YsSUFBQSxRQUFBcEIsQ0FBQSxHQUFBNUQsQ0FBQSxDQUFBaUYsR0FBQSxFQUFBMEMsYUFBQSxDQUFBbkUsQ0FBQSxZQUFBSSxDQUFBLFlBQUE0QyxLQUFBLDhCQUFBNkMsYUFBQSxXQUFBQSxjQUFBL0ksQ0FBQSxFQUFBa0QsQ0FBQSxFQUFBeEQsQ0FBQSxnQkFBQTBHLFFBQUEsS0FBQXpDLFFBQUEsRUFBQTJCLE1BQUEsQ0FBQXRGLENBQUEsR0FBQTJHLFVBQUEsRUFBQXpELENBQUEsRUFBQTJELE9BQUEsRUFBQW5ILENBQUEsb0JBQUF5RyxNQUFBLFVBQUF4QixHQUFBLEdBQUExQixDQUFBLEdBQUE4QixDQUFBLE9BQUEvRSxDQUFBO0FBQUEsU0FBQTBKLHVCQUFBQSxDQUFBQyxHQUFBLEVBQUE3RCxPQUFBLEVBQUE4RCxNQUFBLEVBQUFDLEtBQUEsRUFBQUMsTUFBQSxFQUFBeE0sR0FBQSxFQUFBcUgsR0FBQSxjQUFBb0YsSUFBQSxHQUFBSixHQUFBLENBQUFyTSxHQUFBLEVBQUFxSCxHQUFBLE9BQUFwSCxLQUFBLEdBQUF3TSxJQUFBLENBQUF4TSxLQUFBLFdBQUF5TSxLQUFBLElBQUFKLE1BQUEsQ0FBQUksS0FBQSxpQkFBQUQsSUFBQSxDQUFBcEssSUFBQSxJQUFBbUcsT0FBQSxDQUFBdkksS0FBQSxZQUFBMkssT0FBQSxDQUFBcEMsT0FBQSxDQUFBdkksS0FBQSxFQUFBeUksSUFBQSxDQUFBNkQsS0FBQSxFQUFBQyxNQUFBO0FBQUEsU0FBQUcscUJBQUFBLENBQUFqTSxFQUFBLDZCQUFBa00sSUFBQSxTQUFBQyxJQUFBLEdBQUFkLFNBQUEsYUFBQW5CLE9BQUEsV0FBQXBDLE9BQUEsRUFBQThELE1BQUEsUUFBQUQsR0FBQSxHQUFBM0wsRUFBQSxDQUFBb0wsS0FBQSxDQUFBYyxJQUFBLEVBQUFDLElBQUEsWUFBQU4sTUFBQXRNLEtBQUEsSUFBQW1NLHVCQUFBLENBQUFDLEdBQUEsRUFBQTdELE9BQUEsRUFBQThELE1BQUEsRUFBQUMsS0FBQSxFQUFBQyxNQUFBLFVBQUF2TSxLQUFBLGNBQUF1TSxPQUFBL0osR0FBQSxJQUFBMkosdUJBQUEsQ0FBQUMsR0FBQSxFQUFBN0QsT0FBQSxFQUFBOEQsTUFBQSxFQUFBQyxLQUFBLEVBQUFDLE1BQUEsV0FBQS9KLEdBQUEsS0FBQThKLEtBQUEsQ0FBQU8sU0FBQTtBQUFBLFNBQUFoTixtQkFBQUEsQ0FBQWlOLFFBQUEsRUFBQUMsV0FBQSxVQUFBRCxRQUFBLFlBQUFDLFdBQUEsZUFBQTVELFNBQUE7QUFBQSxTQUFBNkQscUJBQUFBLENBQUFDLE1BQUEsRUFBQUMsS0FBQSxhQUFBakgsQ0FBQSxNQUFBQSxDQUFBLEdBQUFpSCxLQUFBLENBQUFoRCxNQUFBLEVBQUFqRSxDQUFBLFVBQUFrSCxVQUFBLEdBQUFELEtBQUEsQ0FBQWpILENBQUEsR0FBQWtILFVBQUEsQ0FBQXpHLFVBQUEsR0FBQXlHLFVBQUEsQ0FBQXpHLFVBQUEsV0FBQXlHLFVBQUEsQ0FBQXhHLFlBQUEsd0JBQUF3RyxVQUFBLEVBQUFBLFVBQUEsQ0FBQXZHLFFBQUEsU0FBQWhCLE1BQUEsQ0FBQUksY0FBQSxDQUFBaUgsTUFBQSxFQUFBZixrQkFBQSxDQUFBaUIsVUFBQSxDQUFBcE4sR0FBQSxHQUFBb04sVUFBQTtBQUFBLFNBQUFyTixnQkFBQUEsQ0FBQWlOLFdBQUEsRUFBQUssVUFBQSxFQUFBQyxXQUFBLFFBQUFELFVBQUEsRUFBQUoscUJBQUEsQ0FBQUQsV0FBQSxDQUFBbEgsU0FBQSxFQUFBdUgsVUFBQSxPQUFBQyxXQUFBLEVBQUFMLHFCQUFBLENBQUFELFdBQUEsRUFBQU0sV0FBQSxHQUFBekgsTUFBQSxDQUFBSSxjQUFBLENBQUErRyxXQUFBLGlCQUFBbkcsUUFBQSxtQkFBQW1HLFdBQUE7QUFBQSxTQUFBeEgsbUJBQUFBLENBQUEwRyxHQUFBLEVBQUFsTSxHQUFBLEVBQUFDLEtBQUEsSUFBQUQsR0FBQSxHQUFBbU0sa0JBQUEsQ0FBQW5NLEdBQUEsT0FBQUEsR0FBQSxJQUFBa00sR0FBQSxJQUFBckcsTUFBQSxDQUFBSSxjQUFBLENBQUFpRyxHQUFBLEVBQUFsTSxHQUFBLElBQUFDLEtBQUEsRUFBQUEsS0FBQSxFQUFBMEcsVUFBQSxRQUFBQyxZQUFBLFFBQUFDLFFBQUEsb0JBQUFxRixHQUFBLENBQUFsTSxHQUFBLElBQUFDLEtBQUEsV0FBQWlNLEdBQUE7QUFBQSxTQUFBQyxrQkFBQUEsQ0FBQXhHLENBQUEsUUFBQU8sQ0FBQSxHQUFBcUgsZ0JBQUEsQ0FBQTVILENBQUEsZ0NBQUE0QyxXQUFBLENBQUFyQyxDQUFBLElBQUFBLENBQUEsR0FBQUEsQ0FBQTtBQUFBLFNBQUFxSCxnQkFBQUEsQ0FBQTVILENBQUEsRUFBQUMsQ0FBQSxvQkFBQTJDLFdBQUEsQ0FBQTVDLENBQUEsTUFBQUEsQ0FBQSxTQUFBQSxDQUFBLE1BQUFqRCxDQUFBLEdBQUFpRCxDQUFBLENBQUFRLE1BQUEsQ0FBQXFILFdBQUEsa0JBQUE5SyxDQUFBLFFBQUF3RCxDQUFBLEdBQUF4RCxDQUFBLENBQUE0RSxJQUFBLENBQUEzQixDQUFBLEVBQUFDLENBQUEsZ0NBQUEyQyxXQUFBLENBQUFyQyxDQUFBLFVBQUFBLENBQUEsWUFBQWtELFNBQUEseUVBQUF4RCxDQUFBLEdBQUE2SCxNQUFBLEdBQUFDLE1BQUEsRUFBQS9ILENBQUE7QUFEd0M7QUFDaUI7QUFDdkI7QUFDRTtBQUNIO0FBQUEsSUFFWm9KLElBQUk7RUFBQSxTQUFBQSxLQUFBO0lBQUFqUCxtQkFBQSxPQUFBaVAsSUFBQTtFQUFBO0VBQUEsT0FBQWhQLGdCQUFBLENBQUFnUCxJQUFBO0lBQUEvTyxHQUFBO0lBQUFDLEtBQUE7SUFJdkI7QUFDRjtBQUNBO0lBRkU7TUFBQSxJQUFBK08sV0FBQSxHQUFBckMscUJBQUEsZUFBQWpILHVCQUFBLEdBQUE2RSxJQUFBLENBR0EsU0FBQXNELFFBQUE7UUFBQSxJQUFBMUksS0FBQSxFQUFBOEosTUFBQTtRQUFBLE9BQUF2Six1QkFBQSxHQUFBb0IsSUFBQSxVQUFBaUgsU0FBQUMsUUFBQTtVQUFBLGtCQUFBQSxRQUFBLENBQUFoRCxJQUFBLEdBQUFnRCxRQUFBLENBQUExRSxJQUFBO1lBQUE7Y0FDUW5FLEtBQUssR0FBRzVELElBQUksQ0FBQ2dCLEtBQUssQ0FBQzFDLG9CQUFLLENBQUNLLEdBQUcsQ0FBQ3FFLHNCQUFPLENBQUNVLElBQUksQ0FBQ0MsU0FBUyxDQUFDLENBQUMsQ0FBQ2pGLEtBQUs7Y0FBQSxNQUM3RCxDQUFDa0YsS0FBSyxJQUFJekQsUUFBUSxDQUFDc0IsSUFBSSxDQUFDQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQUErSyxRQUFBLENBQUExRSxJQUFBO2dCQUFBO2NBQUE7Y0FDNURqRSxLQUFLLENBQUNDLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRTtnQkFBQzRKLElBQUksRUFBRSxDQUFDO2dCQUFFQyxNQUFNLEVBQUU7Y0FBSSxDQUFDLEVBQUUsWUFBTTtnQkFDOUQxTixNQUFNLENBQUNNLElBQUksQ0FBQywrQkFBK0IsRUFBRSxRQUFRLENBQUM7Y0FDeEQsQ0FBQyxDQUFDO2NBQUMsT0FBQWlNLFFBQUEsQ0FBQTdFLE1BQUEsV0FDSSxLQUFLO1lBQUE7Y0FBQTZFLFFBQUEsQ0FBQTFFLElBQUE7Y0FBQSxPQUVPcUUsT0FBTyxDQUFDek4sR0FBRyxDQUFDO2dCQUMvQjJCLEdBQUcsRUFBRSxJQUFJLENBQUN1TixRQUFRLEdBQUcsT0FBTztnQkFDNUJmLFFBQVEsRUFBRTVJLFlBQVksQ0FBQ2xFLElBQUk7Z0JBQzNCME0sV0FBVyxFQUFFLElBQUk7Z0JBQ2pCb0IsT0FBTyxFQUFFO2tCQUNQLGVBQWUsRUFBRSxTQUFTLEdBQUdsSztnQkFDL0I7Y0FDRixDQUFDLENBQUM7WUFBQTtjQVBJOEosTUFBTSxHQUFBakIsUUFBQSxDQUFBaEYsSUFBQTtjQUFBLElBU1BpRyxNQUFNLENBQUMsU0FBUyxDQUFDO2dCQUFBakIsUUFBQSxDQUFBMUUsSUFBQTtnQkFBQTtjQUFBO2NBQ3BCakUsS0FBSyxDQUFDQyxHQUFHLENBQUNvSixJQUFJLENBQUNHLE9BQU8sQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHSSxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQUNDLElBQUksRUFBRSxDQUFDO2dCQUFFQyxNQUFNLEVBQUUsSUFBSTtnQkFBRUcsSUFBSSxFQUFFO2NBQUksQ0FBQyxDQUFDO2NBQUMsT0FBQXRCLFFBQUEsQ0FBQTdFLE1BQUEsV0FDbEYsS0FBSztZQUFBO2NBQUEsT0FBQTZFLFFBQUEsQ0FBQTdFLE1BQUEsV0FFUCxJQUFJO1lBQUE7WUFBQTtjQUFBLE9BQUE2RSxRQUFBLENBQUE3QyxJQUFBO1VBQUE7UUFBQSxHQUFBMEMsT0FBQTtNQUFBLENBQ1o7TUFBQSxTQUFBMEIsV0FBQTtRQUFBLE9BQUFQLFdBQUEsQ0FBQWxELEtBQUEsT0FBQUMsU0FBQTtNQUFBO01BQUEsT0FBQXdELFVBQUE7SUFBQTtJQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7SUFKRTtFQUFBO0lBQUF2UCxHQUFBO0lBQUFDLEtBQUE7TUFBQSxJQUFBdVAsV0FBQSxHQUFBN0MscUJBQUEsZUFBQWpILHVCQUFBLEdBQUE2RSxJQUFBLENBS0EsU0FBQWtGLFNBQStCQyxPQUFlLEVBQUVDLElBQWE7UUFBQSxJQUFBVixNQUFBO1FBQUEsT0FBQXZKLHVCQUFBLEdBQUFvQixJQUFBLFVBQUE4SSxVQUFBQyxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQTdFLElBQUEsR0FBQTZFLFNBQUEsQ0FBQXZHLElBQUE7WUFBQTtjQUFBdUcsU0FBQSxDQUFBdkcsSUFBQTtjQUFBLE9BQ3RDcUUsT0FBTyxDQUFDek4sR0FBRyxDQUFDO2dCQUMvQjJCLEdBQUcsRUFBRSxJQUFJLENBQUN1TixRQUFRLEdBQUcsU0FBUyxHQUFHTSxPQUFPLEdBQUcsVUFBVSxJQUFJQyxJQUFJLEdBQUcsS0FBSyxHQUFHQSxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNsRnRCLFFBQVEsRUFBRTVJLFlBQVksQ0FBQ2xFLElBQUk7Z0JBQzNCME0sV0FBVyxFQUFFLElBQUk7Z0JBQ2pCb0IsT0FBTyxFQUFFO2tCQUNQLGVBQWUsRUFBRSxTQUFTLEdBQUc5TixJQUFJLENBQUNnQixLQUFLLENBQUMxQyxvQkFBSyxDQUFDSyxHQUFHLENBQUNxRSxzQkFBTyxDQUFDVSxJQUFJLENBQUNDLFNBQVMsQ0FBQyxDQUFDLENBQUNqRjtnQkFDN0U7Y0FDRixDQUFDLENBQUM7WUFBQTtjQVBJZ1AsTUFBTSxHQUFBWSxTQUFBLENBQUE3RyxJQUFBO2NBQUEsSUFTUGlHLE1BQU0sQ0FBQyxTQUFTLENBQUM7Z0JBQUFZLFNBQUEsQ0FBQXZHLElBQUE7Z0JBQUE7Y0FBQTtjQUNwQndHLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDckIsSUFBSSxDQUFDRyxPQUFPLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBR0ksTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2NBQUMsT0FBQVksU0FBQSxDQUFBMUcsTUFBQTtZQUFBO2NBQUEsT0FBQTBHLFNBQUEsQ0FBQTFHLE1BQUEsV0FHbEQ4RixNQUFNLENBQUMsUUFBUSxDQUFDO1lBQUE7WUFBQTtjQUFBLE9BQUFZLFNBQUEsQ0FBQTFFLElBQUE7VUFBQTtRQUFBLEdBQUFzRSxRQUFBO01BQUEsQ0FDeEI7TUFBQSxTQUFBTyxXQUFBdkIsRUFBQSxFQUFBd0IsR0FBQTtRQUFBLE9BQUFULFdBQUEsQ0FBQTFELEtBQUEsT0FBQUMsU0FBQTtNQUFBO01BQUEsT0FBQWlFLFVBQUE7SUFBQTtFQUFBO0FBQUE7QUFBQXhLLG1CQUFBLENBbkRrQnVKLElBQUksY0FFTCw4QkFBOEI7Ozs7O3FEQ1BsRCxxSkFBQXJKLHlCQUFBLFlBQUFBLG9CQUFBLFdBQUFoRCxDQUFBLFNBQUFpRCxDQUFBLEVBQUFqRCxDQUFBLE9BQUFrRCxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsU0FBQSxFQUFBMUQsQ0FBQSxHQUFBd0QsQ0FBQSxDQUFBRyxjQUFBLEVBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBSSxjQUFBLGNBQUFOLENBQUEsRUFBQWpELENBQUEsRUFBQWtELENBQUEsSUFBQUQsQ0FBQSxDQUFBakQsQ0FBQSxJQUFBa0QsQ0FBQSxDQUFBM0YsS0FBQSxLQUFBaUcsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssYUFBQSx1QkFBQUMsQ0FBQSxHQUFBTixDQUFBLENBQUFPLFdBQUEsOEJBQUFDLE9BQUFmLENBQUEsRUFBQWpELENBQUEsRUFBQWtELENBQUEsV0FBQUMsTUFBQSxDQUFBSSxjQUFBLENBQUFOLENBQUEsRUFBQWpELENBQUEsSUFBQXpDLEtBQUEsRUFBQTJGLENBQUEsRUFBQWUsVUFBQSxNQUFBQyxZQUFBLE1BQUFDLFFBQUEsU0FBQWxCLENBQUEsQ0FBQWpELENBQUEsV0FBQWdFLE1BQUEsbUJBQUFmLENBQUEsSUFBQWUsTUFBQSxZQUFBQSxPQUFBZixDQUFBLEVBQUFqRCxDQUFBLEVBQUFrRCxDQUFBLFdBQUFELENBQUEsQ0FBQWpELENBQUEsSUFBQWtELENBQUEsZ0JBQUFrQixLQUFBbkIsQ0FBQSxFQUFBakQsQ0FBQSxFQUFBa0QsQ0FBQSxFQUFBeEQsQ0FBQSxRQUFBOEQsQ0FBQSxHQUFBeEQsQ0FBQSxJQUFBQSxDQUFBLENBQUFvRCxTQUFBLFlBQUFpQixTQUFBLEdBQUFyRSxDQUFBLEdBQUFxRSxTQUFBLEVBQUFYLENBQUEsR0FBQVAsTUFBQSxDQUFBbUIsTUFBQSxDQUFBZCxDQUFBLENBQUFKLFNBQUEsR0FBQVEsQ0FBQSxPQUFBVyxPQUFBLENBQUE3RSxDQUFBLGdCQUFBNEQsQ0FBQSxDQUFBSSxDQUFBLGVBQUFuRyxLQUFBLEVBQUFpSCxnQkFBQSxDQUFBdkIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFVLENBQUEsTUFBQUYsQ0FBQSxhQUFBZSxTQUFBeEIsQ0FBQSxFQUFBakQsQ0FBQSxFQUFBa0QsQ0FBQSxtQkFBQXdCLElBQUEsWUFBQUMsR0FBQSxFQUFBMUIsQ0FBQSxDQUFBMkIsSUFBQSxDQUFBNUUsQ0FBQSxFQUFBa0QsQ0FBQSxjQUFBRCxDQUFBLGFBQUF5QixJQUFBLFdBQUFDLEdBQUEsRUFBQTFCLENBQUEsUUFBQWpELENBQUEsQ0FBQW9FLElBQUEsR0FBQUEsSUFBQSxNQUFBUyxDQUFBLHFCQUFBQyxDQUFBLHFCQUFBN0UsQ0FBQSxnQkFBQVIsQ0FBQSxnQkFBQXNGLENBQUEsZ0JBQUFWLFVBQUEsY0FBQVcsa0JBQUEsY0FBQUMsMkJBQUEsU0FBQUMsQ0FBQSxPQUFBbEIsTUFBQSxDQUFBa0IsQ0FBQSxFQUFBeEIsQ0FBQSxxQ0FBQXlCLENBQUEsR0FBQWhDLE1BQUEsQ0FBQWlDLGNBQUEsRUFBQUMsQ0FBQSxHQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUEsQ0FBQSxDQUFBRyxNQUFBLFFBQUFELENBQUEsSUFBQUEsQ0FBQSxLQUFBbkMsQ0FBQSxJQUFBeEQsQ0FBQSxDQUFBa0YsSUFBQSxDQUFBUyxDQUFBLEVBQUEzQixDQUFBLE1BQUF3QixDQUFBLEdBQUFHLENBQUEsT0FBQUUsQ0FBQSxHQUFBTiwwQkFBQSxDQUFBN0IsU0FBQSxHQUFBaUIsU0FBQSxDQUFBakIsU0FBQSxHQUFBRCxNQUFBLENBQUFtQixNQUFBLENBQUFZLENBQUEsWUFBQU0sc0JBQUF2QyxDQUFBLGdDQUFBd0MsT0FBQSxXQUFBekYsQ0FBQSxJQUFBZ0UsTUFBQSxDQUFBZixDQUFBLEVBQUFqRCxDQUFBLFlBQUFpRCxDQUFBLGdCQUFBeUMsT0FBQSxDQUFBMUYsQ0FBQSxFQUFBaUQsQ0FBQSxzQkFBQTBDLGNBQUExQyxDQUFBLEVBQUFqRCxDQUFBLGFBQUE0RixPQUFBMUMsQ0FBQSxFQUFBSSxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBRSxDQUFBLEdBQUFhLFFBQUEsQ0FBQXhCLENBQUEsQ0FBQUMsQ0FBQSxHQUFBRCxDQUFBLEVBQUFLLENBQUEsbUJBQUFNLENBQUEsQ0FBQWMsSUFBQSxRQUFBWixDQUFBLEdBQUFGLENBQUEsQ0FBQWUsR0FBQSxFQUFBRSxDQUFBLEdBQUFmLENBQUEsQ0FBQXZHLEtBQUEsU0FBQXNILENBQUEsZ0JBQUFnQixhQUFBLENBQUFoQixDQUFBLEtBQUFuRixDQUFBLENBQUFrRixJQUFBLENBQUFDLENBQUEsZUFBQTdFLENBQUEsQ0FBQThGLE9BQUEsQ0FBQWpCLENBQUEsQ0FBQWtCLE9BQUEsRUFBQUMsSUFBQSxXQUFBL0MsQ0FBQSxJQUFBMkMsTUFBQSxTQUFBM0MsQ0FBQSxFQUFBTyxDQUFBLEVBQUFFLENBQUEsZ0JBQUFULENBQUEsSUFBQTJDLE1BQUEsVUFBQTNDLENBQUEsRUFBQU8sQ0FBQSxFQUFBRSxDQUFBLFFBQUExRCxDQUFBLENBQUE4RixPQUFBLENBQUFqQixDQUFBLEVBQUFtQixJQUFBLFdBQUEvQyxDQUFBLElBQUFhLENBQUEsQ0FBQXZHLEtBQUEsR0FBQTBGLENBQUEsRUFBQU8sQ0FBQSxDQUFBTSxDQUFBLGdCQUFBYixDQUFBLFdBQUEyQyxNQUFBLFVBQUEzQyxDQUFBLEVBQUFPLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLENBQUFFLENBQUEsQ0FBQWUsR0FBQSxTQUFBekIsQ0FBQSxFQUFBSSxDQUFBLG9CQUFBL0YsS0FBQSxXQUFBQSxNQUFBMEYsQ0FBQSxFQUFBdkQsQ0FBQSxhQUFBdUcsMkJBQUEsZUFBQWpHLENBQUEsV0FBQUEsQ0FBQSxFQUFBa0QsQ0FBQSxJQUFBMEMsTUFBQSxDQUFBM0MsQ0FBQSxFQUFBdkQsQ0FBQSxFQUFBTSxDQUFBLEVBQUFrRCxDQUFBLGdCQUFBQSxDQUFBLEdBQUFBLENBQUEsR0FBQUEsQ0FBQSxDQUFBOEMsSUFBQSxDQUFBQywwQkFBQSxFQUFBQSwwQkFBQSxJQUFBQSwwQkFBQSxxQkFBQXpCLGlCQUFBeEUsQ0FBQSxFQUFBa0QsQ0FBQSxFQUFBeEQsQ0FBQSxRQUFBNEQsQ0FBQSxHQUFBdUIsQ0FBQSxtQkFBQXJCLENBQUEsRUFBQUUsQ0FBQSxRQUFBSixDQUFBLEtBQUFyRCxDQUFBLFFBQUFpRyxLQUFBLHNDQUFBNUMsQ0FBQSxLQUFBN0QsQ0FBQSxvQkFBQStELENBQUEsUUFBQUUsQ0FBQSxXQUFBbkcsS0FBQSxFQUFBMEYsQ0FBQSxFQUFBdEQsSUFBQSxlQUFBRCxDQUFBLENBQUF5RyxNQUFBLEdBQUEzQyxDQUFBLEVBQUE5RCxDQUFBLENBQUFpRixHQUFBLEdBQUFqQixDQUFBLFVBQUFFLENBQUEsR0FBQWxFLENBQUEsQ0FBQTBHLFFBQUEsTUFBQXhDLENBQUEsUUFBQUUsQ0FBQSxHQUFBdUMsbUJBQUEsQ0FBQXpDLENBQUEsRUFBQWxFLENBQUEsT0FBQW9FLENBQUEsUUFBQUEsQ0FBQSxLQUFBaUIsQ0FBQSxtQkFBQWpCLENBQUEscUJBQUFwRSxDQUFBLENBQUF5RyxNQUFBLEVBQUF6RyxDQUFBLENBQUE0RyxJQUFBLEdBQUE1RyxDQUFBLENBQUE2RyxLQUFBLEdBQUE3RyxDQUFBLENBQUFpRixHQUFBLHNCQUFBakYsQ0FBQSxDQUFBeUcsTUFBQSxRQUFBN0MsQ0FBQSxLQUFBdUIsQ0FBQSxRQUFBdkIsQ0FBQSxHQUFBN0QsQ0FBQSxFQUFBQyxDQUFBLENBQUFpRixHQUFBLEVBQUFqRixDQUFBLENBQUE4RyxpQkFBQSxDQUFBOUcsQ0FBQSxDQUFBaUYsR0FBQSx1QkFBQWpGLENBQUEsQ0FBQXlHLE1BQUEsSUFBQXpHLENBQUEsQ0FBQStHLE1BQUEsV0FBQS9HLENBQUEsQ0FBQWlGLEdBQUEsR0FBQXJCLENBQUEsR0FBQXJELENBQUEsTUFBQWlGLENBQUEsR0FBQVQsUUFBQSxDQUFBekUsQ0FBQSxFQUFBa0QsQ0FBQSxFQUFBeEQsQ0FBQSxvQkFBQXdGLENBQUEsQ0FBQVIsSUFBQSxRQUFBcEIsQ0FBQSxHQUFBNUQsQ0FBQSxDQUFBQyxJQUFBLEdBQUFGLENBQUEsR0FBQXFGLENBQUEsRUFBQUksQ0FBQSxDQUFBUCxHQUFBLEtBQUFJLENBQUEscUJBQUF4SCxLQUFBLEVBQUEySCxDQUFBLENBQUFQLEdBQUEsRUFBQWhGLElBQUEsRUFBQUQsQ0FBQSxDQUFBQyxJQUFBLGtCQUFBdUYsQ0FBQSxDQUFBUixJQUFBLEtBQUFwQixDQUFBLEdBQUE3RCxDQUFBLEVBQUFDLENBQUEsQ0FBQXlHLE1BQUEsWUFBQXpHLENBQUEsQ0FBQWlGLEdBQUEsR0FBQU8sQ0FBQSxDQUFBUCxHQUFBLG1CQUFBMEIsb0JBQUFyRyxDQUFBLEVBQUFrRCxDQUFBLFFBQUF4RCxDQUFBLEdBQUF3RCxDQUFBLENBQUFpRCxNQUFBLEVBQUE3QyxDQUFBLEdBQUF0RCxDQUFBLENBQUEyRCxRQUFBLENBQUFqRSxDQUFBLE9BQUE0RCxDQUFBLEtBQUFMLENBQUEsU0FBQUMsQ0FBQSxDQUFBa0QsUUFBQSxxQkFBQTFHLENBQUEsSUFBQU0sQ0FBQSxDQUFBMkQsUUFBQSxlQUFBVCxDQUFBLENBQUFpRCxNQUFBLGFBQUFqRCxDQUFBLENBQUF5QixHQUFBLEdBQUExQixDQUFBLEVBQUFvRCxtQkFBQSxDQUFBckcsQ0FBQSxFQUFBa0QsQ0FBQSxlQUFBQSxDQUFBLENBQUFpRCxNQUFBLGtCQUFBekcsQ0FBQSxLQUFBd0QsQ0FBQSxDQUFBaUQsTUFBQSxZQUFBakQsQ0FBQSxDQUFBeUIsR0FBQSxPQUFBK0IsU0FBQSx1Q0FBQWhILENBQUEsaUJBQUFxRixDQUFBLE1BQUF2QixDQUFBLEdBQUFpQixRQUFBLENBQUFuQixDQUFBLEVBQUF0RCxDQUFBLENBQUEyRCxRQUFBLEVBQUFULENBQUEsQ0FBQXlCLEdBQUEsbUJBQUFuQixDQUFBLENBQUFrQixJQUFBLFNBQUF4QixDQUFBLENBQUFpRCxNQUFBLFlBQUFqRCxDQUFBLENBQUF5QixHQUFBLEdBQUFuQixDQUFBLENBQUFtQixHQUFBLEVBQUF6QixDQUFBLENBQUFrRCxRQUFBLFNBQUFyQixDQUFBLE1BQUFyQixDQUFBLEdBQUFGLENBQUEsQ0FBQW1CLEdBQUEsU0FBQWpCLENBQUEsR0FBQUEsQ0FBQSxDQUFBL0QsSUFBQSxJQUFBdUQsQ0FBQSxDQUFBbEQsQ0FBQSxDQUFBMkcsVUFBQSxJQUFBakQsQ0FBQSxDQUFBbkcsS0FBQSxFQUFBMkYsQ0FBQSxDQUFBMEQsSUFBQSxHQUFBNUcsQ0FBQSxDQUFBNkcsT0FBQSxlQUFBM0QsQ0FBQSxDQUFBaUQsTUFBQSxLQUFBakQsQ0FBQSxDQUFBaUQsTUFBQSxXQUFBakQsQ0FBQSxDQUFBeUIsR0FBQSxHQUFBMUIsQ0FBQSxHQUFBQyxDQUFBLENBQUFrRCxRQUFBLFNBQUFyQixDQUFBLElBQUFyQixDQUFBLElBQUFSLENBQUEsQ0FBQWlELE1BQUEsWUFBQWpELENBQUEsQ0FBQXlCLEdBQUEsT0FBQStCLFNBQUEsc0NBQUF4RCxDQUFBLENBQUFrRCxRQUFBLFNBQUFyQixDQUFBLGNBQUErQixhQUFBN0QsQ0FBQSxRQUFBakQsQ0FBQSxLQUFBK0csTUFBQSxFQUFBOUQsQ0FBQSxZQUFBQSxDQUFBLEtBQUFqRCxDQUFBLENBQUFnSCxRQUFBLEdBQUEvRCxDQUFBLFdBQUFBLENBQUEsS0FBQWpELENBQUEsQ0FBQWlILFVBQUEsR0FBQWhFLENBQUEsS0FBQWpELENBQUEsQ0FBQWtILFFBQUEsR0FBQWpFLENBQUEsV0FBQWtFLFVBQUEsQ0FBQUMsSUFBQSxDQUFBcEgsQ0FBQSxjQUFBcUgsY0FBQXBFLENBQUEsUUFBQWpELENBQUEsR0FBQWlELENBQUEsQ0FBQXFFLFVBQUEsUUFBQXRILENBQUEsQ0FBQTBFLElBQUEsb0JBQUExRSxDQUFBLENBQUEyRSxHQUFBLEVBQUExQixDQUFBLENBQUFxRSxVQUFBLEdBQUF0SCxDQUFBLGFBQUF1RSxRQUFBdEIsQ0FBQSxTQUFBa0UsVUFBQSxNQUFBSixNQUFBLGFBQUE5RCxDQUFBLENBQUF3QyxPQUFBLENBQUFxQixZQUFBLGNBQUFTLEtBQUEsaUJBQUFqQyxPQUFBdEYsQ0FBQSxRQUFBQSxDQUFBLFdBQUFBLENBQUEsUUFBQWtELENBQUEsR0FBQWxELENBQUEsQ0FBQTBELENBQUEsT0FBQVIsQ0FBQSxTQUFBQSxDQUFBLENBQUEwQixJQUFBLENBQUE1RSxDQUFBLDRCQUFBQSxDQUFBLENBQUE0RyxJQUFBLFNBQUE1RyxDQUFBLE9BQUF3SCxLQUFBLENBQUF4SCxDQUFBLENBQUF5SCxNQUFBLFNBQUFuRSxDQUFBLE9BQUFFLENBQUEsWUFBQW9ELEtBQUEsYUFBQXRELENBQUEsR0FBQXRELENBQUEsQ0FBQXlILE1BQUEsT0FBQS9ILENBQUEsQ0FBQWtGLElBQUEsQ0FBQTVFLENBQUEsRUFBQXNELENBQUEsVUFBQXNELElBQUEsQ0FBQXJKLEtBQUEsR0FBQXlDLENBQUEsQ0FBQXNELENBQUEsR0FBQXNELElBQUEsQ0FBQWpILElBQUEsT0FBQWlILElBQUEsU0FBQUEsSUFBQSxDQUFBckosS0FBQSxHQUFBMEYsQ0FBQSxFQUFBMkQsSUFBQSxDQUFBakgsSUFBQSxPQUFBaUgsSUFBQSxZQUFBcEQsQ0FBQSxDQUFBb0QsSUFBQSxHQUFBcEQsQ0FBQSxnQkFBQWtELFNBQUEsQ0FBQWIsYUFBQSxDQUFBN0YsQ0FBQSxrQ0FBQWdGLGlCQUFBLENBQUE1QixTQUFBLEdBQUE2QiwwQkFBQSxFQUFBM0IsQ0FBQSxDQUFBaUMsQ0FBQSxtQkFBQWhJLEtBQUEsRUFBQTBILDBCQUFBLEVBQUFmLFlBQUEsU0FBQVosQ0FBQSxDQUFBMkIsMEJBQUEsbUJBQUExSCxLQUFBLEVBQUF5SCxpQkFBQSxFQUFBZCxZQUFBLFNBQUFjLGlCQUFBLENBQUEwQyxXQUFBLEdBQUExRCxNQUFBLENBQUFpQiwwQkFBQSxFQUFBbkIsQ0FBQSx3QkFBQTlELENBQUEsQ0FBQTJILG1CQUFBLGFBQUExRSxDQUFBLFFBQUFqRCxDQUFBLHdCQUFBaUQsQ0FBQSxJQUFBQSxDQUFBLENBQUEyRSxXQUFBLFdBQUE1SCxDQUFBLEtBQUFBLENBQUEsS0FBQWdGLGlCQUFBLDZCQUFBaEYsQ0FBQSxDQUFBMEgsV0FBQSxJQUFBMUgsQ0FBQSxDQUFBakMsSUFBQSxPQUFBaUMsQ0FBQSxDQUFBNkgsSUFBQSxhQUFBNUUsQ0FBQSxXQUFBRSxNQUFBLENBQUEyRSxjQUFBLEdBQUEzRSxNQUFBLENBQUEyRSxjQUFBLENBQUE3RSxDQUFBLEVBQUFnQywwQkFBQSxLQUFBaEMsQ0FBQSxDQUFBOEUsU0FBQSxHQUFBOUMsMEJBQUEsRUFBQWpCLE1BQUEsQ0FBQWYsQ0FBQSxFQUFBYSxDQUFBLHlCQUFBYixDQUFBLENBQUFHLFNBQUEsR0FBQUQsTUFBQSxDQUFBbUIsTUFBQSxDQUFBaUIsQ0FBQSxHQUFBdEMsQ0FBQSxLQUFBakQsQ0FBQSxDQUFBZ0ksS0FBQSxhQUFBL0UsQ0FBQSxhQUFBOEMsT0FBQSxFQUFBOUMsQ0FBQSxPQUFBdUMscUJBQUEsQ0FBQUcsYUFBQSxDQUFBdkMsU0FBQSxHQUFBWSxNQUFBLENBQUEyQixhQUFBLENBQUF2QyxTQUFBLEVBQUFRLENBQUEsaUNBQUE1RCxDQUFBLENBQUEyRixhQUFBLEdBQUFBLGFBQUEsRUFBQTNGLENBQUEsQ0FBQWlJLEtBQUEsYUFBQWhGLENBQUEsRUFBQUMsQ0FBQSxFQUFBeEQsQ0FBQSxFQUFBNEQsQ0FBQSxFQUFBRSxDQUFBLGVBQUFBLENBQUEsS0FBQUEsQ0FBQSxHQUFBMEUsT0FBQSxPQUFBeEUsQ0FBQSxPQUFBaUMsYUFBQSxDQUFBdkIsSUFBQSxDQUFBbkIsQ0FBQSxFQUFBQyxDQUFBLEVBQUF4RCxDQUFBLEVBQUE0RCxDQUFBLEdBQUFFLENBQUEsVUFBQXhELENBQUEsQ0FBQTJILG1CQUFBLENBQUF6RSxDQUFBLElBQUFRLENBQUEsR0FBQUEsQ0FBQSxDQUFBa0QsSUFBQSxHQUFBWixJQUFBLFdBQUEvQyxDQUFBLFdBQUFBLENBQUEsQ0FBQXRELElBQUEsR0FBQXNELENBQUEsQ0FBQTFGLEtBQUEsR0FBQW1HLENBQUEsQ0FBQWtELElBQUEsV0FBQXBCLHFCQUFBLENBQUFELENBQUEsR0FBQXZCLE1BQUEsQ0FBQXVCLENBQUEsRUFBQXpCLENBQUEsZ0JBQUFFLE1BQUEsQ0FBQXVCLENBQUEsRUFBQTdCLENBQUEsaUNBQUFNLE1BQUEsQ0FBQXVCLENBQUEsNkRBQUF2RixDQUFBLENBQUFtSSxJQUFBLGFBQUFsRixDQUFBLFFBQUFqRCxDQUFBLEdBQUFtRCxNQUFBLENBQUFGLENBQUEsR0FBQUMsQ0FBQSxnQkFBQXhELENBQUEsSUFBQU0sQ0FBQSxFQUFBa0QsQ0FBQSxDQUFBa0UsSUFBQSxDQUFBMUgsQ0FBQSxVQUFBd0QsQ0FBQSxDQUFBa0YsT0FBQSxhQUFBeEIsS0FBQSxXQUFBMUQsQ0FBQSxDQUFBdUUsTUFBQSxTQUFBeEUsQ0FBQSxHQUFBQyxDQUFBLENBQUFtRixHQUFBLFFBQUFwRixDQUFBLElBQUFqRCxDQUFBLFNBQUE0RyxJQUFBLENBQUFySixLQUFBLEdBQUEwRixDQUFBLEVBQUEyRCxJQUFBLENBQUFqSCxJQUFBLE9BQUFpSCxJQUFBLFdBQUFBLElBQUEsQ0FBQWpILElBQUEsT0FBQWlILElBQUEsUUFBQTVHLENBQUEsQ0FBQXNGLE1BQUEsR0FBQUEsTUFBQSxFQUFBZixPQUFBLENBQUFuQixTQUFBLEtBQUF3RSxXQUFBLEVBQUFyRCxPQUFBLEVBQUFnRCxLQUFBLFdBQUFBLE1BQUF2SCxDQUFBLGFBQUFzSSxJQUFBLFdBQUExQixJQUFBLFdBQUFOLElBQUEsUUFBQUMsS0FBQSxHQUFBdEQsQ0FBQSxPQUFBdEQsSUFBQSxZQUFBeUcsUUFBQSxjQUFBRCxNQUFBLGdCQUFBeEIsR0FBQSxHQUFBMUIsQ0FBQSxPQUFBa0UsVUFBQSxDQUFBMUIsT0FBQSxDQUFBNEIsYUFBQSxJQUFBckgsQ0FBQSxXQUFBa0QsQ0FBQSxrQkFBQUEsQ0FBQSxDQUFBcUYsTUFBQSxPQUFBN0ksQ0FBQSxDQUFBa0YsSUFBQSxPQUFBMUIsQ0FBQSxNQUFBc0UsS0FBQSxFQUFBdEUsQ0FBQSxDQUFBc0YsS0FBQSxjQUFBdEYsQ0FBQSxJQUFBRCxDQUFBLE1BQUF3RixJQUFBLFdBQUFBLEtBQUEsU0FBQTlJLElBQUEsV0FBQXNELENBQUEsUUFBQWtFLFVBQUEsSUFBQUcsVUFBQSxrQkFBQXJFLENBQUEsQ0FBQXlCLElBQUEsUUFBQXpCLENBQUEsQ0FBQTBCLEdBQUEsY0FBQStELElBQUEsS0FBQWxDLGlCQUFBLFdBQUFBLGtCQUFBeEcsQ0FBQSxhQUFBTCxJQUFBLFFBQUFLLENBQUEsTUFBQWtELENBQUEsa0JBQUF5RixPQUFBakosQ0FBQSxFQUFBNEQsQ0FBQSxXQUFBSSxDQUFBLENBQUFnQixJQUFBLFlBQUFoQixDQUFBLENBQUFpQixHQUFBLEdBQUEzRSxDQUFBLEVBQUFrRCxDQUFBLENBQUEwRCxJQUFBLEdBQUFsSCxDQUFBLEVBQUE0RCxDQUFBLEtBQUFKLENBQUEsQ0FBQWlELE1BQUEsV0FBQWpELENBQUEsQ0FBQXlCLEdBQUEsR0FBQTFCLENBQUEsS0FBQUssQ0FBQSxhQUFBQSxDQUFBLFFBQUE2RCxVQUFBLENBQUFNLE1BQUEsTUFBQW5FLENBQUEsU0FBQUEsQ0FBQSxRQUFBRSxDQUFBLFFBQUEyRCxVQUFBLENBQUE3RCxDQUFBLEdBQUFJLENBQUEsR0FBQUYsQ0FBQSxDQUFBOEQsVUFBQSxpQkFBQTlELENBQUEsQ0FBQXVELE1BQUEsU0FBQTRCLE1BQUEsYUFBQW5GLENBQUEsQ0FBQXVELE1BQUEsU0FBQXVCLElBQUEsUUFBQTFFLENBQUEsR0FBQWxFLENBQUEsQ0FBQWtGLElBQUEsQ0FBQXBCLENBQUEsZUFBQU0sQ0FBQSxHQUFBcEUsQ0FBQSxDQUFBa0YsSUFBQSxDQUFBcEIsQ0FBQSxxQkFBQUksQ0FBQSxJQUFBRSxDQUFBLGFBQUF3RSxJQUFBLEdBQUE5RSxDQUFBLENBQUF3RCxRQUFBLFNBQUEyQixNQUFBLENBQUFuRixDQUFBLENBQUF3RCxRQUFBLGdCQUFBc0IsSUFBQSxHQUFBOUUsQ0FBQSxDQUFBeUQsVUFBQSxTQUFBMEIsTUFBQSxDQUFBbkYsQ0FBQSxDQUFBeUQsVUFBQSxjQUFBckQsQ0FBQSxhQUFBMEUsSUFBQSxHQUFBOUUsQ0FBQSxDQUFBd0QsUUFBQSxTQUFBMkIsTUFBQSxDQUFBbkYsQ0FBQSxDQUFBd0QsUUFBQSxxQkFBQWxELENBQUEsUUFBQW9DLEtBQUEscURBQUFvQyxJQUFBLEdBQUE5RSxDQUFBLENBQUF5RCxVQUFBLFNBQUEwQixNQUFBLENBQUFuRixDQUFBLENBQUF5RCxVQUFBLFlBQUFSLE1BQUEsV0FBQUEsT0FBQXhELENBQUEsRUFBQWpELENBQUEsYUFBQWtELENBQUEsUUFBQWlFLFVBQUEsQ0FBQU0sTUFBQSxNQUFBdkUsQ0FBQSxTQUFBQSxDQUFBLFFBQUFJLENBQUEsUUFBQTZELFVBQUEsQ0FBQWpFLENBQUEsT0FBQUksQ0FBQSxDQUFBeUQsTUFBQSxTQUFBdUIsSUFBQSxJQUFBNUksQ0FBQSxDQUFBa0YsSUFBQSxDQUFBdEIsQ0FBQSx3QkFBQWdGLElBQUEsR0FBQWhGLENBQUEsQ0FBQTJELFVBQUEsUUFBQXpELENBQUEsR0FBQUYsQ0FBQSxhQUFBRSxDQUFBLGlCQUFBUCxDQUFBLG1CQUFBQSxDQUFBLEtBQUFPLENBQUEsQ0FBQXVELE1BQUEsSUFBQS9HLENBQUEsSUFBQUEsQ0FBQSxJQUFBd0QsQ0FBQSxDQUFBeUQsVUFBQSxLQUFBekQsQ0FBQSxjQUFBRSxDQUFBLEdBQUFGLENBQUEsR0FBQUEsQ0FBQSxDQUFBOEQsVUFBQSxjQUFBNUQsQ0FBQSxDQUFBZ0IsSUFBQSxHQUFBekIsQ0FBQSxFQUFBUyxDQUFBLENBQUFpQixHQUFBLEdBQUEzRSxDQUFBLEVBQUF3RCxDQUFBLFNBQUEyQyxNQUFBLGdCQUFBUyxJQUFBLEdBQUFwRCxDQUFBLENBQUF5RCxVQUFBLEVBQUFsQyxDQUFBLFNBQUE2RCxRQUFBLENBQUFsRixDQUFBLE1BQUFrRixRQUFBLFdBQUFBLFNBQUEzRixDQUFBLEVBQUFqRCxDQUFBLG9CQUFBaUQsQ0FBQSxDQUFBeUIsSUFBQSxRQUFBekIsQ0FBQSxDQUFBMEIsR0FBQSxxQkFBQTFCLENBQUEsQ0FBQXlCLElBQUEsbUJBQUF6QixDQUFBLENBQUF5QixJQUFBLFFBQUFrQyxJQUFBLEdBQUEzRCxDQUFBLENBQUEwQixHQUFBLGdCQUFBMUIsQ0FBQSxDQUFBeUIsSUFBQSxTQUFBZ0UsSUFBQSxRQUFBL0QsR0FBQSxHQUFBMUIsQ0FBQSxDQUFBMEIsR0FBQSxPQUFBd0IsTUFBQSxrQkFBQVMsSUFBQSx5QkFBQTNELENBQUEsQ0FBQXlCLElBQUEsSUFBQTFFLENBQUEsVUFBQTRHLElBQUEsR0FBQTVHLENBQUEsR0FBQStFLENBQUEsS0FBQThELE1BQUEsV0FBQUEsT0FBQTVGLENBQUEsYUFBQWpELENBQUEsUUFBQW1ILFVBQUEsQ0FBQU0sTUFBQSxNQUFBekgsQ0FBQSxTQUFBQSxDQUFBLFFBQUFrRCxDQUFBLFFBQUFpRSxVQUFBLENBQUFuSCxDQUFBLE9BQUFrRCxDQUFBLENBQUErRCxVQUFBLEtBQUFoRSxDQUFBLGNBQUEyRixRQUFBLENBQUExRixDQUFBLENBQUFvRSxVQUFBLEVBQUFwRSxDQUFBLENBQUFnRSxRQUFBLEdBQUFHLGFBQUEsQ0FBQW5FLENBQUEsR0FBQTZCLENBQUEseUJBQUErRCxPQUFBN0YsQ0FBQSxhQUFBakQsQ0FBQSxRQUFBbUgsVUFBQSxDQUFBTSxNQUFBLE1BQUF6SCxDQUFBLFNBQUFBLENBQUEsUUFBQWtELENBQUEsUUFBQWlFLFVBQUEsQ0FBQW5ILENBQUEsT0FBQWtELENBQUEsQ0FBQTZELE1BQUEsS0FBQTlELENBQUEsUUFBQXZELENBQUEsR0FBQXdELENBQUEsQ0FBQW9FLFVBQUEsa0JBQUE1SCxDQUFBLENBQUFnRixJQUFBLFFBQUFwQixDQUFBLEdBQUE1RCxDQUFBLENBQUFpRixHQUFBLEVBQUEwQyxhQUFBLENBQUFuRSxDQUFBLFlBQUFJLENBQUEsWUFBQTRDLEtBQUEsOEJBQUE2QyxhQUFBLFdBQUFBLGNBQUEvSSxDQUFBLEVBQUFrRCxDQUFBLEVBQUF4RCxDQUFBLGdCQUFBMEcsUUFBQSxLQUFBekMsUUFBQSxFQUFBMkIsTUFBQSxDQUFBdEYsQ0FBQSxHQUFBMkcsVUFBQSxFQUFBekQsQ0FBQSxFQUFBMkQsT0FBQSxFQUFBbkgsQ0FBQSxvQkFBQXlHLE1BQUEsVUFBQXhCLEdBQUEsR0FBQTFCLENBQUEsR0FBQThCLENBQUEsT0FBQS9FLENBQUE7QUFBQSxTQUFBd04sbUJBQUFDLEdBQUEsV0FBQUMsa0JBQUEsQ0FBQUQsR0FBQSxLQUFBRSxnQkFBQSxDQUFBRixHQUFBLEtBQUFHLDJCQUFBLENBQUFILEdBQUEsS0FBQUksa0JBQUE7QUFBQSxTQUFBQSxtQkFBQSxjQUFBbkgsU0FBQTtBQUFBLFNBQUFrSCw0QkFBQXRLLENBQUEsRUFBQXdLLE1BQUEsU0FBQXhLLENBQUEscUJBQUFBLENBQUEsc0JBQUF5SyxpQkFBQSxDQUFBekssQ0FBQSxFQUFBd0ssTUFBQSxPQUFBcE8sQ0FBQSxHQUFBeUQsTUFBQSxDQUFBQyxTQUFBLENBQUE0SyxRQUFBLENBQUFwSixJQUFBLENBQUF0QixDQUFBLEVBQUFrRixLQUFBLGFBQUE5SSxDQUFBLGlCQUFBNEQsQ0FBQSxDQUFBc0UsV0FBQSxFQUFBbEksQ0FBQSxHQUFBNEQsQ0FBQSxDQUFBc0UsV0FBQSxDQUFBN0osSUFBQSxNQUFBMkIsQ0FBQSxjQUFBQSxDQUFBLG1CQUFBdU8sS0FBQSxDQUFBQyxJQUFBLENBQUE1SyxDQUFBLE9BQUE1RCxDQUFBLCtEQUFBeU8sSUFBQSxDQUFBek8sQ0FBQSxVQUFBcU8saUJBQUEsQ0FBQXpLLENBQUEsRUFBQXdLLE1BQUE7QUFBQSxTQUFBSCxpQkFBQVMsSUFBQSxlQUFBM0ssTUFBQSxvQkFBQTJLLElBQUEsQ0FBQTNLLE1BQUEsQ0FBQUUsUUFBQSxhQUFBeUssSUFBQSwrQkFBQUgsS0FBQSxDQUFBQyxJQUFBLENBQUFFLElBQUE7QUFBQSxTQUFBVixtQkFBQUQsR0FBQSxRQUFBUSxLQUFBLENBQUFJLE9BQUEsQ0FBQVosR0FBQSxVQUFBTSxpQkFBQSxDQUFBTixHQUFBO0FBQUEsU0FBQU0sa0JBQUFOLEdBQUEsRUFBQWEsR0FBQSxRQUFBQSxHQUFBLFlBQUFBLEdBQUEsR0FBQWIsR0FBQSxDQUFBaEcsTUFBQSxFQUFBNkcsR0FBQSxHQUFBYixHQUFBLENBQUFoRyxNQUFBLFdBQUFqRSxDQUFBLE1BQUErSyxJQUFBLE9BQUFOLEtBQUEsQ0FBQUssR0FBQSxHQUFBOUssQ0FBQSxHQUFBOEssR0FBQSxFQUFBOUssQ0FBQSxJQUFBK0ssSUFBQSxDQUFBL0ssQ0FBQSxJQUFBaUssR0FBQSxDQUFBakssQ0FBQSxVQUFBK0ssSUFBQTtBQUFBLFNBQUE3RSx5QkFBQUEsQ0FBQUMsR0FBQSxFQUFBN0QsT0FBQSxFQUFBOEQsTUFBQSxFQUFBQyxLQUFBLEVBQUFDLE1BQUEsRUFBQXhNLEdBQUEsRUFBQXFILEdBQUEsY0FBQW9GLElBQUEsR0FBQUosR0FBQSxDQUFBck0sR0FBQSxFQUFBcUgsR0FBQSxPQUFBcEgsS0FBQSxHQUFBd00sSUFBQSxDQUFBeE0sS0FBQSxXQUFBeU0sS0FBQSxJQUFBSixNQUFBLENBQUFJLEtBQUEsaUJBQUFELElBQUEsQ0FBQXBLLElBQUEsSUFBQW1HLE9BQUEsQ0FBQXZJLEtBQUEsWUFBQTJLLE9BQUEsQ0FBQXBDLE9BQUEsQ0FBQXZJLEtBQUEsRUFBQXlJLElBQUEsQ0FBQTZELEtBQUEsRUFBQUMsTUFBQTtBQUFBLFNBQUFHLHVCQUFBQSxDQUFBak0sRUFBQSw2QkFBQWtNLElBQUEsU0FBQUMsSUFBQSxHQUFBZCxTQUFBLGFBQUFuQixPQUFBLFdBQUFwQyxPQUFBLEVBQUE4RCxNQUFBLFFBQUFELEdBQUEsR0FBQTNMLEVBQUEsQ0FBQW9MLEtBQUEsQ0FBQWMsSUFBQSxFQUFBQyxJQUFBLFlBQUFOLE1BQUF0TSxLQUFBLElBQUFtTSx5QkFBQSxDQUFBQyxHQUFBLEVBQUE3RCxPQUFBLEVBQUE4RCxNQUFBLEVBQUFDLEtBQUEsRUFBQUMsTUFBQSxVQUFBdk0sS0FBQSxjQUFBdU0sT0FBQS9KLEdBQUEsSUFBQTJKLHlCQUFBLENBQUFDLEdBQUEsRUFBQTdELE9BQUEsRUFBQThELE1BQUEsRUFBQUMsS0FBQSxFQUFBQyxNQUFBLFdBQUEvSixHQUFBLEtBQUE4SixLQUFBLENBQUFPLFNBQUE7QUFBQSxTQUFBaE4scUJBQUFBLENBQUFpTixRQUFBLEVBQUFDLFdBQUEsVUFBQUQsUUFBQSxZQUFBQyxXQUFBLGVBQUE1RCxTQUFBO0FBQUEsU0FBQTZELHVCQUFBQSxDQUFBQyxNQUFBLEVBQUFDLEtBQUEsYUFBQWpILENBQUEsTUFBQUEsQ0FBQSxHQUFBaUgsS0FBQSxDQUFBaEQsTUFBQSxFQUFBakUsQ0FBQSxVQUFBa0gsVUFBQSxHQUFBRCxLQUFBLENBQUFqSCxDQUFBLEdBQUFrSCxVQUFBLENBQUF6RyxVQUFBLEdBQUF5RyxVQUFBLENBQUF6RyxVQUFBLFdBQUF5RyxVQUFBLENBQUF4RyxZQUFBLHdCQUFBd0csVUFBQSxFQUFBQSxVQUFBLENBQUF2RyxRQUFBLFNBQUFoQixNQUFBLENBQUFJLGNBQUEsQ0FBQWlILE1BQUEsRUFBQWYsb0JBQUEsQ0FBQWlCLFVBQUEsQ0FBQXBOLEdBQUEsR0FBQW9OLFVBQUE7QUFBQSxTQUFBck4sa0JBQUFBLENBQUFpTixXQUFBLEVBQUFLLFVBQUEsRUFBQUMsV0FBQSxRQUFBRCxVQUFBLEVBQUFKLHVCQUFBLENBQUFELFdBQUEsQ0FBQWxILFNBQUEsRUFBQXVILFVBQUEsT0FBQUMsV0FBQSxFQUFBTCx1QkFBQSxDQUFBRCxXQUFBLEVBQUFNLFdBQUEsR0FBQXpILE1BQUEsQ0FBQUksY0FBQSxDQUFBK0csV0FBQSxpQkFBQW5HLFFBQUEsbUJBQUFtRyxXQUFBO0FBQUEsU0FBQWIsb0JBQUFBLENBQUF4RyxDQUFBLFFBQUFPLENBQUEsR0FBQXFILGtCQUFBLENBQUE1SCxDQUFBLGdDQUFBNEMsYUFBQSxDQUFBckMsQ0FBQSxJQUFBQSxDQUFBLEdBQUFBLENBQUE7QUFBQSxTQUFBcUgsa0JBQUFBLENBQUE1SCxDQUFBLEVBQUFDLENBQUEsb0JBQUEyQyxhQUFBLENBQUE1QyxDQUFBLE1BQUFBLENBQUEsU0FBQUEsQ0FBQSxNQUFBakQsQ0FBQSxHQUFBaUQsQ0FBQSxDQUFBUSxNQUFBLENBQUFxSCxXQUFBLGtCQUFBOUssQ0FBQSxRQUFBd0QsQ0FBQSxHQUFBeEQsQ0FBQSxDQUFBNEUsSUFBQSxDQUFBM0IsQ0FBQSxFQUFBQyxDQUFBLGdDQUFBMkMsYUFBQSxDQUFBckMsQ0FBQSxVQUFBQSxDQUFBLFlBQUFrRCxTQUFBLHlFQUFBeEQsQ0FBQSxHQUFBNkgsTUFBQSxHQUFBQyxNQUFBLEVBQUEvSCxDQUFBO0FBRDhCO0FBQUEsSUFFVHVMLE1BQU07RUFBQSxTQUFBQSxPQUFBO0lBQUFwUixxQkFBQSxPQUFBb1IsTUFBQTtFQUFBO0VBQUEsT0FBQW5SLGtCQUFBLENBQUFtUixNQUFBO0lBQUFsUixHQUFBO0lBQUFDLEtBQUE7TUFBQSxJQUFBa1IsSUFBQSxHQUFBeEUsdUJBQUEsZUFBQWpILHlCQUFBLEdBQUE2RSxJQUFBLENBSXpCLFNBQUE2RyxTQUFBO1FBQUEsSUFBQWxPLFFBQUEsRUFBQUksS0FBQSxFQUFBK04sS0FBQSxFQUFBQyxXQUFBLEVBQUFDLGNBQUEsRUFBQUMsV0FBQSxFQUFBQyxhQUFBLEVBQUFDLFVBQUEsRUFBQUMsT0FBQSxFQUFBekwsQ0FBQSxFQUFBMEwsT0FBQSxFQUFBQyxnQkFBQSxFQUFBQyxVQUFBLEVBQUFDLEVBQUEsRUFBQUMsS0FBQSxFQUFBQyxPQUFBLEVBQUFDLE9BQUEsRUFBQUMsUUFBQSxFQUFBQyxhQUFBLEVBQUFDLFVBQUEsRUFBQUMsTUFBQSxFQUFBQyxRQUFBLEVBQUFDLE1BQUEsRUFBQUMsVUFBQSxFQUFBQyxXQUFBLEVBQUFDLEtBQUEsRUFBQUMsUUFBQSxFQUFBQyxlQUFBLEVBQUFDLGtCQUFBLEVBQUFDLFdBQUEsRUFBQUMsV0FBQSxFQUFBQyxVQUFBLEVBQUFDLFVBQUEsRUFBQWxQLElBQUEsRUFBQW1QLFFBQUEsRUFBQUMsSUFBQSxFQUFBcFIsU0FBQSxFQUFBRSxLQUFBLEVBQUFtUixHQUFBLEVBQUFDLFNBQUE7UUFBQSxPQUFBNU4seUJBQUEsR0FBQW9CLElBQUEsVUFBQXlNLFVBQUFDLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBeEksSUFBQSxHQUFBd0ksU0FBQSxDQUFBbEssSUFBQTtZQUFBO2NBQUEsTUFDTTVILFFBQVEsQ0FBQ3NCLElBQUksQ0FBQ0MsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFBQXVRLFNBQUEsQ0FBQWxLLElBQUE7Z0JBQUE7Y0FBQTtjQUFBLE9BQUFrSyxTQUFBLENBQUFySyxNQUFBO1lBQUE7Y0FBQXFLLFNBQUEsQ0FBQWxLLElBQUE7Y0FBQSxPQUtwQ3lGLElBQUksQ0FBQ1EsVUFBVSxDQUFDLENBQUM7WUFBQTtjQUFBLElBQUFpRSxTQUFBLENBQUF4SyxJQUFBO2dCQUFBd0ssU0FBQSxDQUFBbEssSUFBQTtnQkFBQTtjQUFBO2NBQUEsT0FBQWtLLFNBQUEsQ0FBQXJLLE1BQUE7WUFBQTtjQUsxQmpHLFFBQVEsR0FBRztnQkFDVDtnQkFDQXVRLFVBQVUsRUFBRSxrQkFBa0I7Z0JBQzlCO2dCQUNBQyxVQUFVLEVBQUUsb0NBQW9DO2dCQUNoRDtnQkFDQWpDLGFBQWEsRUFBRSx3QkFBd0I7Z0JBQ3ZDO2dCQUNBQyxVQUFVLEVBQUUsdUJBQXVCO2dCQUNuQztnQkFDQWlDLE1BQU0sRUFBRSxVQUFVO2dCQUNsQjtnQkFDQUMsS0FBSyxFQUFFO2NBQ1QsQ0FBQyxFQUNEdFEsS0FBSyxHQUFHQyxDQUFDLENBQUNDLFFBQVEsQ0FBQ0MsSUFBSSxDQUFDLEVBQUU0TixLQUFLLEdBQUc5TixDQUFDLENBQUNDLFFBQVEsQ0FBQ3FRLElBQUksQ0FBQyxFQUNsRHZDLFdBQVcsR0FBRy9OLENBQUMsQ0FBQ0wsUUFBUSxDQUFDd1EsVUFBVSxDQUFDLEVBQ3BDbkMsY0FBYyxHQUFHaE8sQ0FBQyxDQUFDTCxRQUFRLENBQUN1TyxhQUFhLENBQUMsRUFDMUNELFdBQVcsR0FBR2pPLENBQUMsQ0FBQ0wsUUFBUSxDQUFDd08sVUFBVSxDQUFDLEVBRXRDO2NBQ0FMLEtBQUssQ0FBQ3ZNLE1BQU0sMEJBQUFiLE1BQUEsQ0FDRGYsUUFBUSxDQUFDMFEsS0FBSywrSEFBQTNQLE1BQUEsQ0FHZGYsUUFBUSxDQUFDMFEsS0FBSyxpR0FJaEIsQ0FBQzs7Y0FFVjtjQUNBdEMsV0FBVyxDQUFDd0MsSUFBSSxDQUFDLENBQUM7Y0FDbEI7Y0FDTXJDLGFBQWEsR0FBR0YsY0FBYyxDQUFDck4sSUFBSSxDQUFDLENBQUMsQ0FBQzZQLFNBQVMsQ0FBQyxDQUFDLEVBQUV4QyxjQUFjLENBQUNyTixJQUFJLENBQUMsQ0FBQyxDQUFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQzVGO2NBQ015TyxVQUFVLEdBQUdGLFdBQVcsQ0FBQ3ROLElBQUksQ0FBQyxDQUFDLEVBQ3JDO2NBQ015TixPQUFPLEdBQUcsRUFBRTtjQUNUekwsQ0FBQyxHQUFHLENBQUM7WUFBQTtjQUFBLE1BQUVBLENBQUMsSUFBSThOLElBQUksQ0FBQ0MsSUFBSSxDQUFDdkcsTUFBTSxDQUFDK0QsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUFBK0IsU0FBQSxDQUFBbEssSUFBQTtnQkFBQTtjQUFBO2NBQUFrSyxTQUFBLENBQUFVLEVBQUEsR0FDeER2QyxPQUFPLENBQUM3SCxJQUFJO2NBQUEwSixTQUFBLENBQUFXLEVBQUEsR0FBWnhDLE9BQU87Y0FBQTZCLFNBQUEsQ0FBQVksRUFBQSxHQUFBbEUsa0JBQUE7Y0FBQXNELFNBQUEsQ0FBQWxLLElBQUE7Y0FBQSxPQUFleUYsSUFBSSxDQUFDaUIsVUFBVSxDQUFDTixPQUFPLEVBQUV4SixDQUFDLENBQUM7WUFBQTtjQUFBc04sU0FBQSxDQUFBYSxFQUFBLEdBQUFiLFNBQUEsQ0FBQXhLLElBQUE7Y0FBQXdLLFNBQUEsQ0FBQWMsRUFBQSxPQUFBZCxTQUFBLENBQUFZLEVBQUEsRUFBQVosU0FBQSxDQUFBYSxFQUFBO2NBQUFiLFNBQUEsQ0FBQVUsRUFBQSxDQUFBcEksS0FBQSxDQUFBeEUsSUFBQSxDQUFBa00sU0FBQSxDQUFBVSxFQUFBLEVBQUFWLFNBQUEsQ0FBQVcsRUFBQSxFQUFBWCxTQUFBLENBQUFjLEVBQUE7WUFBQTtjQURTcE8sQ0FBQyxFQUFFO2NBQUFzTixTQUFBLENBQUFsSyxJQUFBO2NBQUE7WUFBQTtjQUluRCxDQUFDLFlBQUk7Z0JBQUMsWUFBWTs7Z0JBQUMsSUFBSTVHLENBQUMsR0FBQztvQkFBQ21GLENBQUMsRUFBQyxTQUFBQSxFQUFDbEMsQ0FBQyxFQUFDdkQsQ0FBQyxFQUFHO3NCQUFDLEtBQUksSUFBSTRELENBQUMsSUFBSTVELENBQUMsRUFBQ00sQ0FBQyxDQUFDc0QsQ0FBQyxDQUFDNUQsQ0FBQyxFQUFDNEQsQ0FBQyxDQUFDLElBQUUsQ0FBQ3RELENBQUMsQ0FBQ3NELENBQUMsQ0FBQ0wsQ0FBQyxFQUFDSyxDQUFDLENBQUMsSUFBRUgsTUFBTSxDQUFDSSxjQUFjLENBQUNOLENBQUMsRUFBQ0ssQ0FBQyxFQUFDO3dCQUFDVyxVQUFVLEVBQUMsQ0FBQyxDQUFDO3dCQUFDekcsR0FBRyxFQUFDa0MsQ0FBQyxDQUFDNEQsQ0FBQztzQkFBQyxDQUFDLENBQUM7b0JBQUEsQ0FBQztvQkFBQ0EsQ0FBQyxFQUFDLFNBQUFBLEVBQUN0RCxDQUFDLEVBQUNpRCxDQUFDO3NCQUFBLE9BQUdFLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUN1QixJQUFJLENBQUM1RSxDQUFDLEVBQUNpRCxDQUFDLENBQUM7b0JBQUE7b0JBQUNDLENBQUMsRUFBQyxTQUFBQSxFQUFBbEQsQ0FBQyxFQUFFO3NCQUFDLFdBQVcsSUFBRSxPQUFPeUQsTUFBTSxJQUFFQSxNQUFNLENBQUNNLFdBQVcsSUFBRVosTUFBTSxDQUFDSSxjQUFjLENBQUN2RCxDQUFDLEVBQUN5RCxNQUFNLENBQUNNLFdBQVcsRUFBQzt3QkFBQ3hHLEtBQUssRUFBQztzQkFBUSxDQUFDLENBQUMsRUFBQzRGLE1BQU0sQ0FBQ0ksY0FBYyxDQUFDdkQsQ0FBQyxFQUFDLFlBQVksRUFBQzt3QkFBQ3pDLEtBQUssRUFBQyxDQUFDO3NCQUFDLENBQUMsQ0FBQztvQkFBQTtrQkFBQyxDQUFDO2tCQUFDMEYsQ0FBQyxHQUFDLENBQUMsQ0FBQztnQkFBQ2pELENBQUMsQ0FBQ2tELENBQUMsQ0FBQ0QsQ0FBQyxDQUFDLEVBQUNqRCxDQUFDLENBQUNtRixDQUFDLENBQUNsQyxDQUFDLEVBQUM7a0JBQUM0TyxHQUFHLEVBQUMsU0FBQUEsSUFBQTtvQkFBQSxPQUFJM08sQ0FBQztrQkFBQTtrQkFBQzRPLGlCQUFpQixFQUFDLFNBQUFBLGtCQUFBO29CQUFBLE9BQUk1TSxDQUFDO2tCQUFBO2tCQUFDNk0sVUFBVSxFQUFDLFNBQUFBLFdBQUE7b0JBQUEsT0FBSUMsQ0FBQztrQkFBQTtrQkFBQ0MsU0FBUyxFQUFDLFNBQUFBLFVBQUE7b0JBQUEsT0FBSTNPLENBQUM7a0JBQUE7a0JBQUM0TyxVQUFVLEVBQUMsU0FBQUEsV0FBQTtvQkFBQSxPQUFJcE4sQ0FBQztrQkFBQTtrQkFBQ3FOLEtBQUssRUFBQyxTQUFBQSxNQUFBO29CQUFBLE9BQUkzTyxDQUFDO2tCQUFBO2tCQUFDNE8sUUFBUSxFQUFDLFNBQUFBLFNBQUE7b0JBQUEsT0FBSXRPLENBQUM7a0JBQUE7a0JBQUN1TyxTQUFTLEVBQUMsU0FBQUEsVUFBQTtvQkFBQSxPQUFJM08sQ0FBQztrQkFBQTtrQkFBQzRPLFlBQVksRUFBQyxTQUFBQSxhQUFBO29CQUFBLE9BQUk3UyxDQUFDO2tCQUFBO2tCQUFDOFMsYUFBYSxFQUFDLFNBQUFBLGNBQUE7b0JBQUEsT0FBSTdTLENBQUM7a0JBQUE7a0JBQUM4UyxNQUFNLEVBQUMsU0FBQUEsT0FBQTtvQkFBQSxPQUFJQyxDQUFDO2tCQUFBO2tCQUFDQyxPQUFPLEVBQUMsU0FBQUEsUUFBQTtvQkFBQSxPQUFJdk4sQ0FBQztrQkFBQTtrQkFBQ3dOLFVBQVUsRUFBQyxTQUFBQSxXQUFBO29CQUFBLE9BQUl0TixDQUFDO2tCQUFBO2tCQUFDdU4sY0FBYyxFQUFDLFNBQUFBLGVBQUE7b0JBQUEsT0FBSTNTLENBQUM7a0JBQUE7Z0JBQUEsQ0FBQyxDQUFDO2dCQUFDLElBQUlQLENBQUM7a0JBQUM0RCxDQUFDO2tCQUFDSixDQUFDO2tCQUFDTSxDQUFDO2tCQUFDL0QsQ0FBQztrQkFBQ3FFLENBQUM7a0JBQUNKLENBQUM7a0JBQUN3QixDQUFDO2tCQUFDdEIsQ0FBQyxHQUFDLFlBQVU7b0JBQUMsU0FBUzVELENBQUNBLENBQUNBLENBQUMsRUFBQ2lELENBQUMsRUFBQztzQkFBQyxJQUFJLENBQUN5QixJQUFJLEdBQUMxRSxDQUFDLEVBQUMsSUFBSSxDQUFDNlMsS0FBSyxHQUFDNVAsQ0FBQyxFQUFDLElBQUksQ0FBQzZQLE9BQU8sR0FBQyxJQUFJLENBQUNDLE1BQU0sQ0FBQyxDQUFDO29CQUFBO29CQUFDLE9BQU8vUyxDQUFDLENBQUNvRCxTQUFTLFNBQU0sR0FBQyxZQUFVO3NCQUFDLE1BQU0sSUFBSTtvQkFBQSxDQUFDLEVBQUNwRCxDQUFDLENBQUNvRCxTQUFTLENBQUM0UCxHQUFHLEdBQUMsVUFBU2hULENBQUMsRUFBQztzQkFBQyxJQUFJLENBQUNpVCxNQUFNLElBQUU3RixPQUFPLENBQUM0RixHQUFHLENBQUNoVCxDQUFDLENBQUM7b0JBQUEsQ0FBQyxFQUFDQSxDQUFDLENBQUNvRCxTQUFTLENBQUM4UCxRQUFRLEdBQUMsWUFBVTtzQkFBQzlGLE9BQU8sQ0FBQ3BELEtBQUssQ0FBQyxJQUFJLENBQUN4TSxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUFBLENBQUMsRUFBQ3dDLENBQUMsQ0FBQ29ELFNBQVMsQ0FBQytQLFVBQVUsR0FBQyxZQUFVO3NCQUFDL0YsT0FBTyxDQUFDQyxJQUFJLENBQUMsSUFBSSxDQUFDN1AsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFBQSxDQUFDLEVBQUN3QyxDQUFDLENBQUNvRCxTQUFTLENBQUM1RixHQUFHLEdBQUMsWUFBVTtzQkFBQyxPQUFNO3dCQUFDc1YsT0FBTyxFQUFDLElBQUksQ0FBQ0EsT0FBTzt3QkFBQ3BPLElBQUksRUFBQyxJQUFJLENBQUNBO3NCQUFJLENBQUM7b0JBQUEsQ0FBQyxFQUFDMUUsQ0FBQyxDQUFDb0QsU0FBUyxDQUFDMlAsTUFBTSxHQUFDLFlBQVU7c0JBQUMsT0FBTyxJQUFJLENBQUNyTyxJQUFJLEVBQUMsSUFBSSxDQUFDb08sT0FBTztvQkFBQSxDQUFDLEVBQUM5UyxDQUFDO2tCQUFBLENBQUMsQ0FBQyxDQUFDO2tCQUFDOEUsQ0FBQyxHQUFDO29CQUFDc08sbUJBQW1CLEVBQUMsdUJBQXVCO29CQUFDQyxlQUFlLEVBQUMsa0JBQWtCO29CQUFDQyxjQUFjLEVBQUMsaUJBQWlCO29CQUFDQyxtQkFBbUIsRUFBQyx1QkFBdUI7b0JBQUNDLGVBQWUsRUFBQyx5QkFBeUI7b0JBQUNDLG9CQUFvQixFQUFDLHdCQUF3QjtvQkFBQ0MsUUFBUSxFQUFDLFdBQVc7b0JBQUNDLGVBQWUsRUFBQyxtQkFBbUI7b0JBQUNDLGNBQWMsRUFBQyxrQkFBa0I7b0JBQUNDLFlBQVksRUFBQyxnQkFBZ0I7b0JBQUNDLFNBQVMsRUFBQyxrQkFBa0I7b0JBQUNDLFNBQVMsRUFBQyxZQUFZO29CQUFDQyxhQUFhLEVBQUMsaUJBQWlCO29CQUFDQyxhQUFhLEVBQUMsaUJBQWlCO29CQUFDQyxVQUFVLEVBQUMsY0FBYztvQkFBQ0MsaUJBQWlCLEVBQUMsb0JBQW9CO29CQUFDQyxnQkFBZ0IsRUFBQyxtQkFBbUI7b0JBQUNDLFNBQVMsRUFBQyxZQUFZO29CQUFDQyxhQUFhLEVBQUMsZ0JBQWdCO29CQUFDQyxTQUFTLEVBQUMsWUFBWTtvQkFBQ0MscUJBQXFCLEVBQUMseUJBQXlCO29CQUFDQyxnQkFBZ0IsRUFBQyxxQkFBcUI7b0JBQUNDLGdCQUFnQixFQUFDLG9CQUFvQjtvQkFBQ0MsWUFBWSxFQUFDLGVBQWU7b0JBQUNDLG1CQUFtQixFQUFDLHVCQUF1QjtvQkFBQ0MsY0FBYyxFQUFDLGtCQUFrQjtvQkFBQ0MsT0FBTyxFQUFDLFNBQVM7b0JBQUNDLGlCQUFpQixFQUFDO2tCQUFvQixDQUFDO2dCQUFDLENBQUMsVUFBUy9VLENBQUMsRUFBQztrQkFBQ0EsQ0FBQyxDQUFDZ1YsVUFBVSxHQUFDLFdBQVcsRUFBQ2hWLENBQUMsQ0FBQ2lWLE1BQU0sR0FBQyxRQUFRLEVBQUNqVixDQUFDLENBQUNrVixVQUFVLEdBQUMsYUFBYTtnQkFBQSxDQUFDLEVBQUV4VixDQUFDLEtBQUdBLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsVUFBU00sQ0FBQyxFQUFDO2tCQUFDQSxDQUFDLENBQUMrSyxNQUFNLEdBQUMsUUFBUSxFQUFDL0ssQ0FBQyxDQUFDbUQsTUFBTSxHQUFDLFFBQVEsRUFBQ25ELENBQUMsQ0FBQ2lPLEtBQUssR0FBQyxPQUFPLEVBQUNqTyxDQUFDLENBQUNnTCxNQUFNLEdBQUMsUUFBUSxFQUFDaEwsQ0FBQyxDQUFDbVYsT0FBTyxHQUFDLFNBQVMsRUFBQ25WLENBQUMsQ0FBQ29WLElBQUksR0FBQyxNQUFNLEVBQUNwVixDQUFDLENBQUNxVixRQUFRLEdBQUMsV0FBVztnQkFBQSxDQUFDLENBQUMvUixDQUFDLEtBQUdBLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsVUFBU3RELENBQUMsRUFBQztrQkFBQ0EsQ0FBQyxDQUFDc1YsTUFBTSxHQUFDLFNBQVMsRUFBQ3RWLENBQUMsQ0FBQ3VWLE1BQU0sR0FBQyxTQUFTLEVBQUN2VixDQUFDLENBQUN3VixNQUFNLEdBQUMsU0FBUyxFQUFDeFYsQ0FBQyxDQUFDeVYsTUFBTSxHQUFDLFNBQVMsRUFBQ3pWLENBQUMsQ0FBQzBWLFNBQVMsR0FBQyxZQUFZLEVBQUMxVixDQUFDLENBQUMyVixNQUFNLEdBQUMsUUFBUSxFQUFDM1YsQ0FBQyxDQUFDNFYsTUFBTSxHQUFDLFFBQVEsRUFBQzVWLENBQUMsQ0FBQzZWLE1BQU0sR0FBQyxRQUFRLEVBQUM3VixDQUFDLENBQUM4VixNQUFNLEdBQUMsUUFBUSxFQUFDOVYsQ0FBQyxDQUFDK1YsTUFBTSxHQUFDLFNBQVMsRUFBQy9WLENBQUMsQ0FBQ2dXLEtBQUssR0FBQyxPQUFPLEVBQUNoVyxDQUFDLENBQUNpVyxNQUFNLEdBQUMsU0FBUyxFQUFDalcsQ0FBQyxDQUFDa1csS0FBSyxHQUFDLE9BQU8sRUFBQ2xXLENBQUMsQ0FBQ21XLGVBQWUsR0FBQyxtQkFBbUIsRUFBQ25XLENBQUMsQ0FBQ29XLFNBQVMsR0FBQyxXQUFXLEVBQUNwVyxDQUFDLENBQUNxVyxXQUFXLEdBQUMsYUFBYSxFQUFDclcsQ0FBQyxDQUFDc1csT0FBTyxHQUFDLFVBQVUsRUFBQ3RXLENBQUMsQ0FBQ3VXLEtBQUssR0FBQyxPQUFPLEVBQUN2VyxDQUFDLENBQUN3VyxTQUFTLEdBQUMsV0FBVyxFQUFDeFcsQ0FBQyxDQUFDeVcsYUFBYSxHQUFDLGdCQUFnQixFQUFDelcsQ0FBQyxDQUFDMFcsVUFBVSxHQUFDLFlBQVk7Z0JBQUEsQ0FBQyxDQUFDeFQsQ0FBQyxLQUFHQSxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFVBQVNsRCxDQUFDLEVBQUM7a0JBQUNBLENBQUMsQ0FBQzJXLGlCQUFpQixHQUFDLG1CQUFtQixFQUFDM1csQ0FBQyxDQUFDNFcsa0JBQWtCLEdBQUMsb0JBQW9CLEVBQUM1VyxDQUFDLENBQUM2VyxPQUFPLEdBQUMsU0FBUyxFQUFDN1csQ0FBQyxDQUFDOFcsTUFBTSxHQUFDLFFBQVEsRUFBQzlXLENBQUMsQ0FBQytXLElBQUksR0FBQyxNQUFNO2dCQUFBLENBQUMsQ0FBQ3ZULENBQUMsS0FBR0EsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxVQUFTeEQsQ0FBQyxFQUFDO2tCQUFDQSxDQUFDLENBQUNnWCxLQUFLLEdBQUMsT0FBTyxFQUFDaFgsQ0FBQyxDQUFDaVgsSUFBSSxHQUFDLE1BQU0sRUFBQ2pYLENBQUMsQ0FBQ2tYLEtBQUssR0FBQyxPQUFPLEVBQUNsWCxDQUFDLENBQUNtWCxFQUFFLEdBQUMsSUFBSSxFQUFDblgsQ0FBQyxDQUFDb1gsS0FBSyxHQUFDLEdBQUcsRUFBQ3BYLENBQUMsQ0FBQ3FYLE9BQU8sR0FBQyxHQUFHLEVBQUNyWCxDQUFDLENBQUNzWCxXQUFXLEdBQUMsR0FBRyxFQUFDdFgsQ0FBQyxDQUFDdVgsUUFBUSxHQUFDLEdBQUcsRUFBQ3ZYLENBQUMsQ0FBQ3dYLGtCQUFrQixHQUFDLElBQUksRUFBQ3hYLENBQUMsQ0FBQ3lYLGVBQWUsR0FBQyxJQUFJLEVBQUN6WCxDQUFDLENBQUMwWCxVQUFVLEdBQUMsSUFBSSxFQUFDMVgsQ0FBQyxDQUFDMlgsU0FBUyxHQUFDLFdBQVcsRUFBQzNYLENBQUMsQ0FBQzRYLEdBQUcsR0FBQyxLQUFLLEVBQUM1WCxDQUFDLENBQUM2WCxHQUFHLEdBQUMsS0FBSyxFQUFDN1gsQ0FBQyxDQUFDOFgsR0FBRyxHQUFDLEtBQUssRUFBQzlYLENBQUMsQ0FBQ2tXLEtBQUssR0FBQyxPQUFPLEVBQUNsVyxDQUFDLENBQUMrWCxHQUFHLEdBQUMsS0FBSyxFQUFDL1gsQ0FBQyxDQUFDZ1ksSUFBSSxHQUFDLE1BQU0sRUFBQ2hZLENBQUMsQ0FBQ2lZLEVBQUUsR0FBQyxJQUFJLEVBQUNqWSxDQUFDLENBQUNrWSxJQUFJLEdBQUMsTUFBTSxFQUFDbFksQ0FBQyxDQUFDbVksS0FBSyxHQUFDLE9BQU8sRUFBQ25ZLENBQUMsQ0FBQ29ZLEdBQUcsR0FBQyxLQUFLLEVBQUNwWSxDQUFDLENBQUNxWSxVQUFVLEdBQUMsWUFBWSxFQUFDclksQ0FBQyxDQUFDc1ksSUFBSSxHQUFDLE1BQU07Z0JBQUEsQ0FBQyxDQUFDN1ksQ0FBQyxLQUFHQSxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFVBQVNPLENBQUMsRUFBQztrQkFBQ0EsQ0FBQyxDQUFDdVksUUFBUSxHQUFDLFVBQVUsRUFBQ3ZZLENBQUMsQ0FBQ3dZLFNBQVMsR0FBQyxXQUFXO2dCQUFBLENBQUMsQ0FBQzFVLENBQUMsS0FBR0EsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxVQUFTOUQsQ0FBQyxFQUFDO2tCQUFDQSxDQUFDLENBQUN5WSxLQUFLLEdBQUMsR0FBRyxFQUFDelksQ0FBQyxDQUFDMFksSUFBSSxHQUFDLEdBQUcsRUFBQzFZLENBQUMsQ0FBQzJZLEdBQUcsR0FBQyxHQUFHO2dCQUFBLENBQUMsQ0FBQ2pWLENBQUMsS0FBR0EsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxVQUFTMUQsQ0FBQyxFQUFDO2tCQUFDQSxDQUFDLENBQUM0WSxTQUFTLEdBQUMsV0FBVyxFQUFDNVksQ0FBQyxDQUFDNlksTUFBTSxHQUFDLFFBQVEsRUFBQzdZLENBQUMsQ0FBQ2tWLFVBQVUsR0FBQyxhQUFhLEVBQUNsVixDQUFDLENBQUM4WSxhQUFhLEdBQUMsaUJBQWlCLEVBQUM5WSxDQUFDLENBQUMrWSxlQUFlLEdBQUMsbUJBQW1CO2dCQUFBLENBQUMsQ0FBQzdULENBQUMsS0FBR0EsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQUMsSUFBSUwsRUFBQztrQkFBQ00sQ0FBQyxHQUFDLFNBQUZBLENBQUNBLENBQVVuRixDQUFDLEVBQUM7b0JBQUMsT0FBTyxJQUFJa0ksT0FBTyxDQUFDbEksQ0FBQyxDQUFDO2tCQUFBLENBQUM7a0JBQUNDLENBQUMsR0FBQyxTQUFGQSxDQUFDQSxDQUFVRCxDQUFDLEVBQUM7b0JBQUMsT0FBT2tJLE9BQU8sQ0FBQ3BDLE9BQU8sQ0FBQzlGLENBQUMsQ0FBQztrQkFBQSxDQUFDO2tCQUFDZ1osQ0FBQyxHQUFDLFlBQVU7b0JBQUMsU0FBU2haLENBQUNBLENBQUNBLENBQUMsRUFBQztzQkFBQyxJQUFJLENBQUNpWixPQUFPLEdBQUMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDQyxJQUFJLEdBQUNsWixDQUFDO29CQUFBO29CQUFDLE9BQU9BLENBQUMsQ0FBQ29ELFNBQVMsQ0FBQ2hDLEVBQUUsR0FBQyxVQUFTcEIsQ0FBQyxFQUFDaUQsQ0FBQyxFQUFDO3NCQUFDLE9BQU8sSUFBSSxJQUFFLElBQUksQ0FBQ2dXLE9BQU8sQ0FBQ2paLENBQUMsQ0FBQyxLQUFHLElBQUksQ0FBQ2laLE9BQU8sQ0FBQ2paLENBQUMsQ0FBQyxHQUFDLEVBQUUsQ0FBQyxFQUFDLElBQUksQ0FBQ2laLE9BQU8sQ0FBQ2paLENBQUMsQ0FBQyxDQUFDb0gsSUFBSSxDQUFDbkUsQ0FBQyxDQUFDLEVBQUMsSUFBSTtvQkFBQSxDQUFDLEVBQUNqRCxDQUFDLENBQUNvRCxTQUFTLENBQUMrVixHQUFHLEdBQUMsVUFBU25aLENBQUMsRUFBQ2lELENBQUMsRUFBQztzQkFBQyxJQUFHLElBQUksQ0FBQ2dXLE9BQU8sQ0FBQ2paLENBQUMsQ0FBQyxFQUFDLElBQUdpRCxDQUFDLEVBQUM7d0JBQUMsSUFBSXZELENBQUMsR0FBQyxJQUFJLENBQUN1WixPQUFPLENBQUNqWixDQUFDLENBQUMsQ0FBQ08sT0FBTyxDQUFDMEMsQ0FBQyxDQUFDO3dCQUFDLElBQUksQ0FBQ2dXLE9BQU8sQ0FBQ2paLENBQUMsQ0FBQyxDQUFDb1osTUFBTSxDQUFDMVosQ0FBQyxFQUFDLENBQUMsQ0FBQztzQkFBQSxDQUFDLE1BQUssSUFBSSxDQUFDdVosT0FBTyxDQUFDalosQ0FBQyxDQUFDLEdBQUMsRUFBRTtvQkFBQSxDQUFDLEVBQUNBLENBQUMsQ0FBQ29ELFNBQVMsQ0FBQ2lXLElBQUksR0FBQyxVQUFTclosQ0FBQyxFQUFDO3NCQUFDLEtBQUksSUFBSWlELENBQUMsR0FBQyxJQUFJLEVBQUN2RCxDQUFDLEdBQUMsRUFBRSxFQUFDNEQsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDK0YsU0FBUyxDQUFDNUIsTUFBTSxFQUFDbkUsQ0FBQyxFQUFFLEVBQUM1RCxDQUFDLENBQUM0RCxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMrRixTQUFTLENBQUMvRixDQUFDLENBQUM7c0JBQUMsSUFBSUosQ0FBQyxHQUFDLElBQUksQ0FBQytWLE9BQU8sQ0FBQ2paLENBQUMsQ0FBQyxJQUFFLEVBQUU7d0JBQUN3RCxDQUFDLEdBQUMsQ0FBQzt3QkFBQy9ELENBQUMsR0FBQ3lELENBQUMsQ0FBQ3VFLE1BQU07d0JBQUMzRCxDQUFDLEdBQUMsRUFBRTtzQkFBQyxPQUFPLElBQUlvRSxPQUFPLENBQUUsVUFBU2xJLENBQUMsRUFBQzt3QkFBQyxJQUFJc0QsQ0FBQyxHQUFDLFNBQUZBLENBQUNBLENBQUEsRUFBVzswQkFBQ0UsQ0FBQyxHQUFDL0QsQ0FBQyxHQUFDLFlBQVU7NEJBQUMsSUFBSU8sQ0FBQyxHQUFDa0QsQ0FBQyxDQUFDTSxDQUFDLEVBQUUsQ0FBQzs0QkFBQyxJQUFHeEQsQ0FBQyxFQUFDOzhCQUFDLElBQUlzRCxDQUFDLEdBQUN0RCxDQUFDLENBQUM0RSxJQUFJLENBQUN3RSxLQUFLLENBQUNwSixDQUFDLEVBQUMsVUFBU0EsQ0FBQyxFQUFDaUQsQ0FBQyxFQUFDdkQsQ0FBQyxFQUFDO2dDQUFDLElBQUdBLENBQUMsSUFBRSxDQUFDLEtBQUcySixTQUFTLENBQUM1QixNQUFNLEVBQUMsS0FBSSxJQUFJbkUsQ0FBQyxFQUFDSixDQUFDLEdBQUMsQ0FBQyxFQUFDTSxDQUFDLEdBQUNQLENBQUMsQ0FBQ3dFLE1BQU0sRUFBQ3ZFLENBQUMsR0FBQ00sQ0FBQyxFQUFDTixDQUFDLEVBQUUsRUFBQyxDQUFDSSxDQUFDLElBQUVKLENBQUMsSUFBSUQsQ0FBQyxLQUFHSyxDQUFDLEtBQUdBLENBQUMsR0FBQzJLLEtBQUssQ0FBQzdLLFNBQVMsQ0FBQ29GLEtBQUssQ0FBQzVELElBQUksQ0FBQzNCLENBQUMsRUFBQyxDQUFDLEVBQUNDLENBQUMsQ0FBQyxDQUFDLEVBQUNJLENBQUMsQ0FBQ0osQ0FBQyxDQUFDLEdBQUNELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLENBQUM7Z0NBQUMsT0FBT2xELENBQUMsQ0FBQ3VCLE1BQU0sQ0FBQytCLENBQUMsSUFBRTJLLEtBQUssQ0FBQzdLLFNBQVMsQ0FBQ29GLEtBQUssQ0FBQzVELElBQUksQ0FBQzNCLENBQUMsQ0FBQyxDQUFDOzhCQUFBLENBQUMsQ0FBQyxDQUFDQSxDQUFDLENBQUNpVyxJQUFJLENBQUMsRUFBQ3haLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOzhCQUFDLE9BQU80RCxDQUFDLElBQUVBLENBQUMsQ0FBQzBDLElBQUksR0FBQzFDLENBQUMsR0FBQzRFLE9BQU8sQ0FBQ3BDLE9BQU8sQ0FBQ3hDLENBQUMsQ0FBQzs0QkFBQTswQkFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDMEMsSUFBSSxDQUFFLFVBQVNoRyxDQUFDLEVBQUM7NEJBQUM4RCxDQUFDLENBQUNzRCxJQUFJLENBQUNwSCxDQUFDLENBQUMsRUFBQ3NELENBQUMsQ0FBQyxDQUFDOzBCQUFBLENBQUUsQ0FBQyxHQUFDdEQsQ0FBQyxDQUFDOEQsQ0FBQyxDQUFDO3dCQUFBLENBQUM7d0JBQUNSLENBQUMsQ0FBQyxDQUFDO3NCQUFBLENBQUUsQ0FBQztvQkFBQSxDQUFDLEVBQUN0RCxDQUFDLENBQUNvRCxTQUFTLENBQUNrVyxPQUFPLEdBQUMsWUFBVTtzQkFBQyxJQUFJLENBQUNMLE9BQU8sR0FBQyxJQUFJLEVBQUMsSUFBSSxDQUFDQyxJQUFJLEdBQUMsSUFBSTtvQkFBQSxDQUFDLEVBQUNsWixDQUFDO2tCQUFBLENBQUMsQ0FBQyxDQUFDO2tCQUFDK0UsQ0FBQyxHQUFDLFlBQVU7b0JBQUMsU0FBUy9FLENBQUNBLENBQUNBLENBQUMsRUFBQztzQkFBQyxJQUFJLENBQUN1WixZQUFZLEdBQUMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDQyxTQUFTLEdBQUMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDQyxhQUFhLEdBQUMsRUFBRSxFQUFDLElBQUksQ0FBQ0MsZ0JBQWdCLEdBQUMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDQyxnQkFBZ0IsR0FBQyxDQUFDLEdBQUcsRUFBQyxJQUFJLENBQUNDLFdBQVcsR0FBQyxFQUFFLEVBQUMsSUFBSSxDQUFDQyxTQUFTLEdBQUMsSUFBSWIsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksQ0FBQ2MsYUFBYSxHQUFDLENBQUM1VyxDQUFDLENBQUNvUyxNQUFNLEVBQUNwUyxDQUFDLENBQUM2UyxNQUFNLEVBQUM3UyxDQUFDLENBQUNxUyxNQUFNLEVBQUNyUyxDQUFDLENBQUNzUyxNQUFNLEVBQUN0UyxDQUFDLENBQUN1UyxNQUFNLEVBQUN2UyxDQUFDLENBQUN3UyxTQUFTLEVBQUN4UyxDQUFDLENBQUNpVCxlQUFlLEVBQUNqVCxDQUFDLENBQUNrVCxTQUFTLEVBQUNsVCxDQUFDLENBQUMrUyxNQUFNLENBQUMsRUFBQyxJQUFJLENBQUM4RCxRQUFRLEdBQUMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDQyxNQUFNLEdBQUMsSUFBSXBXLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQzVELENBQUMsSUFBRSxJQUFJLENBQUNpYSxPQUFPLEdBQUNqYSxDQUFDLEVBQUMsSUFBSSxDQUFDaWEsT0FBTyxDQUFDQyxTQUFTLEdBQUMsSUFBSSxDQUFDQyxvQkFBb0IsQ0FBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFHLElBQUksQ0FBQ0wsUUFBUSxHQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQ00saUJBQWlCLENBQUMsQ0FBQyxDQUFDO29CQUFBO29CQUFDLE9BQU9sWCxNQUFNLENBQUNJLGNBQWMsQ0FBQ3ZELENBQUMsQ0FBQ29ELFNBQVMsRUFBQyxlQUFlLEVBQUM7c0JBQUM1RixHQUFHLEVBQUMsU0FBQUEsSUFBQSxFQUFVO3dCQUFDLE9BQU8sSUFBSSxDQUFDOGMsT0FBTyxJQUFFcFEsSUFBSSxDQUFDcVEsYUFBYTtzQkFBQSxDQUFDO3NCQUFDdFcsVUFBVSxFQUFDLENBQUMsQ0FBQztzQkFBQ0MsWUFBWSxFQUFDLENBQUM7b0JBQUMsQ0FBQyxDQUFDLEVBQUNsRSxDQUFDLENBQUNvRCxTQUFTLENBQUNpWCxpQkFBaUIsR0FBQyxZQUFVO3NCQUFDLElBQUlyYSxDQUFDLEdBQUMsSUFBSSxDQUFDd2EsYUFBYTtzQkFBQ3hhLENBQUMsS0FBRyxJQUFJLENBQUN5YSxZQUFZLEdBQUMsSUFBSXphLENBQUMsQ0FBQzBhLFlBQVksQ0FBQyxJQUFJLENBQUNDLHFCQUFxQixDQUFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFBQSxDQUFDLEVBQUNwYSxDQUFDLENBQUNvRCxTQUFTLENBQUMrVyxvQkFBb0IsR0FBQyxVQUFTbmEsQ0FBQyxFQUFDO3NCQUFDLElBQUksQ0FBQzJhLHFCQUFxQixDQUFDM2EsQ0FBQyxDQUFDNGEsSUFBSSxDQUFDO29CQUFBLENBQUMsRUFBQzVhLENBQUMsQ0FBQ29ELFNBQVMsQ0FBQ3VYLHFCQUFxQixHQUFDLFVBQVMzYSxDQUFDLEVBQUM7c0JBQUMsSUFBSWlELENBQUMsR0FBQyxJQUFJLENBQUN3VyxhQUFhLENBQUNvQixLQUFLLENBQUMsQ0FBQztzQkFBQyxJQUFHNVgsQ0FBQyxFQUFDO3dCQUFDLElBQUcsSUFBSSxDQUFDK1csTUFBTSxDQUFDaEgsR0FBRyxDQUFDLFVBQVUsQ0FBQ3pSLE1BQU0sQ0FBQzBCLENBQUMsQ0FBQ2xGLElBQUksRUFBQyxXQUFXLENBQUMsQ0FBQyxFQUFDaUMsQ0FBQyxDQUFDZ0ssS0FBSyxFQUFDL0csQ0FBQyxDQUFDNlgsT0FBTyxDQUFDOWEsQ0FBQyxDQUFDZ0ssS0FBSyxDQUFDLENBQUMsS0FBSTswQkFBQyxRQUFPL0csQ0FBQyxDQUFDbEYsSUFBSTs0QkFBRSxLQUFLbUYsQ0FBQyxDQUFDNlMsTUFBTTs0QkFBQyxLQUFLN1MsQ0FBQyxDQUFDb1MsTUFBTTs4QkFBQyxJQUFJLENBQUNpRSxZQUFZLEdBQUMsQ0FBQyxDQUFDOzhCQUFDOzRCQUFNLEtBQUtyVyxDQUFDLENBQUNrVCxTQUFTOzhCQUFDLElBQUksQ0FBQ21ELFlBQVksR0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsS0FBRyxJQUFJLENBQUNRLFFBQVEsSUFBRSxJQUFJLENBQUNFLE9BQU8sQ0FBQ2MsU0FBUyxDQUFDLENBQUM7NEJBQUMsS0FBSzdYLENBQUMsQ0FBQytTLE1BQU07OEJBQUMsSUFBSSxDQUFDc0QsWUFBWSxHQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQ0UsYUFBYSxHQUFDLEVBQUUsRUFBQyxJQUFJLENBQUNELFNBQVMsR0FBQyxDQUFDLENBQUM7OEJBQUM7NEJBQU0sS0FBS3RXLENBQUMsQ0FBQ29ULE9BQU87OEJBQUMsSUFBSSxDQUFDa0QsU0FBUyxHQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQ0ssU0FBUyxDQUFDUixJQUFJLENBQUM3VixDQUFDLENBQUNtVCxpQkFBaUIsRUFBQyxFQUFFLENBQUMsRUFBQyxJQUFJLENBQUM4QyxhQUFhLENBQUNoUyxNQUFNLEdBQUMsQ0FBQyxJQUFFLElBQUksQ0FBQ3VULE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQzswQkFBQTswQkFBQy9YLENBQUMsQ0FBQ2dZLFNBQVMsQ0FBQ2piLENBQUMsQ0FBQ3VNLE1BQU0sQ0FBQzt3QkFBQTt3QkFBQyxJQUFJLENBQUNtTixnQkFBZ0IsR0FBQyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUN3QixXQUFXLENBQUMsQ0FBQztzQkFBQTtvQkFBQyxDQUFDLEVBQUNsYixDQUFDLENBQUNvRCxTQUFTLENBQUM0WCxPQUFPLEdBQUMsVUFBU2hiLENBQUMsRUFBQztzQkFBQyxLQUFLLENBQUMsS0FBR0EsQ0FBQyxLQUFHQSxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUM7c0JBQUMsSUFBSWlELENBQUMsR0FBQzt3QkFBQ2xGLElBQUksRUFBQ21GLENBQUMsQ0FBQzZTLE1BQU07d0JBQUNvRixLQUFLLEVBQUM7MEJBQUNwZCxJQUFJLEVBQUMsSUFBSSxDQUFDcWQsUUFBUSxDQUFDcmQsSUFBSTswQkFBQytCLE9BQU8sRUFBQyxJQUFJLENBQUNzYixRQUFRLENBQUN0Yjt3QkFBTyxDQUFDO3dCQUFDbWIsU0FBUyxFQUFDLFNBQUFBLFVBQUEsRUFBVSxDQUFDLENBQUM7d0JBQUNILE9BQU8sRUFBQyxTQUFBQSxRQUFTOWEsQ0FBQyxFQUFDOzBCQUFDb04sT0FBTyxDQUFDcEQsS0FBSyxDQUFDaEssQ0FBQyxDQUFDO3dCQUFBO3NCQUFDLENBQUM7c0JBQUNBLENBQUMsR0FBQyxJQUFJLENBQUNxYixzQkFBc0IsQ0FBQ3BZLENBQUMsRUFBQyxDQUFDLENBQUMsR0FBQyxJQUFJLENBQUN3VyxhQUFhLENBQUNMLE1BQU0sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDblcsQ0FBQyxDQUFDO29CQUFBLENBQUMsRUFBQ2pELENBQUMsQ0FBQ29ELFNBQVMsQ0FBQ2tZLGtCQUFrQixHQUFDLFVBQVN0YixDQUFDLEVBQUM7c0JBQUMsSUFBSWlELENBQUMsR0FBQyxJQUFJO3NCQUFDLE9BQU9rQyxDQUFDLENBQUUsVUFBU3pGLENBQUMsRUFBQzt3QkFBQyxJQUFJNEQsQ0FBQyxHQUFDLENBQUM7MEJBQUNKLENBQUMsR0FBQ0QsQ0FBQyxDQUFDMlcsV0FBVyxDQUFDblMsTUFBTSxHQUFDLENBQUM7MEJBQUNqRSxDQUFDLEdBQUMsU0FBRkEsQ0FBQ0EsQ0FBQSxFQUFXOzRCQUFDLElBQUdGLENBQUMsSUFBRUosQ0FBQyxFQUFDOzhCQUFDLElBQUl6RCxDQUFDLEdBQUN3RCxDQUFDLENBQUMyVyxXQUFXLENBQUN0VyxDQUFDLEVBQUUsQ0FBQyxDQUFDdEQsQ0FBQyxDQUFDOzhCQUFDUCxDQUFDLElBQUVBLENBQUMsQ0FBQ3VHLElBQUksS0FBR3ZHLENBQUMsR0FBQ1EsQ0FBQyxDQUFDUixDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUN1RyxJQUFJLENBQUUsVUFBU2hHLENBQUMsRUFBQztnQ0FBQ3dELENBQUMsQ0FBQyxDQUFDOzhCQUFBLENBQUUsQ0FBQzs0QkFBQSxDQUFDLE1BQUs5RCxDQUFDLENBQUMsQ0FBQzswQkFBQSxDQUFDO3dCQUFDOEQsQ0FBQyxDQUFDLENBQUM7c0JBQUEsQ0FBRSxDQUFDO29CQUFBLENBQUMsRUFBQ3hELENBQUMsQ0FBQ29ELFNBQVMsQ0FBQ21ZLG9CQUFvQixHQUFDLFVBQVN2YixDQUFDLEVBQUNpRCxDQUFDLEVBQUM7c0JBQUMsT0FBT2tDLENBQUMsQ0FBRSxVQUFTekYsQ0FBQyxFQUFDO3dCQUFDLElBQUk0RCxDQUFDLEdBQUMsQ0FBQzswQkFBQ0osQ0FBQyxHQUFDbEQsQ0FBQyxDQUFDeUgsTUFBTSxHQUFDLENBQUM7MEJBQUNqRSxDQUFDLEdBQUMsU0FBRkEsQ0FBQ0EsQ0FBQSxFQUFXOzRCQUFDLElBQUdGLENBQUMsSUFBRUosQ0FBQyxFQUFDOzhCQUFDLElBQUl6RCxDQUFDLEdBQUNPLENBQUMsQ0FBQ3NELENBQUMsRUFBRSxDQUFDLENBQUNMLENBQUMsQ0FBQzs4QkFBQ3hELENBQUMsQ0FBQ3VHLElBQUksS0FBR3ZHLENBQUMsR0FBQ1EsQ0FBQyxDQUFDUixDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUN1RyxJQUFJLENBQUUsVUFBU2hHLENBQUMsRUFBQztnQ0FBQ2lELENBQUMsR0FBQ2pELENBQUMsRUFBQ3dELENBQUMsQ0FBQyxDQUFDOzhCQUFBLENBQUUsQ0FBQzs0QkFBQSxDQUFDLE1BQUs5RCxDQUFDLENBQUN1RCxDQUFDLENBQUM7MEJBQUEsQ0FBQzt3QkFBQ08sQ0FBQyxDQUFDLENBQUM7c0JBQUEsQ0FBRSxDQUFDO29CQUFBLENBQUMsRUFBQ3hELENBQUMsQ0FBQ29ELFNBQVMsQ0FBQ29ZLE9BQU8sR0FBQyxVQUFTeGIsQ0FBQyxFQUFDO3NCQUFDLElBQUlpRCxDQUFDLEdBQUMsSUFBSTtzQkFBQyxPQUFPLElBQUlpRixPQUFPLENBQUUsVUFBU3hJLENBQUMsRUFBQzRELENBQUMsRUFBQzt3QkFBQyxJQUFJN0QsQ0FBQyxHQUFDLEVBQUU7d0JBQUNPLENBQUMsQ0FBQ3liLFFBQVEsR0FBQyxVQUFTemIsQ0FBQyxFQUFDOzBCQUFDUCxDQUFDLENBQUMySCxJQUFJLENBQUUsVUFBU25FLENBQUMsRUFBQzs0QkFBQyxPQUFPakQsQ0FBQyxDQUFDaUQsQ0FBQyxDQUFDOzBCQUFBLENBQUUsQ0FBQzt3QkFBQSxDQUFDLEVBQUNBLENBQUMsQ0FBQ3FZLGtCQUFrQixDQUFDdGIsQ0FBQyxDQUFDLENBQUNnRyxJQUFJLENBQUUsWUFBVTswQkFBQ2hHLENBQUMsQ0FBQ2liLFNBQVMsR0FBQyxVQUFTM1gsQ0FBQyxFQUFDOzRCQUFDTCxDQUFDLENBQUNzWSxvQkFBb0IsQ0FBQzliLENBQUMsRUFBQzZELENBQUMsQ0FBQyxDQUFDMEMsSUFBSSxDQUFFLFVBQVNoRyxDQUFDLEVBQUM7OEJBQUNOLENBQUMsQ0FBQ00sQ0FBQyxDQUFDOzRCQUFBLENBQUUsQ0FBQyxTQUFNLENBQUUsVUFBU2lELENBQUMsRUFBQzs4QkFBQ2pELENBQUMsQ0FBQzhhLE9BQU8sQ0FBQzdYLENBQUMsQ0FBQzs0QkFBQSxDQUFFLENBQUM7MEJBQUEsQ0FBQyxFQUFDakQsQ0FBQyxDQUFDOGEsT0FBTyxHQUFDLFVBQVM5YSxDQUFDLEVBQUM7NEJBQUNQLENBQUMsR0FBQyxFQUFFLEVBQUM2RCxDQUFDLENBQUN0RCxDQUFDLENBQUM7MEJBQUEsQ0FBQyxFQUFDLENBQUMsS0FBR2lELENBQUMsQ0FBQ3dXLGFBQWEsQ0FBQ2hTLE1BQU0sS0FBR3hFLENBQUMsQ0FBQzRXLFNBQVMsQ0FBQ1IsSUFBSSxDQUFDN1YsQ0FBQyxDQUFDb1Qsa0JBQWtCLEVBQUMsRUFBRSxDQUFDLEVBQUMzVCxDQUFDLENBQUN1VyxTQUFTLElBQUV2VyxDQUFDLENBQUNzVyxZQUFZLEtBQUcsQ0FBQ3JXLENBQUMsQ0FBQ29TLE1BQU0sRUFBQ3BTLENBQUMsQ0FBQ29ULE9BQU8sRUFBQ3BULENBQUMsQ0FBQytTLE1BQU0sRUFBQy9TLENBQUMsQ0FBQzZTLE1BQU0sRUFBQzdTLENBQUMsQ0FBQ2tULFNBQVMsQ0FBQyxDQUFDN1YsT0FBTyxDQUFDUCxDQUFDLENBQUNqQyxJQUFJLENBQUMsSUFBRSxDQUFDLElBQUVrRixDQUFDLENBQUMrWCxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUNVLFlBQVksQ0FBQ3pZLENBQUMsQ0FBQzBXLGdCQUFnQixDQUFDLENBQUMsRUFBQzFXLENBQUMsQ0FBQ29ZLHNCQUFzQixDQUFDcmIsQ0FBQyxDQUFDO3dCQUFBLENBQUUsQ0FBQyxTQUFNLENBQUNzRCxDQUFDLENBQUM7c0JBQUEsQ0FBRSxDQUFDO29CQUFBLENBQUMsRUFBQ3RELENBQUMsQ0FBQ29ELFNBQVMsQ0FBQ2lZLHNCQUFzQixHQUFDLFVBQVNyYixDQUFDLEVBQUNpRCxDQUFDLEVBQUM7c0JBQUMsSUFBSSxDQUFDdVcsU0FBUyxHQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksSUFBRXZXLENBQUMsR0FBQyxJQUFJLENBQUN3VyxhQUFhLENBQUNMLE1BQU0sQ0FBQ25XLENBQUMsRUFBQyxDQUFDLEVBQUNqRCxDQUFDLENBQUMsR0FBQyxJQUFJLENBQUN5WixhQUFhLENBQUNyUyxJQUFJLENBQUNwSCxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUNnYSxNQUFNLENBQUNoSCxHQUFHLENBQUMsa0JBQWtCLEdBQUNoVCxDQUFDLENBQUNqQyxJQUFJLENBQUMsRUFBQyxJQUFJLENBQUNtZCxXQUFXLENBQUMsQ0FBQztvQkFBQSxDQUFDLEVBQUNsYixDQUFDLENBQUNvRCxTQUFTLENBQUM4WCxXQUFXLEdBQUMsWUFBVTtzQkFBQyxJQUFJbGIsQ0FBQyxHQUFDLElBQUk7d0JBQUNpRCxDQUFDLEdBQUMsSUFBSSxDQUFDd1csYUFBYSxDQUFDaFMsTUFBTTtzQkFBQyxJQUFHLENBQUMsSUFBSSxDQUFDaVMsZ0JBQWdCLElBQUV6VyxDQUFDLEdBQUMsQ0FBQyxFQUFDO3dCQUFDLElBQUcsQ0FBQyxDQUFDLEtBQUcsSUFBSSxDQUFDc1csWUFBWSxFQUFDLE9BQU8sS0FBSyxJQUFJLENBQUNvQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUNsQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQUMsSUFBSS9aLENBQUMsR0FBQyxJQUFJLENBQUMrWixhQUFhLENBQUNtQyxTQUFTLENBQUUsVUFBUzNZLENBQUMsRUFBQzswQkFBQyxPQUFPakQsQ0FBQyxDQUFDOFosYUFBYSxDQUFDdlosT0FBTyxDQUFDMEMsQ0FBQyxDQUFDbEYsSUFBSSxDQUFDLElBQUUsQ0FBQzt3QkFBQSxDQUFFLENBQUM7d0JBQUMyQixDQUFDLElBQUUsQ0FBQyxLQUFHLElBQUksQ0FBQytaLGFBQWEsQ0FBQ0wsTUFBTSxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsSUFBSSxDQUFDSyxhQUFhLENBQUNMLE1BQU0sQ0FBQzFaLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQ2ljLG9CQUFvQixDQUFDLElBQUksQ0FBQ2xDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3NCQUFBLENBQUMsTUFBSyxDQUFDLEtBQUd4VyxDQUFDLElBQUUsQ0FBQyxDQUFDLEtBQUcsSUFBSSxDQUFDdVcsU0FBUyxJQUFFLElBQUksQ0FBQ0QsWUFBWSxLQUFHLElBQUksQ0FBQ0ksZ0JBQWdCLEdBQUNrQyxVQUFVLENBQUUsWUFBVTt3QkFBQzdiLENBQUMsQ0FBQ3FiLHNCQUFzQixDQUFDOzBCQUFDdGQsSUFBSSxFQUFDbUYsQ0FBQyxDQUFDb1QsT0FBTzswQkFBQzJFLFNBQVMsRUFBQyxTQUFBQSxVQUFBLEVBQVUsQ0FBQyxDQUFDOzBCQUFDSCxPQUFPLEVBQUMsU0FBQUEsUUFBUzlhLENBQUMsRUFBQzs0QkFBQ29OLE9BQU8sQ0FBQ3BELEtBQUssQ0FBQ2hLLENBQUMsQ0FBQzswQkFBQTt3QkFBQyxDQUFDLENBQUM7c0JBQUEsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUFBLENBQUMsRUFBQ0EsQ0FBQyxDQUFDb0QsU0FBUyxDQUFDdVksb0JBQW9CLEdBQUMsVUFBUzNiLENBQUMsRUFBQztzQkFBQyxJQUFJLENBQUMwWixnQkFBZ0IsR0FBQyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUNNLE1BQU0sQ0FBQ2hILEdBQUcsQ0FBQyxxQkFBcUIsR0FBQ2hULENBQUMsQ0FBQ2pDLElBQUksQ0FBQztzQkFBQyxJQUFJa0YsQ0FBQyxHQUFDO3dCQUFDbEYsSUFBSSxFQUFDaUMsQ0FBQyxDQUFDakMsSUFBSTt3QkFBQ29kLEtBQUssRUFBQ25iLENBQUMsQ0FBQ21iO3NCQUFLLENBQUM7c0JBQUMsQ0FBQyxDQUFDLEtBQUcsSUFBSSxDQUFDcEIsUUFBUSxHQUFDLElBQUksQ0FBQ0UsT0FBTyxDQUFDNkIsV0FBVyxDQUFDN1ksQ0FBQyxDQUFDLEdBQUMsSUFBSSxDQUFDd1gsWUFBWSxDQUFDc0IsR0FBRyxDQUFDOVksQ0FBQyxDQUFDO29CQUFBLENBQUMsRUFBQ2pELENBQUM7a0JBQUEsQ0FBQyxDQUFDLENBQUM7a0JBQUNnYyxDQUFDLEdBQUMsWUFBVTtvQkFBQyxTQUFTaGMsQ0FBQ0EsQ0FBQ0EsQ0FBQyxFQUFDO3NCQUFDLElBQUksQ0FBQ2ljLEdBQUcsR0FBQ2pjLENBQUM7b0JBQUE7b0JBQUMsT0FBT0EsQ0FBQyxDQUFDb0QsU0FBUyxDQUFDNUYsR0FBRyxHQUFDLFVBQVN3QyxDQUFDLEVBQUM7c0JBQUMsT0FBTyxJQUFJLENBQUNpYyxHQUFHLENBQUNULE9BQU8sQ0FBQzt3QkFBQ3pkLElBQUksRUFBQ21GLENBQUMsQ0FBQ3FTLE1BQU07d0JBQUM0RixLQUFLLEVBQUNuYjtzQkFBQyxDQUFDLENBQUM7b0JBQUEsQ0FBQyxFQUFDQSxDQUFDLENBQUNvRCxTQUFTLENBQUM4WSxHQUFHLEdBQUMsVUFBU2xjLENBQUMsRUFBQztzQkFBQyxPQUFPLElBQUksQ0FBQ2ljLEdBQUcsQ0FBQ1QsT0FBTyxDQUFDO3dCQUFDemQsSUFBSSxFQUFDbUYsQ0FBQyxDQUFDdVMsTUFBTTt3QkFBQzBGLEtBQUssRUFBQ25iO3NCQUFDLENBQUMsQ0FBQztvQkFBQSxDQUFDLEVBQUNBLENBQUMsQ0FBQ29ELFNBQVMsQ0FBQzFGLEdBQUcsR0FBQyxVQUFTc0MsQ0FBQyxFQUFDaUQsQ0FBQyxFQUFDO3NCQUFDLE9BQU8sSUFBSSxDQUFDZ1osR0FBRyxDQUFDVCxPQUFPLENBQUM7d0JBQUN6ZCxJQUFJLEVBQUNtRixDQUFDLENBQUNzUyxNQUFNO3dCQUFDMkYsS0FBSyxFQUFDOzBCQUFDN2QsR0FBRyxFQUFDMEMsQ0FBQzswQkFBQ3pDLEtBQUssRUFBQzBGO3dCQUFDO3NCQUFDLENBQUMsQ0FBQztvQkFBQSxDQUFDLEVBQUNqRCxDQUFDLENBQUNvRCxTQUFTLFVBQU8sR0FBQyxVQUFTcEQsQ0FBQyxFQUFDO3NCQUFDLE9BQU8sSUFBSSxDQUFDaWMsR0FBRyxDQUFDVCxPQUFPLENBQUM7d0JBQUN6ZCxJQUFJLEVBQUNtRixDQUFDLENBQUN3UyxTQUFTO3dCQUFDeUYsS0FBSyxFQUFDbmI7c0JBQUMsQ0FBQyxDQUFDO29CQUFBLENBQUMsRUFBQ0EsQ0FBQztrQkFBQSxDQUFDLENBQUMsQ0FBQztrQkFBQ3VGLENBQUMsSUFBRVYsRUFBQyxHQUFDLFNBQUFBLEVBQVM3RSxDQUFDLEVBQUNpRCxDQUFDLEVBQUM7b0JBQUMsT0FBTzRCLEVBQUMsR0FBQzFCLE1BQU0sQ0FBQzJFLGNBQWMsSUFBRTtzQkFBQ0MsU0FBUyxFQUFDO29CQUFFLENBQUMsWUFBV2tHLEtBQUssSUFBRSxVQUFTak8sQ0FBQyxFQUFDaUQsQ0FBQyxFQUFDO3NCQUFDakQsQ0FBQyxDQUFDK0gsU0FBUyxHQUFDOUUsQ0FBQztvQkFBQSxDQUFDLElBQUUsVUFBU2pELENBQUMsRUFBQ2lELENBQUMsRUFBQztzQkFBQyxLQUFJLElBQUl2RCxDQUFDLElBQUl1RCxDQUFDLEVBQUNFLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUN1QixJQUFJLENBQUMzQixDQUFDLEVBQUN2RCxDQUFDLENBQUMsS0FBR00sQ0FBQyxDQUFDTixDQUFDLENBQUMsR0FBQ3VELENBQUMsQ0FBQ3ZELENBQUMsQ0FBQyxDQUFDO29CQUFBLENBQUMsRUFBQ21GLEVBQUMsQ0FBQzdFLENBQUMsRUFBQ2lELENBQUMsQ0FBQztrQkFBQSxDQUFDLEVBQUMsVUFBU2pELENBQUMsRUFBQ2lELENBQUMsRUFBQztvQkFBQyxJQUFHLFVBQVUsSUFBRSxPQUFPQSxDQUFDLElBQUUsSUFBSSxLQUFHQSxDQUFDLEVBQUMsTUFBTSxJQUFJeUQsU0FBUyxDQUFDLHNCQUFzQixHQUFDcUUsTUFBTSxDQUFDOUgsQ0FBQyxDQUFDLEdBQUMsK0JBQStCLENBQUM7b0JBQUMsU0FBU3ZELENBQUNBLENBQUEsRUFBRTtzQkFBQyxJQUFJLENBQUNrSSxXQUFXLEdBQUM1SCxDQUFDO29CQUFBO29CQUFDNkUsRUFBQyxDQUFDN0UsQ0FBQyxFQUFDaUQsQ0FBQyxDQUFDLEVBQUNqRCxDQUFDLENBQUNvRCxTQUFTLEdBQUMsSUFBSSxLQUFHSCxDQUFDLEdBQUNFLE1BQU0sQ0FBQ21CLE1BQU0sQ0FBQ3JCLENBQUMsQ0FBQyxJQUFFdkQsQ0FBQyxDQUFDMEQsU0FBUyxHQUFDSCxDQUFDLENBQUNHLFNBQVMsRUFBQyxJQUFJMUQsQ0FBQyxDQUFELENBQUMsQ0FBQztrQkFBQSxDQUFDLENBQUM7a0JBQUNzUyxDQUFDLEdBQUMsVUFBU2hTLENBQUMsRUFBQztvQkFBQyxTQUFTaUQsQ0FBQ0EsQ0FBQ0EsQ0FBQyxFQUFDO3NCQUFDLElBQUl2RCxDQUFDLEdBQUNNLENBQUMsQ0FBQzRFLElBQUksQ0FBQyxJQUFJLEVBQUMzQixDQUFDLENBQUMsSUFBRSxJQUFJO3NCQUFDLE9BQU92RCxDQUFDLENBQUN5YyxHQUFHLEdBQUMsSUFBSUgsQ0FBQyxDQUFDdGMsQ0FBQyxDQUFDLEVBQUNBLENBQUM7b0JBQUE7b0JBQUMsT0FBTzZGLENBQUMsQ0FBQ3RDLENBQUMsRUFBQ2pELENBQUMsQ0FBQyxFQUFDaUQsQ0FBQyxDQUFDRyxTQUFTLENBQUNnWixNQUFNLEdBQUMsVUFBU3BjLENBQUMsRUFBQztzQkFBQyxJQUFJaUQsQ0FBQyxHQUFDLElBQUk7c0JBQUMsT0FBTyxJQUFJLENBQUNtWSxRQUFRLEdBQUNwYixDQUFDLEVBQUMsSUFBSSxDQUFDd2IsT0FBTyxDQUFDO3dCQUFDemQsSUFBSSxFQUFDbUYsQ0FBQyxDQUFDb1MsTUFBTTt3QkFBQzZGLEtBQUssRUFBQ25iO3NCQUFDLENBQUMsQ0FBQyxDQUFDZ0csSUFBSSxDQUFFLFVBQVNoRyxDQUFDLEVBQUM7d0JBQUMsSUFBSU4sQ0FBQzswQkFBQzRELENBQUMsR0FBQ3RELENBQUMsQ0FBQ29iLFFBQVE7d0JBQUMsT0FBT3BiLENBQUMsQ0FBQ3FjLFNBQVMsS0FBRzNjLENBQUMsR0FBQ00sQ0FBQyxDQUFDc2MsVUFBVSxHQUFDclosQ0FBQyxDQUFDNFcsU0FBUyxDQUFDUixJQUFJLENBQUM3VixDQUFDLENBQUNxVCxPQUFPLEVBQUN2VCxDQUFDLEVBQUN0RCxDQUFDLENBQUNzYyxVQUFVLEVBQUN0YyxDQUFDLENBQUN1YyxVQUFVLENBQUMsR0FBQ3RaLENBQUMsQ0FBQzRXLFNBQVMsQ0FBQ1IsSUFBSSxDQUFDN1YsQ0FBQyxDQUFDc1QsTUFBTSxFQUFDeFQsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDNUQsQ0FBQyxJQUFFTyxDQUFDLENBQUMsQ0FBQyxFQUFFK0YsSUFBSSxDQUFFLFVBQVNoRyxDQUFDLEVBQUM7MEJBQUMsT0FBT2lELENBQUMsQ0FBQzRXLFNBQVMsQ0FBQ1IsSUFBSSxDQUFDN1YsQ0FBQyxDQUFDdVQsSUFBSSxFQUFDelQsQ0FBQyxDQUFDO3dCQUFBLENBQUUsQ0FBQyxDQUFDMEMsSUFBSSxDQUFFLFVBQVMvQyxDQUFDLEVBQUM7MEJBQUMsT0FBT2pELENBQUMsQ0FBQ3FjLFNBQVM7d0JBQUEsQ0FBRSxDQUFDO3NCQUFBLENBQUUsQ0FBQztvQkFBQSxDQUFDLEVBQUNwWixDQUFDLENBQUNHLFNBQVMsQ0FBQ29aLE1BQU0sR0FBQyxZQUFVO3NCQUFDLE9BQU8sSUFBSSxDQUFDaEIsT0FBTyxDQUFDO3dCQUFDemQsSUFBSSxFQUFDbUYsQ0FBQyxDQUFDK1M7c0JBQU0sQ0FBQyxDQUFDO29CQUFBLENBQUMsRUFBQ2hULENBQUMsQ0FBQ0csU0FBUyxDQUFDcVosTUFBTSxHQUFDLFVBQVN6YyxDQUFDLEVBQUM7c0JBQUMsT0FBTyxJQUFJLENBQUN3YixPQUFPLENBQUM7d0JBQUN6ZCxJQUFJLEVBQUNtRixDQUFDLENBQUN5UyxNQUFNO3dCQUFDd0YsS0FBSyxFQUFDbmI7c0JBQUMsQ0FBQyxDQUFDO29CQUFBLENBQUMsRUFBQ2lELENBQUMsQ0FBQ0csU0FBUyxDQUFDc1osS0FBSyxHQUFDLFVBQVMxYyxDQUFDLEVBQUM7c0JBQUMsT0FBTyxJQUFJLENBQUN3YixPQUFPLENBQUM7d0JBQUN6ZCxJQUFJLEVBQUNtRixDQUFDLENBQUNnVCxLQUFLO3dCQUFDaUYsS0FBSyxFQUFDbmI7c0JBQUMsQ0FBQyxDQUFDO29CQUFBLENBQUMsRUFBQ2lELENBQUMsQ0FBQ0csU0FBUyxDQUFDdVosTUFBTSxHQUFDLFVBQVMzYyxDQUFDLEVBQUM7c0JBQUMsT0FBTyxJQUFJLENBQUN3YixPQUFPLENBQUM7d0JBQUN6ZCxJQUFJLEVBQUNtRixDQUFDLENBQUMwUyxNQUFNO3dCQUFDdUYsS0FBSyxFQUFDbmI7c0JBQUMsQ0FBQyxDQUFDO29CQUFBLENBQUMsRUFBQ2lELENBQUMsQ0FBQ0csU0FBUyxDQUFDd1osTUFBTSxHQUFDLFVBQVM1YyxDQUFDLEVBQUM7c0JBQUMsT0FBTyxJQUFJLENBQUN3YixPQUFPLENBQUM7d0JBQUN6ZCxJQUFJLEVBQUNtRixDQUFDLENBQUMyUyxNQUFNO3dCQUFDc0YsS0FBSyxFQUFDbmI7c0JBQUMsQ0FBQyxDQUFDO29CQUFBLENBQUMsRUFBQ2lELENBQUMsQ0FBQ0csU0FBUyxDQUFDZCxNQUFNLEdBQUMsVUFBU3RDLENBQUMsRUFBQztzQkFBQyxPQUFPLElBQUksQ0FBQ3diLE9BQU8sQ0FBQzt3QkFBQ3pkLElBQUksRUFBQ21GLENBQUMsQ0FBQzRTLE1BQU07d0JBQUNxRixLQUFLLEVBQUNuYjtzQkFBQyxDQUFDLENBQUM7b0JBQUEsQ0FBQyxFQUFDaUQsQ0FBQyxDQUFDRyxTQUFTLENBQUN5WixLQUFLLEdBQUMsVUFBUzdjLENBQUMsRUFBQztzQkFBQyxPQUFPLElBQUksQ0FBQ3diLE9BQU8sQ0FBQzt3QkFBQ3pkLElBQUksRUFBQ21GLENBQUMsQ0FBQzhTLEtBQUs7d0JBQUNtRixLQUFLLEVBQUNuYjtzQkFBQyxDQUFDLENBQUM7b0JBQUEsQ0FBQyxFQUFDbUQsTUFBTSxDQUFDSSxjQUFjLENBQUNOLENBQUMsQ0FBQ0csU0FBUyxFQUFDLFdBQVcsRUFBQztzQkFBQzFGLEdBQUcsRUFBQyxTQUFBQSxJQUFTc0MsQ0FBQyxFQUFDO3dCQUFDLElBQUksQ0FBQ2dhLE1BQU0sQ0FBQy9HLE1BQU0sR0FBQ2pULENBQUMsRUFBQyxJQUFJLENBQUN3YixPQUFPLENBQUM7MEJBQUN6ZCxJQUFJLEVBQUNtRixDQUFDLENBQUNpVCxlQUFlOzBCQUFDZ0YsS0FBSyxFQUFDbmI7d0JBQUMsQ0FBQyxDQUFDO3NCQUFBLENBQUM7c0JBQUNpRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO3NCQUFDQyxZQUFZLEVBQUMsQ0FBQztvQkFBQyxDQUFDLENBQUMsRUFBQ2pCLENBQUMsQ0FBQ0csU0FBUyxDQUFDMFosTUFBTSxHQUFDLFVBQVM5YyxDQUFDLEVBQUNpRCxDQUFDLEVBQUM7c0JBQUMsSUFBSXZELENBQUMsR0FBQyxJQUFJO3NCQUFDLE9BQU8sSUFBSSxDQUFDOGIsT0FBTyxDQUFDO3dCQUFDemQsSUFBSSxFQUFDbUYsQ0FBQyxDQUFDNlMsTUFBTTt3QkFBQ29GLEtBQUssRUFBQzswQkFBQ3JiLE9BQU8sRUFBQ21ELENBQUM7MEJBQUNsRixJQUFJLEVBQUNpQzt3QkFBQztzQkFBQyxDQUFDLENBQUMsQ0FBQ2dHLElBQUksQ0FBRSxVQUFTaEcsQ0FBQyxFQUFDO3dCQUFDLE9BQU9OLENBQUMsQ0FBQzBiLFFBQVEsR0FBQ3BiLENBQUMsRUFBQ0EsQ0FBQztzQkFBQSxDQUFFLENBQUM7b0JBQUEsQ0FBQyxFQUFDaUQsQ0FBQyxDQUFDRyxTQUFTLENBQUMyWixTQUFTLEdBQUMsWUFBVTtzQkFBQyxPQUFPM1AsT0FBTyxDQUFDQyxJQUFJLENBQUMsNkVBQTZFLENBQUMsRUFBQzJQLFNBQVMsQ0FBQ0MsU0FBUyxDQUFDLENBQUM7b0JBQUEsQ0FBQyxFQUFDaGEsQ0FBQyxDQUFDRyxTQUFTLENBQUM1RixHQUFHLEdBQUMsVUFBU3dDLENBQUMsRUFBQztzQkFBQyxPQUFPb04sT0FBTyxDQUFDQyxJQUFJLENBQUMsc0NBQXNDLENBQUMsRUFBQyxJQUFJLENBQUM4TyxHQUFHLENBQUMzZSxHQUFHLENBQUN3QyxDQUFDLENBQUM7b0JBQUEsQ0FBQyxFQUFDaUQsQ0FBQyxDQUFDRyxTQUFTLENBQUMxRixHQUFHLEdBQUMsVUFBU3NDLENBQUMsRUFBQ2lELENBQUMsRUFBQztzQkFBQyxPQUFPbUssT0FBTyxDQUFDQyxJQUFJLENBQUMsc0NBQXNDLENBQUMsRUFBQyxJQUFJLENBQUM4TyxHQUFHLENBQUN6ZSxHQUFHLENBQUNzQyxDQUFDLEVBQUNpRCxDQUFDLENBQUM7b0JBQUEsQ0FBQyxFQUFDQSxDQUFDLENBQUNHLFNBQVMsQ0FBQzJYLFNBQVMsR0FBQyxZQUFVO3NCQUFDLE9BQU8sSUFBSSxDQUFDUyxPQUFPLENBQUM7d0JBQUN6ZCxJQUFJLEVBQUNtRixDQUFDLENBQUNrVDtzQkFBUyxDQUFDLENBQUM7b0JBQUEsQ0FBQyxFQUFDblQsQ0FBQyxDQUFDRyxTQUFTLENBQUM4WixXQUFXLEdBQUMsVUFBU2xkLENBQUMsRUFBQztzQkFBQyxPQUFPLElBQUksQ0FBQ3diLE9BQU8sQ0FBQzt3QkFBQ3pkLElBQUksRUFBQ21GLENBQUMsQ0FBQ21ULFdBQVc7d0JBQUM4RSxLQUFLLEVBQUNuYjtzQkFBQyxDQUFDLENBQUM7b0JBQUEsQ0FBQyxFQUFDaUQsQ0FBQyxDQUFDRyxTQUFTLENBQUNoQyxFQUFFLEdBQUMsVUFBU3BCLENBQUMsRUFBQ2lELENBQUMsRUFBQztzQkFBQyxJQUFJLENBQUM0VyxTQUFTLENBQUN6WSxFQUFFLENBQUNwQixDQUFDLEVBQUNpRCxDQUFDLENBQUM7b0JBQUEsQ0FBQyxFQUFDQSxDQUFDLENBQUNHLFNBQVMsQ0FBQytWLEdBQUcsR0FBQyxVQUFTblosQ0FBQyxFQUFDaUQsQ0FBQyxFQUFDO3NCQUFDLElBQUksQ0FBQzRXLFNBQVMsQ0FBQ1YsR0FBRyxDQUFDblosQ0FBQyxFQUFDaUQsQ0FBQyxDQUFDO29CQUFBLENBQUMsRUFBQ0EsQ0FBQyxDQUFDRyxTQUFTLENBQUMrWixLQUFLLEdBQUMsVUFBU25kLENBQUMsRUFBQztzQkFBQyxPQUFPLElBQUksQ0FBQ3diLE9BQU8sQ0FBQzt3QkFBQ3pkLElBQUksRUFBQ21GLENBQUMsQ0FBQ3FULEtBQUs7d0JBQUM0RSxLQUFLLEVBQUNuYjtzQkFBQyxDQUFDLENBQUM7b0JBQUEsQ0FBQyxFQUFDaUQsQ0FBQyxDQUFDRyxTQUFTLENBQUNnYSxTQUFTLEdBQUMsVUFBU3BkLENBQUMsRUFBQztzQkFBQyxPQUFPLElBQUksQ0FBQ3diLE9BQU8sQ0FBQzt3QkFBQ3pkLElBQUksRUFBQ21GLENBQUMsQ0FBQ3NULFNBQVM7d0JBQUMyRSxLQUFLLEVBQUNuYjtzQkFBQyxDQUFDLENBQUM7b0JBQUEsQ0FBQyxFQUFDaUQsQ0FBQyxDQUFDRyxTQUFTLENBQUNpYSxTQUFTLEdBQUMsVUFBU3JkLENBQUMsRUFBQ2lELENBQUMsRUFBQztzQkFBQyxPQUFPakQsQ0FBQyxDQUFDc2QsS0FBSyxDQUFDLElBQUksRUFBQ3JhLENBQUMsQ0FBQztvQkFBQSxDQUFDLEVBQUNBLENBQUMsQ0FBQ0csU0FBUyxDQUFDbWEsYUFBYSxHQUFDLFVBQVN2ZCxDQUFDLEVBQUNpRCxDQUFDLEVBQUM7c0JBQUMsT0FBT0EsQ0FBQyxHQUFDLElBQUksQ0FBQ3VZLE9BQU8sQ0FBQzt3QkFBQ3pkLElBQUksRUFBQ21GLENBQUMsQ0FBQ3dULFVBQVU7d0JBQUN5RSxLQUFLLEVBQUNuYjtzQkFBQyxDQUFDLENBQUMsSUFBRSxJQUFJLENBQUM0WixXQUFXLENBQUN4UyxJQUFJLENBQUNwSCxDQUFDLENBQUMsRUFBQ2tJLE9BQU8sQ0FBQ3BDLE9BQU8sQ0FBQyxDQUFDLENBQUM7b0JBQUEsQ0FBQyxFQUFDN0MsQ0FBQyxDQUFDRyxTQUFTLENBQUNvYSxhQUFhLEdBQUMsWUFBVTtzQkFBQyxLQUFJLElBQUl4ZCxDQUFDLEdBQUMsRUFBRSxFQUFDaUQsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDb0csU0FBUyxDQUFDNUIsTUFBTSxFQUFDeEUsQ0FBQyxFQUFFLEVBQUNqRCxDQUFDLENBQUNpRCxDQUFDLENBQUMsR0FBQ29HLFNBQVMsQ0FBQ3BHLENBQUMsQ0FBQztzQkFBQyxPQUFPLElBQUksQ0FBQ3VZLE9BQU8sQ0FBQzt3QkFBQ3pkLElBQUksRUFBQ21GLENBQUMsQ0FBQ3VULGFBQWE7d0JBQUMwRSxLQUFLLEVBQUNuYjtzQkFBQyxDQUFDLENBQUM7b0JBQUEsQ0FBQyxFQUFDaUQsQ0FBQztrQkFBQSxDQUFDLENBQUM4QixDQUFDLENBQUM7a0JBQUNNLENBQUMsR0FBQyxTQUFGQSxDQUFDQSxDQUFVckYsQ0FBQyxFQUFDO29CQUFDLE9BQU9rSSxPQUFPLENBQUN1VixHQUFHLENBQUN6ZCxDQUFDLENBQUM7a0JBQUEsQ0FBQztrQkFBQ3lTLENBQUMsR0FBQyxTQUFGQSxDQUFDQSxDQUFVelMsQ0FBQyxFQUFDaUQsQ0FBQyxFQUFDO29CQUFDLEtBQUksSUFBSXZELENBQUMsSUFBSU0sQ0FBQyxFQUFDaUQsQ0FBQyxDQUFDdkQsQ0FBQyxFQUFDTSxDQUFDLENBQUNOLENBQUMsQ0FBQyxDQUFDO2tCQUFBLENBQUM7Z0JBQUN3UCxPQUFPLEdBQUNqTSxDQUFDO2NBQUEsQ0FBQyxFQUFFLENBQUM7Y0FDeitXO0FBQ0o7QUFDQTtjQUNVa00sZ0JBQWdCO2dCQUFBLElBQUF1TyxJQUFBLEdBQUF6VCx1QkFBQSxlQUFBakgseUJBQUEsR0FBQTZFLElBQUEsQ0FBRyxTQUFBc0QsUUFBQTtrQkFBQSxPQUFBbkkseUJBQUEsR0FBQW9CLElBQUEsVUFBQWlILFNBQUFDLFFBQUE7b0JBQUEsa0JBQUFBLFFBQUEsQ0FBQWhELElBQUEsR0FBQWdELFFBQUEsQ0FBQTFFLElBQUE7c0JBQUE7d0JBQUEsT0FBQTBFLFFBQUEsQ0FBQTdFLE1BQUEsV0FDaEIsSUFBSXlCLE9BQU8sQ0FBQyxVQUFDcEMsT0FBTyxFQUFFOEQsTUFBTSxFQUFLOzBCQUN0QyxJQUFNK1QsR0FBRyxHQUFHLElBQUlDLGNBQWMsQ0FBQyxDQUFDOzBCQUNoQ0QsR0FBRyxDQUFDdGUsSUFBSSxDQUFDLEtBQUssRUFBRSxpRUFBaUUsRUFBRSxJQUFJLENBQUM7MEJBQ3hGc2UsR0FBRyxDQUFDRSxZQUFZLEdBQUcsTUFBTTswQkFDekJGLEdBQUcsQ0FBQ2xTLE1BQU0sR0FBRyxZQUFZOzRCQUN2QixJQUFJLElBQUksQ0FBQ3dILE1BQU0sS0FBSyxHQUFHLEVBQUU7OEJBQ3ZCbk4sT0FBTyxDQUFDZ1ksR0FBRyxDQUFDQyxlQUFlLENBQUMsSUFBSSxDQUFDclMsUUFBUSxDQUFDLENBQUM7NEJBQzdDLENBQUMsTUFBTTs4QkFDTDlCLE1BQU0sQ0FBQyxJQUFJMUQsS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7NEJBQ25EOzBCQUNGLENBQUM7MEJBQ0R5WCxHQUFHLENBQUNLLElBQUksQ0FBQyxDQUFDO3dCQUNaLENBQUMsQ0FBQztzQkFBQTtzQkFBQTt3QkFBQSxPQUFBMVMsUUFBQSxDQUFBN0MsSUFBQTtvQkFBQTtrQkFBQSxHQUFBMEMsT0FBQTtnQkFBQSxDQUNIO2dCQUFBLGdCQWRLZ0UsZ0JBQWdCQSxDQUFBO2tCQUFBLE9BQUF1TyxJQUFBLENBQUF0VSxLQUFBLE9BQUFDLFNBQUE7Z0JBQUE7Y0FBQSxLQWV0QjtjQUFBeUgsU0FBQSxDQUFBbU4sRUFBQSxHQUN1Qi9PLE9BQU8sQ0FBQzZDLFVBQVU7Y0FBQWpCLFNBQUEsQ0FBQW9OLEVBQUEsR0FBS0MsTUFBTTtjQUFBck4sU0FBQSxDQUFBbEssSUFBQTtjQUFBLE9BQU91SSxnQkFBZ0IsQ0FBQyxDQUFDO1lBQUE7Y0FBQTJCLFNBQUEsQ0FBQXNOLEVBQUEsR0FBQXROLFNBQUEsQ0FBQXhLLElBQUE7Y0FBQXdLLFNBQUEsQ0FBQXVOLEVBQUEsT0FBQXZOLFNBQUEsQ0FBQW9OLEVBQUEsQ0FBQXBOLFNBQUEsQ0FBQXNOLEVBQUE7Y0FBdkVoUCxVQUFVLE9BQUEwQixTQUFBLENBQUFtTixFQUFBLENBQUFuTixTQUFBLENBQUF1TixFQUFBO2NBQUF2TixTQUFBLENBQUFsSyxJQUFBO2NBQUEsT0FFVndJLFVBQVUsQ0FBQ2dOLE1BQU0sQ0FBQztnQkFDdEJyZSxJQUFJLEVBQUUsa0JBQWtCO2dCQUN4QnVnQixNQUFNLEVBQUUsQ0FBQztrQkFDUHZnQixJQUFJLEVBQUUsa0JBQWtCO2tCQUN4QndnQixPQUFPLEVBQUU7b0JBQ1BoUCxPQUFPLEVBQUU7c0JBQUNpUCxVQUFVLEVBQUUsSUFBSTtzQkFBRTdTLFFBQVEsRUFBRTtvQkFBUSxDQUFDO29CQUMvQ2tFLFFBQVEsRUFBRTtzQkFBQ2xFLFFBQVEsRUFBRTtvQkFBUSxDQUFDO29CQUM5QjZELE9BQU8sRUFBRTtzQkFBQzdELFFBQVEsRUFBRTtvQkFBUSxDQUFDO29CQUM3QnJLLElBQUksRUFBRTtzQkFBQ3FLLFFBQVEsRUFBRTtvQkFBUSxDQUFDO29CQUMxQndFLGVBQWUsRUFBRTtzQkFBQ3hFLFFBQVEsRUFBRTtvQkFBUTtrQkFDdEM7Z0JBQ0YsQ0FBQztjQUNILENBQUMsQ0FBQztZQUFBO2NBQUFtRixTQUFBLENBQUFsSyxJQUFBO2NBQUEsT0FFSXdJLFVBQVUsQ0FBQ3lOLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztZQUFBO2NBSWpDclosRUFBQyxHQUFHLENBQUM7WUFBQTtjQUFBLE1BQUVBLEVBQUMsR0FBR3lMLE9BQU8sQ0FBQ3hILE1BQU07Z0JBQUFxSixTQUFBLENBQUFsSyxJQUFBO2dCQUFBO2NBQUE7Y0FFOUIwSSxLQUFLLEdBQUdMLE9BQU8sQ0FBQ3pMLEVBQUMsQ0FBQyxFQUNsQitMLE9BQU8sR0FBR0QsS0FBSyxDQUFDbVAsRUFBRSxFQUNsQmpQLE9BQU8sR0FBR0YsS0FBSyxDQUFDRSxPQUFPLEVBQUVDLFFBQVEsR0FBR3pFLE1BQU0sQ0FBQ3dFLE9BQU8sR0FBRyxLQUFLLENBQUMsRUFBRUUsYUFBYSxHQUFHZ1AsTUFBTSxDQUFDalAsUUFBUSxDQUFDLENBQUNrUCxNQUFNLENBQUMscUJBQXFCLENBQUMsRUFBRWhQLFVBQVUsR0FBRytPLE1BQU0sQ0FBQ2pQLFFBQVEsQ0FBQyxDQUFDbVAsT0FBTyxDQUFDLENBQUMsRUFDcEtoUCxNQUFNLEdBQUdOLEtBQUssQ0FBQ00sTUFBTSxFQUNyQkMsUUFBUSxHQUFHRCxNQUFNLENBQUNDLFFBQVEsRUFDMUJDLE1BQU0sR0FBR0YsTUFBTSxDQUFDRSxNQUFNLEVBRXRCQyxVQUFVLEdBQUcsSUFBSSxHQUFHUixPQUFPLEVBQUVTLFdBQVcsR0FBR25QLENBQUMsQ0FBQyxHQUFHLEdBQUdrUCxVQUFVLENBQUMsRUFFOURFLEtBQUssR0FBR0QsV0FBVyxDQUFDNk8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFM08sUUFBUSxHQUFHRCxLQUFLLENBQUN4SSxNQUFNLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBR3dJLEtBQUssQ0FBQzZPLElBQUksQ0FBQyxXQUFXLENBQUMsRUFFakc7Y0FDQTlPLFdBQVcsQ0FBQzFOLE1BQU0sQ0FBQyxDQUFDO2NBRWhCNk4sZUFBZSxHQUFHYixLQUFLLENBQUN5UCxnQkFBZ0IsRUFBRTNPLGtCQUFrQixHQUFHLENBQUMsRUFDcEU7Y0FDTUMsV0FBVyxHQUFHLHFCQUFxQjtZQUFBO2NBQUEsU0FDOUIsRUFBRSxFQUFGO2NBQ0xDLFdBQVcsR0FBR0gsZUFBZSxDQUFDNVAsT0FBTyxDQUFDOFAsV0FBVyxFQUFFRCxrQkFBa0IsQ0FBQztjQUFBLE1BQ3RFRSxXQUFXLEtBQUssQ0FBQyxDQUFDO2dCQUFBUSxTQUFBLENBQUFsSyxJQUFBO2dCQUFBO2NBQUE7Y0FBQSxPQUFBa0ssU0FBQSxDQUFBckssTUFBQTtZQUFBO2NBR3RCO2NBQ0k4SixVQUFVLEdBQUdKLGVBQWUsQ0FBQ2tCLFNBQVMsQ0FBQ2YsV0FBVyxHQUFHRCxXQUFXLENBQUM1SSxNQUFNLEVBQUUwSSxlQUFlLENBQUM1UCxPQUFPLENBQUMsSUFBSSxFQUFFK1AsV0FBVyxDQUFDLENBQUMsRUFDeEg7Y0FDTUUsVUFBVSxrQkFBQWpQLE1BQUEsQ0FBaUJmLFFBQVEsQ0FBQ3lRLE1BQU0sQ0FBQ0ksU0FBUyxDQUFDLENBQUMsQ0FBQyw2QkFBQTlQLE1BQUEsQ0FBd0J3TyxVQUFVLHlCQUFBeE8sTUFBQSxDQUFvQmdQLFVBQVUsd0JBQUFoUCxNQUFBLENBQW1CaU8sT0FBTyxrREFBQWpPLE1BQUEsQ0FBMkNnUCxVQUFVO2NBQzVNSixlQUFlLEdBQUdBLGVBQWUsQ0FBQzZPLFVBQVUsdUJBQUF6ZCxNQUFBLENBQXNCZ1AsVUFBVSxHQUFJQyxVQUFVLENBQUM7Y0FDM0ZKLGtCQUFrQixHQUFHRSxXQUFXLEdBQUdFLFVBQVUsQ0FBQy9JLE1BQU07Y0FBQ3FKLFNBQUEsQ0FBQWxLLElBQUE7Y0FBQTtZQUFBO2NBR2pEdEYsSUFBSSwrR0FBQUMsTUFBQSxDQUVLd08sVUFBVSxtU0FBQXhPLE1BQUEsQ0FHYnNPLFFBQVEsS0FBS2IsVUFBVSxnY0FNckIsRUFBRSxtQ0FBQXpOLE1BQUEsQ0FDTXVPLE1BQU0sZ0NBQUF2TyxNQUFBLENBQXlCc08sUUFBUSxvSEFBQXRPLE1BQUEsQ0FFOUJzTyxRQUFRLHdCQUFBdE8sTUFBQSxDQUFrQnNPLFFBQVEsaVNBQUF0TyxNQUFBLENBTWxCbU8sYUFBYSxTQUFBbk8sTUFBQSxDQUFLb08sVUFBVSxtQkFBQXBPLE1BQUEsQ0FBZ0IyTyxRQUFRLCtMQUFBM08sTUFBQSxDQUkvRGdPLE9BQU8sNEhBQUFoTyxNQUFBLENBQXNFc08sUUFBUSw2REFBQXRPLE1BQUEsQ0FBNEJnTyxPQUFPLFFBQUFoTyxNQUFBLENBQUswZCxJQUFJLCtLQUFBMWQsTUFBQSxDQUFrSHNPLFFBQVEsb0ZBQUF0TyxNQUFBLENBQStCZ08sT0FBTyxnSEFBQWhPLE1BQUEsQ0FBOEVzTyxRQUFRLDJSQUFBdE8sTUFBQSxDQUl2WTRPLGVBQWUsNEdBT25DO2NBQUFXLFNBQUEsQ0FBQWxLLElBQUE7Y0FBQSxPQUN1QndJLFVBQVUsQ0FBQ3VOLE1BQU0sQ0FBQztnQkFDdkN1QyxJQUFJLEVBQUUsa0JBQWtCO2dCQUFFQyxVQUFVLEVBQUUsS0FBSztnQkFBRUMsYUFBYSxFQUFFLEtBQUs7Z0JBQUU5WixNQUFNLEVBQUUsQ0FBQztrQkFDMUVpSyxPQUFPLEVBQUVBLE9BQU87a0JBQ2hCTSxRQUFRLEVBQVJBLFFBQVE7a0JBQ1JMLE9BQU8sRUFBRUEsT0FBTztrQkFDaEJsTyxJQUFJLEVBQUpBLElBQUk7a0JBQ0o2TyxlQUFlLEVBQUVBO2dCQUNuQixDQUFDO2NBQ0gsQ0FBQyxDQUFDO1lBQUE7Y0FSSU0sUUFBUSxHQUFBSyxTQUFBLENBQUF4SyxJQUFBO1lBQUE7Y0FwRW9COUMsRUFBQyxFQUFFO2NBQUFzTixTQUFBLENBQUFsSyxJQUFBO2NBQUE7WUFBQTtjQUFBa0ssU0FBQSxDQUFBbEssSUFBQTtjQUFBLE9Ba0ZwQndJLFVBQVUsQ0FBQ3FOLE1BQU0sQ0FBQztnQkFBQ3ZPLElBQUksRUFBRSxrQkFBa0I7Z0JBQUVtUixLQUFLLEVBQUU7a0JBQUNDLEVBQUUsRUFBRSxTQUFTO2tCQUFFNWEsSUFBSSxFQUFFO2dCQUFLO2NBQUMsQ0FBQyxDQUFDO1lBQUE7Y0FBL0ZnTSxJQUFJLEdBQUFJLFNBQUEsQ0FBQXhLLElBQUE7Y0FBQWhILFNBQUEsR0FBQUMsMEJBQUEsQ0FDUW1SLElBQUk7Y0FBQTtnQkFBdEIsS0FBQXBSLFNBQUEsQ0FBQUcsQ0FBQSxNQUFBRCxLQUFBLEdBQUFGLFNBQUEsQ0FBQUksQ0FBQSxJQUFBQyxJQUFBLEdBQXdCO2tCQUFiZ1IsR0FBRyxHQUFBblIsS0FBQSxDQUFBakMsS0FBQTtrQkFDWnNELENBQUMsQ0FBQ0wsUUFBUSxDQUFDdVEsVUFBVSxDQUFDLENBQUMzTyxNQUFNLENBQUN1TyxHQUFHLENBQUNyUCxJQUFJLENBQUM7Z0JBQ3pDOztnQkFFQTtjQUFBLFNBQUF2QixHQUFBO2dCQUFBVCxTQUFBLENBQUFVLENBQUEsQ0FBQUQsR0FBQTtjQUFBO2dCQUFBVCxTQUFBLENBQUFXLENBQUE7Y0FBQTtjQUNBVyxLQUFLLENBQUNRLEVBQUUsQ0FBQyxPQUFPLEVBQUVaLFFBQVEsQ0FBQ3lRLE1BQU0sZUFBQWhILHVCQUFBLGVBQUFqSCx5QkFBQSxHQUFBNkUsSUFBQSxDQUFFLFNBQUFrRixTQUFBO2dCQUFBLElBQUF3UyxLQUFBO2dCQUFBLE9BQUF2Yyx5QkFBQSxHQUFBb0IsSUFBQSxVQUFBOEksVUFBQUMsU0FBQTtrQkFBQSxrQkFBQUEsU0FBQSxDQUFBN0UsSUFBQSxHQUFBNkUsU0FBQSxDQUFBdkcsSUFBQTtvQkFBQTtzQkFDM0IyWSxLQUFLLEdBQUcxZSxDQUFDLENBQUMsSUFBSSxDQUFDO3NCQUFBc00sU0FBQSxDQUFBdkcsSUFBQTtzQkFBQSxPQUNmZ0ssU0FBUyxDQUFDeEIsVUFBVSxFQUFFbVEsS0FBSyxDQUFDM0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFMkUsS0FBSyxDQUFDM0UsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFMkUsS0FBSyxDQUFDM0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUFBO29CQUFBO3NCQUFBLE9BQUF6TixTQUFBLENBQUExRSxJQUFBO2tCQUFBO2dCQUFBLEdBQUFzRSxRQUFBO2NBQUEsQ0FDckcsR0FBQztjQUNGOztjQUdBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO2NBQ1U2RCxTQUFTO2dCQUFBLElBQUE0TyxLQUFBLEdBQUF2Vix1QkFBQSxlQUFBakgseUJBQUEsR0FBQTZFLElBQUEsQ0FBRyxTQUFBNFgsU0FBT3JRLFVBQVUsRUFBRVcsVUFBa0IsRUFBRUYsUUFBZ0IsRUFBRUwsT0FBZTtrQkFBQSxJQUFBa1EsTUFBQSxFQUFBcGUsSUFBQSxFQUFBcWUsVUFBQSxFQUFBQyxhQUFBLEVBQUFsUCxJQUFBLEVBQUFtUCxHQUFBLEVBQUFsUCxHQUFBLEVBQUFtUCxXQUFBO2tCQUFBLE9BQUE5Yyx5QkFBQSxHQUFBb0IsSUFBQSxVQUFBMmIsVUFBQUMsU0FBQTtvQkFBQSxrQkFBQUEsU0FBQSxDQUFBMVgsSUFBQSxHQUFBMFgsU0FBQSxDQUFBcFosSUFBQTtzQkFBQTt3QkFDeEY7d0JBQ0EsSUFBSTRILE1BQU0sQ0FBQ3lSLE1BQU0sRUFBRTswQkFDakJ6UixNQUFNLENBQUN5UixNQUFNLENBQUNDLEtBQUssQ0FBQyxDQUFDO3dCQUN2Qjs7d0JBRUE7d0JBQ01SLE1BQU0sR0FBRzdlLENBQUMsQ0FBQyxHQUFHLEdBQUdrUCxVQUFVLENBQUM7d0JBQ2xDMlAsTUFBTSxDQUFDUyxHQUFHLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQzt3QkFDakM7d0JBQ0F0ZixDQUFDLENBQUMsV0FBVyxDQUFDLENBQUN1ZixPQUFPLENBQUM7MEJBQUNDLFNBQVMsRUFBRVgsTUFBTSxDQUFDalQsTUFBTSxDQUFDLENBQUMsQ0FBQzZULEdBQUcsR0FBR3pmLENBQUMsQ0FBQzlCLE1BQU0sQ0FBQyxDQUFDd2hCLE1BQU0sQ0FBQyxDQUFDLEdBQUc7d0JBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQzt3QkFHbEZqZixJQUFJLEdBQUcsRUFBRSxFQUFFcWUsVUFBVSxHQUFHLElBQUksRUFBRUMsYUFBYSxHQUFHLEtBQUs7d0JBQUFJLFNBQUEsQ0FBQXBaLElBQUE7d0JBQUEsT0FDcEN3SSxVQUFVLENBQUNxTixNQUFNLENBQUM7MEJBQUN2TyxJQUFJLEVBQUUsa0JBQWtCOzBCQUFFc1MsS0FBSyxFQUFFOzRCQUFDM1EsUUFBUSxFQUFSQTswQkFBUTt3QkFBQyxDQUFDLENBQUM7c0JBQUE7d0JBQTdFYSxJQUFJLEdBQUFzUCxTQUFBLENBQUExWixJQUFBO3dCQUNWLEtBQVM5QyxHQUFDLEdBQUcsQ0FBQyxFQUFFQSxHQUFDLEdBQUdrTixJQUFJLENBQUNqSixNQUFNLEVBQUVqRSxHQUFDLEVBQUUsRUFBRTswQkFDOUJtTixHQUFHLEdBQUdELElBQUksQ0FBQ2xOLEdBQUMsQ0FBQzswQkFFZnNjLFdBQVcsR0FBRyxtQ0FBbUMsRUFDckQ7MEJBQ0EsSUFBSSxFQUFFdFEsT0FBTyxHQUFHbUIsR0FBRyxDQUFDbkIsT0FBTyxDQUFDLElBQUltUSxVQUFVLEVBQUU7NEJBQzFDRyxXQUFXLElBQUksdUJBQXVCOzRCQUN0Q0YsYUFBYSxHQUFHLElBQUk7MEJBQ3RCLENBQUMsTUFBTSxJQUFJcGMsR0FBQyxLQUFLa04sSUFBSSxDQUFDakosTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDbVksYUFBYSxFQUFFOzRCQUNsREUsV0FBVyxHQUFHLDBCQUEwQjswQkFDMUM7MEJBQ0F4ZSxJQUFJLGdDQUFBQyxNQUFBLENBQ1l1ZSxXQUFXLHVCQUFBdmUsTUFBQSxDQUNyQlYsQ0FBQyxDQUFDOFAsR0FBRyxDQUFDclAsSUFBSSxDQUFDLENBQUN1ZCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUNsZCxNQUFNLENBQUMsQ0FBQyxDQUFDbWQsSUFBSSxDQUFDLFdBQVcsQ0FBQyx1REFBQXZkLE1BQUEsQ0FDbEJvUCxHQUFHLENBQUNSLGVBQWUsdUNBRXpEOzBCQUNEOzBCQUNBd1AsVUFBVSxHQUFHblEsT0FBTyxHQUFHbUIsR0FBRyxDQUFDbkIsT0FBTzt3QkFDcEM7d0JBRUFoQixNQUFNLENBQUN5UixNQUFNLEdBQUcsSUFBSVEsTUFBTSxDQUFDOzBCQUN6QixTQUFPamdCLFFBQVEsQ0FBQzBRLEtBQUssQ0FBQ0csU0FBUyxDQUFDLENBQUMsQ0FBQzswQkFDbENxUCxLQUFLLEVBQUU3USxRQUFRLEdBQUcsUUFBUTswQkFDMUI4USxDQUFDLEVBQUVDLFlBQVksQ0FBQ0MsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLE9BQU87MEJBQzlDOWIsQ0FBQyxFQUFFNmIsWUFBWSxDQUFDQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksUUFBUTswQkFDL0NDLEtBQUssRUFBRUYsWUFBWSxDQUFDQyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksT0FBTzswQkFDdEROLE1BQU0sRUFBRUssWUFBWSxDQUFDQyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksS0FBSzswQkFDdER2ZixJQUFJLG1EQUFBQyxNQUFBLENBQWlERCxJQUFJLFdBQVE7MEJBQ2pFeWYsUUFBUSxFQUFFLFNBQUFBLFNBQUNELEtBQUssRUFBRVAsTUFBTSxFQUFLOzRCQUMzQjs0QkFDQUssWUFBWSxDQUFDSSxPQUFPLENBQUMsY0FBYyxFQUFFRixLQUFLLEdBQUcsSUFBSSxDQUFDOzRCQUNsREYsWUFBWSxDQUFDSSxPQUFPLENBQUMsZUFBZSxFQUFFVCxNQUFNLEdBQUcsSUFBSSxDQUFDOzBCQUN0RCxDQUFDOzBCQUNEVSxNQUFNLEVBQUUsU0FBQUEsT0FBQ04sQ0FBQyxFQUFFNWIsQ0FBQyxFQUFLOzRCQUNoQjs0QkFDQTZiLFlBQVksQ0FBQ0ksT0FBTyxDQUFDLFVBQVUsRUFBRUwsQ0FBQyxDQUFDOzRCQUNuQ0MsWUFBWSxDQUFDSSxPQUFPLENBQUMsVUFBVSxFQUFFamMsQ0FBQyxDQUFDOzBCQUNyQyxDQUFDOzBCQUNEbWMsT0FBTyxFQUFFLFNBQUFBLFFBQUEsRUFBTTs0QkFDYjs0QkFDQXhCLE1BQU0sQ0FBQ1MsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUM7NEJBQzVCVCxNQUFNLENBQUNTLEdBQUcsQ0FBQyxlQUFlLEVBQUUsbUJBQW1CLENBQUM7NEJBQ2hEM1IsTUFBTSxDQUFDeVIsTUFBTSxHQUFHLElBQUk7MEJBQ3RCO3dCQUNGLENBQUMsQ0FBQztzQkFBQztzQkFBQTt3QkFBQSxPQUFBRCxTQUFBLENBQUF2WCxJQUFBO29CQUFBO2tCQUFBLEdBQUFnWCxRQUFBO2dCQUFBLENBQ0o7Z0JBQUEsZ0JBN0RLN08sU0FBU0EsQ0FBQTdFLEVBQUEsRUFBQXdCLEdBQUEsRUFBQTRULEdBQUEsRUFBQUMsR0FBQTtrQkFBQSxPQUFBNUIsS0FBQSxDQUFBcFcsS0FBQSxPQUFBQyxTQUFBO2dCQUFBO2NBQUE7WUFBQTtZQUFBO2NBQUEsT0FBQXlILFNBQUEsQ0FBQXJJLElBQUE7VUFBQTtRQUFBLEdBQUFpRyxRQUFBO01BQUEsQ0E4RGhCO01BQUEsU0FBQXFOLElBQUE7UUFBQSxPQUFBdE4sSUFBQSxDQUFBckYsS0FBQSxPQUFBQyxTQUFBO01BQUE7TUFBQSxPQUFBMFMsR0FBQTtJQUFBO0VBQUE7QUFBQTs7Ozs7Ozs7Ozs7K0NDdFFILHFKQUFBL1ksbUJBQUEsWUFBQUEsb0JBQUEsV0FBQWhELENBQUEsU0FBQWlELENBQUEsRUFBQWpELENBQUEsT0FBQWtELENBQUEsR0FBQUMsTUFBQSxDQUFBQyxTQUFBLEVBQUExRCxDQUFBLEdBQUF3RCxDQUFBLENBQUFHLGNBQUEsRUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFJLGNBQUEsY0FBQU4sQ0FBQSxFQUFBakQsQ0FBQSxFQUFBa0QsQ0FBQSxJQUFBRCxDQUFBLENBQUFqRCxDQUFBLElBQUFrRCxDQUFBLENBQUEzRixLQUFBLEtBQUFpRyxDQUFBLHdCQUFBQyxNQUFBLEdBQUFBLE1BQUEsT0FBQUMsQ0FBQSxHQUFBRixDQUFBLENBQUFHLFFBQUEsa0JBQUFDLENBQUEsR0FBQUosQ0FBQSxDQUFBSyxhQUFBLHVCQUFBQyxDQUFBLEdBQUFOLENBQUEsQ0FBQU8sV0FBQSw4QkFBQUMsT0FBQWYsQ0FBQSxFQUFBakQsQ0FBQSxFQUFBa0QsQ0FBQSxXQUFBQyxNQUFBLENBQUFJLGNBQUEsQ0FBQU4sQ0FBQSxFQUFBakQsQ0FBQSxJQUFBekMsS0FBQSxFQUFBMkYsQ0FBQSxFQUFBZSxVQUFBLE1BQUFDLFlBQUEsTUFBQUMsUUFBQSxTQUFBbEIsQ0FBQSxDQUFBakQsQ0FBQSxXQUFBZ0UsTUFBQSxtQkFBQWYsQ0FBQSxJQUFBZSxNQUFBLFlBQUFBLE9BQUFmLENBQUEsRUFBQWpELENBQUEsRUFBQWtELENBQUEsV0FBQUQsQ0FBQSxDQUFBakQsQ0FBQSxJQUFBa0QsQ0FBQSxnQkFBQWtCLEtBQUFuQixDQUFBLEVBQUFqRCxDQUFBLEVBQUFrRCxDQUFBLEVBQUF4RCxDQUFBLFFBQUE4RCxDQUFBLEdBQUF4RCxDQUFBLElBQUFBLENBQUEsQ0FBQW9ELFNBQUEsWUFBQWlCLFNBQUEsR0FBQXJFLENBQUEsR0FBQXFFLFNBQUEsRUFBQVgsQ0FBQSxHQUFBUCxNQUFBLENBQUFtQixNQUFBLENBQUFkLENBQUEsQ0FBQUosU0FBQSxHQUFBUSxDQUFBLE9BQUFXLE9BQUEsQ0FBQTdFLENBQUEsZ0JBQUE0RCxDQUFBLENBQUFJLENBQUEsZUFBQW5HLEtBQUEsRUFBQWlILGdCQUFBLENBQUF2QixDQUFBLEVBQUFDLENBQUEsRUFBQVUsQ0FBQSxNQUFBRixDQUFBLGFBQUFlLFNBQUF4QixDQUFBLEVBQUFqRCxDQUFBLEVBQUFrRCxDQUFBLG1CQUFBd0IsSUFBQSxZQUFBQyxHQUFBLEVBQUExQixDQUFBLENBQUEyQixJQUFBLENBQUE1RSxDQUFBLEVBQUFrRCxDQUFBLGNBQUFELENBQUEsYUFBQXlCLElBQUEsV0FBQUMsR0FBQSxFQUFBMUIsQ0FBQSxRQUFBakQsQ0FBQSxDQUFBb0UsSUFBQSxHQUFBQSxJQUFBLE1BQUFTLENBQUEscUJBQUFDLENBQUEscUJBQUE3RSxDQUFBLGdCQUFBUixDQUFBLGdCQUFBc0YsQ0FBQSxnQkFBQVYsVUFBQSxjQUFBVyxrQkFBQSxjQUFBQywyQkFBQSxTQUFBQyxDQUFBLE9BQUFsQixNQUFBLENBQUFrQixDQUFBLEVBQUF4QixDQUFBLHFDQUFBeUIsQ0FBQSxHQUFBaEMsTUFBQSxDQUFBaUMsY0FBQSxFQUFBQyxDQUFBLEdBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBQSxDQUFBLENBQUFHLE1BQUEsUUFBQUQsQ0FBQSxJQUFBQSxDQUFBLEtBQUFuQyxDQUFBLElBQUF4RCxDQUFBLENBQUFrRixJQUFBLENBQUFTLENBQUEsRUFBQTNCLENBQUEsTUFBQXdCLENBQUEsR0FBQUcsQ0FBQSxPQUFBRSxDQUFBLEdBQUFOLDBCQUFBLENBQUE3QixTQUFBLEdBQUFpQixTQUFBLENBQUFqQixTQUFBLEdBQUFELE1BQUEsQ0FBQW1CLE1BQUEsQ0FBQVksQ0FBQSxZQUFBTSxzQkFBQXZDLENBQUEsZ0NBQUF3QyxPQUFBLFdBQUF6RixDQUFBLElBQUFnRSxNQUFBLENBQUFmLENBQUEsRUFBQWpELENBQUEsWUFBQWlELENBQUEsZ0JBQUF5QyxPQUFBLENBQUExRixDQUFBLEVBQUFpRCxDQUFBLHNCQUFBMEMsY0FBQTFDLENBQUEsRUFBQWpELENBQUEsYUFBQTRGLE9BQUExQyxDQUFBLEVBQUFJLENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLFFBQUFFLENBQUEsR0FBQWEsUUFBQSxDQUFBeEIsQ0FBQSxDQUFBQyxDQUFBLEdBQUFELENBQUEsRUFBQUssQ0FBQSxtQkFBQU0sQ0FBQSxDQUFBYyxJQUFBLFFBQUFaLENBQUEsR0FBQUYsQ0FBQSxDQUFBZSxHQUFBLEVBQUFFLENBQUEsR0FBQWYsQ0FBQSxDQUFBdkcsS0FBQSxTQUFBc0gsQ0FBQSxnQkFBQWdCLE9BQUEsQ0FBQWhCLENBQUEsS0FBQW5GLENBQUEsQ0FBQWtGLElBQUEsQ0FBQUMsQ0FBQSxlQUFBN0UsQ0FBQSxDQUFBOEYsT0FBQSxDQUFBakIsQ0FBQSxDQUFBa0IsT0FBQSxFQUFBQyxJQUFBLFdBQUEvQyxDQUFBLElBQUEyQyxNQUFBLFNBQUEzQyxDQUFBLEVBQUFPLENBQUEsRUFBQUUsQ0FBQSxnQkFBQVQsQ0FBQSxJQUFBMkMsTUFBQSxVQUFBM0MsQ0FBQSxFQUFBTyxDQUFBLEVBQUFFLENBQUEsUUFBQTFELENBQUEsQ0FBQThGLE9BQUEsQ0FBQWpCLENBQUEsRUFBQW1CLElBQUEsV0FBQS9DLENBQUEsSUFBQWEsQ0FBQSxDQUFBdkcsS0FBQSxHQUFBMEYsQ0FBQSxFQUFBTyxDQUFBLENBQUFNLENBQUEsZ0JBQUFiLENBQUEsV0FBQTJDLE1BQUEsVUFBQTNDLENBQUEsRUFBQU8sQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsQ0FBQUUsQ0FBQSxDQUFBZSxHQUFBLFNBQUF6QixDQUFBLEVBQUFJLENBQUEsb0JBQUEvRixLQUFBLFdBQUFBLE1BQUEwRixDQUFBLEVBQUF2RCxDQUFBLGFBQUF1RywyQkFBQSxlQUFBakcsQ0FBQSxXQUFBQSxDQUFBLEVBQUFrRCxDQUFBLElBQUEwQyxNQUFBLENBQUEzQyxDQUFBLEVBQUF2RCxDQUFBLEVBQUFNLENBQUEsRUFBQWtELENBQUEsZ0JBQUFBLENBQUEsR0FBQUEsQ0FBQSxHQUFBQSxDQUFBLENBQUE4QyxJQUFBLENBQUFDLDBCQUFBLEVBQUFBLDBCQUFBLElBQUFBLDBCQUFBLHFCQUFBekIsaUJBQUF4RSxDQUFBLEVBQUFrRCxDQUFBLEVBQUF4RCxDQUFBLFFBQUE0RCxDQUFBLEdBQUF1QixDQUFBLG1CQUFBckIsQ0FBQSxFQUFBRSxDQUFBLFFBQUFKLENBQUEsS0FBQXJELENBQUEsUUFBQWlHLEtBQUEsc0NBQUE1QyxDQUFBLEtBQUE3RCxDQUFBLG9CQUFBK0QsQ0FBQSxRQUFBRSxDQUFBLFdBQUFuRyxLQUFBLEVBQUEwRixDQUFBLEVBQUF0RCxJQUFBLGVBQUFELENBQUEsQ0FBQXlHLE1BQUEsR0FBQTNDLENBQUEsRUFBQTlELENBQUEsQ0FBQWlGLEdBQUEsR0FBQWpCLENBQUEsVUFBQUUsQ0FBQSxHQUFBbEUsQ0FBQSxDQUFBMEcsUUFBQSxNQUFBeEMsQ0FBQSxRQUFBRSxDQUFBLEdBQUF1QyxtQkFBQSxDQUFBekMsQ0FBQSxFQUFBbEUsQ0FBQSxPQUFBb0UsQ0FBQSxRQUFBQSxDQUFBLEtBQUFpQixDQUFBLG1CQUFBakIsQ0FBQSxxQkFBQXBFLENBQUEsQ0FBQXlHLE1BQUEsRUFBQXpHLENBQUEsQ0FBQTRHLElBQUEsR0FBQTVHLENBQUEsQ0FBQTZHLEtBQUEsR0FBQTdHLENBQUEsQ0FBQWlGLEdBQUEsc0JBQUFqRixDQUFBLENBQUF5RyxNQUFBLFFBQUE3QyxDQUFBLEtBQUF1QixDQUFBLFFBQUF2QixDQUFBLEdBQUE3RCxDQUFBLEVBQUFDLENBQUEsQ0FBQWlGLEdBQUEsRUFBQWpGLENBQUEsQ0FBQThHLGlCQUFBLENBQUE5RyxDQUFBLENBQUFpRixHQUFBLHVCQUFBakYsQ0FBQSxDQUFBeUcsTUFBQSxJQUFBekcsQ0FBQSxDQUFBK0csTUFBQSxXQUFBL0csQ0FBQSxDQUFBaUYsR0FBQSxHQUFBckIsQ0FBQSxHQUFBckQsQ0FBQSxNQUFBaUYsQ0FBQSxHQUFBVCxRQUFBLENBQUF6RSxDQUFBLEVBQUFrRCxDQUFBLEVBQUF4RCxDQUFBLG9CQUFBd0YsQ0FBQSxDQUFBUixJQUFBLFFBQUFwQixDQUFBLEdBQUE1RCxDQUFBLENBQUFDLElBQUEsR0FBQUYsQ0FBQSxHQUFBcUYsQ0FBQSxFQUFBSSxDQUFBLENBQUFQLEdBQUEsS0FBQUksQ0FBQSxxQkFBQXhILEtBQUEsRUFBQTJILENBQUEsQ0FBQVAsR0FBQSxFQUFBaEYsSUFBQSxFQUFBRCxDQUFBLENBQUFDLElBQUEsa0JBQUF1RixDQUFBLENBQUFSLElBQUEsS0FBQXBCLENBQUEsR0FBQTdELENBQUEsRUFBQUMsQ0FBQSxDQUFBeUcsTUFBQSxZQUFBekcsQ0FBQSxDQUFBaUYsR0FBQSxHQUFBTyxDQUFBLENBQUFQLEdBQUEsbUJBQUEwQixvQkFBQXJHLENBQUEsRUFBQWtELENBQUEsUUFBQXhELENBQUEsR0FBQXdELENBQUEsQ0FBQWlELE1BQUEsRUFBQTdDLENBQUEsR0FBQXRELENBQUEsQ0FBQTJELFFBQUEsQ0FBQWpFLENBQUEsT0FBQTRELENBQUEsS0FBQUwsQ0FBQSxTQUFBQyxDQUFBLENBQUFrRCxRQUFBLHFCQUFBMUcsQ0FBQSxJQUFBTSxDQUFBLENBQUEyRCxRQUFBLGVBQUFULENBQUEsQ0FBQWlELE1BQUEsYUFBQWpELENBQUEsQ0FBQXlCLEdBQUEsR0FBQTFCLENBQUEsRUFBQW9ELG1CQUFBLENBQUFyRyxDQUFBLEVBQUFrRCxDQUFBLGVBQUFBLENBQUEsQ0FBQWlELE1BQUEsa0JBQUF6RyxDQUFBLEtBQUF3RCxDQUFBLENBQUFpRCxNQUFBLFlBQUFqRCxDQUFBLENBQUF5QixHQUFBLE9BQUErQixTQUFBLHVDQUFBaEgsQ0FBQSxpQkFBQXFGLENBQUEsTUFBQXZCLENBQUEsR0FBQWlCLFFBQUEsQ0FBQW5CLENBQUEsRUFBQXRELENBQUEsQ0FBQTJELFFBQUEsRUFBQVQsQ0FBQSxDQUFBeUIsR0FBQSxtQkFBQW5CLENBQUEsQ0FBQWtCLElBQUEsU0FBQXhCLENBQUEsQ0FBQWlELE1BQUEsWUFBQWpELENBQUEsQ0FBQXlCLEdBQUEsR0FBQW5CLENBQUEsQ0FBQW1CLEdBQUEsRUFBQXpCLENBQUEsQ0FBQWtELFFBQUEsU0FBQXJCLENBQUEsTUFBQXJCLENBQUEsR0FBQUYsQ0FBQSxDQUFBbUIsR0FBQSxTQUFBakIsQ0FBQSxHQUFBQSxDQUFBLENBQUEvRCxJQUFBLElBQUF1RCxDQUFBLENBQUFsRCxDQUFBLENBQUEyRyxVQUFBLElBQUFqRCxDQUFBLENBQUFuRyxLQUFBLEVBQUEyRixDQUFBLENBQUEwRCxJQUFBLEdBQUE1RyxDQUFBLENBQUE2RyxPQUFBLGVBQUEzRCxDQUFBLENBQUFpRCxNQUFBLEtBQUFqRCxDQUFBLENBQUFpRCxNQUFBLFdBQUFqRCxDQUFBLENBQUF5QixHQUFBLEdBQUExQixDQUFBLEdBQUFDLENBQUEsQ0FBQWtELFFBQUEsU0FBQXJCLENBQUEsSUFBQXJCLENBQUEsSUFBQVIsQ0FBQSxDQUFBaUQsTUFBQSxZQUFBakQsQ0FBQSxDQUFBeUIsR0FBQSxPQUFBK0IsU0FBQSxzQ0FBQXhELENBQUEsQ0FBQWtELFFBQUEsU0FBQXJCLENBQUEsY0FBQStCLGFBQUE3RCxDQUFBLFFBQUFqRCxDQUFBLEtBQUErRyxNQUFBLEVBQUE5RCxDQUFBLFlBQUFBLENBQUEsS0FBQWpELENBQUEsQ0FBQWdILFFBQUEsR0FBQS9ELENBQUEsV0FBQUEsQ0FBQSxLQUFBakQsQ0FBQSxDQUFBaUgsVUFBQSxHQUFBaEUsQ0FBQSxLQUFBakQsQ0FBQSxDQUFBa0gsUUFBQSxHQUFBakUsQ0FBQSxXQUFBa0UsVUFBQSxDQUFBQyxJQUFBLENBQUFwSCxDQUFBLGNBQUFxSCxjQUFBcEUsQ0FBQSxRQUFBakQsQ0FBQSxHQUFBaUQsQ0FBQSxDQUFBcUUsVUFBQSxRQUFBdEgsQ0FBQSxDQUFBMEUsSUFBQSxvQkFBQTFFLENBQUEsQ0FBQTJFLEdBQUEsRUFBQTFCLENBQUEsQ0FBQXFFLFVBQUEsR0FBQXRILENBQUEsYUFBQXVFLFFBQUF0QixDQUFBLFNBQUFrRSxVQUFBLE1BQUFKLE1BQUEsYUFBQTlELENBQUEsQ0FBQXdDLE9BQUEsQ0FBQXFCLFlBQUEsY0FBQVMsS0FBQSxpQkFBQWpDLE9BQUF0RixDQUFBLFFBQUFBLENBQUEsV0FBQUEsQ0FBQSxRQUFBa0QsQ0FBQSxHQUFBbEQsQ0FBQSxDQUFBMEQsQ0FBQSxPQUFBUixDQUFBLFNBQUFBLENBQUEsQ0FBQTBCLElBQUEsQ0FBQTVFLENBQUEsNEJBQUFBLENBQUEsQ0FBQTRHLElBQUEsU0FBQTVHLENBQUEsT0FBQXdILEtBQUEsQ0FBQXhILENBQUEsQ0FBQXlILE1BQUEsU0FBQW5FLENBQUEsT0FBQUUsQ0FBQSxZQUFBb0QsS0FBQSxhQUFBdEQsQ0FBQSxHQUFBdEQsQ0FBQSxDQUFBeUgsTUFBQSxPQUFBL0gsQ0FBQSxDQUFBa0YsSUFBQSxDQUFBNUUsQ0FBQSxFQUFBc0QsQ0FBQSxVQUFBc0QsSUFBQSxDQUFBckosS0FBQSxHQUFBeUMsQ0FBQSxDQUFBc0QsQ0FBQSxHQUFBc0QsSUFBQSxDQUFBakgsSUFBQSxPQUFBaUgsSUFBQSxTQUFBQSxJQUFBLENBQUFySixLQUFBLEdBQUEwRixDQUFBLEVBQUEyRCxJQUFBLENBQUFqSCxJQUFBLE9BQUFpSCxJQUFBLFlBQUFwRCxDQUFBLENBQUFvRCxJQUFBLEdBQUFwRCxDQUFBLGdCQUFBa0QsU0FBQSxDQUFBYixPQUFBLENBQUE3RixDQUFBLGtDQUFBZ0YsaUJBQUEsQ0FBQTVCLFNBQUEsR0FBQTZCLDBCQUFBLEVBQUEzQixDQUFBLENBQUFpQyxDQUFBLG1CQUFBaEksS0FBQSxFQUFBMEgsMEJBQUEsRUFBQWYsWUFBQSxTQUFBWixDQUFBLENBQUEyQiwwQkFBQSxtQkFBQTFILEtBQUEsRUFBQXlILGlCQUFBLEVBQUFkLFlBQUEsU0FBQWMsaUJBQUEsQ0FBQTBDLFdBQUEsR0FBQTFELE1BQUEsQ0FBQWlCLDBCQUFBLEVBQUFuQixDQUFBLHdCQUFBOUQsQ0FBQSxDQUFBMkgsbUJBQUEsYUFBQTFFLENBQUEsUUFBQWpELENBQUEsd0JBQUFpRCxDQUFBLElBQUFBLENBQUEsQ0FBQTJFLFdBQUEsV0FBQTVILENBQUEsS0FBQUEsQ0FBQSxLQUFBZ0YsaUJBQUEsNkJBQUFoRixDQUFBLENBQUEwSCxXQUFBLElBQUExSCxDQUFBLENBQUFqQyxJQUFBLE9BQUFpQyxDQUFBLENBQUE2SCxJQUFBLGFBQUE1RSxDQUFBLFdBQUFFLE1BQUEsQ0FBQTJFLGNBQUEsR0FBQTNFLE1BQUEsQ0FBQTJFLGNBQUEsQ0FBQTdFLENBQUEsRUFBQWdDLDBCQUFBLEtBQUFoQyxDQUFBLENBQUE4RSxTQUFBLEdBQUE5QywwQkFBQSxFQUFBakIsTUFBQSxDQUFBZixDQUFBLEVBQUFhLENBQUEseUJBQUFiLENBQUEsQ0FBQUcsU0FBQSxHQUFBRCxNQUFBLENBQUFtQixNQUFBLENBQUFpQixDQUFBLEdBQUF0QyxDQUFBLEtBQUFqRCxDQUFBLENBQUFnSSxLQUFBLGFBQUEvRSxDQUFBLGFBQUE4QyxPQUFBLEVBQUE5QyxDQUFBLE9BQUF1QyxxQkFBQSxDQUFBRyxhQUFBLENBQUF2QyxTQUFBLEdBQUFZLE1BQUEsQ0FBQTJCLGFBQUEsQ0FBQXZDLFNBQUEsRUFBQVEsQ0FBQSxpQ0FBQTVELENBQUEsQ0FBQTJGLGFBQUEsR0FBQUEsYUFBQSxFQUFBM0YsQ0FBQSxDQUFBaUksS0FBQSxhQUFBaEYsQ0FBQSxFQUFBQyxDQUFBLEVBQUF4RCxDQUFBLEVBQUE0RCxDQUFBLEVBQUFFLENBQUEsZUFBQUEsQ0FBQSxLQUFBQSxDQUFBLEdBQUEwRSxPQUFBLE9BQUF4RSxDQUFBLE9BQUFpQyxhQUFBLENBQUF2QixJQUFBLENBQUFuQixDQUFBLEVBQUFDLENBQUEsRUFBQXhELENBQUEsRUFBQTRELENBQUEsR0FBQUUsQ0FBQSxVQUFBeEQsQ0FBQSxDQUFBMkgsbUJBQUEsQ0FBQXpFLENBQUEsSUFBQVEsQ0FBQSxHQUFBQSxDQUFBLENBQUFrRCxJQUFBLEdBQUFaLElBQUEsV0FBQS9DLENBQUEsV0FBQUEsQ0FBQSxDQUFBdEQsSUFBQSxHQUFBc0QsQ0FBQSxDQUFBMUYsS0FBQSxHQUFBbUcsQ0FBQSxDQUFBa0QsSUFBQSxXQUFBcEIscUJBQUEsQ0FBQUQsQ0FBQSxHQUFBdkIsTUFBQSxDQUFBdUIsQ0FBQSxFQUFBekIsQ0FBQSxnQkFBQUUsTUFBQSxDQUFBdUIsQ0FBQSxFQUFBN0IsQ0FBQSxpQ0FBQU0sTUFBQSxDQUFBdUIsQ0FBQSw2REFBQXZGLENBQUEsQ0FBQW1JLElBQUEsYUFBQWxGLENBQUEsUUFBQWpELENBQUEsR0FBQW1ELE1BQUEsQ0FBQUYsQ0FBQSxHQUFBQyxDQUFBLGdCQUFBeEQsQ0FBQSxJQUFBTSxDQUFBLEVBQUFrRCxDQUFBLENBQUFrRSxJQUFBLENBQUExSCxDQUFBLFVBQUF3RCxDQUFBLENBQUFrRixPQUFBLGFBQUF4QixLQUFBLFdBQUExRCxDQUFBLENBQUF1RSxNQUFBLFNBQUF4RSxDQUFBLEdBQUFDLENBQUEsQ0FBQW1GLEdBQUEsUUFBQXBGLENBQUEsSUFBQWpELENBQUEsU0FBQTRHLElBQUEsQ0FBQXJKLEtBQUEsR0FBQTBGLENBQUEsRUFBQTJELElBQUEsQ0FBQWpILElBQUEsT0FBQWlILElBQUEsV0FBQUEsSUFBQSxDQUFBakgsSUFBQSxPQUFBaUgsSUFBQSxRQUFBNUcsQ0FBQSxDQUFBc0YsTUFBQSxHQUFBQSxNQUFBLEVBQUFmLE9BQUEsQ0FBQW5CLFNBQUEsS0FBQXdFLFdBQUEsRUFBQXJELE9BQUEsRUFBQWdELEtBQUEsV0FBQUEsTUFBQXZILENBQUEsYUFBQXNJLElBQUEsV0FBQTFCLElBQUEsV0FBQU4sSUFBQSxRQUFBQyxLQUFBLEdBQUF0RCxDQUFBLE9BQUF0RCxJQUFBLFlBQUF5RyxRQUFBLGNBQUFELE1BQUEsZ0JBQUF4QixHQUFBLEdBQUExQixDQUFBLE9BQUFrRSxVQUFBLENBQUExQixPQUFBLENBQUE0QixhQUFBLElBQUFySCxDQUFBLFdBQUFrRCxDQUFBLGtCQUFBQSxDQUFBLENBQUFxRixNQUFBLE9BQUE3SSxDQUFBLENBQUFrRixJQUFBLE9BQUExQixDQUFBLE1BQUFzRSxLQUFBLEVBQUF0RSxDQUFBLENBQUFzRixLQUFBLGNBQUF0RixDQUFBLElBQUFELENBQUEsTUFBQXdGLElBQUEsV0FBQUEsS0FBQSxTQUFBOUksSUFBQSxXQUFBc0QsQ0FBQSxRQUFBa0UsVUFBQSxJQUFBRyxVQUFBLGtCQUFBckUsQ0FBQSxDQUFBeUIsSUFBQSxRQUFBekIsQ0FBQSxDQUFBMEIsR0FBQSxjQUFBK0QsSUFBQSxLQUFBbEMsaUJBQUEsV0FBQUEsa0JBQUF4RyxDQUFBLGFBQUFMLElBQUEsUUFBQUssQ0FBQSxNQUFBa0QsQ0FBQSxrQkFBQXlGLE9BQUFqSixDQUFBLEVBQUE0RCxDQUFBLFdBQUFJLENBQUEsQ0FBQWdCLElBQUEsWUFBQWhCLENBQUEsQ0FBQWlCLEdBQUEsR0FBQTNFLENBQUEsRUFBQWtELENBQUEsQ0FBQTBELElBQUEsR0FBQWxILENBQUEsRUFBQTRELENBQUEsS0FBQUosQ0FBQSxDQUFBaUQsTUFBQSxXQUFBakQsQ0FBQSxDQUFBeUIsR0FBQSxHQUFBMUIsQ0FBQSxLQUFBSyxDQUFBLGFBQUFBLENBQUEsUUFBQTZELFVBQUEsQ0FBQU0sTUFBQSxNQUFBbkUsQ0FBQSxTQUFBQSxDQUFBLFFBQUFFLENBQUEsUUFBQTJELFVBQUEsQ0FBQTdELENBQUEsR0FBQUksQ0FBQSxHQUFBRixDQUFBLENBQUE4RCxVQUFBLGlCQUFBOUQsQ0FBQSxDQUFBdUQsTUFBQSxTQUFBNEIsTUFBQSxhQUFBbkYsQ0FBQSxDQUFBdUQsTUFBQSxTQUFBdUIsSUFBQSxRQUFBMUUsQ0FBQSxHQUFBbEUsQ0FBQSxDQUFBa0YsSUFBQSxDQUFBcEIsQ0FBQSxlQUFBTSxDQUFBLEdBQUFwRSxDQUFBLENBQUFrRixJQUFBLENBQUFwQixDQUFBLHFCQUFBSSxDQUFBLElBQUFFLENBQUEsYUFBQXdFLElBQUEsR0FBQTlFLENBQUEsQ0FBQXdELFFBQUEsU0FBQTJCLE1BQUEsQ0FBQW5GLENBQUEsQ0FBQXdELFFBQUEsZ0JBQUFzQixJQUFBLEdBQUE5RSxDQUFBLENBQUF5RCxVQUFBLFNBQUEwQixNQUFBLENBQUFuRixDQUFBLENBQUF5RCxVQUFBLGNBQUFyRCxDQUFBLGFBQUEwRSxJQUFBLEdBQUE5RSxDQUFBLENBQUF3RCxRQUFBLFNBQUEyQixNQUFBLENBQUFuRixDQUFBLENBQUF3RCxRQUFBLHFCQUFBbEQsQ0FBQSxRQUFBb0MsS0FBQSxxREFBQW9DLElBQUEsR0FBQTlFLENBQUEsQ0FBQXlELFVBQUEsU0FBQTBCLE1BQUEsQ0FBQW5GLENBQUEsQ0FBQXlELFVBQUEsWUFBQVIsTUFBQSxXQUFBQSxPQUFBeEQsQ0FBQSxFQUFBakQsQ0FBQSxhQUFBa0QsQ0FBQSxRQUFBaUUsVUFBQSxDQUFBTSxNQUFBLE1BQUF2RSxDQUFBLFNBQUFBLENBQUEsUUFBQUksQ0FBQSxRQUFBNkQsVUFBQSxDQUFBakUsQ0FBQSxPQUFBSSxDQUFBLENBQUF5RCxNQUFBLFNBQUF1QixJQUFBLElBQUE1SSxDQUFBLENBQUFrRixJQUFBLENBQUF0QixDQUFBLHdCQUFBZ0YsSUFBQSxHQUFBaEYsQ0FBQSxDQUFBMkQsVUFBQSxRQUFBekQsQ0FBQSxHQUFBRixDQUFBLGFBQUFFLENBQUEsaUJBQUFQLENBQUEsbUJBQUFBLENBQUEsS0FBQU8sQ0FBQSxDQUFBdUQsTUFBQSxJQUFBL0csQ0FBQSxJQUFBQSxDQUFBLElBQUF3RCxDQUFBLENBQUF5RCxVQUFBLEtBQUF6RCxDQUFBLGNBQUFFLENBQUEsR0FBQUYsQ0FBQSxHQUFBQSxDQUFBLENBQUE4RCxVQUFBLGNBQUE1RCxDQUFBLENBQUFnQixJQUFBLEdBQUF6QixDQUFBLEVBQUFTLENBQUEsQ0FBQWlCLEdBQUEsR0FBQTNFLENBQUEsRUFBQXdELENBQUEsU0FBQTJDLE1BQUEsZ0JBQUFTLElBQUEsR0FBQXBELENBQUEsQ0FBQXlELFVBQUEsRUFBQWxDLENBQUEsU0FBQTZELFFBQUEsQ0FBQWxGLENBQUEsTUFBQWtGLFFBQUEsV0FBQUEsU0FBQTNGLENBQUEsRUFBQWpELENBQUEsb0JBQUFpRCxDQUFBLENBQUF5QixJQUFBLFFBQUF6QixDQUFBLENBQUEwQixHQUFBLHFCQUFBMUIsQ0FBQSxDQUFBeUIsSUFBQSxtQkFBQXpCLENBQUEsQ0FBQXlCLElBQUEsUUFBQWtDLElBQUEsR0FBQTNELENBQUEsQ0FBQTBCLEdBQUEsZ0JBQUExQixDQUFBLENBQUF5QixJQUFBLFNBQUFnRSxJQUFBLFFBQUEvRCxHQUFBLEdBQUExQixDQUFBLENBQUEwQixHQUFBLE9BQUF3QixNQUFBLGtCQUFBUyxJQUFBLHlCQUFBM0QsQ0FBQSxDQUFBeUIsSUFBQSxJQUFBMUUsQ0FBQSxVQUFBNEcsSUFBQSxHQUFBNUcsQ0FBQSxHQUFBK0UsQ0FBQSxLQUFBOEQsTUFBQSxXQUFBQSxPQUFBNUYsQ0FBQSxhQUFBakQsQ0FBQSxRQUFBbUgsVUFBQSxDQUFBTSxNQUFBLE1BQUF6SCxDQUFBLFNBQUFBLENBQUEsUUFBQWtELENBQUEsUUFBQWlFLFVBQUEsQ0FBQW5ILENBQUEsT0FBQWtELENBQUEsQ0FBQStELFVBQUEsS0FBQWhFLENBQUEsY0FBQTJGLFFBQUEsQ0FBQTFGLENBQUEsQ0FBQW9FLFVBQUEsRUFBQXBFLENBQUEsQ0FBQWdFLFFBQUEsR0FBQUcsYUFBQSxDQUFBbkUsQ0FBQSxHQUFBNkIsQ0FBQSx5QkFBQStELE9BQUE3RixDQUFBLGFBQUFqRCxDQUFBLFFBQUFtSCxVQUFBLENBQUFNLE1BQUEsTUFBQXpILENBQUEsU0FBQUEsQ0FBQSxRQUFBa0QsQ0FBQSxRQUFBaUUsVUFBQSxDQUFBbkgsQ0FBQSxPQUFBa0QsQ0FBQSxDQUFBNkQsTUFBQSxLQUFBOUQsQ0FBQSxRQUFBdkQsQ0FBQSxHQUFBd0QsQ0FBQSxDQUFBb0UsVUFBQSxrQkFBQTVILENBQUEsQ0FBQWdGLElBQUEsUUFBQXBCLENBQUEsR0FBQTVELENBQUEsQ0FBQWlGLEdBQUEsRUFBQTBDLGFBQUEsQ0FBQW5FLENBQUEsWUFBQUksQ0FBQSxZQUFBNEMsS0FBQSw4QkFBQTZDLGFBQUEsV0FBQUEsY0FBQS9JLENBQUEsRUFBQWtELENBQUEsRUFBQXhELENBQUEsZ0JBQUEwRyxRQUFBLEtBQUF6QyxRQUFBLEVBQUEyQixNQUFBLENBQUF0RixDQUFBLEdBQUEyRyxVQUFBLEVBQUF6RCxDQUFBLEVBQUEyRCxPQUFBLEVBQUFuSCxDQUFBLG9CQUFBeUcsTUFBQSxVQUFBeEIsR0FBQSxHQUFBMUIsQ0FBQSxHQUFBOEIsQ0FBQSxPQUFBL0UsQ0FBQTtBQUFBLFNBQUEwSixtQkFBQUMsR0FBQSxFQUFBN0QsT0FBQSxFQUFBOEQsTUFBQSxFQUFBQyxLQUFBLEVBQUFDLE1BQUEsRUFBQXhNLEdBQUEsRUFBQXFILEdBQUEsY0FBQW9GLElBQUEsR0FBQUosR0FBQSxDQUFBck0sR0FBQSxFQUFBcUgsR0FBQSxPQUFBcEgsS0FBQSxHQUFBd00sSUFBQSxDQUFBeE0sS0FBQSxXQUFBeU0sS0FBQSxJQUFBSixNQUFBLENBQUFJLEtBQUEsaUJBQUFELElBQUEsQ0FBQXBLLElBQUEsSUFBQW1HLE9BQUEsQ0FBQXZJLEtBQUEsWUFBQTJLLE9BQUEsQ0FBQXBDLE9BQUEsQ0FBQXZJLEtBQUEsRUFBQXlJLElBQUEsQ0FBQTZELEtBQUEsRUFBQUMsTUFBQTtBQUFBLFNBQUFHLGtCQUFBak0sRUFBQSw2QkFBQWtNLElBQUEsU0FBQUMsSUFBQSxHQUFBZCxTQUFBLGFBQUFuQixPQUFBLFdBQUFwQyxPQUFBLEVBQUE4RCxNQUFBLFFBQUFELEdBQUEsR0FBQTNMLEVBQUEsQ0FBQW9MLEtBQUEsQ0FBQWMsSUFBQSxFQUFBQyxJQUFBLFlBQUFOLE1BQUF0TSxLQUFBLElBQUFtTSxrQkFBQSxDQUFBQyxHQUFBLEVBQUE3RCxPQUFBLEVBQUE4RCxNQUFBLEVBQUFDLEtBQUEsRUFBQUMsTUFBQSxVQUFBdk0sS0FBQSxjQUFBdU0sT0FBQS9KLEdBQUEsSUFBQTJKLGtCQUFBLENBQUFDLEdBQUEsRUFBQTdELE9BQUEsRUFBQThELE1BQUEsRUFBQUMsS0FBQSxFQUFBQyxNQUFBLFdBQUEvSixHQUFBLEtBQUE4SixLQUFBLENBQUFPLFNBQUE7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFOEI7QUFDRTtBQUVoQ0gsaUJBQUEsZUFBQWpILG1CQUFBLEdBQUE2RSxJQUFBLENBQUMsU0FBQXNELFFBQUE7RUFDQyxZQUFZOztFQUVaO0VBQUEsT0FBQW5JLG1CQUFBLEdBQUFvQixJQUFBLFVBQUFpSCxTQUFBQyxRQUFBO0lBQUEsa0JBQUFBLFFBQUEsQ0FBQWhELElBQUEsR0FBQWdELFFBQUEsQ0FBQTFFLElBQUE7TUFBQTtRQUNBeWEsV0FBVyxDQUFDQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QztRQUNBemdCLENBQUMsQ0FBQ0MsUUFBUSxDQUFDcVEsSUFBSSxDQUFDLENBQUMvTyxNQUFNLGlrQkFTZCxDQUFDO1FBRVZQLHlEQUFPLENBQUMzQyxXQUFXLENBQUMsQ0FBQztRQUNyQjJDLHlEQUFPLENBQUNDLFVBQVUsQ0FBQyxDQUFDO1FBRXBCME0sd0RBQU0sQ0FBQ3VOLEdBQUcsQ0FBQyxDQUFDO01BQUM7TUFBQTtRQUFBLE9BQUF6USxRQUFBLENBQUE3QyxJQUFBO0lBQUE7RUFBQSxHQUFBMEMsT0FBQTtBQUFBLENBQ2QsR0FBRSxDQUFDOzs7Ozs7VUNwREo7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTs7VUFFQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTs7Ozs7V0N0QkE7V0FDQTtXQUNBO1dBQ0E7V0FDQSx5Q0FBeUMsd0NBQXdDO1dBQ2pGO1dBQ0E7V0FDQTs7Ozs7V0NQQTs7Ozs7VUVBQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly90YW1wZXJtb25rZXktc2NyaXB0LXV0aWxzLy4vdXRpbHMvc3JjL2dtL1N0b3JlLnRzIiwid2VicGFjazovL3RhbXBlcm1vbmtleS1zY3JpcHQtdXRpbHMvLi91dGlscy9zcmMvZ20vTWVudUNtZC50cyIsIndlYnBhY2s6Ly90YW1wZXJtb25rZXktc2NyaXB0LXV0aWxzLy4vdXRpbHMvc3JjL0NvbW1vbk9wdGlvbnMudHMiLCJ3ZWJwYWNrOi8vdGFtcGVybW9ua2V5LXNjcmlwdC11dGlscy8uL3YyZXgtcmVwbGllcy1wcm8vc3JjL09wdGlvbnMudHMiLCJ3ZWJwYWNrOi8vdGFtcGVybW9ua2V5LXNjcmlwdC11dGlscy8uL3V0aWxzL3NyYy9nbS9lbnVtL0h0dHBEYXRhVHlwZS50cyIsIndlYnBhY2s6Ly90YW1wZXJtb25rZXktc2NyaXB0LXV0aWxzLy4vdXRpbHMvc3JjL2dtL1JlcXVlc3QudHMiLCJ3ZWJwYWNrOi8vdGFtcGVybW9ua2V5LXNjcmlwdC11dGlscy8uL3V0aWxzL3NyYy9nbS9JbmZvLnRzIiwid2VicGFjazovL3RhbXBlcm1vbmtleS1zY3JpcHQtdXRpbHMvLi92MmV4LXJlcGxpZXMtcHJvL3NyYy9hcGkvVjJleC50cyIsIndlYnBhY2s6Ly90YW1wZXJtb25rZXktc2NyaXB0LXV0aWxzLy4vdjJleC1yZXBsaWVzLXByby9zcmMvUmVwbGF5LnRzIiwid2VicGFjazovL3RhbXBlcm1vbmtleS1zY3JpcHQtdXRpbHMvLi92MmV4LXJlcGxpZXMtcHJvL3NyYy9tYWluLnRzIiwid2VicGFjazovL3RhbXBlcm1vbmtleS1zY3JpcHQtdXRpbHMvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vdGFtcGVybW9ua2V5LXNjcmlwdC11dGlscy93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vdGFtcGVybW9ua2V5LXNjcmlwdC11dGlscy93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL3RhbXBlcm1vbmtleS1zY3JpcHQtdXRpbHMvd2VicGFjay9iZWZvcmUtc3RhcnR1cCIsIndlYnBhY2s6Ly90YW1wZXJtb25rZXktc2NyaXB0LXV0aWxzL3dlYnBhY2svc3RhcnR1cCIsIndlYnBhY2s6Ly90YW1wZXJtb25rZXktc2NyaXB0LXV0aWxzL3dlYnBhY2svYWZ0ZXItc3RhcnR1cCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICog5a2Y5YKoXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdG9yZSB7XHJcblxyXG4gIC8qKlxyXG4gICAqIOiOt+WPllxyXG4gICAqIEBwYXJhbSBrZXkg6ZSuXHJcbiAgICovXHJcbiAgc3RhdGljIGdldChrZXk6IHN0cmluZyk6IGFueSB7XHJcbiAgICByZXR1cm4gR01fZ2V0VmFsdWUoa2V5KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiuvue9rlxyXG4gICAqIEBwYXJhbSBrZXkg6ZSuXHJcbiAgICogQHBhcmFtIHZhbHVlIOWAvFxyXG4gICAqL1xyXG4gIHN0YXRpYyBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcclxuICAgIEdNX3NldFZhbHVlKGtleSwgdmFsdWUpO1xyXG4gIH1cclxufVxyXG4iLCIvKipcclxuICog6YCJ6aG56I+c5Y2VXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZW51Q21kIHtcclxuXHJcbiAgLyoqXHJcbiAgICog5rOo5YaMXHJcbiAgICogQHBhcmFtIG5hbWUg5ZCN56ewXHJcbiAgICogQHBhcmFtIGZuIOeCueWHu+iPnOWNleaXtuaJp+ihjOeahOWHveaVsFxyXG4gICAqL1xyXG4gIHN0YXRpYyByZWdpc3RlcihuYW1lOiBzdHJpbmcsIGZuOiAoKSA9PiB2b2lkKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBHTV9yZWdpc3Rlck1lbnVDb21tYW5kKG5hbWUsIGZuKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOazqOmUgFxyXG4gICAqIEBwYXJhbSBtZW51Q21kSWQg5rOo5YaM5pe26L+U5Zue55qEIElEXHJcbiAgICovXHJcbiAgc3RhdGljIHVucmVnaXN0ZXIobWVudUNtZElkOiBudW1iZXIpIHtcclxuICAgIEdNX3VucmVnaXN0ZXJNZW51Q29tbWFuZChtZW51Q21kSWQpO1xyXG4gIH1cclxufVxyXG4iLCJpbXBvcnQgU3RvcmUgZnJvbSBcIkB1dGlscy9nbS9TdG9yZVwiO1xyXG5pbXBvcnQgTWVudUNtZCBmcm9tIFwiQHV0aWxzL2dtL01lbnVDbWRcIjtcclxuXHJcbi8qKlxyXG4gKiDpgInpobnoj5zljZVcclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbW1vbk9wdGlvbnMge1xyXG5cclxuICAvLyAvKipcclxuICAvLyAgKiDpgInpobkgS2V5XHJcbiAgLy8gICovXHJcbiAgLy8gcHJvdGVjdGVkIHN0YXRpYyBLZXlzID0ge1xyXG4gIC8vICAgLy8geHh4OiAneHh4J1xyXG4gIC8vIH1cclxuICAvL1xyXG4gIC8vIC8qKlxyXG4gIC8vICAqIOmAiemhuVxyXG4gIC8vICAqIEBwcml2YXRlXHJcbiAgLy8gICovXHJcbiAgLy8gcHJvdGVjdGVkIHN0YXRpYyBvcHRpb25zID0gW1xyXG4gIC8vICAgLy8ge2xhYmVsOiAnJywgbmFtZTogdGhpcy5LZXlzLnh4eCwgdmVyc2lvbjogMSwgdmFsdWU6IGZhbHNlLCBtZW51Q21kSWQ6IG51bGx9LFxyXG4gIC8vIF07XHJcblxyXG4gIC8qKlxyXG4gICAqIOazqOWGjCBib29sIOexu+Wei+eahOmAiemhuVxyXG4gICAqIEBwYXJhbSBvcHRpb24g6YCJ6aG5XHJcbiAgICovXHJcbiAgc3RhdGljIHJlZ2lzdGVyQm9vbE9wdGlvbihvcHRpb246IGFueSkge1xyXG4gICAgY29uc3QgdmFsID0gb3B0aW9uLnZhbHVlLCB2YWxJc0Jvb2wgPSAodHlwZW9mIHZhbCA9PT0gJ2Jvb2xlYW4nKTtcclxuXHJcbiAgICBpZiAoIXZhbElzQm9vbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyDms6jlhozpgInpoblcclxuICAgIGNvbnN0IGN1cnJlbnRNZW51Q21kSWQgPSBNZW51Q21kLnJlZ2lzdGVyKCh2YWwgPyAn4piR77iPICcgOiAn8J+UsiAnKSArIG9wdGlvbi5sYWJlbCwgKCkgPT4ge1xyXG4gICAgICAvLyDngrnlh7vlgLzlj5blj41cclxuICAgICAgb3B0aW9uLnZhbHVlID0gIW9wdGlvbi52YWx1ZTtcclxuICAgICAgU3RvcmUuc2V0KG9wdGlvbi5uYW1lLCBKU09OLnN0cmluZ2lmeShvcHRpb24pKTtcclxuXHJcbiAgICAgIC8vIOWPlua2iOazqOWGjFxyXG4gICAgICBNZW51Q21kLnVucmVnaXN0ZXIoY3VycmVudE1lbnVDbWRJZCk7XHJcbiAgICAgIC8vIOmHjeaWsOazqOWGjFxyXG4gICAgICB0aGlzLnJlZ2lzdGVyQm9vbE9wdGlvbihvcHRpb24pO1xyXG4gICAgICAvLyDliLfmlrDpobXpnaJcclxuICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8g5L+d5a2Y6YCJ6aG5IElEXHJcbiAgICBvcHRpb24ubWVudUNtZElkID0gY3VycmVudE1lbnVDbWRJZDtcclxuICAgIFN0b3JlLnNldChvcHRpb24ubmFtZSwgSlNPTi5zdHJpbmdpZnkob3B0aW9uKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDms6jlhozmiYDmnInpgInpoblcclxuICAgKiBAcGFyYW0gdXJsIOiuvue9rumhtemdoiBVUkxcclxuICAgKiBAcGFyYW0gb3B0aW9uc1xyXG4gICAqL1xyXG4gIHN0YXRpYyByZWdpc3RlckFsbCh1cmw6IHN0cmluZywgb3B0aW9uczogYW55W10pIHtcclxuICAgIE1lbnVDbWQucmVnaXN0ZXIoJ+abtOWkmuiuvue9ricsICgpID0+IHtcclxuICAgICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zKSB7XHJcbiAgICAgIC8vIFRPRE8g44CQ6LCD6K+V44CR5LiN5L+d55WZ6YCJ6aG555qE5YC877yM5q+P5qyh6YO95LuOIFN0b3JlIOS4reiOt+WPllxyXG4gICAgICAvLyBTdG9yZS5zZXQob3B0aW9uLm5hbWUsIG51bGwpO1xyXG5cclxuICAgICAgbGV0IHN0b3JlT3B0aW9uID0gU3RvcmUuZ2V0KG9wdGlvbi5uYW1lKSA/IEpTT04ucGFyc2UoU3RvcmUuZ2V0KG9wdGlvbi5uYW1lKSkgOiBudWxsO1xyXG4gICAgICAvLyDlpoLmnpzpgInpobnkuI3lrZjlnKggfHwg54mI5pys5LiN5LiA6Ie0IOaXtumHjee9rumAiemhuVxyXG4gICAgICBpZiAoc3RvcmVPcHRpb24gPT09IG51bGwgfHwgIXN0b3JlT3B0aW9uWyd2ZXJzaW9uJ10gfHwgc3RvcmVPcHRpb25bJ3ZlcnNpb24nXSA8IG9wdGlvbi52ZXJzaW9uKSB7XHJcbiAgICAgICAgU3RvcmUuc2V0KG9wdGlvbi5uYW1lLCBKU09OLnN0cmluZ2lmeShvcHRpb24pKTtcclxuICAgICAgICBzdG9yZU9wdGlvbiA9IG9wdGlvbjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlZ2lzdGVyQm9vbE9wdGlvbihzdG9yZU9wdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlnKjpobXpnaLkuK3liqDovb3pgInpoblcclxuICAgKi9cclxuICBzdGF0aWMgbG9hZEluR3JlYXN5Zm9yayhzY3JpcHRJZDogbnVtYmVyLCBsb2FkT3B0aW9uQ29udGVudEZuOiBGdW5jdGlvbikge1xyXG4gICAgaWYgKGxvY2F0aW9uLmhvc3QgIT09ICdncmVhc3lmb3JrLm9yZycgfHwgbG9jYXRpb24uaHJlZi5pbmRleE9mKCcvc2NyaXB0cy8nICsgc2NyaXB0SWQpID09IC0xKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHNlbGVjdG9yID0ge1xyXG4gICAgICBzY3JpcHRMaW5rczogJyNzY3JpcHQtbGlua3MnLFxyXG4gICAgICBzY3JpcHRPcHRpb25zOiAnI3NjcmlwdC1vcHRpb25zJyxcclxuICAgICAgc2NyaXB0Q29udGVudDogJyNzY3JpcHQtY29udGVudCcsXHJcbiAgICB9XHJcbiAgICBjb25zdCAkYm9keSA9ICQoZG9jdW1lbnQuYm9keSksICRzY3JpcHRMaW5rcyA9ICQoc2VsZWN0b3Iuc2NyaXB0TGlua3MpLCAkc2NyaXB0Q29udGVudCA9ICQoc2VsZWN0b3Iuc2NyaXB0Q29udGVudCk7XHJcblxyXG4gICAgLy8g5re75Yqg6ISa5pys6K6+572u55qE6YCJ6aG55Y2hXHJcbiAgICAkc2NyaXB0TGlua3MuY2hpbGRyZW4oJ2xpOmVxKDApJykuYWZ0ZXIoYDxsaT48YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgaWQ9XCJzY3JpcHQtb3B0aW9uc1wiPuiEmuacrOiuvue9rjwvYT48L2xpPmApXHJcbiAgICAvLyDohJrmnKzorr7nva7pgInpobnngrnlh7vkuovku7ZcclxuICAgICRib2R5Lm9uKCdjbGljaycsIHNlbGVjdG9yLnNjcmlwdE9wdGlvbnMsICgpID0+IHtcclxuICAgICAgLy8g56e76Zmk5bey6YCJ5Lit6YCJ6aG555qE5qC35byPXHJcbiAgICAgIGNvbnN0ICRjdXJyZW50TGkgPSAkc2NyaXB0TGlua3MuY2hpbGRyZW4oJ2xpLmN1cnJlbnQnKTtcclxuICAgICAgJGN1cnJlbnRMaS5odG1sKGA8YSBocmVmPVwiJHtsb2NhdGlvbi5ocmVmfVwiPiR7JGN1cnJlbnRMaS50ZXh0KCl9PC9hPmApO1xyXG4gICAgICAkY3VycmVudExpLnJlbW92ZUNsYXNzKCdjdXJyZW50Jyk7XHJcblxyXG4gICAgICAvLyDmt7vliqDpgInkuK3pgInpobnnmoTmoLflvI9cclxuICAgICAgY29uc3QgJHNjcmlwdE9wdGlvbnMgPSAkKHNlbGVjdG9yLnNjcmlwdE9wdGlvbnMpO1xyXG4gICAgICAkc2NyaXB0T3B0aW9ucy5wYXJlbnQoKS5hZGRDbGFzcygnY3VycmVudCcpO1xyXG5cclxuICAgICAgbG9hZE9wdGlvbkNvbnRlbnRGbigkc2NyaXB0Q29udGVudCk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiaW1wb3J0IENvbW1vbk9wdGlvbnMgZnJvbSBcIkB1dGlscy9Db21tb25PcHRpb25zXCI7XHJcbmltcG9ydCBTdG9yZSBmcm9tIFwiQHV0aWxzL2dtL1N0b3JlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBPcHRpb25zIHtcclxuXHJcbiAgLyoqXHJcbiAgICog6YCJ6aG5IEtleVxyXG4gICAqL1xyXG4gIHN0YXRpYyBLZXlzID0ge1xyXG4gICAgdjJleFRva2VuOiAndjJleFRva2VuJyxcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOmAiemhuVxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHN0YXRpYyBvcHRpb25zID0gW1xyXG4gICAge2xhYmVsOiAnVjJFWCBUb2tlbicsIG5hbWU6IHRoaXMuS2V5cy52MmV4VG9rZW4sIHZlcnNpb246IDEsIHZhbHVlOiAnJywgbWVudUNtZElkOiBudWxsfSxcclxuICBdO1xyXG5cclxuICAvKipcclxuICAgKiDms6jlhozmiYDmnInpgInpoblcclxuICAgKi9cclxuICBzdGF0aWMgcmVnaXN0ZXJBbGwoKSB7XHJcbiAgICBDb21tb25PcHRpb25zLnJlZ2lzdGVyQWxsKCdodHRwczovL3d3dy52MmV4LmNvbS9zZXR0aW5ncycsIHRoaXMub3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlnKjpobXpnaLkuK3liqDovb3pgInpoblcclxuICAgKi9cclxuICBzdGF0aWMgbG9hZEluVjJleCgpIHtcclxuICAgIGlmIChsb2NhdGlvbi5ocmVmLmluZGV4T2YoJ3YyZXguY29tL3NldHRpbmdzJykgPT0gLTEpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc2VsZWN0b3IgPSB7XHJcbiAgICAgICAgbWVudVRhYjogJ2EudGFiJyxcclxuICAgICAgICBjdXJyZW50TWVudVRhYjogJ2EudGFiX2N1cnJlbnQnLFxyXG4gICAgICAgIHNjcmlwdE9wdGlvbnM6ICcjc2NyaXB0LW9wdGlvbnMnLFxyXG4gICAgICAgIHNjcmlwdENvbnRlbnQ6ICcjTWFpbiAuYm94JyxcclxuXHJcbiAgICAgICAgdjJleFRva2VuSW5wdXQ6ICdpbnB1dFtuYW1lPVwidjJleFRva2VuXCJdJyxcclxuICAgICAgICBzYXZlT3B0aW9uc0J0bjogJyNzYXZlLW9wdGlvbnMnLFxyXG4gICAgICB9LFxyXG4gICAgICAkYm9keSA9ICQoZG9jdW1lbnQuYm9keSksICRtZW51VGFiID0gJChzZWxlY3Rvci5tZW51VGFiKTtcclxuXHJcbiAgICAvLyDmt7vliqDohJrmnKzorr7nva7nmoTpgInpobnljaFcclxuICAgICRtZW51VGFiLnBhcmVudCgpLmFwcGVuZChgPGEgaWQ9XCJzY3JpcHQtb3B0aW9uc1wiIGNsYXNzPVwidGFiXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIj7ohJrmnKzorr7nva48L2E+YCk7XHJcbiAgICAvLyDohJrmnKzorr7nva7pgInpobnngrnlh7vkuovku7ZcclxuICAgICRib2R5Lm9uKCdjbGljaycsIHNlbGVjdG9yLnNjcmlwdE9wdGlvbnMsICgpID0+IHtcclxuICAgICAgLy8g56e76Zmk5bey6YCJ5Lit6YCJ6aG555qE5qC35byPXHJcbiAgICAgIGNvbnN0ICRjdXJyZW50TWVudVRhYiA9ICQoc2VsZWN0b3IuY3VycmVudE1lbnVUYWIpO1xyXG4gICAgICAkY3VycmVudE1lbnVUYWIucmVtb3ZlQ2xhc3MoJ3RhYl9jdXJyZW50Jyk7XHJcbiAgICAgICRjdXJyZW50TWVudVRhYi5hZGRDbGFzcygndGFiJyk7XHJcblxyXG4gICAgICAvLyDmt7vliqDpgInkuK3pgInpobnnmoTmoLflvI9cclxuICAgICAgY29uc3QgJHNjcmlwdE9wdGlvbnMgPSAkKHNlbGVjdG9yLnNjcmlwdE9wdGlvbnMpO1xyXG4gICAgICAkc2NyaXB0T3B0aW9ucy5yZW1vdmVDbGFzcygndGFiJyk7XHJcbiAgICAgICRzY3JpcHRPcHRpb25zLmFkZENsYXNzKCd0YWJfY3VycmVudCcpO1xyXG5cclxuICAgICAgLy8g5re75Yqg6ISa5pys6K6+572u55qE5YaF5a65XHJcbiAgICAgICQoc2VsZWN0b3Iuc2NyaXB0Q29udGVudCArICcgZGl2Omd0KDEpJykucmVtb3ZlKCk7XHJcbiAgICAgICQoc2VsZWN0b3Iuc2NyaXB0Q29udGVudCkuYXBwZW5kKGBcclxuICAgICAgICA8Zm9ybT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbm5lclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9waWNfY29udGVudCBtYXJrZG93bl9ib2R5XCI+XHJcbiAgICAgICAgICAgICAgPCEtLTxwPjxhIGhyZWY9XCJodHRwczovL3d3dy52MmV4LmNvbS9zZXR0aW5ncy90b2tlbnNcIiB0YXJnZXQ9XCJfYmxhbmtcIj7ojrflj5YgVjJFWCBUb2tlbjwvYT48L3A+ICAgICAgICAgIC0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlcDIwXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzb2NpYWwtc2V0dGluZ3MtZm9ybVwiPlxyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PjxhIGhyZWY9XCJodHRwczovL3d3dy52MmV4LmNvbS9zZXR0aW5ncy90b2tlbnNcIiB0YXJnZXQ9XCJfYmxhbmtcIj5WMkVYIFRva2VuPC9hPu+8mjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIGNsYXNzPVwic2xcIiBuYW1lPVwidjJleFRva2VuXCIgdmFsdWU9XCIke0pTT04ucGFyc2UoU3RvcmUuZ2V0KHRoaXMuS2V5cy52MmV4VG9rZW4pKS52YWx1ZX1cIj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZWxsX29wc1wiPlxyXG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJzYXZlLW9wdGlvbnNcIiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJzdXBlciBub3JtYWwgYnV0dG9uXCIgdmFsdWU9XCJTYXZlXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICAgIGApO1xyXG5cclxuICAgICAgJGJvZHkub24oJ2NsaWNrJywgc2VsZWN0b3Iuc2F2ZU9wdGlvbnNCdG4sICgpID0+IHtcclxuICAgICAgICBjb25zdCB0b2tlbiA9ICQoc2VsZWN0b3IudjJleFRva2VuSW5wdXQpLnZhbCgpO1xyXG4gICAgICAgIFN0b3JlLnNldCh0aGlzLktleXMudjJleFRva2VuLCBKU09OLnN0cmluZ2lmeSh7Li4uSlNPTi5wYXJzZShTdG9yZS5nZXQodGhpcy5LZXlzLnYyZXhUb2tlbikpLCAuLi57dmFsdWU6IHRva2VufX0pKTtcclxuICAgICAgICBsYXllci5tc2coJ+S/neWtmOaIkOWKnycpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiZXhwb3J0IGVudW0gSHR0cERhdGFUeXBlIHtcclxuICBKU09OID0gXCJKU09OXCJcclxufVxyXG4iLCJpbXBvcnQge0h0dHBEYXRhVHlwZX0gZnJvbSBcIi4vZW51bS9IdHRwRGF0YVR5cGVcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlcXVlc3Qge1xyXG5cclxuICBzdGF0aWMgYXN5bmMgZ2V0KG9wdGlvbjogeyB1cmw6IHN0cmluZywgZGF0YVR5cGU/OiBIdHRwRGF0YVR5cGUsIHN5bmNocm9ub3VzPzogYm9vbGVhbiwgaGVhZGVycz86IHt9LCBvbmxvYWQ/OiBGdW5jdGlvbiB9KTogUHJvbWlzZTxhbnk+IHtcclxuICAgIG9wdGlvblsnbWV0aG9kJ10gPSAnR0VUJztcclxuXHJcbiAgICAvLyDlkIzmraXml7bov5Tlm54gUHJvbWlzZVxyXG4gICAgaWYgKG9wdGlvbi5zeW5jaHJvbm91cykge1xyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgIEdNX3htbGh0dHBSZXF1ZXN0KHtcclxuICAgICAgICAgIC4uLm9wdGlvbixcclxuICAgICAgICAgIG9ubG9hZDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIHJlc29sdmUob3B0aW9uLmRhdGFUeXBlID09PSBIdHRwRGF0YVR5cGUuSlNPTiA/IEpTT04ucGFyc2UocmVzcG9uc2UucmVzcG9uc2VUZXh0KSA6IHJlc3BvbnNlLnJlc3BvbnNlVGV4dCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb25lcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBvbmxvYWQxID0gZnVuY3Rpb24gKGRldGFpbHMpIHtcclxuICAgICAgICBsZXQgcmVzcG9uc2U7XHJcbiAgICAgICAgaWYgKG9wdGlvbi5kYXRhVHlwZSA9PT0gSHR0cERhdGFUeXBlLkpTT04pIHtcclxuICAgICAgICAgIHJlc3BvbnNlID0gSlNPTi5wYXJzZShkZXRhaWxzLnJlc3BvbnNlVGV4dCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc3BvbnNlID0gZGV0YWlscy5yZXNwb25zZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3B0aW9uLm9ubG9hZChyZXNwb25zZSk7XHJcbiAgICAgIH1cclxuICAgICAgR01feG1saHR0cFJlcXVlc3Qoey4uLm9wdGlvbiwgb25sb2FkOiBvbmxvYWQxfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8qKlxyXG4gKiDojrflj5bohJrmnKzkv6Hmga9cclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluZm8ge1xyXG5cclxuICBzdGF0aWMgZ2V0KCkge1xyXG4gICAgcmV0dXJuIEdNX2luZm8uc2NyaXB0O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldE5hbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXQoKS5uYW1lO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldFZlcnNpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXQoKS52ZXJzaW9uO1xyXG4gIH1cclxufVxyXG4iLCJpbXBvcnQgUmVxdWVzdCBmcm9tIFwiQHV0aWxzL2dtL1JlcXVlc3RcIjtcclxuaW1wb3J0IHtIdHRwRGF0YVR5cGV9IGZyb20gXCJAdXRpbHMvZ20vZW51bS9IdHRwRGF0YVR5cGVcIjtcclxuaW1wb3J0IEluZm8gZnJvbSBcIkB1dGlscy9nbS9JbmZvXCI7XHJcbmltcG9ydCBTdG9yZSBmcm9tIFwiQHV0aWxzL2dtL1N0b3JlXCI7XHJcbmltcG9ydCBPcHRpb25zIGZyb20gXCIuLi9PcHRpb25zXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWMmV4IHtcclxuXHJcbiAgc3RhdGljIEJBU0VfVVJMID0gJ2h0dHBzOi8vd3d3LnYyZXguY29tL2FwaS92Mi8nO1xyXG5cclxuICAvKipcclxuICAgKiDmo4Dmn6UgVG9rZW4g5piv5ZCm5pyJ5pWIXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBhc3luYyBjaGVja1Rva2VuKCkge1xyXG4gICAgY29uc3QgdG9rZW4gPSBKU09OLnBhcnNlKFN0b3JlLmdldChPcHRpb25zLktleXMudjJleFRva2VuKSkudmFsdWU7XHJcbiAgICBpZiAoIXRva2VuICYmIGxvY2F0aW9uLmhyZWYuaW5kZXhPZigndjJleC5jb20vc2V0dGluZ3MnKSA9PSAtMSkge1xyXG4gICAgICBsYXllci5tc2coJ+ivt+WFiOWcqOKAnOiEmuacrOiuvue9ruKAneS4reWhq+WGmSBUb2tlbu+8gScsIHtpY29uOiA0LCBvZmZzZXQ6ICdyYid9LCAoKSA9PiB7XHJcbiAgICAgICAgd2luZG93Lm9wZW4oJ2h0dHBzOi8vd3d3LnYyZXguY29tL3NldHRpbmdzJywgJ19ibGFuaycpO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUmVxdWVzdC5nZXQoe1xyXG4gICAgICB1cmw6IHRoaXMuQkFTRV9VUkwgKyAndG9rZW4nLFxyXG4gICAgICBkYXRhVHlwZTogSHR0cERhdGFUeXBlLkpTT04sXHJcbiAgICAgIHN5bmNocm9ub3VzOiB0cnVlLFxyXG4gICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyB0b2tlblxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoIXJlc3VsdFsnc3VjY2VzcyddKSB7XHJcbiAgICAgIGxheWVyLm1zZyhJbmZvLmdldE5hbWUoKSArIFwi77yaXCIgKyByZXN1bHRbJ21lc3NhZ2UnXSwge2ljb246IDIsIG9mZnNldDogJ3JiJywgdGltZTogNTAwMH0pO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiOt+WPluS4u+mimOWbnuWkjVxyXG4gICAqIEBwYXJhbSB0b3BpY0lkIOS4u+mimCBJRFxyXG4gICAqIEBwYXJhbSBwYWdlIOmhteeggVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgZ2V0UmVwbGllcyh0b3BpY0lkOiBudW1iZXIsIHBhZ2U/OiBudW1iZXIpOiBQcm9taXNlPHsgaHRtbDogc3RyaW5nOyBpZDogbnVtYmVyLCBjcmVhdGVkOiBudW1iZXIsIGNvbnRlbnQ6IHN0cmluZywgY29udGVudF9yZW5kZXJlZDogc3RyaW5nLCBtZW1iZXI6IHsgaWQ6IG51bWJlciwgdXNlcm5hbWU6IHN0cmluZywgY3JlYXRlZDogbnVtYmVyLCB1cmw6IHN0cmluZywgYXZhdGFyOiBzdHJpbmcsIGJpbzogc3RyaW5nLCBnaXRodWI6IHN0cmluZywgd2Vic2l0ZTogc3RyaW5nIH0gfVtdPiB7XHJcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBSZXF1ZXN0LmdldCh7XHJcbiAgICAgIHVybDogdGhpcy5CQVNFX1VSTCArICd0b3BpY3MvJyArIHRvcGljSWQgKyAnL3JlcGxpZXMnICsgKHBhZ2UgPyAnP3A9JyArIHBhZ2UgOiAnJyksXHJcbiAgICAgIGRhdGFUeXBlOiBIdHRwRGF0YVR5cGUuSlNPTixcclxuICAgICAgc3luY2hyb25vdXM6IHRydWUsXHJcbiAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIEpTT04ucGFyc2UoU3RvcmUuZ2V0KE9wdGlvbnMuS2V5cy52MmV4VG9rZW4pKS52YWx1ZVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoIXJlc3VsdFsnc3VjY2VzcyddKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihJbmZvLmdldE5hbWUoKSArIFwi77yaXCIgKyByZXN1bHRbJ21lc3NhZ2UnXSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHRbJ3Jlc3VsdCddO1xyXG4gIH1cclxufVxyXG4iLCJpbXBvcnQgVjJleCBmcm9tIFwiLi9hcGkvVjJleFwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVwbGF5IHtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgd2luYm94OiBhbnk7XHJcblxyXG4gIHN0YXRpYyBhc3luYyBydW4oKSB7XHJcbiAgICBpZiAobG9jYXRpb24uaHJlZi5pbmRleE9mKCd2MmV4LmNvbS90LycpID09PSAtMSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5qOA5p+lIFRva2VuXHJcbiAgICBpZiAoIWF3YWl0IFYyZXguY2hlY2tUb2tlbigpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdFxyXG4gICAgICBzZWxlY3RvciA9IHtcclxuICAgICAgICAvLyDlm57lpI3liJfooahcclxuICAgICAgICByZXBsaWVzQm94OiAnI01haW4gLmJveDplcSgxKScsXHJcbiAgICAgICAgLy8g5omA5pyJ5Zue5aSNXHJcbiAgICAgICAgYWxsUmVwbGllczogJyNNYWluIC5ib3g6ZXEoMSkgLmNlbGw6bm90KDplcSgwKSknLFxyXG4gICAgICAgIC8vIOWbnuWkjeaVsFxyXG4gICAgICAgIHJlcGxpZXNOdW1iZXI6ICcjTWFpbiAuYm94OmVxKDEpIC5ncmF5JyxcclxuICAgICAgICAvLyBPUCDlkI1cclxuICAgICAgICBvcFVzZXJOYW1lOiAnLmhlYWRlciAuZ3JheSBhOmVxKDApJyxcclxuICAgICAgICAvLyBAIOmTvuaOpVxyXG4gICAgICAgIGF0TGluazogJy5hdC1saW5rJyxcclxuICAgICAgICAvLyDlj7PkvqflhoXlrrlcclxuICAgICAgICB0YVNheTogJy50YS1zYXknLFxyXG4gICAgICB9LFxyXG4gICAgICAkYm9keSA9ICQoZG9jdW1lbnQuYm9keSksICRoZWFkID0gJChkb2N1bWVudC5oZWFkKSxcclxuICAgICAgJGFsbFJlcGxpZXMgPSAkKHNlbGVjdG9yLmFsbFJlcGxpZXMpLFxyXG4gICAgICAkcmVwbGllc051bWJlciA9ICQoc2VsZWN0b3IucmVwbGllc051bWJlciksXHJcbiAgICAgICRvcFVzZXJOYW1lID0gJChzZWxlY3Rvci5vcFVzZXJOYW1lKTtcclxuXHJcbiAgICAvLyDmt7vliqDlvLnnqpfmoLflvI9cclxuICAgICRoZWFkLmFwcGVuZChgPHN0eWxlPlxyXG4gICAgICAud2luYm94JHtzZWxlY3Rvci50YVNheX0ge1xyXG4gICAgICAgIGJvcmRlci1zaGFkb3c6IDAgMTRweCAxMnB4IHJnYigwIDAgMCAvIDI1JSksIDAgMTBweCAxMHB4IHJnYigwIDAgMCAvIDIyJSkgIWltcG9ydGFudDtcclxuICAgICAgfVxyXG4gICAgICAud2luYm94JHtzZWxlY3Rvci50YVNheX0gLndiLWRyYWcge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlMmUyZTI7XHJcbiAgICAgICAgY29sb3I6ICM2NjY7XHJcbiAgICAgIH1cclxuICAgIDwvc3R5bGU+YCk7XHJcblxyXG4gICAgLy8g6ZqQ6JeP5Y6f5Zue5aSNXHJcbiAgICAkYWxsUmVwbGllcy5oaWRlKCk7XHJcbiAgICAvLyDojrflj5blm57lpI3mlbBcclxuICAgIGNvbnN0IHJlcGxpZXNOdW1iZXIgPSAkcmVwbGllc051bWJlci50ZXh0KCkuc3Vic3RyaW5nKDAsICRyZXBsaWVzTnVtYmVyLnRleHQoKS5pbmRleE9mKCfmnaEnKSk7XHJcbiAgICAvLyDojrflj5YgT1Ag5ZCNXHJcbiAgICBjb25zdCBvcFVzZXJOYW1lID0gJG9wVXNlck5hbWUudGV4dCgpO1xyXG4gICAgLy8g6I635Y+W5omA5pyJ5Zue5aSNXHJcbiAgICBjb25zdCByZXBsaWVzID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBNYXRoLmNlaWwoTnVtYmVyKHJlcGxpZXNOdW1iZXIpIC8gMjApOyBpKyspIHtcclxuICAgICAgcmVwbGllcy5wdXNoKC4uLmF3YWl0IFYyZXguZ2V0UmVwbGllcyh0b3BpY0lkLCBpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIEpzU3RvcmU7KCgpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIGU9e2Q6KHQsbik9Pntmb3IodmFyIG8gaW4gbillLm8obixvKSYmIWUubyh0LG8pJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxvLHtlbnVtZXJhYmxlOiEwLGdldDpuW29dfSl9LG86KGUsdCk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpLHI6ZT0+e1widW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZTpcIk1vZHVsZVwifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9fSx0PXt9O2Uucih0KSxlLmQodCx7QVBJOigpPT5yLENPTk5FQ1RJT05fU1RBVFVTOigpPT5wLENvbm5lY3Rpb246KCk9PmIsREFUQV9UWVBFOigpPT5vLEVSUk9SX1RZUEU6KCk9PmwsRVZFTlQ6KCk9PmksSURCX01PREU6KCk9PnUsT0NDVVJFTkNFOigpPT5hLFFVRVJZX09QVElPTjooKT0+cyxXT1JLRVJfU1RBVFVTOigpPT5uLGZvck9iajooKT0+cSxwcm9taXNlOigpPT5kLHByb21pc2VBbGw6KCk9PnYscHJvbWlzZVJlc29sdmU6KCk9PmZ9KTt2YXIgbixvLHIsaSxzLHUsYSxwLGM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy50eXBlPWUsdGhpcy5faW5mbz10LHRoaXMubWVzc2FnZT10aGlzLmdldE1zZygpfXJldHVybiBlLnByb3RvdHlwZS50aHJvdz1mdW5jdGlvbigpe3Rocm93IHRoaXN9LGUucHJvdG90eXBlLmxvZz1mdW5jdGlvbihlKXt0aGlzLnN0YXR1cyYmY29uc29sZS5sb2coZSl9LGUucHJvdG90eXBlLmxvZ0Vycm9yPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcih0aGlzLmdldCgpKX0sZS5wcm90b3R5cGUubG9nV2FybmluZz1mdW5jdGlvbigpe2NvbnNvbGUud2Fybih0aGlzLmdldCgpKX0sZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJue21lc3NhZ2U6dGhpcy5tZXNzYWdlLHR5cGU6dGhpcy50eXBlfX0sZS5wcm90b3R5cGUuZ2V0TXNnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHlwZSx0aGlzLm1lc3NhZ2V9LGV9KCksbD17SW52YWxpZFVwZGF0ZUNvbHVtbjpcImludmFsaWRfdXBkYXRlX2NvbHVtblwiLFVuZGVmaW5lZENvbHVtbjpcInVuZGVmaW5lZF9jb2x1bW5cIixVbmRlZmluZWRWYWx1ZTpcInVuZGVmaW5lZF92YWx1ZVwiLFVuZGVmaW5lZENvbHVtbk5hbWU6XCJ1bmRlZmluZWRfY29sdW1uX25hbWVcIixVbmRlZmluZWREYk5hbWU6XCJ1bmRlZmluZWRfZGF0YWJhc2VfbmFtZVwiLFVuZGVmaW5lZENvbHVtblZhbHVlOlwidW5kZWZpbmVkX2NvbHVtbl92YWx1ZVwiLE5vdEFycmF5Olwibm90X2FycmF5XCIsTm9WYWx1ZVN1cHBsaWVkOlwibm9fdmFsdWVfc3VwcGxpZWRcIixDb2x1bW5Ob3RFeGlzdDpcImNvbHVtbl9ub3RfZXhpc3RcIixOb0luZGV4Rm91bmQ6XCJub19pbmRleF9mb3VuZFwiLEludmFsaWRPcDpcImludmFsaWRfb3BlcmF0b3JcIixOdWxsVmFsdWU6XCJudWxsX3ZhbHVlXCIsV3JvbmdEYXRhVHlwZTpcIndyb25nX2RhdGFfdHlwZVwiLFRhYmxlTm90RXhpc3Q6XCJ0YWJsZV9ub3RfZXhpc3RcIixEYk5vdEV4aXN0OlwiZGJfbm90X2V4aXN0XCIsQ29ubmVjdGlvbkFib3J0ZWQ6XCJjb25uZWN0aW9uX2Fib3J0ZWRcIixDb25uZWN0aW9uQ2xvc2VkOlwiY29ubmVjdGlvbl9jbG9zZWRcIixOb3RPYmplY3Q6XCJub3Rfb2JqZWN0XCIsSW52YWxpZENvbmZpZzpcImludmFsaWRfY29uZmlnXCIsRGJCbG9ja2VkOlwiRGJfYmxvY2tlZFwiLEluZGV4ZWREYk5vdFN1cHBvcnRlZDpcImluZGV4ZWRkYl9ub3Rfc3VwcG9ydGVkXCIsTnVsbFZhbHVlSW5XaGVyZTpcIm51bGxfdmFsdWVfaW5fd2hlcmVcIixJbnZhbGlkSm9pblF1ZXJ5OlwiaW52YWxpZF9qb2luX3F1ZXJ5XCIsSW52YWxpZFF1ZXJ5OlwiaW52YWxpZF9xdWVyeVwiLEltcG9ydFNjcmlwdHNGYWlsZWQ6XCJpbXBvcnRfc2NyaXB0c19mYWlsZWRcIixNZXRob2ROb3RFeGlzdDpcIm1ldGhvZF9ub3RfZXhpc3RcIixVbmtub3duOlwidW5rbm93blwiLEludmFsaWRNaWRkbGV3YXJlOlwiaW52YWxpZF9taWRkbGV3YXJlXCJ9OyhmdW5jdGlvbihlKXtlLlJlZ2lzdGVyZWQ9XCJyZWdpc3RlcmRcIixlLkZhaWxlZD1cImZhaWxlZFwiLGUuTm90U3RhcnRlZD1cIm5vdF9zdGFydGVkXCJ9KShufHwobj17fSkpLGZ1bmN0aW9uKGUpe2UuU3RyaW5nPVwic3RyaW5nXCIsZS5PYmplY3Q9XCJvYmplY3RcIixlLkFycmF5PVwiYXJyYXlcIixlLk51bWJlcj1cIm51bWJlclwiLGUuQm9vbGVhbj1cImJvb2xlYW5cIixlLk51bGw9XCJudWxsXCIsZS5EYXRlVGltZT1cImRhdGVfdGltZVwifShvfHwobz17fSkpLGZ1bmN0aW9uKGUpe2UuSW5pdERiPVwiaW5pdF9kYlwiLGUuTWFwR2V0PVwibWFwX2dldFwiLGUuTWFwU2V0PVwibWFwX3NldFwiLGUuTWFwSGFzPVwibWFwX2hhc1wiLGUuTWFwRGVsZXRlPVwibWFwX2RlbGV0ZVwiLGUuU2VsZWN0PVwic2VsZWN0XCIsZS5JbnNlcnQ9XCJpbnNlcnRcIixlLlVwZGF0ZT1cInVwZGF0ZVwiLGUuUmVtb3ZlPVwicmVtb3ZlXCIsZS5PcGVuRGI9XCJvcGVuX2RiXCIsZS5DbGVhcj1cImNsZWFyXCIsZS5Ecm9wRGI9XCJkcm9wX2RiXCIsZS5Db3VudD1cImNvdW50XCIsZS5DaGFuZ2VMb2dTdGF0dXM9XCJjaGFuZ2VfbG9nX3N0YXR1c1wiLGUuVGVybWluYXRlPVwidGVybWluYXRlXCIsZS5UcmFuc2FjdGlvbj1cInRyYW5zYWN0aW9uXCIsZS5DbG9zZURiPVwiY2xvc2VfZGJcIixlLlVuaW9uPVwidW5pb25cIixlLkludGVyc2VjdD1cImludGVyc2VjdFwiLGUuSW1wb3J0U2NyaXB0cz1cImltcG9ydF9zY3JpcHRzXCIsZS5NaWRkbGV3YXJlPVwibWlkZGxld2FyZVwifShyfHwocj17fSkpLGZ1bmN0aW9uKGUpe2UuUmVxdWVzdFF1ZXVlRW1wdHk9XCJyZXF1ZXN0UXVldWVFbXB0eVwiLGUuUmVxdWVzdFF1ZXVlRmlsbGVkPVwicmVxdWVzdFF1ZXVlRmlsbGVkXCIsZS5VcGdyYWRlPVwidXBncmFkZVwiLGUuQ3JlYXRlPVwiY3JlYXRlXCIsZS5PcGVuPVwib3BlblwifShpfHwoaT17fSkpLGZ1bmN0aW9uKGUpe2UuV2hlcmU9XCJ3aGVyZVwiLGUuTGlrZT1cImxpa2VcIixlLlJlZ2V4PVwicmVnZXhcIixlLkluPVwiaW5cIixlLkVxdWFsPVwiPVwiLGUuQmV0d2Vlbj1cIi1cIixlLkdyZWF0ZXJUaGFuPVwiPlwiLGUuTGVzc1RoYW49XCI8XCIsZS5HcmVhdGVyVGhhbkVxdWFsVG89XCI+PVwiLGUuTGVzc1RoYW5FcXVhbFRvPVwiPD1cIixlLk5vdEVxdWFsVG89XCIhPVwiLGUuQWdncmVnYXRlPVwiYWdncmVnYXRlXCIsZS5NYXg9XCJtYXhcIixlLk1pbj1cIm1pblwiLGUuQXZnPVwiYXZnXCIsZS5Db3VudD1cImNvdW50XCIsZS5TdW09XCJzdW1cIixlLkxpc3Q9XCJsaXN0XCIsZS5Pcj1cIm9yXCIsZS5Ta2lwPVwic2tpcFwiLGUuTGltaXQ9XCJsaW1pdFwiLGUuQW5kPVwiYW5kXCIsZS5JZ25vcmVDYXNlPVwiaWdub3JlQ2FzZVwiLGUuVGhlbj1cInRoZW5cIn0oc3x8KHM9e30pKSxmdW5jdGlvbihlKXtlLlJlYWRPbmx5PVwicmVhZG9ubHlcIixlLlJlYWRXcml0ZT1cInJlYWR3cml0ZVwifSh1fHwodT17fSkpLGZ1bmN0aW9uKGUpe2UuRmlyc3Q9XCJmXCIsZS5MYXN0PVwibFwiLGUuQW55PVwiYVwifShhfHwoYT17fSkpLGZ1bmN0aW9uKGUpe2UuQ29ubmVjdGVkPVwiY29ubmVjdGVkXCIsZS5DbG9zZWQ9XCJjbG9zZWRcIixlLk5vdFN0YXJ0ZWQ9XCJub3Rfc3RhcnRlZFwiLGUuVW5hYmxlVG9TdGFydD1cInVuYWJsZV90b19zdGFydFwiLGUuQ2xvc2VkQnlKc1N0b3JlPVwiY2xvc2VkX2J5X2pzc3RvcmVcIn0ocHx8KHA9e30pKTt2YXIgaCxkPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZShlKX0sZj1mdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfSxfPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLl9ldmVudHM9e30sdGhpcy5fY3R4PWV9cmV0dXJuIGUucHJvdG90eXBlLm9uPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PXRoaXMuX2V2ZW50c1tlXSYmKHRoaXMuX2V2ZW50c1tlXT1bXSksdGhpcy5fZXZlbnRzW2VdLnB1c2godCksdGhpc30sZS5wcm90b3R5cGUub2ZmPWZ1bmN0aW9uKGUsdCl7aWYodGhpcy5fZXZlbnRzW2VdKWlmKHQpe3ZhciBuPXRoaXMuX2V2ZW50c1tlXS5pbmRleE9mKHQpO3RoaXMuX2V2ZW50c1tlXS5zcGxpY2UobiwxKX1lbHNlIHRoaXMuX2V2ZW50c1tlXT1bXX0sZS5wcm90b3R5cGUuZW1pdD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcyxuPVtdLG89MTtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKW5bby0xXT1hcmd1bWVudHNbb107dmFyIHI9dGhpcy5fZXZlbnRzW2VdfHxbXSxpPTAscz1yLmxlbmd0aCx1PVtdO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7dmFyIG89ZnVuY3Rpb24oKXtpPHM/ZnVuY3Rpb24oKXt2YXIgZT1yW2krK107aWYoZSl7dmFyIG89ZS5jYWxsLmFwcGx5KGUsZnVuY3Rpb24oZSx0LG4pe2lmKG58fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgbyxyPTAsaT10Lmxlbmd0aDtyPGk7cisrKSFvJiZyIGluIHR8fChvfHwobz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LDAscikpLG9bcl09dFtyXSk7cmV0dXJuIGUuY29uY2F0KG98fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpKX0oW3QuX2N0eF0sbiwhMSkpO3JldHVybiBvJiZvLnRoZW4/bzpQcm9taXNlLnJlc29sdmUobyl9fSgpLnRoZW4oKGZ1bmN0aW9uKGUpe3UucHVzaChlKSxvKCl9KSk6ZSh1KX07bygpfSkpfSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5fZXZlbnRzPW51bGwsdGhpcy5fY3R4PW51bGx9LGV9KCkseT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5pc0Nvbk9wZW5lZF89ITEsdGhpcy5pc0RiSWRsZV89ITAsdGhpcy5yZXF1ZXN0UXVldWVfPVtdLHRoaXMuaXNDb2RlRXhlY3V0aW5nXz0hMSx0aGlzLmluYWN0aXZpdHlUaW1lcl89LTFlMyx0aGlzLm1pZGRsZXdhcmVzPVtdLHRoaXMuZXZlbnRCdXNfPW5ldyBfKHRoaXMpLHRoaXMud2hpdGVMaXN0QXBpXz1bci5Jbml0RGIsci5PcGVuRGIsci5NYXBHZXQsci5NYXBTZXQsci5NYXBIYXMsci5NYXBEZWxldGUsci5DaGFuZ2VMb2dTdGF0dXMsci5UZXJtaW5hdGUsci5Ecm9wRGJdLHRoaXMuaXNXb3JrZXI9ITAsdGhpcy5sb2dnZXI9bmV3IGMobnVsbCksZT8odGhpcy53b3JrZXJfPWUsdGhpcy53b3JrZXJfLm9ubWVzc2FnZT10aGlzLm9uTWVzc2FnZUZyb21Xb3JrZXJfLmJpbmQodGhpcykpOih0aGlzLmlzV29ya2VyPSExLHRoaXMuaW5pdFF1ZXJ5TWFuYWdlcl8oKSl9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcImpzc3RvcmVXb3JrZXJcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHdvcmtlcnx8c2VsZi5Kc1N0b3JlV29ya2VyfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmluaXRRdWVyeU1hbmFnZXJfPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5qc3N0b3JlV29ya2VyO2UmJih0aGlzLnF1ZXJ5TWFuYWdlcj1uZXcgZS5RdWVyeU1hbmFnZXIodGhpcy5wcm9jZXNzRmluaXNoZWRRdWVyeV8uYmluZCh0aGlzKSkpfSxlLnByb3RvdHlwZS5vbk1lc3NhZ2VGcm9tV29ya2VyXz1mdW5jdGlvbihlKXt0aGlzLnByb2Nlc3NGaW5pc2hlZFF1ZXJ5XyhlLmRhdGEpfSxlLnByb3RvdHlwZS5wcm9jZXNzRmluaXNoZWRRdWVyeV89ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5yZXF1ZXN0UXVldWVfLnNoaWZ0KCk7aWYodCl7aWYodGhpcy5sb2dnZXIubG9nKFwicmVxdWVzdCBcIi5jb25jYXQodC5uYW1lLFwiIGZpbmlzaGVkXCIpKSxlLmVycm9yKXQub25FcnJvcihlLmVycm9yKTtlbHNle3N3aXRjaCh0Lm5hbWUpe2Nhc2Ugci5PcGVuRGI6Y2FzZSByLkluaXREYjp0aGlzLmlzQ29uT3BlbmVkXz0hMDticmVhaztjYXNlIHIuVGVybWluYXRlOnRoaXMuaXNDb25PcGVuZWRfPSExLCEwPT09dGhpcy5pc1dvcmtlciYmdGhpcy53b3JrZXJfLnRlcm1pbmF0ZSgpO2Nhc2Ugci5Ecm9wRGI6dGhpcy5pc0Nvbk9wZW5lZF89ITEsdGhpcy5yZXF1ZXN0UXVldWVfPVtdLHRoaXMuaXNEYklkbGVfPSEwO2JyZWFrO2Nhc2Ugci5DbG9zZURiOnRoaXMuaXNEYklkbGVfPSEwLHRoaXMuZXZlbnRCdXNfLmVtaXQoaS5SZXF1ZXN0UXVldWVFbXB0eSxbXSksdGhpcy5yZXF1ZXN0UXVldWVfLmxlbmd0aD4wJiZ0aGlzLm9wZW5EYl8oITEpfXQub25TdWNjZXNzKGUucmVzdWx0KX10aGlzLmlzQ29kZUV4ZWN1dGluZ189ITEsdGhpcy5leGVjdXRlUXJ5XygpfX0sZS5wcm90b3R5cGUub3BlbkRiXz1mdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT0hMCk7dmFyIHQ9e25hbWU6ci5PcGVuRGIscXVlcnk6e25hbWU6dGhpcy5kYXRhYmFzZS5uYW1lLHZlcnNpb246dGhpcy5kYXRhYmFzZS52ZXJzaW9ufSxvblN1Y2Nlc3M6ZnVuY3Rpb24oKXt9LG9uRXJyb3I6ZnVuY3Rpb24oZSl7Y29uc29sZS5lcnJvcihlKX19O2U/dGhpcy5wcmNvZXNzRXhlY3V0aW9uT2ZRcnlfKHQsMCk6dGhpcy5yZXF1ZXN0UXVldWVfLnNwbGljZSgwLDAsdCl9LGUucHJvdG90eXBlLmV4ZWN1dGVNaWRkbGV3YXJlXz1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiBkKChmdW5jdGlvbihuKXt2YXIgbz0wLHI9dC5taWRkbGV3YXJlcy5sZW5ndGgtMSxpPWZ1bmN0aW9uKCl7aWYobzw9cil7dmFyIHM9dC5taWRkbGV3YXJlc1tvKytdKGUpO3MmJnMudGhlbnx8KHM9ZihzKSkscy50aGVuKChmdW5jdGlvbihlKXtpKCl9KSl9ZWxzZSBuKCl9O2koKX0pKX0sZS5wcm90b3R5cGUuY2FsbFJlc3VsdE1pZGRsZXdhcmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZCgoZnVuY3Rpb24obil7dmFyIG89MCxyPWUubGVuZ3RoLTEsaT1mdW5jdGlvbigpe2lmKG88PXIpe3ZhciBzPWVbbysrXSh0KTtzLnRoZW58fChzPWYocykpLHMudGhlbigoZnVuY3Rpb24oZSl7dD1lLGkoKX0pKX1lbHNlIG4odCl9O2koKX0pKX0sZS5wcm90b3R5cGUucHVzaEFwaT1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24obixvKXt2YXIgcz1bXTtlLm9uUmVzdWx0PWZ1bmN0aW9uKGUpe3MucHVzaCgoZnVuY3Rpb24odCl7cmV0dXJuIGUodCl9KSl9LHQuZXhlY3V0ZU1pZGRsZXdhcmVfKGUpLnRoZW4oKGZ1bmN0aW9uKCl7ZS5vblN1Y2Nlc3M9ZnVuY3Rpb24obyl7dC5jYWxsUmVzdWx0TWlkZGxld2FyZShzLG8pLnRoZW4oKGZ1bmN0aW9uKGUpe24oZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKHQpe2Uub25FcnJvcih0KX0pKX0sZS5vbkVycm9yPWZ1bmN0aW9uKGUpe3M9W10sbyhlKX0sMD09PXQucmVxdWVzdFF1ZXVlXy5sZW5ndGgmJih0LmV2ZW50QnVzXy5lbWl0KGkuUmVxdWVzdFF1ZXVlRmlsbGVkLFtdKSx0LmlzRGJJZGxlXyYmdC5pc0Nvbk9wZW5lZF8mJihbci5Jbml0RGIsci5DbG9zZURiLHIuRHJvcERiLHIuT3BlbkRiLHIuVGVybWluYXRlXS5pbmRleE9mKGUubmFtZSk+PTB8fHQub3BlbkRiXygpKSxjbGVhclRpbWVvdXQodC5pbmFjdGl2aXR5VGltZXJfKSksdC5wcmNvZXNzRXhlY3V0aW9uT2ZRcnlfKGUpfSkpLmNhdGNoKG8pfSkpfSxlLnByb3RvdHlwZS5wcmNvZXNzRXhlY3V0aW9uT2ZRcnlfPWZ1bmN0aW9uKGUsdCl7dGhpcy5pc0RiSWRsZV89ITEsbnVsbCE9dD90aGlzLnJlcXVlc3RRdWV1ZV8uc3BsaWNlKHQsMCxlKTp0aGlzLnJlcXVlc3RRdWV1ZV8ucHVzaChlKSx0aGlzLmxvZ2dlci5sb2coXCJyZXF1ZXN0IHB1c2hlZDogXCIrZS5uYW1lKSx0aGlzLmV4ZWN1dGVRcnlfKCl9LGUucHJvdG90eXBlLmV4ZWN1dGVRcnlfPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucmVxdWVzdFF1ZXVlXy5sZW5ndGg7aWYoIXRoaXMuaXNDb2RlRXhlY3V0aW5nXyYmdD4wKXtpZighMD09PXRoaXMuaXNDb25PcGVuZWRfKXJldHVybiB2b2lkIHRoaXMuc2VuZFJlcXVlc3RUb1dvcmtlcl8odGhpcy5yZXF1ZXN0UXVldWVfWzBdKTt2YXIgbj10aGlzLnJlcXVlc3RRdWV1ZV8uZmluZEluZGV4KChmdW5jdGlvbih0KXtyZXR1cm4gZS53aGl0ZUxpc3RBcGlfLmluZGV4T2YodC5uYW1lKT49MH0pKTtuPj0wJiYodGhpcy5yZXF1ZXN0UXVldWVfLnNwbGljZSgwLDAsdGhpcy5yZXF1ZXN0UXVldWVfLnNwbGljZShuLDEpWzBdKSx0aGlzLnNlbmRSZXF1ZXN0VG9Xb3JrZXJfKHRoaXMucmVxdWVzdFF1ZXVlX1swXSkpfWVsc2UgMD09PXQmJiExPT09dGhpcy5pc0RiSWRsZV8mJnRoaXMuaXNDb25PcGVuZWRfJiYodGhpcy5pbmFjdGl2aXR5VGltZXJfPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZS5wcmNvZXNzRXhlY3V0aW9uT2ZRcnlfKHtuYW1lOnIuQ2xvc2VEYixvblN1Y2Nlc3M6ZnVuY3Rpb24oKXt9LG9uRXJyb3I6ZnVuY3Rpb24oZSl7Y29uc29sZS5lcnJvcihlKX19KX0pLDEwMCkpfSxlLnByb3RvdHlwZS5zZW5kUmVxdWVzdFRvV29ya2VyXz1mdW5jdGlvbihlKXt0aGlzLmlzQ29kZUV4ZWN1dGluZ189ITAsdGhpcy5sb2dnZXIubG9nKFwicmVxdWVzdCBleGVjdXRpbmc6IFwiK2UubmFtZSk7dmFyIHQ9e25hbWU6ZS5uYW1lLHF1ZXJ5OmUucXVlcnl9OyEwPT09dGhpcy5pc1dvcmtlcj90aGlzLndvcmtlcl8ucG9zdE1lc3NhZ2UodCk6dGhpcy5xdWVyeU1hbmFnZXIucnVuKHQpfSxlfSgpLG09ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuY29uPWV9cmV0dXJuIGUucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jb24ucHVzaEFwaSh7bmFtZTpyLk1hcEdldCxxdWVyeTplfSl9LGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jb24ucHVzaEFwaSh7bmFtZTpyLk1hcEhhcyxxdWVyeTplfSl9LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmNvbi5wdXNoQXBpKHtuYW1lOnIuTWFwU2V0LHF1ZXJ5OntrZXk6ZSx2YWx1ZTp0fX0pfSxlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY29uLnB1c2hBcGkoe25hbWU6ci5NYXBEZWxldGUscXVlcnk6ZX0pfSxlfSgpLGc9KGg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKSYmKGVbbl09dFtuXSl9LGgoZSx0KX0sZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIitTdHJpbmcodCkrXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfWgoZSx0KSxlLnByb3RvdHlwZT1udWxsPT09dD9PYmplY3QuY3JlYXRlKHQpOihuLnByb3RvdHlwZT10LnByb3RvdHlwZSxuZXcgbil9KSxiPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCl7dmFyIG49ZS5jYWxsKHRoaXMsdCl8fHRoaXM7cmV0dXJuIG4uTWFwPW5ldyBtKG4pLG59cmV0dXJuIGcodCxlKSx0LnByb3RvdHlwZS5pbml0RGI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5kYXRhYmFzZT1lLHRoaXMucHVzaEFwaSh7bmFtZTpyLkluaXREYixxdWVyeTplfSkudGhlbigoZnVuY3Rpb24oZSl7dmFyIG4sbz1lLmRhdGFiYXNlO3JldHVybiBlLmlzQ3JlYXRlZCYmKG49ZS5vbGRWZXJzaW9uP3QuZXZlbnRCdXNfLmVtaXQoaS5VcGdyYWRlLG8sZS5vbGRWZXJzaW9uLGUubmV3VmVyc2lvbik6dC5ldmVudEJ1c18uZW1pdChpLkNyZWF0ZSxvKSksKG58fGYoKSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIHQuZXZlbnRCdXNfLmVtaXQoaS5PcGVuLG8pfSkpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBlLmlzQ3JlYXRlZH0pKX0pKX0sdC5wcm90b3R5cGUuZHJvcERiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaEFwaSh7bmFtZTpyLkRyb3BEYn0pfSx0LnByb3RvdHlwZS5zZWxlY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucHVzaEFwaSh7bmFtZTpyLlNlbGVjdCxxdWVyeTplfSl9LHQucHJvdG90eXBlLmNvdW50PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnB1c2hBcGkoe25hbWU6ci5Db3VudCxxdWVyeTplfSl9LHQucHJvdG90eXBlLmluc2VydD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoQXBpKHtuYW1lOnIuSW5zZXJ0LHF1ZXJ5OmV9KX0sdC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnB1c2hBcGkoe25hbWU6ci5VcGRhdGUscXVlcnk6ZX0pfSx0LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucHVzaEFwaSh7bmFtZTpyLlJlbW92ZSxxdWVyeTplfSl9LHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnB1c2hBcGkoe25hbWU6ci5DbGVhcixxdWVyeTplfSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcImxvZ1N0YXR1c1wiLHtzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5sb2dnZXIuc3RhdHVzPWUsdGhpcy5wdXNoQXBpKHtuYW1lOnIuQ2hhbmdlTG9nU3RhdHVzLHF1ZXJ5OmV9KX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5vcGVuRGI9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO3JldHVybiB0aGlzLnB1c2hBcGkoe25hbWU6ci5PcGVuRGIscXVlcnk6e3ZlcnNpb246dCxuYW1lOmV9fSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIG4uZGF0YWJhc2U9ZSxlfSkpfSx0LnByb3RvdHlwZS5nZXREYkxpc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKFwiQXBpIGdldERiTGlzdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgZm9yIGRlYnVnZ2luZyBvbmx5LiBEbyBub3QgdXNlIGluIGNvZGUuXCIpLGluZGV4ZWREQi5kYXRhYmFzZXMoKX0sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiBjb25zb2xlLndhcm4oXCJUaGlzIEFQSSBpcyBvYnNvbGV0ZSwgcGxlYXNlIHVzZSBNYXBcIiksdGhpcy5NYXAuZ2V0KGUpfSx0LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gY29uc29sZS53YXJuKFwiVGhpcyBBUEkgaXMgb2Jzb2xldGUsIHBsZWFzZSB1c2UgTWFwXCIpLHRoaXMuTWFwLnNldChlLHQpfSx0LnByb3RvdHlwZS50ZXJtaW5hdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoQXBpKHtuYW1lOnIuVGVybWluYXRlfSl9LHQucHJvdG90eXBlLnRyYW5zYWN0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnB1c2hBcGkoe25hbWU6ci5UcmFuc2FjdGlvbixxdWVyeTplfSl9LHQucHJvdG90eXBlLm9uPWZ1bmN0aW9uKGUsdCl7dGhpcy5ldmVudEJ1c18ub24oZSx0KX0sdC5wcm90b3R5cGUub2ZmPWZ1bmN0aW9uKGUsdCl7dGhpcy5ldmVudEJ1c18ub2ZmKGUsdCl9LHQucHJvdG90eXBlLnVuaW9uPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnB1c2hBcGkoe25hbWU6ci5VbmlvbixxdWVyeTplfSl9LHQucHJvdG90eXBlLmludGVyc2VjdD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoQXBpKHtuYW1lOnIuSW50ZXJzZWN0LHF1ZXJ5OmV9KX0sdC5wcm90b3R5cGUuYWRkUGx1Z2luPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuc2V0dXAodGhpcyx0KX0sdC5wcm90b3R5cGUuYWRkTWlkZGxld2FyZT1mdW5jdGlvbihlLHQpe3JldHVybiB0P3RoaXMucHVzaEFwaSh7bmFtZTpyLk1pZGRsZXdhcmUscXVlcnk6ZX0pOih0aGlzLm1pZGRsZXdhcmVzLnB1c2goZSksUHJvbWlzZS5yZXNvbHZlKCkpfSx0LnByb3RvdHlwZS5pbXBvcnRTY3JpcHRzPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWVbdF09YXJndW1lbnRzW3RdO3JldHVybiB0aGlzLnB1c2hBcGkoe25hbWU6ci5JbXBvcnRTY3JpcHRzLHF1ZXJ5OmV9KX0sdH0oeSksdj1mdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5hbGwoZSl9LHE9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSl0KG4sZVtuXSl9O0pzU3RvcmU9dH0pKCk7XHJcbiAgICAvKipcclxuICAgICAqIOWKoOi9vSBKc1N0b3JlIFdvcmtlciDohJrmnKzkuLogYmxvYiBVUkxcclxuICAgICAqL1xyXG4gICAgY29uc3QgbG9hZFdvcmtlclNjcmlwdCA9IGFzeW5jICgpOiBQcm9taXNlPHN0cmluZz4gPT4ge1xyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xyXG4gICAgICAgIHhoci5vcGVuKCdHRVQnLCAnaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9qc3N0b3JlL2Rpc3QvanNzdG9yZS53b3JrZXIubWluLmpzJywgdHJ1ZSk7XHJcbiAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdibG9iJztcclxuICAgICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShVUkwuY3JlYXRlT2JqZWN0VVJMKHRoaXMucmVzcG9uc2UpKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ0ZhaWxlZCB0byBsb2FkIHdvcmtlciBzY3JpcHQnKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICB4aHIuc2VuZCgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIC8vIOS9v+eUqCBCbG9iIFVSTCDliJvlu7ogV29ya2VyXHJcbiAgICBjb25zdCBjb25uZWN0aW9uID0gbmV3IEpzU3RvcmUuQ29ubmVjdGlvbihuZXcgV29ya2VyKGF3YWl0IGxvYWRXb3JrZXJTY3JpcHQoKSkpO1xyXG4gICAgLy8g5Yib5bu6L+aJk+W8gOaVsOaNruW6k1xyXG4gICAgYXdhaXQgY29ubmVjdGlvbi5pbml0RGIoe1xyXG4gICAgICBuYW1lOiAndjJleC1yZXBsaWVzLXBybycsXHJcbiAgICAgIHRhYmxlczogW3tcclxuICAgICAgICBuYW1lOiAncmVuZGVyZWRfcmVwbGllcycsXHJcbiAgICAgICAgY29sdW1uczoge1xyXG4gICAgICAgICAgcmVwbHlJZDoge3ByaW1hcnlLZXk6IHRydWUsIGRhdGFUeXBlOiAnbnVtYmVyJ30sXHJcbiAgICAgICAgICB1c2VybmFtZToge2RhdGFUeXBlOiAnc3RyaW5nJ30sXHJcbiAgICAgICAgICBjcmVhdGVkOiB7ZGF0YVR5cGU6ICdudW1iZXInfSxcclxuICAgICAgICAgIGh0bWw6IHtkYXRhVHlwZTogJ3N0cmluZyd9LFxyXG4gICAgICAgICAgY29udGVudFJlbmRlcmVkOiB7ZGF0YVR5cGU6ICdzdHJpbmcnfVxyXG4gICAgICAgIH1cclxuICAgICAgfV1cclxuICAgIH0pXHJcbiAgICAvLyDmuIXnqbrmlbDmja7lupNcclxuICAgIGF3YWl0IGNvbm5lY3Rpb24uY2xlYXIoJ3JlbmRlcmVkX3JlcGxpZXMnKTtcclxuXHJcblxyXG4gICAgLy8gcmVnaW9uIOa4suafk+WbnuWkjVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXBsaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0XHJcbiAgICAgICAgcmVwbHkgPSByZXBsaWVzW2ldLFxyXG4gICAgICAgIHJlcGx5SWQgPSByZXBseS5pZCxcclxuICAgICAgICBjcmVhdGVkID0gcmVwbHkuY3JlYXRlZCwgY3JlYXRlZDEgPSBOdW1iZXIoY3JlYXRlZCArICcwMDAnKSwgY3JlYXRlZEZvcm1hdCA9IG1vbWVudChjcmVhdGVkMSkuZm9ybWF0KCdZWVlZLU1NLUREIEhIOm1tOnNzJyksIGNyZWF0ZWRBZ28gPSBtb21lbnQoY3JlYXRlZDEpLmZyb21Ob3coKSxcclxuICAgICAgICBtZW1iZXIgPSByZXBseS5tZW1iZXIsXHJcbiAgICAgICAgdXNlcm5hbWUgPSBtZW1iZXIudXNlcm5hbWUsXHJcbiAgICAgICAgYXZhdGFyID0gbWVtYmVyLmF2YXRhcixcclxuXHJcbiAgICAgICAgcmVwbHlEaXZJZCA9ICdyXycgKyByZXBseUlkLCAkcmVwbHlEaXZJZCA9ICQoJyMnICsgcmVwbHlEaXZJZCksXHJcbiAgICAgICAgLy8g54K56LWe5pWwXHJcbiAgICAgICAgJGZhZGUgPSAkcmVwbHlEaXZJZC5maW5kKCcuZmFkZScpLCBmYWRlSHRtbCA9ICRmYWRlLmxlbmd0aCA9PT0gMCA/ICcnIDogJGZhZGUucHJvcCgnb3V0ZXJIVE1MJyk7XHJcblxyXG4gICAgICAvLyDliKDpmaTljp/lm57lpI1cclxuICAgICAgJHJlcGx5RGl2SWQucmVtb3ZlKCk7XHJcblxyXG4gICAgICBsZXQgY29udGVudFJlbmRlcmVkID0gcmVwbHkuY29udGVudF9yZW5kZXJlZCwgYXRTZWFyY2hTdGFydEluZGV4ID0gMDtcclxuICAgICAgLy8g5Y+v6IO95LyaIEAg5aSa5Liq5Lq6XHJcbiAgICAgIGNvbnN0IGF0U2VhcmNoU3RyID0gJ0A8YSBocmVmPVxcXCIvbWVtYmVyLyc7XHJcbiAgICAgIHdoaWxlICh0cnVlKSB7XHJcbiAgICAgICAgbGV0IGF0TGlua0luZGV4ID0gY29udGVudFJlbmRlcmVkLmluZGV4T2YoYXRTZWFyY2hTdHIsIGF0U2VhcmNoU3RhcnRJbmRleCk7XHJcbiAgICAgICAgaWYgKGF0TGlua0luZGV4ID09PSAtMSkge1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIOiOt+WPliBAIOeahOeUqOaIt+WQjVxyXG4gICAgICAgIGxldCBhdFVzZXJuYW1lID0gY29udGVudFJlbmRlcmVkLnN1YnN0cmluZyhhdExpbmtJbmRleCArIGF0U2VhcmNoU3RyLmxlbmd0aCwgY29udGVudFJlbmRlcmVkLmluZGV4T2YoJ1wiPicsIGF0TGlua0luZGV4KSk7XHJcbiAgICAgICAgLy8g5Zue5aSN5YaF5a6577yM5YW25LitIEAg6ZO+5o6l5re75Yqg5LqGIGNsYXNzIOWSjCBAIOeahOeUqOaIt+WQjeS8oOmAklxyXG4gICAgICAgIGNvbnN0IHJlcGxhY2VTdHIgPSBgQDxhIGNsYXNzPVwiJHtzZWxlY3Rvci5hdExpbmsuc3Vic3RyaW5nKDEpfVwiIGRhdGEtcmVwbHktZGl2LWlkPVwiJHtyZXBseURpdklkfVwiIGRhdGEtdXNlcm5hbWU9XCIke2F0VXNlcm5hbWV9XCIgZGF0YS1jcmVhdGVkPVwiJHtjcmVhdGVkfVwiIG9uY2xpY2s9XCJyZXR1cm4gZmFsc2U7XCIgaHJlZj1cIi9tZW1iZXIvJHthdFVzZXJuYW1lfWA7XHJcbiAgICAgICAgY29udGVudFJlbmRlcmVkID0gY29udGVudFJlbmRlcmVkLnJlcGxhY2VBbGwoYEA8YSBocmVmPVwiL21lbWJlci8ke2F0VXNlcm5hbWV9YCwgcmVwbGFjZVN0cik7XHJcbiAgICAgICAgYXRTZWFyY2hTdGFydEluZGV4ID0gYXRMaW5rSW5kZXggKyByZXBsYWNlU3RyLmxlbmd0aDtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgaHRtbCA9IGBcclxuICAgICAgICAgIDwhLS0g5q2k5aSE55qEIHN0eWxlIOS4uuaooeS7vyAuY2VsbCDmoLflvI8gLS0+XHJcbiAgICAgICAgICA8ZGl2IGlkPVwiJHtyZXBseURpdklkfVwiIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4OyBsaW5lLWhlaWdodDogMTUwJTsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMmUyZTJcIj5cclxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGJhY2tncm91bmQtY29sb3I6ICNmYWZiZmM7IHBhZGRpbmc6IDEycHggMCAxMHB4IDBcIj5cclxuICAgICAgICAgICAgICAgICR7dXNlcm5hbWUgPT09IG9wVXNlck5hbWUgPyBgXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyBsZWZ0OiA0NHB4OyB0b3A6IC0xMnB4OyBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoMjI1ZGVnLCAjNTU4YmY2IDIzcHgsICNmYWZiZmMgMCk7IHdpZHRoOiAzMnB4OyBoZWlnaHQ6IDMycHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2VzXCIgc3R5bGU9XCJjb2xvcjogd2hpdGU7IHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsgcG9zaXRpb246IHJlbGF0aXZlOyB0b3A6IC0xcHg7IHJpZ2h0OiAtNXB4XCI+T1A8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICBgIDogJyd9XHJcbiAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIiR7YXZhdGFyfVwiIGNsYXNzPVwiYXZhdGFyXCIgYWx0PVwiJHt1c2VybmFtZX1cIiBzdHlsZT1cIndpZHRoOiA0OHB4XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDEyMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICA8YSBocmVmPVwiL21lbWJlci8ke3VzZXJuYW1lfVwiIGNsYXNzPVwiZGFya1wiPiR7dXNlcm5hbWV9PC9hPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cInBhZGRpbmc6IDEwcHggMTBweCAxMHB4IDEycHg7IHdpZHRoOiAxMDAlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgJm5ic3A7PHNwYW4gY2xhc3M9XCJhZ29cIiB0aXRsZT1cIiR7Y3JlYXRlZEZvcm1hdH1cIj4ke2NyZWF0ZWRBZ299PC9zcGFuPiZuYnNwOyR7ZmFkZUh0bWx9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0g5q2k5aSE5Li65Y6f5YaF5a655L+d5oyB5LiN5Y+YIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJ0aGFua19hcmVhXyR7cmVwbHlJZH1cIiBjbGFzcz1cInRoYW5rX2FyZWFcIj48YSBocmVmPVwiIztcIiBvbmNsaWNrPVwiaWYgKGNvbmZpcm0oJ+ehruiupOimgeS4jeWGjeaYvuekuuadpeiHqiBAJHt1c2VybmFtZX0g55qE6L+Z5p2h5Zue5aSN77yfJykpIHsgaWdub3JlUmVwbHkoJHtyZXBseUlkfSwgJHtvbmNlfSk7IH1cIiBjbGFzcz1cInRoYW5rXCIgc3R5bGU9XCJjb2xvcjogI2NjYztcIj7pmpDol488L2E+ICZuYnNwOyAmbmJzcDsgPGEgaHJlZj1cIiM7XCIgb25jbGljaz1cImlmIChjb25maXJtKCfnoa7orqToirHotLkgMTAg5Liq6ZOc5biB5ZCRIEAke3VzZXJuYW1lfSDnmoTov5nmnaHlm57lpI3lj5HpgIHmhJ/osKLvvJ8nKSkgeyB0aGFua1JlcGx5KCR7cmVwbHlJZH0pOyB9XCIgY2xhc3M9XCJ0aGFua1wiPuaEn+iwouWbnuWkjeiAhTwvYT48L2Rpdj4gJm5ic3A7IDxhIGhyZWY9XCIjO1wiIG9uY2xpY2s9XCJyZXBseU9uZSgnJHt1c2VybmFtZX0nKTtcIj48aW1nIHNyYz1cIi9zdGF0aWMvaW1nL3JlcGx5X25ldWUucG5nXCIgYWxpZ249XCJhYnNtaWRkbGVcIiBib3JkZXI9XCIwXCIgYWx0PVwiUmVwbHlcIiB3aWR0aD1cIjIwXCI+PC9hPiAmbmJzcDsmbmJzcDsgPHNwYW4gY2xhc3M9XCJub1wiPjE8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3Bhbj4ke2NvbnRlbnRSZW5kZXJlZH08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICBgO1xyXG5cclxuICAgICAgLy8g5L+d5a2Y5bey5riy5p+T55qE5Zue5aSNXHJcbiAgICAgIGNvbnN0IGluc2VydGVkID0gYXdhaXQgY29ubmVjdGlvbi5pbnNlcnQoe1xyXG4gICAgICAgIGludG86ICdyZW5kZXJlZF9yZXBsaWVzJywgdmFsaWRhdGlvbjogZmFsc2UsIHNraXBEYXRhQ2hlY2s6IGZhbHNlLCB2YWx1ZXM6IFt7XHJcbiAgICAgICAgICByZXBseUlkOiByZXBseUlkLFxyXG4gICAgICAgICAgdXNlcm5hbWUsXHJcbiAgICAgICAgICBjcmVhdGVkOiBjcmVhdGVkLFxyXG4gICAgICAgICAgaHRtbCxcclxuICAgICAgICAgIGNvbnRlbnRSZW5kZXJlZDogY29udGVudFJlbmRlcmVkXHJcbiAgICAgICAgfV1cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIC8vIGVuZHJlZ2lvblxyXG5cclxuXHJcbiAgICAvLyByZWdpb24g5bGV56S65Zue5aSNXHJcbiAgICBjb25zdCByb3dzID0gYXdhaXQgY29ubmVjdGlvbi5zZWxlY3Qoe2Zyb206ICdyZW5kZXJlZF9yZXBsaWVzJywgb3JkZXI6IHtieTogJ2NyZWF0ZWQnLCB0eXBlOiAnYXNjJ319KTtcclxuICAgIGZvciAoY29uc3Qgcm93IG9mIHJvd3MpIHtcclxuICAgICAgJChzZWxlY3Rvci5yZXBsaWVzQm94KS5hcHBlbmQocm93Lmh0bWwpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOe7mSBAIOmTvuaOpea3u+WKoOeCueWHu+S6i+S7tlxyXG4gICAgJGJvZHkub24oJ2NsaWNrJywgc2VsZWN0b3IuYXRMaW5rLCBhc3luYyBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIGNvbnN0ICR0aGlzID0gJCh0aGlzKTtcclxuICAgICAgYXdhaXQgc2hvd1RhU2F5KGNvbm5lY3Rpb24sICR0aGlzLmRhdGEoJ3JlcGx5RGl2SWQnKSwgJHRoaXMuZGF0YSgndXNlcm5hbWUnKSwgJHRoaXMuZGF0YSgnY3JlYXRlZCcpKTtcclxuICAgIH0pXHJcbiAgICAvLyBlbmRyZWdpb25cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlsZXnpLogVEEg6K+05LqG5LuA5LmIXHJcbiAgICAgKiBAcGFyYW0gY29ubmVjdGlvbiDmlbDmja7lupPov57mjqVcclxuICAgICAqIEBwYXJhbSByZXBseURpdklkIOWbnuWkjeeahCBkaXYgaWRcclxuICAgICAqIEBwYXJhbSB1c2VybmFtZSDnlKjmiLflkI1cclxuICAgICAqIEBwYXJhbSBjcmVhdGVkIOWIm+W7uuaXtumXtFxyXG4gICAgICovXHJcbiAgICBjb25zdCBzaG93VGFTYXkgPSBhc3luYyAoY29ubmVjdGlvbiwgcmVwbHlEaXZJZDogc3RyaW5nLCB1c2VybmFtZTogc3RyaW5nLCBjcmVhdGVkOiBudW1iZXIpID0+IHtcclxuICAgICAgLy8g5YWz6Zet5by556qXXHJcbiAgICAgIGlmIChSZXBsYXkud2luYm94KSB7XHJcbiAgICAgICAgUmVwbGF5LndpbmJveC5jbG9zZSgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyDpq5jkuq7ngrnlh7sgQCDpk77mjqXnmoTpgqPmnaHlm57lpI1cclxuICAgICAgY29uc3QgJHJlcGx5ID0gJCgnIycgKyByZXBseURpdklkKTtcclxuICAgICAgJHJlcGx5LmNzcygnYm9yZGVyJywgJzJweCBzb2xpZCcpO1xyXG4gICAgICAvLyDot7PovazliLDpq5jkuq7lm57lpI1cclxuICAgICAgJCgnaHRtbCxib2R5JykuYW5pbWF0ZSh7c2Nyb2xsVG9wOiAkcmVwbHkub2Zmc2V0KCkudG9wIC0gJCh3aW5kb3cpLmhlaWdodCgpIC8gMn0sIDUwMCk7XHJcblxyXG5cclxuICAgICAgbGV0IGh0bWwgPSAnJywgaXNHZUJ5UHJldiA9IHRydWUsIGlzSGlnaGxpZ2h0ZWQgPSBmYWxzZTtcclxuICAgICAgY29uc3Qgcm93cyA9IGF3YWl0IGNvbm5lY3Rpb24uc2VsZWN0KHtmcm9tOiAncmVuZGVyZWRfcmVwbGllcycsIHdoZXJlOiB7dXNlcm5hbWV9fSk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHJvdyA9IHJvd3NbaV07XHJcblxyXG4gICAgICAgIGxldCBib3JkZXJTdHlsZSA9ICdib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UyZTJlMjsnO1xyXG4gICAgICAgIC8vIOWcqOeCueWHu+WbnuWkjeaJgOWcqOS9jee9rumrmOS6rlxyXG4gICAgICAgIGlmICghKGNyZWF0ZWQgPiByb3cuY3JlYXRlZCkgJiYgaXNHZUJ5UHJldikge1xyXG4gICAgICAgICAgYm9yZGVyU3R5bGUgKz0gJ2JvcmRlci10b3A6IDJweCBzb2xpZCc7XHJcbiAgICAgICAgICBpc0hpZ2hsaWdodGVkID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKGkgPT09IHJvd3MubGVuZ3RoIC0gMSAmJiAhaXNIaWdobGlnaHRlZCkge1xyXG4gICAgICAgICAgYm9yZGVyU3R5bGUgPSAnYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaHRtbCArPSBgXHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPVwiJHtib3JkZXJTdHlsZX1cIj5cclxuICAgICAgICAgICAgJHskKHJvdy5odG1sKS5maW5kKCcuYWdvJykucGFyZW50KCkucHJvcCgnb3V0ZXJIVE1MJyl9XHJcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogNXB4XCI+JHtyb3cuY29udGVudFJlbmRlcmVkfTwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgYDtcclxuICAgICAgICAvLyDlvZPliY3mnaHmmK/lkKbkuLrkuYvliY3nmoTlm57lpI3vvIznlKjkuo7kuIvkuIDmnaHliKTmlq3mmK/lkKbpnIDopoHpq5jkuq5cclxuICAgICAgICBpc0dlQnlQcmV2ID0gY3JlYXRlZCA+IHJvdy5jcmVhdGVkO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBSZXBsYXkud2luYm94ID0gbmV3IFdpbkJveCh7XHJcbiAgICAgICAgY2xhc3M6IHNlbGVjdG9yLnRhU2F5LnN1YnN0cmluZygxKSxcclxuICAgICAgICB0aXRsZTogdXNlcm5hbWUgKyAnIOivtOS6huS7gOS5iO+8nycsXHJcbiAgICAgICAgeDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RhX3NheV94JykgfHwgJ3JpZ2h0JyxcclxuICAgICAgICB5OiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGFfc2F5X3knKSB8fCAnYm90dG9tJyxcclxuICAgICAgICB3aWR0aDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RhX3NheV93aWR0aCcpIHx8ICc1NDBweCcsXHJcbiAgICAgICAgaGVpZ2h0OiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGFfc2F5X2hlaWdodCcpIHx8ICc3MCUnLFxyXG4gICAgICAgIGh0bWw6IGA8ZGl2IHN0eWxlPVwicGFkZGluZzogMTBweDsgZm9udC1zaXplOiAxNHB4XCI+JHtodG1sfTwvZGl2PmAsXHJcbiAgICAgICAgb25yZXNpemU6ICh3aWR0aCwgaGVpZ2h0KSA9PiB7XHJcbiAgICAgICAgICAvLyDmlLnlj5jnqpflj6PlpKflsI/ml7borrDlvZXnqpflj6PlpKflsI9cclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0YV9zYXlfd2lkdGgnLCB3aWR0aCArICdweCcpO1xyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3RhX3NheV9oZWlnaHQnLCBoZWlnaHQgKyAncHgnKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9ubW92ZTogKHgsIHkpID0+IHtcclxuICAgICAgICAgIC8vIOenu+WKqOeql+WPo+aXtuiusOW9leeql+WPo+S9jee9rlxyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3RhX3NheV94JywgeCk7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndGFfc2F5X3knLCB5KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uY2xvc2U6ICgpID0+IHtcclxuICAgICAgICAgIC8vIOWFs+mXreW8ueeql+aXtuWPlua2iOWbnuWkjemrmOS6rlxyXG4gICAgICAgICAgJHJlcGx5LmNzcygnYm9yZGVyJywgJ25vbmUnKTtcclxuICAgICAgICAgICRyZXBseS5jc3MoJ2JvcmRlci1ib3R0b20nLCAnMXB4IHNvbGlkICNlMmUyZTInKTtcclxuICAgICAgICAgIFJlcGxheS53aW5ib3ggPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vID09VXNlclNjcmlwdD09XHJcbi8vIEBuYW1lICAgICAgICAgVjJFWCDkuLvpopjlm57lpI3lop7lvLpcclxuLy8gQG5hbWVzcGFjZSAgICBodHRwOi8vdGFtcGVybW9ua2V5Lm5ldC9cclxuLy8gQHZlcnNpb24gICAgICAwLjAuNVxyXG4vLyBAZGVzY3JpcHRpb24gIOWinuW8uiBWMkVYIOS4u+mimOeahOWbnuWkjeOAglxyXG4vLyBAYXV0aG9yICAgICAgIGR1YW5sdWFuXHJcbi8vIEBjb3B5cmlnaHQgICAgMjAyMiwgZHVhbmx1YW4gKGh0dHBzOi8vZ2l0aHViLmNvbS9kdWFubHVhbilcclxuLy8gQGxpY2Vuc2UgICAgICBBcGFjaGUtMi4wOyBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wLnR4dFxyXG4vLyBAbWF0Y2ggICAgICAgICo6Ly8qLnYyZXguY29tLypcclxuLy8gQHJlcXVpcmUgICAgICBodHRwczovL2Nkbi5ib290Y2RuLm5ldC9hamF4L2xpYnMvanF1ZXJ5LzMuNy4xL2pxdWVyeS5taW4uanNcclxuLy8gQHJlcXVpcmUgICAgICBodHRwczovL2Nkbi5ib290Y2RuLm5ldC9hamF4L2xpYnMvbW9tZW50LmpzLzIuMjkuNC9tb21lbnQtd2l0aC1sb2NhbGVzLm1pbi5qc1xyXG4vLyBAcmVxdWlyZSAgICAgIGh0dHBzOi8vY2RuLmJvb3RjZG4ubmV0L2FqYXgvbGlicy9tb21lbnQuanMvMi4yOS40L2xvY2FsZS96aC1jbi5taW4uanNcclxuLy8gQHJlcXVpcmUgICAgICBodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL3dpbmJveEAwLjIuODIvZGlzdC93aW5ib3guYnVuZGxlLm1pbi5qc1xyXG4vLyBAcmVzb3VyY2UgY3NzIGh0dHBzOi8vY2RuLmJvb3RjZG4ubmV0L2FqYXgvbGlicy9sYXllci8zLjUuMS90aGVtZS9kZWZhdWx0L2xheWVyLm1pbi5jc3NcclxuLy8gQHJlcXVpcmUgICAgICBodHRwczovL2Nkbi5ib290Y2RuLm5ldC9hamF4L2xpYnMvbGF5ZXIvMy41LjEvbGF5ZXIubWluLmpzXHJcbi8vIEBncmFudCAgICAgICAgR01feG1saHR0cFJlcXVlc3RcclxuLy8gQGdyYW50ICAgICAgICBHTV9nZXRWYWx1ZVxyXG4vLyBAZ3JhbnQgICAgICAgIEdNX3NldFZhbHVlXHJcbi8vIEBncmFudCAgICAgICAgR01fcmVnaXN0ZXJNZW51Q29tbWFuZFxyXG4vLyBAZ3JhbnQgICAgICAgIEdNX3VucmVnaXN0ZXJNZW51Q29tbWFuZFxyXG4vLyBAZ3JhbnQgICAgICAgIEdNX2dldFJlc291cmNlVGV4dFxyXG4vLyBAZ3JhbnQgICAgICAgIEdNX2FkZFN0eWxlXHJcbi8vID09L1VzZXJTY3JpcHQ9PVxyXG5cclxuLy8gPT1PcGVuVXNlckpTPT1cclxuLy8gQGF1dGhvciBkdWFubHVhblxyXG4vLyA9PS9PcGVuVXNlckpTPT1cclxuXHJcbmltcG9ydCBSZXBsYXkgZnJvbSBcIi4vUmVwbGF5XCI7XHJcbmltcG9ydCBPcHRpb25zIGZyb20gXCIuL09wdGlvbnNcIjtcclxuXHJcbihhc3luYyAoKSA9PiB7XHJcbiAgJ3VzZSBzdHJpY3QnO1xyXG5cclxuICAvLyDliqDovb0gQ1NTXHJcbiAgR01fYWRkU3R5bGUoR01fZ2V0UmVzb3VyY2VUZXh0KCdjc3MnKSk7XHJcbiAgLy8g6K6+572uIGxheWVyIOWbvuagh1xyXG4gICQoZG9jdW1lbnQuaGVhZCkuYXBwZW5kKGA8c3R5bGU+XHJcbiAgICAubGF5dWktbGF5ZXItaWNve2JhY2tncm91bmQ6dXJsKCdodHRwczovL2Nkbi5ib290Y2RuLm5ldC9hamF4L2xpYnMvbGF5ZXIvMy41LjEvdGhlbWUvZGVmYXVsdC9pY29uLnBuZycpIG5vLXJlcGVhdH1cclxuICAgIC8qIOWOn+agt+W8j+S4jeefpeS4uuS9leS8muWkseaViO+8jOWvvOiHtCBpY29uIOiuvue9ruaXoOaViCAqL1xyXG4gICAgLmxheXVpLWxheWVyLWljbzF7YmFja2dyb3VuZC1wb3NpdGlvbjotMzBweCAwfVxyXG4gICAgLmxheXVpLWxheWVyLWljbzJ7YmFja2dyb3VuZC1wb3NpdGlvbjotNjBweCAwfVxyXG4gICAgLmxheXVpLWxheWVyLWljbzN7YmFja2dyb3VuZC1wb3NpdGlvbjotOTBweCAwfVxyXG4gICAgLmxheXVpLWxheWVyLWljbzR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTIwcHggMH1cclxuICAgIC5sYXl1aS1sYXllci1pY281e2JhY2tncm91bmQtcG9zaXRpb246LTE1MHB4IDB9XHJcbiAgICAubGF5dWktbGF5ZXItaWNvNntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xODBweCAwfVxyXG4gIDwvc3R5bGU+YCk7XHJcblxyXG4gIE9wdGlvbnMucmVnaXN0ZXJBbGwoKTtcclxuICBPcHRpb25zLmxvYWRJblYyZXgoKTtcclxuXHJcbiAgUmVwbGF5LnJ1bigpO1xyXG59KSgpO1xyXG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIiIsIi8vIHN0YXJ0dXBcbi8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLy8gVGhpcyBlbnRyeSBtb2R1bGUgaXMgcmVmZXJlbmNlZCBieSBvdGhlciBtb2R1bGVzIHNvIGl0IGNhbid0IGJlIGlubGluZWRcbl9fd2VicGFja19yZXF1aXJlX18oOTIyKTtcbl9fd2VicGFja19yZXF1aXJlX18oOTUyKTtcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0MjMpO1xuIiwiIl0sIm5hbWVzIjpbIlN0b3JlIiwiX2NsYXNzQ2FsbENoZWNrIiwiX2NyZWF0ZUNsYXNzIiwia2V5IiwidmFsdWUiLCJnZXQiLCJHTV9nZXRWYWx1ZSIsInNldCIsIkdNX3NldFZhbHVlIiwiZGVmYXVsdCIsIk1lbnVDbWQiLCJyZWdpc3RlciIsIm5hbWUiLCJmbiIsIkdNX3JlZ2lzdGVyTWVudUNvbW1hbmQiLCJ1bnJlZ2lzdGVyIiwibWVudUNtZElkIiwiR01fdW5yZWdpc3Rlck1lbnVDb21tYW5kIiwiQ29tbW9uT3B0aW9ucyIsInJlZ2lzdGVyQm9vbE9wdGlvbiIsIm9wdGlvbiIsIl90aGlzIiwidmFsIiwidmFsSXNCb29sIiwiY3VycmVudE1lbnVDbWRJZCIsImxhYmVsIiwiSlNPTiIsInN0cmluZ2lmeSIsIndpbmRvdyIsImxvY2F0aW9uIiwicmVsb2FkIiwicmVnaXN0ZXJBbGwiLCJ1cmwiLCJvcHRpb25zIiwib3BlbiIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwibiIsImRvbmUiLCJzdG9yZU9wdGlvbiIsInBhcnNlIiwidmVyc2lvbiIsImVyciIsImUiLCJmIiwibG9hZEluR3JlYXN5Zm9yayIsInNjcmlwdElkIiwibG9hZE9wdGlvbkNvbnRlbnRGbiIsImhvc3QiLCJocmVmIiwiaW5kZXhPZiIsInNlbGVjdG9yIiwic2NyaXB0TGlua3MiLCJzY3JpcHRPcHRpb25zIiwic2NyaXB0Q29udGVudCIsIiRib2R5IiwiJCIsImRvY3VtZW50IiwiYm9keSIsIiRzY3JpcHRMaW5rcyIsIiRzY3JpcHRDb250ZW50IiwiY2hpbGRyZW4iLCJhZnRlciIsIm9uIiwiJGN1cnJlbnRMaSIsImh0bWwiLCJjb25jYXQiLCJ0ZXh0IiwicmVtb3ZlQ2xhc3MiLCIkc2NyaXB0T3B0aW9ucyIsInBhcmVudCIsImFkZENsYXNzIiwiT3B0aW9ucyIsImxvYWRJblYyZXgiLCJtZW51VGFiIiwiY3VycmVudE1lbnVUYWIiLCJ2MmV4VG9rZW5JbnB1dCIsInNhdmVPcHRpb25zQnRuIiwiJG1lbnVUYWIiLCJhcHBlbmQiLCIkY3VycmVudE1lbnVUYWIiLCJyZW1vdmUiLCJLZXlzIiwidjJleFRva2VuIiwidG9rZW4iLCJfb2JqZWN0U3ByZWFkIiwibGF5ZXIiLCJtc2ciLCJfT3B0aW9ucyIsIl9kZWZpbmVQcm9wZXJ0eSIsIkh0dHBEYXRhVHlwZSIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJ0IiwiciIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwiaSIsIlN5bWJvbCIsImEiLCJpdGVyYXRvciIsImMiLCJhc3luY0l0ZXJhdG9yIiwidSIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJ0eXBlIiwiYXJnIiwiY2FsbCIsImgiLCJsIiwieSIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJwIiwiZCIsImdldFByb3RvdHlwZU9mIiwidiIsInZhbHVlcyIsImciLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwiX2ludm9rZSIsIkFzeW5jSXRlcmF0b3IiLCJpbnZva2UiLCJfdHlwZW9mIiwicmVzb2x2ZSIsIl9fYXdhaXQiLCJ0aGVuIiwiY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmciLCJFcnJvciIsIm1ldGhvZCIsImRlbGVnYXRlIiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiVHlwZUVycm9yIiwicmVzdWx0TmFtZSIsIm5leHQiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicHVzaCIsInJlc2V0VHJ5RW50cnkiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpc05hTiIsImxlbmd0aCIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImNvbnN0cnVjdG9yIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwib3duS2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImFwcGx5IiwiYXJndW1lbnRzIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJvYmoiLCJfdG9Qcm9wZXJ0eUtleSIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImdlbiIsInJlamVjdCIsIl9uZXh0IiwiX3Rocm93IiwiaW5mbyIsImVycm9yIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJzZWxmIiwiYXJncyIsInVuZGVmaW5lZCIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJfZGVmaW5lUHJvcGVydGllcyIsInRhcmdldCIsInByb3BzIiwiZGVzY3JpcHRvciIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiUmVxdWVzdCIsIl9nZXQiLCJfY2FsbGVlIiwib25sb2FkMSIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJzeW5jaHJvbm91cyIsIkdNX3htbGh0dHBSZXF1ZXN0Iiwib25sb2FkIiwicmVzcG9uc2UiLCJkYXRhVHlwZSIsInJlc3BvbnNlVGV4dCIsIm9uZXJyb3IiLCJkZXRhaWxzIiwiX3giLCJJbmZvIiwiR01faW5mbyIsInNjcmlwdCIsImdldE5hbWUiLCJnZXRWZXJzaW9uIiwiVjJleCIsIl9jaGVja1Rva2VuIiwicmVzdWx0IiwiaWNvbiIsIm9mZnNldCIsIkJBU0VfVVJMIiwiaGVhZGVycyIsInRpbWUiLCJjaGVja1Rva2VuIiwiX2dldFJlcGxpZXMiLCJfY2FsbGVlMiIsInRvcGljSWQiLCJwYWdlIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiY29uc29sZSIsIndhcm4iLCJnZXRSZXBsaWVzIiwiX3gyIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwiaXRlciIsImlzQXJyYXkiLCJsZW4iLCJhcnIyIiwiUmVwbGF5IiwiX3J1biIsIl9jYWxsZWU0IiwiJGhlYWQiLCIkYWxsUmVwbGllcyIsIiRyZXBsaWVzTnVtYmVyIiwiJG9wVXNlck5hbWUiLCJyZXBsaWVzTnVtYmVyIiwib3BVc2VyTmFtZSIsInJlcGxpZXMiLCJKc1N0b3JlIiwibG9hZFdvcmtlclNjcmlwdCIsImNvbm5lY3Rpb24iLCJfaSIsInJlcGx5IiwicmVwbHlJZCIsImNyZWF0ZWQiLCJjcmVhdGVkMSIsImNyZWF0ZWRGb3JtYXQiLCJjcmVhdGVkQWdvIiwibWVtYmVyIiwidXNlcm5hbWUiLCJhdmF0YXIiLCJyZXBseURpdklkIiwiJHJlcGx5RGl2SWQiLCIkZmFkZSIsImZhZGVIdG1sIiwiY29udGVudFJlbmRlcmVkIiwiYXRTZWFyY2hTdGFydEluZGV4IiwiYXRTZWFyY2hTdHIiLCJhdExpbmtJbmRleCIsImF0VXNlcm5hbWUiLCJyZXBsYWNlU3RyIiwiaW5zZXJ0ZWQiLCJyb3dzIiwicm93Iiwic2hvd1RhU2F5IiwiX2NhbGxlZTQkIiwiX2NvbnRleHQ0IiwicmVwbGllc0JveCIsImFsbFJlcGxpZXMiLCJhdExpbmsiLCJ0YVNheSIsImhlYWQiLCJoaWRlIiwic3Vic3RyaW5nIiwiTWF0aCIsImNlaWwiLCJ0MCIsInQxIiwidDIiLCJ0MyIsInQ0IiwiQVBJIiwiQ09OTkVDVElPTl9TVEFUVVMiLCJDb25uZWN0aW9uIiwiYiIsIkRBVEFfVFlQRSIsIkVSUk9SX1RZUEUiLCJFVkVOVCIsIklEQl9NT0RFIiwiT0NDVVJFTkNFIiwiUVVFUllfT1BUSU9OIiwiV09SS0VSX1NUQVRVUyIsImZvck9iaiIsInEiLCJwcm9taXNlIiwicHJvbWlzZUFsbCIsInByb21pc2VSZXNvbHZlIiwiX2luZm8iLCJtZXNzYWdlIiwiZ2V0TXNnIiwibG9nIiwic3RhdHVzIiwibG9nRXJyb3IiLCJsb2dXYXJuaW5nIiwiSW52YWxpZFVwZGF0ZUNvbHVtbiIsIlVuZGVmaW5lZENvbHVtbiIsIlVuZGVmaW5lZFZhbHVlIiwiVW5kZWZpbmVkQ29sdW1uTmFtZSIsIlVuZGVmaW5lZERiTmFtZSIsIlVuZGVmaW5lZENvbHVtblZhbHVlIiwiTm90QXJyYXkiLCJOb1ZhbHVlU3VwcGxpZWQiLCJDb2x1bW5Ob3RFeGlzdCIsIk5vSW5kZXhGb3VuZCIsIkludmFsaWRPcCIsIk51bGxWYWx1ZSIsIldyb25nRGF0YVR5cGUiLCJUYWJsZU5vdEV4aXN0IiwiRGJOb3RFeGlzdCIsIkNvbm5lY3Rpb25BYm9ydGVkIiwiQ29ubmVjdGlvbkNsb3NlZCIsIk5vdE9iamVjdCIsIkludmFsaWRDb25maWciLCJEYkJsb2NrZWQiLCJJbmRleGVkRGJOb3RTdXBwb3J0ZWQiLCJOdWxsVmFsdWVJbldoZXJlIiwiSW52YWxpZEpvaW5RdWVyeSIsIkludmFsaWRRdWVyeSIsIkltcG9ydFNjcmlwdHNGYWlsZWQiLCJNZXRob2ROb3RFeGlzdCIsIlVua25vd24iLCJJbnZhbGlkTWlkZGxld2FyZSIsIlJlZ2lzdGVyZWQiLCJGYWlsZWQiLCJOb3RTdGFydGVkIiwiQm9vbGVhbiIsIk51bGwiLCJEYXRlVGltZSIsIkluaXREYiIsIk1hcEdldCIsIk1hcFNldCIsIk1hcEhhcyIsIk1hcERlbGV0ZSIsIlNlbGVjdCIsIkluc2VydCIsIlVwZGF0ZSIsIlJlbW92ZSIsIk9wZW5EYiIsIkNsZWFyIiwiRHJvcERiIiwiQ291bnQiLCJDaGFuZ2VMb2dTdGF0dXMiLCJUZXJtaW5hdGUiLCJUcmFuc2FjdGlvbiIsIkNsb3NlRGIiLCJVbmlvbiIsIkludGVyc2VjdCIsIkltcG9ydFNjcmlwdHMiLCJNaWRkbGV3YXJlIiwiUmVxdWVzdFF1ZXVlRW1wdHkiLCJSZXF1ZXN0UXVldWVGaWxsZWQiLCJVcGdyYWRlIiwiQ3JlYXRlIiwiT3BlbiIsIldoZXJlIiwiTGlrZSIsIlJlZ2V4IiwiSW4iLCJFcXVhbCIsIkJldHdlZW4iLCJHcmVhdGVyVGhhbiIsIkxlc3NUaGFuIiwiR3JlYXRlclRoYW5FcXVhbFRvIiwiTGVzc1RoYW5FcXVhbFRvIiwiTm90RXF1YWxUbyIsIkFnZ3JlZ2F0ZSIsIk1heCIsIk1pbiIsIkF2ZyIsIlN1bSIsIkxpc3QiLCJPciIsIlNraXAiLCJMaW1pdCIsIkFuZCIsIklnbm9yZUNhc2UiLCJUaGVuIiwiUmVhZE9ubHkiLCJSZWFkV3JpdGUiLCJGaXJzdCIsIkxhc3QiLCJBbnkiLCJDb25uZWN0ZWQiLCJDbG9zZWQiLCJVbmFibGVUb1N0YXJ0IiwiQ2xvc2VkQnlKc1N0b3JlIiwiXyIsIl9ldmVudHMiLCJfY3R4Iiwib2ZmIiwic3BsaWNlIiwiZW1pdCIsImRlc3Ryb3kiLCJpc0Nvbk9wZW5lZF8iLCJpc0RiSWRsZV8iLCJyZXF1ZXN0UXVldWVfIiwiaXNDb2RlRXhlY3V0aW5nXyIsImluYWN0aXZpdHlUaW1lcl8iLCJtaWRkbGV3YXJlcyIsImV2ZW50QnVzXyIsIndoaXRlTGlzdEFwaV8iLCJpc1dvcmtlciIsImxvZ2dlciIsIndvcmtlcl8iLCJvbm1lc3NhZ2UiLCJvbk1lc3NhZ2VGcm9tV29ya2VyXyIsImJpbmQiLCJpbml0UXVlcnlNYW5hZ2VyXyIsIiR3b3JrZXIiLCJKc1N0b3JlV29ya2VyIiwianNzdG9yZVdvcmtlciIsInF1ZXJ5TWFuYWdlciIsIlF1ZXJ5TWFuYWdlciIsInByb2Nlc3NGaW5pc2hlZFF1ZXJ5XyIsImRhdGEiLCJzaGlmdCIsIm9uRXJyb3IiLCJ0ZXJtaW5hdGUiLCJvcGVuRGJfIiwib25TdWNjZXNzIiwiZXhlY3V0ZVFyeV8iLCJxdWVyeSIsImRhdGFiYXNlIiwicHJjb2Vzc0V4ZWN1dGlvbk9mUXJ5XyIsImV4ZWN1dGVNaWRkbGV3YXJlXyIsImNhbGxSZXN1bHRNaWRkbGV3YXJlIiwicHVzaEFwaSIsIm9uUmVzdWx0IiwiY2xlYXJUaW1lb3V0Iiwic2VuZFJlcXVlc3RUb1dvcmtlcl8iLCJmaW5kSW5kZXgiLCJzZXRUaW1lb3V0IiwicG9zdE1lc3NhZ2UiLCJydW4iLCJtIiwiY29uIiwiaGFzIiwiTWFwIiwiaW5pdERiIiwiaXNDcmVhdGVkIiwib2xkVmVyc2lvbiIsIm5ld1ZlcnNpb24iLCJkcm9wRGIiLCJzZWxlY3QiLCJjb3VudCIsImluc2VydCIsInVwZGF0ZSIsImNsZWFyIiwib3BlbkRiIiwiZ2V0RGJMaXN0IiwiaW5kZXhlZERCIiwiZGF0YWJhc2VzIiwidHJhbnNhY3Rpb24iLCJ1bmlvbiIsImludGVyc2VjdCIsImFkZFBsdWdpbiIsInNldHVwIiwiYWRkTWlkZGxld2FyZSIsImltcG9ydFNjcmlwdHMiLCJhbGwiLCJfcmVmIiwieGhyIiwiWE1MSHR0cFJlcXVlc3QiLCJyZXNwb25zZVR5cGUiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJzZW5kIiwidDUiLCJ0NiIsIldvcmtlciIsInQ3IiwidDgiLCJ0YWJsZXMiLCJjb2x1bW5zIiwicHJpbWFyeUtleSIsImlkIiwibW9tZW50IiwiZm9ybWF0IiwiZnJvbU5vdyIsImZpbmQiLCJwcm9wIiwiY29udGVudF9yZW5kZXJlZCIsInJlcGxhY2VBbGwiLCJvbmNlIiwiaW50byIsInZhbGlkYXRpb24iLCJza2lwRGF0YUNoZWNrIiwib3JkZXIiLCJieSIsIiR0aGlzIiwiX3JlZjMiLCJfY2FsbGVlMyIsIiRyZXBseSIsImlzR2VCeVByZXYiLCJpc0hpZ2hsaWdodGVkIiwiX2kyIiwiYm9yZGVyU3R5bGUiLCJfY2FsbGVlMyQiLCJfY29udGV4dDMiLCJ3aW5ib3giLCJjbG9zZSIsImNzcyIsImFuaW1hdGUiLCJzY3JvbGxUb3AiLCJ0b3AiLCJoZWlnaHQiLCJ3aGVyZSIsIldpbkJveCIsInRpdGxlIiwieCIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJ3aWR0aCIsIm9ucmVzaXplIiwic2V0SXRlbSIsIm9ubW92ZSIsIm9uY2xvc2UiLCJfeDMiLCJfeDQiLCJHTV9hZGRTdHlsZSIsIkdNX2dldFJlc291cmNlVGV4dCJdLCJzb3VyY2VSb290IjoiIn0=